0

我有一个严重“溢出”的 WAV 文件(以浮点 32 位格式编写的样本):样本范围不是 [-1.0,+1.0],而是 [-5.0,+5.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 进行剪辑?

4

1 回答 1

0

我从SoX 邮件列表中得到了答案。

所需的行为是不可能的,但是,在这种特定情况下,有一种解决方法。将输入样本编码覆盖为 32 位有符号整数而不是浮点数,这些值将被原封不动地复制;由于输出是无标题的,所以 SoX 认为样本是什么并不重要。

所以,这有效:
sox --bits 32 --channels 1 --encoding signed-integer --rate 48000 input.wav output.raw

于 2020-06-29T10:51:34.817 回答