|
@@ -11,6 +11,7 @@ import be.tarsos.dsp.io.jvm.AudioDispatcherFactory;
|
|
|
import be.tarsos.dsp.onsets.ComplexOnsetDetector;
|
|
|
import be.tarsos.dsp.onsets.OnsetHandler;
|
|
|
import be.tarsos.dsp.pitch.PitchProcessor;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.ym.mec.biz.dal.dao.SysMusicScoreAccompanimentDao;
|
|
|
import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
|
|
|
import com.ym.mec.biz.dal.dto.MusicPitchDetailDto;
|
|
@@ -23,6 +24,7 @@ import com.ym.mec.common.entity.HttpResponseResult;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.service.IdGeneratorService;
|
|
|
import org.apache.commons.io.FileUtils;
|
|
|
+import org.apache.commons.io.FilenameUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -268,7 +270,7 @@ public class SoundServiceImpl implements SoundService {
|
|
|
//存储录音文件
|
|
|
String filePath_r = tmpDir + idGeneratorService.generatorId("sound") + "_r.wav";
|
|
|
|
|
|
- LOGGER.info("录音文件大小:{}MB, 保存路径:{}", record.getSize()/1048576f, filePath_r);
|
|
|
+ LOGGER.info("录音文件大小:{}MB, 保存路径:{}, musicXml信息:{}", record.getSize()/1048576f, filePath_r, JSON.toJSONString(musicXmlInfos));
|
|
|
|
|
|
BigDecimal oneHundred = new BigDecimal(100);
|
|
|
//总分
|
|
@@ -299,7 +301,7 @@ public class SoundServiceImpl implements SoundService {
|
|
|
//音准匹配误差范围
|
|
|
float intonationErrRange = 10;
|
|
|
//音准有效阈值
|
|
|
- float intonationValidDuty = 0.7f;
|
|
|
+ float intonationValidDuty = 0.8f;
|
|
|
|
|
|
//节奏匹配数量
|
|
|
float cadenceNum = 0;
|
|
@@ -364,9 +366,11 @@ public class SoundServiceImpl implements SoundService {
|
|
|
|
|
|
score = intonation.multiply(new BigDecimal(0.4)).add(cadence.multiply(new BigDecimal(0.4))).add(integrity.multiply(new BigDecimal(0.2))).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
} catch (UnsupportedAudioFileException e) {
|
|
|
- e.printStackTrace();
|
|
|
+ LOGGER.error("文件类型不支持:{}", FilenameUtils.getExtension(filePath_r));
|
|
|
} catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
+ LOGGER.error("IO异常:{}", e);
|
|
|
+ } catch (ArithmeticException e){
|
|
|
+ LOGGER.info("无musicXml信息");
|
|
|
}finally {
|
|
|
if(f_r!=null){
|
|
|
f_r.deleteOnExit();
|