使用 SAPI 将语音转换为文本
Posted
技术标签:
【中文标题】使用 SAPI 将语音转换为文本【英文标题】:Converting Speech-To-Text using SAPI 【发布时间】:2013-10-13 12:51:55 【问题描述】:有没有人知道如何使用 Microsoft 的 Speech Recognition API for Windows Form Application 进行 STT?
【问题讨论】:
【参考方案1】:.NET 包含一个用于语音识别的程序集。 您需要添加对
的引用系统.语音
并添加命名空间
using System.Speech.Recognition;
以下代码将分析您的语音并将文本添加到文本框:
private void startRecognition()
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(); //default culture
//SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(new CultureInfo("de-DE"));
//With specified culture | Could cause an CultureNotFoundException
Grammar dictationGrammar = new DictationGrammar();
recognizer.LoadGrammar(dictationGrammar);
try
recognizer.SetInputToDefaultAudioDevice();
RecognitionResult result = recognizer.Recognize();
if(result != null)
result_textBox.Text += result.Text + "\r\n";
catch (InvalidOperationException exception)
MessageBox.Show(exception.Message,exception.Source);
finally
recognizer.UnloadAllGrammars();
要更改识别超时的时间,请更改以下属性:
recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(3);
recognizer.BabbleTimeout = TimeSpan.FromSeconds(2);
recognizer.EndSilenceTimeout = TimeSpan.FromSeconds(1);
recognizer.EndSilenceTimeoutAmbiguous = TimeSpan.FromSeconds(1.5);
来源:
http://msdn.microsoft.com/en-us/magazine/cc163663.aspx | http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognitionengine.aspx
【讨论】:
不客气,只是发现了一些需要改进的地方。如果我们开始识别但不说话,结果将为空,将结果的文本添加到文本框将导致 NullReferenceException。为避免这种情况:if(result != null)result_textBox.Text += result.Text + "\r\n";
以上是关于使用 SAPI 将语音转换为文本的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Speech API (SAPI) UserTraining 语法
使用其他语音时的文本到语音 SAPI5 AccessViolationException