2016-09-05 18 views
0

MediaFoundationReaderとResamplerDmoStreamをWaveFormat(16000,16、1)に使用して、MP4(オーディオ)ファイルをWAVにリサンプリングします。再サンプリング後、私はスピーチをスピーチAPIに送信しますが、ストリームにはWAVヘッダーが含まれていないためAPIが失敗します。 (WaveFileWriterを使用して)ストリームをWAVファイルに保存する場合は、ファイルを再度読み取ってからストリームをAPIに送信すると、ストリームにWAVヘッダーが含まれているためAPIが機能します。 時間のかかるI/Oを防ぐために、ResamplerDmoStreamリサンプリング後にストリームにWAVヘッダーを追加する方法はありますか?NAudioのWAVヘッダーを先頭に追加

答えて

0

WaveFileWriterを使用してStreamに書き込むことができます。したがって、この場合は、MemoryStreamに書き込むことになり、WAVヘッダーを正しくファイナライズするためにはWaveFileWriterを処分する必要があります。しかし、あなたはWAVファイルのメモリ内表現を持っています。

1つの警告は、あなたがWaveFileWriterを配置する際MemoryStreamを配置終わるかもしれないということですので、私はNAudioで便利なクラスは、あなたがそれを使用する前に、それが配置された取得を停止するにはMemoryStreamをラップすることができたIgnoreDisposeStreamと呼ばれています。

+0

ありがとうございます。 ResamplerDmoStreamを使用すると、API側で矛盾した結果が得られました。結局、代わりにMediaFoundationResamplerを使用しました。 WaveFileWriter.Writeを試しましたが、適切なサイズのストリームを作成するためにバイト配列の長さを知る必要があり、MediaFoundationResamplerは長さのゲッターを提供しません。 MediaFoundationResamplerから適切なサイズのストリームを作成するにはどうすればよいですか? –

関連する問題