Quero alterar a frequência de um arquivo de áudio. Significado: o arquivo inteiro deve soar (digamos) uma oitava acima ou abaixo. Como fazer isso? ffmpeg
Seria preferível o uso ou outra ferramenta de código aberto da linha de comando.
audio
ffmpeg
bitrate
resampling
tanon
fonte
fonte
ffmpeg -i man.wav -af asetrate=48000*0.75,aresample=48000 man_pitch_down.wav
, vejo porffmpeg -i
wav originalDuration: 00:00:01.95, bitrate: 3080 kb/s
e wav modificadoDuration: 00:00:02.60, bitrate: 1536 kb/s
. Pelo que entendiDuration
é a duração em segundos.Encontre a taxa de entrada de áudio de antemão assim:
Assumindo a taxa de áudio de entrada 44.100 Hz, este comando fará o trabalho:
O fator 3/4 mudará a maioria das vozes femininas e "magras" (esquilos) para vozes masculinas e "gordas". Use 4/3 para o contrário:
Observe a ordem inversa do filtro para evitar a degradação do sinal. Sempre que possível, a operação sem perdas deve ocorrer antes da operação com perdas. Não tenho 100% de certeza se não estou cometendo algum erro aqui por não entender os filtros FFmpeg.
O filtro FFmpeg
asetrate
deve ter uma variável nomeadair
para taxa de áudio de entrada, em analogia aiw
×ih
em alguns filtros de vídeo, mas não encontrei nenhuma menção a isso na documentação.Para fatores maiores que 2 (como 4/1 ou 1/4), você deve usar vários
atempo
filtros (1/4 = 1/2 * 1/2 ou 4/1 = 2/1 * 2/1):Não sei como obter voz masculina "magra" e voz feminina "gorda".
Em vez de
-af
, você pode escrever-filter:audio
ou-filter:a
.Referências
fonte