使用sapi c#创建一个In proc语音识别?

时间:2014-06-24 07:31:08

标签: c# speech-recognition sapi

我设置in proc识别引擎的SAPI代码如下所示:

ISpeechRecoContext cpRecoCtx;
// create the recognition context
cpRecoCtx = new SpeechLib.SpInProcRecoContext();

((SpInProcRecoContext)cpRecoCtx).Recognition +=
    new _ISpeechRecoContextEvents_RecognitionEventHandler(RecoContext_Recognition);
/****** END: set up recognition context *****/

那么如何在c#中将音频输入设置为默认音频输入?我在C ++中找到了解决方案但需要一个用于C#的解决方案。

2 个答案:

答案 0 :(得分:1)

默认音频输入对象为SpMMAudioIn

ISpeechRecoContext cpRecoCtx;
SpMMAudioIn audio = new SpMMAudioIn;
// set the audio input
cpRecoCtx.GetRecognizer.SetInput(audio);

答案 1 :(得分:0)

Eric,您的代码不起作用。首先,没有" GetRecognizer"方法。我用应该起作用的东西取代了这一行。您指的是什么版本的SAPI?我正在使用" Microsoft Speech Object libary 5.4"。接下来,您没有显示如上所述如何设置音频输入到设备。以下代码应该可以工作,但它不允许您设置设备ID,它始终在VB6中工作。尝试将.DeviceID设置为任何引发异常的行为:

SpeechLib.ISpeechRecoContext cpRecoCtx;
cpRecoCtx = new SpeechLib.SpInProcRecoContext();
SpeechLib.SpMMAudioIn audio = new SpeechLib.SpMMAudioIn();
// set the audio input
// cpRecoCtx.GetRecognizer.SetInput(audio); <--- no such method
audio.DeviceId = 1;
cpRecoCtx.Recognizer.AudioInputStream = audio;

当然,有一种方法可以将输入发送到有效的MMSYS(WaveInOpen)输入流。