所以我正在尝试编写一个简单的程序,使用CMU Sphinx库检测.wav文件的语音活动。
到目前为止,我有以下
SpeechClassifier s = new SpeechClassifier();
s.setPredecessor(dataSource);
Data d = s.getData();
while(d != null) {
if(s.isSpeech()) {
System.out.println("Speech is detected");
}
else {
System.out.println("Speech has not been detected");
}
System.out.println();
d = s.getData();
}
我得到输出“未检测到语音”,但音频文件中有语音。好像getData函数似乎没有按照我想要的方式工作。我希望它获取帧然后确定帧(s.isSpeech()
)是否包含语音。
我正在尝试为每个帧提供多个输出(“检测到语音”与“未检测到语音”)。如何让我的代码变得更好?谢谢!
答案 0 :(得分:1)
您需要在SpeechClassifier之前插入DataBlocker:
DataBlocker b = new DataBlocker(10); // means 10ms
SpeechClassifier s = new SpeechClassifier(10, 0.003, 10, 0);
b.setPredecessor(dataSource);
s.setPredecessor(b);
然后它将处理10毫秒的帧。