C# 双阵列到wav

C# 双阵列到wav,c#,wav,naudio,C#,Wav,Naudio,我想将双[]数组导出到wav文件。我在操作标题(RIFF、fmt等)时遇到一些问题。你知道我该怎么做吗?也许可以使用位转换器将双[]数组转换为字节[]数组,然后使用NAudio的WaveileWriter?非常感谢任何示例代码 您必须根据标准写入WAV文件的所有必要位。你会有单声道与立体声的问题,还有采样率的问题。强烈建议您查看一些已经存在的处理此问题的源代码(我在快速搜索中没有找到任何C#版本,尽管有几个C/C++版本)。尝试仅根据标题规范编写代码将是命中或未命中的只需使用WaveFileWr

我想将双[]数组导出到wav文件。我在操作标题(RIFF、fmt等)时遇到一些问题。你知道我该怎么做吗?也许可以使用位转换器将双[]数组转换为字节[]数组,然后使用NAudio的WaveileWriter?非常感谢任何示例代码

您必须根据标准写入WAV文件的所有必要位。你会有单声道与立体声的问题,还有采样率的问题。强烈建议您查看一些已经存在的处理此问题的源代码(我在快速搜索中没有找到任何C#版本,尽管有几个C/C++版本)。尝试仅根据标题规范编写代码将是命中或未命中的

只需使用WaveFileWriter的
WriteSample
方法逐个编写每个示例,或
WriteSamples
一次性完成即可。因为有一个双精度数组,所以可以先使用一点LINQ转换为浮点数组

float[] floatArray = doubleArray.Select(s => (float)s).ToArray();
writer.WriteSamples(floatArray, 0, floatArray.Length);

这将把每个样本写入
WaveileWriter
,转换为正确的位深度(例如16位或32位IEEE浮点),这取决于您打开
WaveileWriter

时选择的波形,但我自己也没有找到任何现有代码。我知道的唯一“捷径”是NAudio,但我不确定如何用它实现这一点。发现了这一点,但它假设输入数组是由字节组成的原始音频是字节(实际上通常是16位字)。你的浮点数据是什么样子的?我看了一下你引用的页面,上面有一个将浮点数据转换成字节流的例子。你看过youtube上的NAUDIO教程了吗?看起来结合教程6和7应该会给出你想要的你的意思是这些值是什么样子的?我的数据是一个双数组。例如,前3个值为:-0.0013002557988597064、0.0014071145346131924、0.011843159708621626。Gary,你说我将数组转换为浮点数并使用WaveileWriter?谢谢Mark!顺便说一句,NAudio看起来真的很棒!荣誉我很快就会开始;)