2

NAudio を使用して double 配列 output[] を wav ファイルに変換しました。ファイルは VLC プレーヤーと Windows Media Player では正常に再生されますが、Winamp で開くか、wavread() を使用して Matlab でアクセスしようとすると失敗します.. (Matlab では次のエラーが表示されます:「無効な Wave ファイル。理由: WAV ファイルのチャンク サイズ情報が正しくありません。" というメッセージが表示されます。これは、明らかにヘッダーに問題があることを意味します)。これを解決する方法についてのアイデアはありますか? 配列を WAV に変換するコードは次のとおりです。

float[] floatOutput = output.Select(s => (float)s).ToArray();
WaveFormat waveFormat = new WaveFormat(16000, 16, 1);
WaveFileWriter writer = new WaveFileWriter("C:\\track1.wav", waveFormat);
writer.WriteSamples(floatOutput, 0, floatOutput.Length);
4

1 に答える 1

2

WaveFileWriterWAV ファイル ヘッダーを適切に修正できるように、 を破棄する必要があります。using ステートメントは、これを行うための最良の方法です。

float[] floatOutput = output.Select(s => (float)s).ToArray();
WaveFormat waveFormat = new WaveFormat(16000, 16, 1);
using (WaveFileWriter writer = new WaveFileWriter("C:\\track1.wav", waveFormat))
{
    writer.WriteSamples(floatOutput, 0, floatOutput.Length);
}
于 2013-11-06T11:12:10.147 に答える