2017-03-05 46 views
0

因此,我正在嘗試編寫一個簡單的程序,它將使用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

您需要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個毫秒幀。

+0

謝謝!但是在添加之後,它現在正在最後一行(d = s.getData())。我應該完全擺脫getData()方法嗎?我像上面建議的那樣添加了DataBlocker和修改後的SpeechClassifier。 – practicemakesperfect

+0

getData()應該保留。 「打破最後路線」是什麼意思? –

+0

我編輯過我的帖子。對不起,如果我的問題看起來很簡單。我覺得應該是這樣,但我一直沒有能夠得到它的工作。 – practicemakesperfect