【问题标题】:Reducing/removing clipping in SoX when converting the sample rate转换采样率时减少/消除 SoX 中的削波
【发布时间】:2011-10-16 11:07:25
【问题描述】:

我正在使用 SoX 将一组 wav 文件修剪为 16kHz、16 位、单声道 wav 文件(这将是一个初始 wav 文件的子集)。大多数源 wav 文件已经设置为该规范,但是,我刚刚发现其中一些具有不同的采样率。由于它将使用 ProcessBuilder 在 Java 中实现自动化,我想我可以使用以下命令:

sox <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>

只有在不是 16000 Hz 时才会改变采样率。它对具有相同规范的文件执行应有的操作,但在具有不同采样率的文件上,我得到:

sox WARN rate: rate clipped 48 samples; decrease volume?
sox WARN dither: dither clipped 44 samples; decrease volume?

我应该如何在不降低音频质量的情况下处理这个问题?请注意,我对信号处理一无所知。

【问题讨论】:

    标签: audio sox


    【解决方案1】:

    按照工具的建议,尝试稍微降低音量,例如前面加上 -v 0.99(或 0.98 等)。如此小的体积变化是难以察觉的。

    例子:

    sox -v 0.99 <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>
    

    如果您仍然得到剪辑,那么音频可能一开始就被严重剪辑(即失真)(这在现代音乐中很常见;请参阅维基百科:Loudness war),因此可以忽略警告 - 没有额外的失真介绍了。

    正如在 cmets 中提到的,可以给出 -G 选项,它会自动对所需的音量进行任何调整以避免削波(以额外的 CPU 时间为代价,即使用 -G 运行速度会稍微慢一些)。

    【讨论】:

    • 我重新阅读了文档并意识到我错过了-G 选项,它会自动修复增益。我想避免设置任意数字,因此决定使用-G 选项。如果您在答案中附加了使用保护选项,我很乐意将其提供给您,因为它提供了很多信息。
    • 您还可以使用“--norm”选项来防止削波,如果音频太安静,则将其提高到不削波的最大音量。
    【解决方案2】:

    我遇到了问题。更改 wav 文件的编码修复了它:

    sox input.wav -e signed-integer output.wav
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2022-01-19
      • 2017-03-04
      • 2015-12-16
      • 2011-01-06
      相关资源
      最近更新 更多