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

时间:2016-08-04 03:10:58

标签: audio sox

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

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 个答案:

答案 0 :(得分:0)

这似乎是一个有关endian-ness的问题。您的原始文件以big endian字节顺序存储,而WAV是at least most of the timelittle-endian

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

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

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

使用Audacity玩一下它似乎有一些方法可以检测(或猜测)SoX缺少的原始文件的字节序,并且这是你发现的差异的根源。