Я пытаюсь выполнить «потоковое» распознавание речи на С# из сокета TCP. Проблема, с которой я сталкиваюсь, заключается в том, что SpeechRecognitionEngine.SetInputToAudioStream(), похоже, требует Stream определенной длины, который может искать. Прямо сейчас единственный способ, которым я могу думать, чтобы заставить эту работу работать, - это многократно запускать распознаватель в MemoryStream по мере поступления большего количества входных данных.
Вот код для иллюстрации:
SpeechRecognitionEngine appRecognizer = new SpeechRecognitionEngine();
System.Speech.AudioFormat.SpeechAudioFormatInfo formatInfo = new System.Speech.AudioFormat.SpeechAudioFormatInfo(8000, System.Speech.AudioFormat.AudioBitsPerSample.Sixteen, System.Speech.AudioFormat.AudioChannel.Mono);
NetworkStream stream = new NetworkStream(socket,true);
appRecognizer.SetInputToAudioStream(stream, formatInfo);
// At the line above a "NotSupportedException" complaining that "This stream does not support seek operations."
Кто-нибудь знает, как обойти это? Он должен поддерживать какой-либо потоковый ввод, поскольку он отлично работает с микрофоном, использующим SetInputToDefaultAudioDevice().
Спасибо, Шон
SetInputToDefaultAudioDevice()
— это черная магия Microsoft (распространенная), или она выполняет какую-то пакетную обработку, как вы предложили. - person R. Martinho Fernandes   schedule 05.11.2009