Я пытаюсь заставить SAPI 5.4 (также MS Speech Platform SDK v11) выполнять непрерывное распознавание речи для звука, поступающего из звонка в Skype.
Я могу использовать SKYPE4COMLib, чтобы захватить звук, поступающий из Skype, и передать его через порт TCP, выполнив инструкцию ALTER CALL. Вы можете направить звук Skype в файл или TCP-сокет. Файл работал нормально, но я хочу, чтобы он запускал распознавание в реальном времени, поэтому используйте сокет TCP.
Затем я создал прослушиватель TCP для сбора входящих данных (необработанный аудиоформат) и передачи массива байтов в SAPI как MemoryStream. Я настроил SAPI на ожидание необработанного звука в формате 16 бит, 16 кГц, моно, PCM. Однако событие признания никогда не происходит ?!
Вместо этого я попытался сохранить этот необработанный звук на диск, а затем прочитать его в SAPI, и он отлично работает ... так что сами данные в порядке, и Skype правильно отправляет звук. Однако это не позволяет мне постоянно узнавать, что мне нужно.
Код распознавания SAPI отлично работает с файлом WAV, необработанным файлом, загруженным с диска, или микрофоном. Я просто не могу заставить его работать из MemoryStream.
Я нашел эту похожую статью, ни одно из предложений, кажется, не работает для меня, и обсуждение, похоже, затихло.
Потоковый ввод в System.Speech.Recognition.SpeechRecognitionEngine
Есть ли у кого-нибудь рекомендации о том, как успешно заставить SAPI постоянно распознавать речь из необработанного звука, отправленного как MemoryStream на С #?
MemoryStream
для его буферизации? Вы должны передатьNetworkStream
непосредственно SAPI, опционально с BufferedStream перед ним. Вам может потребоваться наследовать отNetworkStream
, чтобы переопределитьSeek
. - person Dark Falcon   schedule 10.09.2012