yonge 3 年之前
父節點
當前提交
fa90724b8f

+ 30 - 25
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -356,7 +356,7 @@ public class UserChannelContext {
 		
 		if (noteAnalysis.getMusicalNotesIndex() >= 0 && noteAnalysis.getMusicalNotesIndex() <= getTotalMusicNoteIndex(null)) {
 			
-			LOGGER.info("user:{}  delayProcessed:{}  dynamicOffset:{}  Frequency:{}  splDb:{}  amplitude:{}  time:{}", user, delayProcessed, dynamicOffset, playFrequency, splDb, amplitude, playTime);
+			LOGGER.debug("user:{}  delayProcessed:{}  dynamicOffset:{}  Frequency:{}  splDb:{}  amplitude:{}  time:{}", user, delayProcessed, dynamicOffset, playFrequency, splDb, amplitude, playTime);
 			
 			ChunkAnalysis chunkAnalysis = new ChunkAnalysis(playTime - durationTime, playTime, playFrequency, splDb, power, amplitude);
 			
@@ -406,7 +406,7 @@ public class UserChannelContext {
 				
 				evaluateForNote(musicXmlNote, noteAnalysis);
 
-				LOGGER.info("当前音符下标[{}] 预计频率:{} 实际频率:{} 节奏:{}", noteAnalysis.getMusicalNotesIndex(), musicXmlNote.getFrequency(), noteAnalysis.getPlayFrequency(),
+				LOGGER.debug("当前音符下标[{}] 预计频率:{} 实际频率:{} 节奏:{}", noteAnalysis.getMusicalNotesIndex(), musicXmlNote.getFrequency(), noteAnalysis.getPlayFrequency(),
 						noteAnalysis.isTempo());
 				
 				doneNoteAnalysisList.add(noteAnalysis);
@@ -462,7 +462,7 @@ public class UserChannelContext {
 			sectionAnalysis.setDurationTime(noteAnalysisList.stream().mapToDouble(t -> t.getDurationTime()).sum());
 			sectionAnalysis.setScore(score);
 
-			LOGGER.info("小节评分:{}",sectionAnalysis);
+			LOGGER.debug("小节评分:{}",sectionAnalysis);
 			doneSectionAnalysisList.add(sectionAnalysis);
 		}
 		
@@ -474,6 +474,7 @@ public class UserChannelContext {
 		Map<String, Integer> result = new HashMap<String, Integer>();
 		
 		result.put("playTime", (int) doneNoteAnalysisList.stream().mapToDouble(t -> t.getDurationTime()).sum());
+        result.put("recordId", recordId.intValue());
 		
 		// 取出需要评测的音符
 		List<NoteAnalysis> noteAnalysisList = doneNoteAnalysisList.stream().filter(t -> t.isIgnore() == false).collect(Collectors.toList());
@@ -498,7 +499,6 @@ public class UserChannelContext {
 			result.put("cadence", tempoScore);
 			result.put("intonation", intonationScore);
 			result.put("integrity", integrityScore);
-	        result.put("recordId", recordId.intValue());
 
 			int score = socre / noteAnalysisList.size();
 
@@ -507,6 +507,11 @@ public class UserChannelContext {
 				score = tempoScore;
 			}
 			result.put("score", score);
+		} else {
+			result.put("cadence", 0);
+			result.put("intonation", 0);
+			result.put("integrity", 0);
+			result.put("score", 0);
 		}
 		return result;
 	}
@@ -570,10 +575,10 @@ public class UserChannelContext {
 
 				if (playDurationTime * 100 / durationTime < hardLevel.getNotPlayRange()) {
 					noteAnalysis.setMusicalErrorType(NoteErrorType.NOT_PLAY);
-					LOGGER.info("未演奏:{}", playDurationTime * 100 / durationTime);
+					LOGGER.debug("未演奏:{}", playDurationTime * 100 / durationTime);
 				} else if (playDurationTime * 100 / durationTime < hardLevel.getIntegrityRange()) {
 					noteAnalysis.setMusicalErrorType(NoteErrorType.INTEGRITY_WRONG);
-					LOGGER.info("完整度不足:{}", playDurationTime * 100 / durationTime);
+					LOGGER.debug("完整度不足:{}", playDurationTime * 100 / durationTime);
 				} else if (!noteAnalysis.isTempo()) {
 					noteAnalysis.setMusicalErrorType(NoteErrorType.CADENCE_WRONG);
 				} else if (notePlayResult.getStatus() == false) {
@@ -628,7 +633,7 @@ public class UserChannelContext {
 		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
 		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
 		
-		LOGGER.info("------------TimeStamp:{}  Duration:{}  floatingRange:{}  StartTime:{}  EndTime:{}------------", musicXmlNote.getTimeStamp(), musicXmlNote.getDuration(), floatingRange, startTime, endTime);
+		LOGGER.debug("------------TimeStamp:{}  Duration:{}  floatingRange:{}  StartTime:{}  EndTime:{}------------", musicXmlNote.getTimeStamp(), musicXmlNote.getDuration(), floatingRange, startTime, endTime);
 		
 		List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
 		
@@ -637,7 +642,7 @@ public class UserChannelContext {
 		
 		chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(correctedStartTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(correctedEndTime)).collect(Collectors.toList());
 
-		LOGGER.info("------------ correctedStartTime:{}  correctedEndTime:{}------------", correctedStartTime, correctedEndTime);
+		LOGGER.debug("------------ correctedStartTime:{}  correctedEndTime:{}------------", correctedStartTime, correctedEndTime);
 		
 		//根据完整度取部分有效信号
 		int elementSize = chunkAnalysisList.size() * hardLevel.getIntegrityRange() / 100;
@@ -648,7 +653,7 @@ public class UserChannelContext {
 		
 		ChunkAnalysis firstChunkAnalysis = chunkAnalysisList.get(0);
 		
-		LOGGER.info("-------startTime:{}  endTime:{}------", firstChunkAnalysis.getStartTime(), chunkAnalysisList.get(chunkAnalysisList.size() - 1)
+		LOGGER.debug("-------startTime:{}  endTime:{}------", firstChunkAnalysis.getStartTime(), chunkAnalysisList.get(chunkAnalysisList.size() - 1)
 				.getEndTime());
 		
 		List<ChunkAnalysis> chunkList = new ArrayList<ChunkAnalysis>(chunkAnalysisList);
@@ -737,7 +742,7 @@ public class UserChannelContext {
 						if(!((noteFrequencyRange.getMinFrequency() < chunkAnalysis.getFrequency() * 2 && chunkAnalysis.getFrequency() * 2 < noteFrequencyRange.getMaxFrequency())
 								|| (noteFrequencyRange.getMinFrequency() < chunkAnalysis.getFrequency() / 2 && chunkAnalysis.getFrequency() / 2 < noteFrequencyRange.getMaxFrequency()))){
 							tempo = false;
-							LOGGER.info("节奏错误原因:不是同一个音[{}]:{}-{}", chunkAnalysis.getFrequency(), noteFrequencyRange.getMinFrequency(), noteFrequencyRange.getMaxFrequency());
+							LOGGER.debug("节奏错误原因:不是同一个音[{}]:{}-{}", chunkAnalysis.getFrequency(), noteFrequencyRange.getMinFrequency(), noteFrequencyRange.getMaxFrequency());
 							break;
 						}
 					}
@@ -745,7 +750,7 @@ public class UserChannelContext {
 						if ((i + 1) / chunkAnalysisList.size() < hardLevel.getIntegrityRange()) {
 							if (unplayedSize > 0) {
 								tempo = false;
-								LOGGER.info("节奏错误原因:信号不连续");
+								LOGGER.debug("节奏错误原因:信号不连续");
 								break;
 							}
 						}
@@ -763,13 +768,13 @@ public class UserChannelContext {
 			// 判断进入时间点
 			if(firstPeakIndex * 100 /chunkAnalysisList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator())){
 				tempo = false;
-				LOGGER.info("节奏错误原因:进入时间点太晚");
+				LOGGER.debug("节奏错误原因:进入时间点太晚");
 			}else{
 				//判断是否与上一个音延续下来的
 				if(firstChunkAnalysis.getFrequency() > MIN_FREQUECY && lastChunkAnalysis.getFrequency() > MIN_FREQUECY){
 					tempo = new NoteFrequencyRange(standardFrequecy, firstChunkAnalysis.getFrequency()).equals(new NoteFrequencyRange(standardFrequecy, lastChunkAnalysis.getFrequency())) == false;
 					if(tempo == false){
-						LOGGER.info("节奏错误原因:上一个音[{}]延续下来导致的", lastChunkAnalysis.getFrequency());
+						LOGGER.debug("节奏错误原因:上一个音[{}]延续下来导致的", lastChunkAnalysis.getFrequency());
 					}
 				}
 			}
@@ -785,7 +790,7 @@ public class UserChannelContext {
 		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
 		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
 		
-		LOGGER.info("------------TimeStamp:{}  floatingRange:{}  StartTime:{}  EndTime:{}------------", musicXmlNote.getTimeStamp(), floatingRange, startTime, endTime);
+		LOGGER.debug("------------TimeStamp:{}  floatingRange:{}  StartTime:{}  EndTime:{}------------", musicXmlNote.getTimeStamp(), floatingRange, startTime, endTime);
 		
 		List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
 		
@@ -804,12 +809,12 @@ public class UserChannelContext {
 		
 		ChunkAnalysis firstChunkAnalysis = chunkAnalysisList.get(0);
 		
-		LOGGER.info("-------startTime:{}  endTime:{}------", firstChunkAnalysis.getStartTime(), chunkList.get(chunkList.size() - 1)
+		LOGGER.debug("-------startTime:{}  endTime:{}------", firstChunkAnalysis.getStartTime(), chunkList.get(chunkList.size() - 1)
 				.getEndTime());
 
 		if (musicXmlNote.getFrequency() == -1) {// 休止符
 			
-			LOGGER.info("--Amplitude:{}  Denominator:{}",chunkList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
+			LOGGER.debug("--Amplitude:{}  Denominator:{}",chunkList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
 			return chunkList.stream().filter(t -> t.getAmplitude() > hardLevel.getAmplitudeThreshold()).count() <= 0;
 		}
 		
@@ -827,7 +832,7 @@ public class UserChannelContext {
 
 		chunkAmplitudeList.add(0, lastChunkAnalysis.getAmplitude());
 		
-		LOGGER.info("--Amplitude:{}  Denominator:{}",chunkAmplitudeList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
+		LOGGER.debug("--Amplitude:{}  Denominator:{}",chunkAmplitudeList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
 		
 		// 检测是否有多个波峰
 		boolean tempo = false;
@@ -867,7 +872,7 @@ public class UserChannelContext {
 		if (tempo) {
 			// 判断进入时间点
 			if((firstPeakIndex - 1) * 100 /chunkAmplitudeList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) * 2){
-				LOGGER.info("超过范围:{}", (firstPeakIndex - 1) * 100 /chunkAmplitudeList.size());
+				LOGGER.debug("超过范围:{}", (firstPeakIndex - 1) * 100 /chunkAmplitudeList.size());
 				tempo = false;
 			}
 		}
@@ -878,17 +883,17 @@ public class UserChannelContext {
 	private double queryFirstNoteStartTime(List<ChunkAnalysis> chunkAnalysisList, MusicXmlNote musicXmlNote) {
 		
 		if(chunkAnalysisList == null || chunkAnalysisList.size() == 0){
-			LOGGER.info("找不到数据,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
+			LOGGER.debug("找不到数据,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 			return musicXmlNote.getTimeStamp() + dynamicOffset;
 		}
 		
 		if (percussionList.contains(subjectId)) {
 			Optional<ChunkAnalysis> optional = chunkAnalysisList.stream().filter(t -> t.getAmplitude() > hardLevel.getAmplitudeThreshold()).findFirst();
 			if(optional.isPresent()){
-				LOGGER.info("范围内查询到信号,correctedStartTime:{}", optional.get().getStartTime());
+				LOGGER.debug("范围内查询到信号,correctedStartTime:{}", optional.get().getStartTime());
 				return optional.get().getStartTime();
 			}else{
-				LOGGER.info("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
+				LOGGER.debug("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 				return musicXmlNote.getTimeStamp() + dynamicOffset;
 			}
 		}
@@ -899,10 +904,10 @@ public class UserChannelContext {
 			if((int)preMusicXmlNote.getFrequency() == (int)musicXmlNote.getFrequency()){
 				Optional<ChunkAnalysis> optional = chunkAnalysisList.stream().filter(t -> t.getFrequency() <= MIN_FREQUECY).findFirst();
 				if(optional.isPresent()){
-					LOGGER.info("与上一个音同音,有断开,correctedStartTime:{}", optional.get().getStartTime());
+					LOGGER.debug("与上一个音同音,有断开,correctedStartTime:{}", optional.get().getStartTime());
 					return optional.get().getEndTime();
 				}else{
-					LOGGER.info("与上一个音同音,未断开,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
+					LOGGER.debug("与上一个音同音,未断开,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 					return musicXmlNote.getTimeStamp() + dynamicOffset;
 				}
 			}
@@ -915,12 +920,12 @@ public class UserChannelContext {
 		for (ChunkAnalysis ca : chunkAnalysisList) {
 			noteFrequencyRange = new NoteFrequencyRange(standardFrequecy, ca.getFrequency());
 			if (standardNote.equals(noteFrequencyRange)) {
-				LOGGER.info("范围内查询到信号,correctedStartTime:{}", ca.getStartTime());
+				LOGGER.debug("范围内查询到信号,correctedStartTime:{}", ca.getStartTime());
 				return ca.getStartTime();
 			}
 		}
 		
-		LOGGER.info("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
+		LOGGER.debug("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 
 		//return chunkAnalysisList.get(chunkAnalysisList.size() - 1).getEndTime();
 		return musicXmlNote.getTimeStamp() + dynamicOffset;

+ 10 - 0
audio-analysis/src/main/java/com/yonge/netty/entity/MusicXmlBasicInfo.java

@@ -12,6 +12,8 @@ public class MusicXmlBasicInfo {
 	private Integer id;
 
 	private Integer subjectId;
+	
+	private String clientId;
 
 	private Integer detailId;
 
@@ -51,6 +53,14 @@ public class MusicXmlBasicInfo {
 		this.subjectId = subjectId;
 	}
 
+	public String getClientId() {
+		return clientId;
+	}
+
+	public void setClientId(String clientId) {
+		this.clientId = clientId;
+	}
+
 	public Integer getDetailId() {
 		return detailId;
 	}

+ 3 - 3
audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java

@@ -144,7 +144,7 @@ public class AudioCompareHandler implements MessageHandler {
 				sysMusicCompareRecord.setUserId(Integer.parseInt(user));
 				sysMusicCompareRecord.setSysMusicScoreId(musicXmlBasicInfo.getExamSongId());
 				sysMusicCompareRecord.setBehaviorId(musicXmlBasicInfo.getBehaviorId());
-				//sysMusicCompareRecord.setClientId();
+				sysMusicCompareRecord.setClientId(musicXmlBasicInfo.getClientId());
 				sysMusicCompareRecord.setDeviceType(DeviceTypeEnum.valueOf(musicXmlBasicInfo.getPlatform()));
 				sysMusicCompareRecord.setSpeed(musicXmlBasicInfo.getSpeed());
 				
@@ -300,12 +300,12 @@ public class AudioCompareHandler implements MessageHandler {
 			
 			if(totalLength > beatByteLength){
 				if(beatByteLength % 2 != 0){
-					LOGGER.info("**************奇数*****************");
+					LOGGER.debug("**************奇数*****************");
 					beatByteLength--;
 				}
 				channelContext.setChannelBufferBytes(ArrayUtil.extractByte(channelContext.getChannelBufferBytes(), beatByteLength, totalLength - 1));
 				
-				LOGGER.info("--------Length:{}  Times[{} + {}]:{}--------", waveFileProcessor.getFile().length() - channelContext.getChannelBufferBytes().length, channelContext.getOffsetMS() , channelContext.getBeatDuration(),(waveFileProcessor.getFile().length() - channelContext.getChannelBufferBytes().length) * 1000 /audioFormat.getSampleRate()/2);
+				LOGGER.debug("--------Length:{}  Times[{} + {}]:{}--------", waveFileProcessor.getFile().length() - channelContext.getChannelBufferBytes().length, channelContext.getOffsetMS() , channelContext.getBeatDuration(),(waveFileProcessor.getFile().length() - channelContext.getChannelBufferBytes().length) * 1000 /audioFormat.getSampleRate()/2);
 				
 				channelContext.setOffsetMS(0);
 				channelContext.setBeatDuration(0);

+ 2 - 2
audio-analysis/src/main/resources/logback-spring.xml

@@ -31,14 +31,14 @@
 
 	<!--开发环境:打印控制台 -->
 	<springProfile name="dev">
-		<root level="INFO">
+		<root level="dev">
 			<appender-ref ref="stdout" />
 			<appender-ref ref="file" />
 		</root>
 	</springProfile>
 	
 	<springProfile name="test">
-		<root level="INFO">
+		<root level="dev">
 			<appender-ref ref="stdout" />
 			<appender-ref ref="file" />
 		</root>