我设置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#的解决方案。
答案 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)输入流。