System.Speech 语音识别不起作用
Posted
技术标签:
【中文标题】System.Speech 语音识别不起作用【英文标题】:System.Speech Voice Recognition not working 【发布时间】:2015-09-23 10:59:21 【问题描述】:我正在使用 c# system.speech,我想识别的句子数量有限。这是代码
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 文件时,此代码会引发异常,异常原因是在例句中找不到匹配项。我可以强制它,所以它必须选择句子吗?
【问题讨论】:
提供代码,包括您向识别器提供 wav 文件的部分,因为对我来说,即使声音文件完全静音(它提供置信度%)不抛出异常,它也始终有效。跨度> 还有你如何初始化recognizer
?
我有所有代码,我可以更新代码,但它没有发送 % 置信度,它似乎无法识别
编辑问题并添加我所问的内容,以便我可以通过在这里进行开发来帮助您。
我也可以分享wav文件和句子
【参考方案1】:
您收到 NullReferenceException
是因为您的 .wav 文件格式不同于 System.Speech.Recognition.SpeechRecognitionEngine
在使用时默认尝试分析 .wav 文件的方式SetInputToWaveFile
方法。
要更改读取格式,您应该改用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 个样本 strong> 因为您的 .wav 文件是真正经过编码的。
注意:这解决了我在你的文件上的问题
【讨论】:
感谢您的帮助,但它仍然给出相同的异常:(以上是关于System.Speech 语音识别不起作用的主要内容,如果未能解决你的问题,请参考以下文章