2017-03-05 8 views
0

CMU Sphinxライブラリを使用して.wavファイルで音声アクティビティを検出する簡単なプログラムを作成しようとしています。Sphinx音声アクティビティ検出

はこれまでのところ、私は、次の

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

関連する問題