Você pode preservar todos os silêncios nas partes divididas com algumas pequenas alterações. Começando com o seu comando original:
silence 1 0.5 0.1% 1 0.5 0.1%
O primeiro trio de valores significa remover o silêncio, se houver, no início, até 0,5 segundos de som acima de 0,1%. O segundo trio significa parar quando houver pelo menos 5 segundos de silêncio abaixo de 0,1%. O restante do comando, : newfile : restart
, inicia um novo arquivo de saída e começa novamente a procurar por som no início. Então, o primeiro arquivo termina quando o silêncio começa e o segundo arquivo começa quando o silêncio termina.
A opção mais simples disponível para melhorar isso é silence -l
. Ele preservará os 0,5 segundos de silêncio que acionaram o final do arquivo. Infelizmente, qualquer silêncio mais longo será removido porque é o início do próximo arquivo. Uma maneira fácil de manter um intervalo maior é combinar -l
com um tempo de detecção maior, por exemplo, 2 segundos:
silence -l 1 0.5 0.1% 1 2.0 0.1%
Agora você só vai dividir se houver pelo menos 2 segundos de silêncio, mas preservará os primeiros 2 segundos do intervalo.
Para evitar perder todo o silêncio, basta remover a detecção do silêncio no início. Você precisa substituir o trio por um único 0
:
silence -l 0 1 2.0 0.1%
Se você quiser tocar com arquivos de som simples para ver como o sox
lida com situações, você pode criar facilmente 2 arquivos de som, um consistindo de 1 segundo de um som e um consistindo em 1 segundo de silêncio. juntos como você deseja antes de apresentar o resultado como entrada para o efeito silence
. Por exemplo, crie:
sox -n gap.wav trim 0 1
sox -n tone.wav synth 1.001t sine C5
junte o gap-tone-gap-tone e crie out.wav
usando seu efeito e ouça o resultado:
sox gap.wav tone.wav gap.wav tone.wav out.wav silence 1 0.5 0.1%
play out.wav