为什么当我尝试更改采样率时 sox 会破坏我的 wav 文件?
Why does sox corrupt my wav file when I try and change the sample rate?
当我尝试使用 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
这似乎是字节序问题。您的原始文件以大端字节顺序存储,而 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 文件的采样率时,我得到了一个噪音和垃圾文件以及以下 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
这似乎是字节序问题。您的原始文件以大端字节顺序存储,而 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 所缺乏的原始文件的字节顺序的方法,这就是您发现的差异的来源。