2014-10-03 88 views
-1

我想在java中創建語音識別項目,並嘗試使用sphinx cmu。我用這段代碼來表達對言論的承認,但是不給我一個很好的迴應。我如何解決這個問題?語音識別問題

import java.io.IOException; 
import java.net.URL; 

import edu.cmu.sphinx.api.Configuration; 
import edu.cmu.sphinx.api.Context; 
import edu.cmu.sphinx.api.LiveSpeechRecognizer; 
import edu.cmu.sphinx.api.SpeechResult; 
import edu.cmu.sphinx.api.StreamSpeechRecognizer; 
import edu.cmu.sphinx.result.WordResult; 

public class App 
{ 
    public static void main(String[] args) throws IOException 
    { 
     Configuration configuration = new Configuration(); 

     // Set path to acoustic model. 
     configuration 
      .setAcousticModelPath("resource:/WSJ_8gau_13dCep_8kHz_31mel_200Hz_3500Hz"); 
     // Set path to dictionary. 
     configuration 
      .setDictionaryPath("resource:/WSJ_8gau_13dCep_8kHz_31mel_200Hz_3500Hz/dict/cmudict.0.6d"); 
     // Set language model. 
     configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/language/en-us.lm.dmp"); 

     LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration); 
     // Start recognition process pruning previously cached data. 
     recognizer.startRecognition(true); 
     SpeechResult result = recognizer.getResult(); 
     while ((result = recognizer.getResult()) != null) { 
      System.out.println(result.getHypothesis()); 
     } 
     recognizer.stopRecognition(); 
    } 
} 

回答

0

我不確定你的意思是「不好的迴應」。

如果你想解碼8khz文件,你需要調用configuration.setSampleRate(8000)配置解碼器爲8khz。您還需要使用可從下載中獲得的en-us-8khz型號以獲得最佳效果。

如果你想從麥克風識別16khz音頻,你需要使用16khz模型,而不是8khz模型。