2017-09-08 6 views
1

私は自分のデスクトップアプリケーションで動作するようにしようとしていますが、それは0%の時間で正しく取得されます また、デフォルトの言語モデルとすべてのものをsphinx4 data.jarから使用していますスフィンクス4ひどい精度

コード:

import edu.cmu.sphinx.api.Configuration; 
import edu.cmu.sphinx.api.Microphone; 
import edu.cmu.sphinx.api.SpeechResult; 
import edu.cmu.sphinx.api.StreamSpeechRecognizer; 
public class Speechy { 
public static void main(String[] args) throws Exception { 

    Configuration configuration = new Configuration(); 

    configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us"); 
    configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict"); 
    configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin"); 
    Microphone micro = new Microphone(8000, 16, true, false); 
    micro.startRecording(); 
    StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration); 
// Start recognition process pruning previously cached data. 
    recognizer.startRecognition(micro.getStream()); 
while(true){ 
SpeechResult result = recognizer.getResult(); 
System.out.println(result.getHypothesis()); 
} 
} 
} 

答えて

0
Microphone micro = new Microphone(8000, 16, true, false); 

デフォルト音響モデルは、構成8000が間違っている、16kHzのオーディオが必要です。

も参照してくださいthe tutorial

悪い精度の主な理由は以下のとおりです。

サンプルレート/なしの不一致。入ってくるオーディオのチャンネルのうち、または入力オーディオ帯域幅の不一致があります。 16kHz(またはトレーニングデータに応じて 8kHz)16bit Mono(=シングルチャンネル) リトルエンディアンファイル。 リサンプリングでソースのサンプルレートを修正する必要があります(レートがトレーニング データのレートよりも高い場合のみ)。ファイルをアップサンプリングして、より高いサンプリングレートのオーディオでトレーニングされたアコースティックの モデルでデコードするべきではありません。 sox --i/path/to/audio/fileコマンドを使用して、オーディオファイル形式 (サンプリングレート、チャンネル数)を確認できます。より多くの情報をここで見つける:何

+0

サンプルレートである私は、コードを掲載し、それはまだ悪い精度 – thatmadhacker

+0

を持っていた後、私はカスタム言語モデルおよび辞書を使って、それを修正することを変更 – thatmadhacker