当我尝试更改采样率时,为啥 sox 会损坏我的 wav 文件?

Posted

技术标签:

【中文标题】当我尝试更改采样率时,为啥 sox 会损坏我的 wav 文件?【英文标题】:Why does sox corrupt my wav file when I try and change the sample rate?当我尝试更改采样率时,为什么 sox 会损坏我的 wav 文件? 【发布时间】:2016-08-04 03:10:57 【问题描述】:

当我尝试使用 sox 更改 wav 文件的采样率时,我得到一个包含噪音和垃圾的文件以及以下 2 个错误:

sox WARN rate: rate clipped 579 samples; decrease volume?
sox WARN dither: dither clipped 518 samples; decrease volume?

虽然那里有问号,但我永远无法回答它们。他们更多地作为一种状态出现。

我开始的是我自己制作的 PCM 文件。规格是:

16 bit signed
big endian
1 channel 
44100 sample rate

我可以将文件 (0.wav) 导入 Audacity,这很好。

然后我将文件转换为 wav 文件,使用以下行:

sox -r 44100 -e signed-integer  -b 16 -c 1 0.raw 1.wav

我可以将该文件导入 Audacity,也可以。

但是当我尝试更改采样率时:

sox 1.wav -r 16000 2.wav

如果有人知道我做错了什么或遗漏了什么,我将不胜感激。我还在这里放了原始原始文件:http://warptv.com/raw.html

【问题讨论】:

【参考方案1】:

这似乎是字节顺序的问题。您的原始文件以大端字节顺序存储,而 WAV 为 at least most of the time、little-endian。

在这种情况下,您必须明确告知 SoX 您的原始文件的字节序,因此在转换时可以考虑到这一点。相应的开关是-B,将您的命令更改为:

sox -r 44100 -e signed-integer -B -b 16 -c 1 0.raw 1.wav

将原始文件正确转换为 wav 文件后,您尝试的后续速率转换应该可以按预期工作。至少对我有用。

稍微玩一下 Audacity,它似乎有一些方法可以检测(或猜测)SoX 缺乏的原始文件的字节序,这就是您发现的差异的根源。

【讨论】:

就是这样,宾果游戏。谢谢

以上是关于当我尝试更改采样率时,为啥 sox 会损坏我的 wav 文件?的主要内容,如果未能解决你的问题,请参考以下文章

SOX 的采样率误差

为啥你认为当我从我的 CF 卡上传图像到我的电脑时,有些图像会随机损坏?

在 iOS 上更改 AUGraph 的采样率

当我更改视图时,为啥我的按钮首选项/参数会重置?

当我在 iOS 的目标 c 中异步发送请求时,为啥我的数据会损坏?

为啥当我更改它的 id 属性时我的按钮没有点击?