2011-01-05 122 views
3

我正在制作一个涉及使用windows语音识别的应用程序。我正在考虑使用C++来做到这一点,因为我有这种语言的一些经验。我想使用语音识别的方式可以在内部使用。如果我将音频文件上传到我的程序中,我希望语音识别将该音频写入文本文件,但所有这些都应在内部完成。请提供一些帮助,如果我没有正确解释我的问题,请让我知道,我会尝试再次解释。使用C++来调用和使用Windows语音识别

由于提前, 的div

回答

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

+0

并在第六元素挂钩(http://msdn.microsoft.com/en-us/magazine /cc163663.aspx)非常有帮助。 – 2011-01-06 15:43:36

2

如果你真的想这样做,在C++中,你必须下载的SAPI SDK,它不来标准与Windows(老问题,但没有公认的答案,并出现在谷歌相当高)

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;你将不得不删除所有的图形用户界面和所有的语音合成内容,你会发现,语音识别会降低到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大新,做