我已经使用NAudio将双数组输出[]转换为wav文件。该文件在VLC播放器和Windows Media Player中播放正常,但是当我尝试在Winamp中打开它,或者使用wavread()在Matlab中访问它时,我失败了..(在Matlab中我收到错误:“无效的波形文件。原因: 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);
答案 0 :(得分:2)
您必须丢弃WaveFileWriter
,以便正确修复WAV文件头。 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);
}