我有一个严重的“溢出” WAV文件(以浮点32位格式编写的样本):样本范围高达[-5.0,+ 5.0],而不是[-1.0,+ 1.0]。

使用SoX从WAV文件中获取原始PCM音频样本:
sox --bits 32 --channels 1 --encoding floating-point --rate 48000 input.wav output.raw
我收到警告:

sox WARN sox: `input.wav' input clipped 1163400 samples
sox WARN sox: `output.raw' output clipped 605664 samples; decrease volume?

当我查看输出时,我看到样本已被裁剪,范围现在是[-1.0,+ 1.0]。但是,那不是我想要的。

我希望输出与输入完全相同,只是格式不同(RAW而不是WAV)。我需要使用命令行工具来完成任务。有没有办法防止SoX进行裁剪?

最佳答案

我从SoX mailing list得到了答案。
所需的行为是不可能的,但是,在这种特定情况下,有一种解决方法。覆盖输入样本编码为32位有符号整数而不是float,这些值将被原样复制;由于输出是无标题的,因此SoX认为样本是什么都没有关系。
因此,这可行:sox --bits 32 --channels 1 --encoding signed-integer --rate 48000 input.wav output.raw

关于audio - 阻止SoX进行裁剪?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62194098/

10-12 16:02