我想在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 :(得分:0)
我不确定“不好回应”是什么意思。
如果要解码8khz文件,则需要调用configuration.setSampleRate(8000)来配置8khz的解码器。您还需要使用下载中提供的en-us-8khz模型以获得最佳效果。
如果你想从麦克风识别16khz音频,你需要使用16khz型号,而不是8khz型号。