系统.语音识别不工作
本文关键字:工作 语音识别 系统 | 更新日期: 2023-09-27 18:14:02
我使用c#系统。语言,我想要识别的句子数量有限。下面是代码
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
String[] Sentences = File.ReadAllLines(samplePath);
Choices sentences = new Choices();
sentences.Add(Sentences);
GrammarBuilder gBuilder = new GrammarBuilder(sentences);
Grammar g = new Grammar(gBuilder);
g.Enabled = true;
recognizer.LoadGrammar(g);
try
{
recognizer.SetInputToWaveFile(filePath);
RecognitionResult result = recognizer.Recognize();
String ret = result.Text;
recognizer.Dispose();
return ret;
}
catch (InvalidOperationException exception) { }
return "";
当我给它一些wav文件时,这段代码抛出异常,异常的原因是它无法在示例句子中找到匹配。我能强制它选择一个句子吗?
您正在获得NullReferenceException
,因为您的.wav文件的格式不同于System.Speech.Recognition.SpeechRecognitionEngine
在使用SetInputToWaveFile
方法时默认试图分析.wav文件的方式。
为了改变读取格式,你应该使用SetInputToAudioStream
方法来代替:
using (FileStream stream = new FileStream("C:''3.wav", FileMode.Open))
{
recognizer.SetInputToAudioStream(stream, new SpeechAudioFormatInfo(5000, AudioBitsPerSample.Sixteen, AudioChannel.Stereo));
RecognitionResult result = recognizer.Recognize();
string ret = result.Text;
}
这样它读取你的.wav文件作为一个立体声文件,在16bps和每秒5000个样本作为你的.wav文件是真正编码。
注意:这为我解决了问题ON YOUR FILE