| 
					
				 | 
			
			
				@@ -50,8 +50,6 @@ public class SoundServiceImpl implements SoundService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private SysMusicScoreDao sysMusicScoreDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private SysMusicScoreAccompanimentDao sysMusicScoreAccompanimentDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private IdGeneratorService idGeneratorService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -74,27 +72,6 @@ public class SoundServiceImpl implements SoundService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return times; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private List<Double> rootMeanSquareExtractor(byte[] bytes, String url) throws UnsupportedAudioFileException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Double> rootMeans = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int size = 2048; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int overlap = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        AudioDispatcher dispatcher = StringUtils.isBlank(url)?getFromByteArray(bytes, size, overlap):getFromFile(url, size, overlap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        dispatcher.addAudioProcessor(new AudioProcessor() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public void processingFinished() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public boolean process(AudioEvent audioEvent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rootMeans.add(audioEvent.getRMS()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        dispatcher.run(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return rootMeans; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @describe 音频分贝信息提取 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @author Joburgess 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -144,6 +121,9 @@ public class SoundServiceImpl implements SoundService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public HttpResponseResult compare(MultipartFile record, Integer musicScoreId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(record.getSize()<1024){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("录音时间太短"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SysMusicScore sysMusicScore = sysMusicScoreDao.get(musicScoreId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(Objects.isNull(sysMusicScore)|| StringUtils.isBlank(sysMusicScore.getUrl())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("伴奏信息错误"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -162,7 +142,7 @@ public class SoundServiceImpl implements SoundService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             f = new File(filePath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             FileUtils.copyURLToFile(url, f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LOGGER.info("文件名:{},伴奏编号:{},源文件:{}", record.getOriginalFilename(), musicScoreId, filePath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LOGGER.info("录音文件大小:{}MB,伴奏编号:{},源文件:{}", record.getSize()/1048576f, musicScoreId, filePath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal oneHandred = new BigDecimal(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -218,7 +198,7 @@ public class SoundServiceImpl implements SoundService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             float sameTimes = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (Double time1 : times_s) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (Double time2 : times_r) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(Math.abs(time2-time1)<1.5){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(Math.abs(time2-time1)<1.3){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         sameTimes++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -232,14 +212,13 @@ public class SoundServiceImpl implements SoundService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             cadence = new BigDecimal(cadence_d).multiply(oneHandred).setScale(0, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            integrity = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(l_r.compareTo(BigDecimal.ZERO)<=0||l_s.compareTo(BigDecimal.ZERO)<=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }else if(l_r.compareTo(l_s)<0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                integrity = l_r.divide(l_s, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(oneHandred).setScale(0, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                integrity = new BigDecimal(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //完整度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal time_s = new BigDecimal(times_s.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal time_r = new BigDecimal(times_r.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(time_s.compareTo(time_r)<0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                time_r = time_s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            integrity = time_r.divide(time_s, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(oneHandred).setScale(0, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             score = intonation.add(cadence).add(integrity).divide(new BigDecimal(3), 0, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -252,9 +231,9 @@ public class SoundServiceImpl implements SoundService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(f!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 f.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            if(f_r!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                f_r.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(f_r!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                f_r.deleteOnExit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         result.put("score", score); 
			 |