在将音频引入我们的语音检测系统之前,我正在使用SOX对其进行重新采样,但我遇到了一个难题,SOX版本14.3默认情况下为重新采样操作添加了自动抖动,我们不希望这样做。
如果我们知道我们一直在使用SOX≥14.3,这不是问题,因为我们可以使用新的 -D 禁用它的标志:
-D
sox original.wav -Dr 8000 new.wav
但是,我们不能保证我们将使用SOX≥14.3,因此如果需要,我需要某种方法来指定-d标志,但是不要使用它(因为它在无法识别时出错)。
有什么想法吗?
我的第一个想法是:
# 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
由于检查版本号似乎是一件痛苦的事情,并不是很有前途的证据。
唯一的主要缺点是,如果存在其他错误,则尝试操作两次。