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
чтобы остановить его, прежде чем использовать его.