在查看与“混合 2 个 wav 文件”相关的所有问题和答案时,建议的大多数答案 - 将每个 wav 文件中的字节转换为短裤,获取短裤的平均值并写入输出字节数组。我还读到,在我的情况下,在多通道未压缩 PCM wav 文件(2 通道 16 位和每秒 44100 个样本)中,每个通道的数据都以隔行格式存储,因此在数据块中 - 第一个字节将用于通道1,第二个用于通道 2,第三个用于通道 1,第四个用于通道 2,依此类推。为了获得最快的转换 - 大多数建议使用 Buffer.BlockCopy 或 Array.ConvertAll 作为选项。
这实际上不会扭曲数据吗?因为第一个短值实际上是字节 ch1 + 字节 ch2。对于另一个文件也是如此 - 当添加完成时 - 进行平均 - 我们基本上是强制从通道 2 字节溢出到通道 1 字节,从而扭曲两个通道中的数据。
我尝试了上述选项,在我想要合并的 2 个文件之间的重叠区域,我得到了明显的信号失真。
我认为将通道数据分开的另一种选择是首先将字节数据除以 2,然后添加..并写入输出,现在尝试一下并将发布。