使用c ++调用和使用Windows语音识别

时间:2011-01-05 22:14:52

标签: c++ windows speech-recognition speech speech-to-text

我正在制作一个涉及使用Windows语音识别的应用程序。我正在考虑使用c ++这样做,因为我对这门语言有一些经验。我想要使​​用语音识别的方式是它在内部工作。如果我将音频文件上传到我的程序中,我希望语音识别将此音频作为文本文件写入,但所有这些都应该在内部完成。请提供一些帮助,如果我没有正确解释我的问题,请告诉我,我会再次尝试解释。

提前致谢, 的div

2 个答案:

答案 0 :(得分:3)

Windows为客户端和服务器提供语音识别引擎。两者都可以用C ++或.NET语言编程。用C ++编程的传统API称为SAPI。客户端和服务器语音的.NET框架名称是System.Speech和Microsoft.Speech。

SAPI文档 - http://msdn.microsoft.com/en-us/library/ms723627(VS.85).aspx

用于客户端识别的.NET命名空间是System.Speech - http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx。 Windows Vista和7包括语音引擎。

用于服务器识别的.NET命名空间是Microsoft.Speech,而版本为10.2的完整SDK可在http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4获得。语音引擎是免费下载的。

许多早期的问题已经解决了这个问题。有关示例,请参阅Prototype based on speech recognitionSAPI and Windows 7 Problem

答案 1 :(得分:3)

(旧问题,但没有接受的答案,并且在谷歌中显得相当高)

如果你真的想在C ++中这样做,你必须下载不是Windows标准的SAPI SDK:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&displaylang=en,选择SpeechSDK51.exe

您可以在SAPI上找到的最佳文档不在Web上,而是在SDK本身的Docs /文件夹中。 .chm很好地解释了一切。 Here是一个可以帮助您入门的附加链接。

但是,C ++不是你的要求,我强烈建议你用C#来做。它真的更简单(没有COM组件,没有单独的SDK,MSDN上的更多文档,更多教程,......)。见this CodeProject article;你将不得不删除所有的GUI内容,以及所有的语音合成内容,你会发现,语音识别可以归结为10行代码。相当令人印象深刻。

编辑示例代码,未编译,未经测试:

using System.Speech;
using System.Speech.Recognition;

// in constructor or initialisation
SpeechRecognitionEngine recognizer = null;
recognizer = new SpeechRecognitionEngine();
recognizer.SetInputToDefaultAudioDevice();
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
recognizer.RecognizeAsync(RecognizeMode.Multiple);

// The callback called when a sentence is recognized
private void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e){
    string text = e.Result.Text;
    // Do whatever you want with 'text' now
}

ta dah,完成