我正在构建一个用于录制语音留言的网络应用,我正在寻找将语音留言转换为文本的最佳选择。有没有人对使用什么进行转换有一些建议? System.Speech会工作吗?
答案 0 :(得分:6)
System.Speech是一个以客户为中心的API。 Vista和Windows 7包括System.Speech的语音引擎。您可以将此用于转录,因为Microsoft提供的客户端语音引擎包含听写语法。
Microsoft提供的服务器语音引擎不包含听写语法,因此它们更难用于转录。用于服务器识别的.NET命名空间是Microsoft.Speech,而版本为10.2的完整SDK可在http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4获得。语音引擎是免费下载的。
要开始使用.NET语音,几年前在http://msdn.microsoft.com/en-us/magazine/cc163663.aspx发表了一篇非常好的文章。这可能是迄今为止我发现的最好的介绍性文章。它有点过时了,但非常好。 (测试结束后,AppendResultKeyValue方法被删除了。)
这是一个快速示例,显示了一个最简单的.NET窗体应用程序,可以使用我能想到的听写语法。这应该适用于Windows Vista或Windows 7.我创建了一个表单。在它上面放了一个按钮,使按钮变大。添加了对System.Speech的引用和行:
using System.Speech.Recognition;
然后我将以下事件处理程序添加到button1:
private void button1_Click(object sender, EventArgs e)
{
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
Grammar dictationGrammar = new DictationGrammar();
recognizer.LoadGrammar(dictationGrammar);
try
{
button1.Text = "Speak Now";
recognizer.SetInputToDefaultAudioDevice();
RecognitionResult result = recognizer.Recognize();
button1.Text = result.Text;
}
catch (InvalidOperationException exception)
{
button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?\r\n{0} - {1}.", exception.Source, exception.Message);
}
finally
{
recognizer.UnloadAllGrammars();
}
}
可以在What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?
找到比较Microsoft提供的各种语音引擎和API的更多信息。