Sphinx 语音 Activity 检测
Sphinx Voice Activity Detection
所以我正在尝试编写一个简单的程序,使用 CMU Sphinx 库使用 .wav 文件检测语音 activity。
到目前为止,我有以下内容
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();
}
我得到了输出 "Speech is not detected",但音频文件中有 Speech。好像 getData 函数没有按照我想要的方式工作。我希望它获取帧,然后确定帧 (s.isSpeech()
) 是否包含语音。
我正在尝试为每一帧提供多个输出("Speech is detected" 与 "Speech is not detected")。我怎样才能使我的代码更好?谢谢!
您需要在 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 毫秒的帧。
所以我正在尝试编写一个简单的程序,使用 CMU Sphinx 库使用 .wav 文件检测语音 activity。
到目前为止,我有以下内容
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();
}
我得到了输出 "Speech is not detected",但音频文件中有 Speech。好像 getData 函数没有按照我想要的方式工作。我希望它获取帧,然后确定帧 (s.isSpeech()
) 是否包含语音。
我正在尝试为每一帧提供多个输出("Speech is detected" 与 "Speech is not detected")。我怎样才能使我的代码更好?谢谢!
您需要在 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 毫秒的帧。