当我尝试使用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
答案 0 :(得分:0)
这似乎是一个有关endian-ness的问题。您的原始文件以big endian字节顺序存储,而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缺少的原始文件的字节序,并且这是你发现的差异的根源。