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 毫秒的帧。