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

时间:2009-11-20 03:07:13

标签: bash audio sox resampling

在将音频引入我们的语音检测系统之前,我正在使用sox重新采样音频,但是我遇到了版本14.3的sox,在默认情况下将自动抖动添加到重新采样操作,这是我们不想要的。 / p>

如果我们知道我们总是使用sox≥14.3,这不会有问题,因为我们可以使用新的-D标志来禁用它:

sox original.wav -Dr 8000 new.wav

但是,我们无法保证我们将使用sox≥14.3,因此我需要某种方法来指定-D标志(如果需要),否则将其保留(因为它在无法识别时会出错)。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我的第一个想法是:

# 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

检查版本号似乎可能是一种痛苦,而且不是很有前瞻性。

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