我正在使用语音识别来识别所有的单词!我使用了en-us模型,它的准确性有点小。当俚语是美国人时。因为我想识别印度俚语我使用的是En-in模型,但它的精确度为0%。它没有识别100个中的1个单词。我不知道如何提高准确性或我的实施是否正确。如果我想以其他方式使用它或如何提高其准确性,请说出来。
我的代码
package spinxtest;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import edu.cmu.sphinx.api.Configuration;
import edu.cmu.sphinx.api.SpeechResult;
import edu.cmu.sphinx.api.LiveSpeechRecognizer;
import edu.cmu.sphinx.frontend.util.Microphone;
import edu.cmu.sphinx.result.Result;
import edu.cmu.sphinx.result.WordResult;
public class IndianSlang {
public static void main(String[] args) throws Exception {
Configuration configuration = new Configuration();
configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-in/en-in");
configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-in/cmudict-en-in.dict");
configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-in/en-us.lm.bin");
configuration.setUseGrammar(false);
LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration);
recognizer.startRecognition(true);
System.out.println("Start speaking. \n");
SpeechResult result;
long timer=0;
while (timer < 2*60*1000) {
result = recognizer.getResult();
if (result != null)
{
System.out.print("You said: ");
for (WordResult word : result.getWords())
{
if (!word.isFiller())
System.out.print(word.getWord() + " ");
}
System.out.println();
}
else {
System.out.println("I can't hear what you said.\n");
}
}
recognizer.stopRecognition();
}
}
我使用的罐子:
WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar
sphinx4-data-5prealpha-20160628.232535-10.jar
sphinx4-core-5prealpha-20160628.232526-10.jar
commons-math3-3.0.jar
ant-contrib-0.6.jar
js.jar
junit-4.8.1.jar
batch.jar
jsapi-1.0-base.jar
tags.jar
答案 0 :(得分:-1)
我尝试了同样的准确性并不是那么好,因为两种型号的音素都不同。您需要做的是为您的en-in声学模型创建兼容的字典文件和语言模型。为此从下面的链接安装g2p-seq2seq并创建自己的.dict和.lm.bin文件,然后尝试。