代码之家  ›  专栏  ›  技术社区  ›  David Dean

如何确保SOX在不知道版本的情况下不执行自动抖动?

  •  1
  • David Dean  · 技术社区  · 16 年前

    在将音频引入我们的语音检测系统之前,我正在使用SOX对其进行重新采样,但我遇到了一个难题,SOX版本14.3默认情况下为重新采样操作添加了自动抖动,我们不希望这样做。

    如果我们知道我们一直在使用SOX≥14.3,这不是问题,因为我们可以使用新的 -D 禁用它的标志:

    sox original.wav -Dr 8000 new.wav
    

    但是,我们不能保证我们将使用SOX≥14.3,因此如果需要,我需要某种方法来指定-d标志,但是不要使用它(因为它在无法识别时出错)。

    有什么想法吗?

    1 回复  |  直到 16 年前
        1
  •  0
  •   David Dean    16 年前

    我的第一个想法是:

    # assume -D flag is available to disable automatic dithering
    sox original.wav -Dr 8000 new.wav
    # if -D flag isn't available (sox < 14.3), then dithering isn't automatic
    if [$? -ne 0]; then
       sox original.wav -r 8000 new.wav
    fi
    

    由于检查版本号似乎是一件痛苦的事情,并不是很有前途的证据。

    唯一的主要缺点是,如果存在其他错误,则尝试操作两次。

    推荐文章