Como posso garantir que o Sox não execute o Dithering automático sem conhecer a versão?

StackOverflow https://stackoverflow.com/questions/1768077

  •  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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top