Prepend WAV Header в NAudio

Я ресэмплирую MP4 (аудио) файл в WAV, используя MediaFoundationReader и ResamplerDmoStream to WaveFormat(16000, 16, 1). После повторной выборки я отправляю поток в речевой API для транскрипции, но API завершается ошибкой, поскольку поток не содержит заголовок WAV. Если я сохраняю поток в файл WAV (используя WaveFileWriter), снова читаю файл и затем отправляю поток в API, тогда API работает, потому что поток содержит заголовок WAV. Есть ли способ добавить заголовок WAV к потоку после повторной выборки ResamplerDmoStream, чтобы предотвратить дорогостоящий ввод-вывод?

1 ответ

Ты можешь использовать WaveFileWriter написать в Stream, Так что в этом случае я бы написал MemoryStreamи WaveFileWriter должен быть утилизирован, чтобы правильно завершить WAV-заголовки. Но тогда у вас будет в памяти представление WAV-файла.

Одно предостережение, что вы можете в конечном итоге избавиться от MemoryStream когда вы располагаете WaveFileWriter, поэтому у меня есть удобный класс в NAudio под названием IgnoreDisposeStream который вы можете обернуть MemoryStream чтобы остановить его, прежде чем использовать его.

Другие вопросы по тегам