狮身人面像语音活动检测

时间:2017-03-05 01:12:43

标签: cmusphinx sphinx4

所以我正在尝试编写一个简单的程序,使用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())是否包含语音。

我正在尝试为每个帧提供多个输出(“检测到语音”与“未检测到语音”)。如何让我的代码变得更好?谢谢!

1 个答案:

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