Como posso garantir que o Sox não execute o Dithering automático sem conhecer a versão?
-
21-09-2019 - |
Pergunta
Estou usando o SOX para reembolsar o áudio antes de apresentá -lo ao nosso sistema de detecção de fala, mas acertei um obstáculo com a versão 14.3 do Sox, adicionando dithering automático por padrão à operação de reamostragem, que não queremos.
Isso não seria um problema se soubéssemos que estávamos sempre usando Sox ≥ 14,3, pois poderíamos usar o novo -D
sinalizador para desativá -lo:
sox original.wav -Dr 8000 new.wav
No entanto, não podemos garantir que usaremos o SOX ≥ 14,3, por isso preciso de uma maneira de especificar o sinalizador -d, se necessário, mas deixe de fora de outra forma (pois erra quando não o reconhecer).
Alguma ideia?
Solução
Meu primeiro pensamento é algo como:
# 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
Como verificar os números da versão parecia que provavelmente seria uma dor e não muito à prova de futuro.
A única desvantagem principal é que, se houver algum outro erro, a operação será tentada duas vezes.