当我尝试更改采样率时,为啥 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章
为啥你认为当我从我的 CF 卡上传图像到我的电脑时,有些图像会随机损坏?