O SoX (SOund eXchange; pacotes sox e libsox-fmt-all no Debian) é uma biblioteca e um programa de linha de comando que permitem converter entre diversos formatos de arquivo de áudio, opcionalmente aplicando filtros. A sintaxe básica do comando sox é:
sox [opções-globais] [opções-de-formato] entrada1 [[opções-de-formato] entrada2 ...] [opções-de-formato] saída [filtros ...]
Por exemplo, para gravar do microfone (usando ALSA) em um arquivo WAV:
sox -t alsa default -t wav blabla.wav
(Use Control-C para terminar a gravação. Tecnicamente o -t wav pode ser omitido, já que o sox é capaz de deduzir o formato do arquivo pela extensão.)
Um par de filtros particularmente interessante é o noiseprof/noisered, que permitem eliminar ou reduzir ruído constante de fundo. Isso é feito em duas etapas. Primeiro, executa-se o sox com o filtro noiseprof [profile.txt] sobre uma "amostra de silêncio", i.e., um trecho de áudio que consista apenas do ruído de fundo, de maneira a produzir um profile de ruído. Você pode capturar o "silêncio" do microfone ou de algum outro arquivo que consista apenas de silêncio (a opção --null pode ser usada no lugar do arquivo de saída, já que estamos interessados apenas no profile de ruído):
sox -t alsa default --null noiseprof profile.txt sox algum-arquivo-que-consista-apenas-de-silêncio.wav --null noiseprof profile.txt
Alternativamente, você pode selecionar um trecho de um arquivo com o filtro trim início [duração] e usá-lo como fonte de silêncio:
# Seleciona o intervalo de de 1s até 2.5s. Aqui usamos '-t alsa default' como # saída para podermos ouvir se o trecho selecionado de fato corresponde a "silêncio". sox entrada.wav -t alsa default trim 1 1.5 noiseprof profile.txt
Se o nome do arquivo de profile for omitido, o sox escreve o profile na stdout.
Gerado o profile de ruído, podemos usar o filtro noisered [profile.txt [quantidade]] para remover o ruído do arquivo completo. quantidade é um número entre 0 e 1 indicando a quantidade de ruído que deve ser removida. Quanto maior o número, mais ruído será removido – e mais não-ruído também. Experimente com números pequenos (e.g., 0, 0.05, 0.1, etc.) primeiro.
sox entrada.wav saída.wav noisered profile.txt 0.05
Se você tem um microfone problemático, você pode querer guardar o arquivo de profile para usos futuros (assumindo que o padrão de ruído produzido seja sempre o mesmo).
Se o arquivo de entrada para o noisered não for especificado ou for -, o sox lê o profile da stdin. Assim, você pode combinar o profiling e a redução em um pipeline:
sox entrada.wav --null trim 0 1 noiseprof | sox entrada.wav saída.wav noisered - 0.05
Para mais informações, consulte a manpage do sox.
Red Sox: o ruído elimina VOCÊ!!
Copyright © 2010-2024 Vítor De Araújo
O conteúdo deste blog, a menos que de outra forma especificado, pode ser utilizado segundo os termos da licença Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.
Powered by Blognir.
Boston Red Sox, 2013-04-27 00:41:51 -0300 #
Go Sox!
http://www.alnyethelawyerguy.com/.a/6a00d83451dc7869e201538f17e53d970b-800wi