Создание встроенного распознавания речи с использованием sapi c #?

#c# #speech-recognition #sapi

#c# #распознавание речи #sapi

Вопрос:

Мой код SAPI для настройки механизма распознавания in proc выглядит следующим образом:

 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 #.

Комментарии:

1. Предоставленный вами код является неполным. В частности, вам необходимо указать механизм распознавания, а также источник ввода.

Ответ №1:

Объектом ввода звука по умолчанию является SpMMAudioIn .

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

Ответ №2:

Эрик, твой код не работает. Во-первых, нет метода «GetRecognizer». Я заменил эту строку на то, что должно работать. Какую версию SAPI вы имеете в виду? Я использую «Microsoft Speech Object libary 5.4». Далее, вы не показываете, как установить аудиовход на устройство, как вы упомянули. Следующий код должен работать, но он не позволяет вам установить идентификатор устройства, который всегда работал в 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).