NAudio BufferedWaveProvider как вход System.IO.Stream? - PullRequest
0 голосов
/ 31 октября 2018

Я передаю аудио с клиентского устройства на сервер. Сервер должен получить аудио и выполнить распознавание этого аудио с помощью .NET Speech Recognition Engine. В частности, я считаю, что метод SetInputToAudioStream - это то, что я буду использовать, для чего требуется ввод System.IO.Stream.

Документацию по этому методу можно найти здесь: https://docs.microsoft.com/en-us/dotnet/api/system.speech.recognition.speechrecognitionengine.setinputtoaudiostream?view=netframework-4.7.2

Теперь я нашел здесь отличный код: https://markheath.net/post/how-to-record-and-play-audio-at-same,, который описывает получение аудио в потоке и воспроизведение его пользователю. Используя немного измененную версию этого, мой сервер способен принимать аудио и воспроизводить его.

Но BufferedWaveProvider не является допустимым типом для этого метода. Я попытался реализовать свою собственную версию BufferedWaveProvider, которая наследуется от WaveStream, а не IWaveProvider, но я должен делать что-то не так в своей реализации - поскольку она не работает должным образом.

Моя цель - использовать BufferedWaveProvider или что-то подобное в качестве входных данных для моего распознавателя. Таким образом, пользователь говорит на клиентское устройство, а сервер получает и обрабатывает это аудио в режиме реального времени (как если бы микрофон, с которым говорил пользователь, был встроен в сервер).

Как я уже упоминал выше, я пытался реализовать BufferedWaveProvider, который наследуется от WaveStream, и я пытался использовать RawSourceWaveStream, но оба вызывают у меня некоторые проблемы.

...