Ferramenta para aumentar a velocidade / converter um arquivo de áudio

6

Eu quero ouvir alguns podcasts no meu celular, mas tenho dois problemas comuns:

  1. O áudio está em algum formato estranho (alguns não tocam no meu telefone).
  2. O áudio está lento.

Eu quero usar algo como sox ou avconv para converter os arquivos em massa. Como isso é apenas voz e telefone celular, pequenos arquivos de baixa qualidade seriam os melhores para mim. Eu tive algum sucesso usando avconv :

avconv -i weird.wma normal.ogg

Unforunately, esse comando cria um arquivo ogg enorme e não consigo reproduzi-lo mais rápido. Idealmente, esse arquivo em particular tocaria a 170% da velocidade original.

    
por User1 15.12.2012 / 06:17

1 resposta

9

Converta com FFmpeg

O FFmpeg possui um filtro de áudio integrado para alterar o tempo sem alterar o tom. Precisamos codificar o arquivo para algum formato que seu telefone reproduza. Isso depende do telefone, claro. Muitos smartphones modernos, como o áudio AAC:

ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libfaac -q:a 100 final.m4a

Aqui, você pode alterar a qualidade com a opção -q:a , em que o valor é em porcentagem e maior significa melhor.

Ou áudio MP3 com uma qualidade (média) de 4, em que menos significa melhor (0 resultando em cerca de 245 kBit / s):

ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libmp3lame -q:a 4 final.mp3

Se o seu telefone não suportar nenhum desses, teremos que ir mais longe. Ah, e eu uso ffmpeg como sinônimo de avconv aqui. Eles não são exatamente os mesmos, mas nos casos acima você pode usar qualquer ferramenta. Se a sua versão do FFmpeg ou do avconv não incluir o FAAC ou o LAME, obtenha uma versão estática do Linux na página de download do FFmpeg .

Se você não gosta dos filtros do FFmpeg, aqui está outra abordagem:

Extrair áudio não processado

Em primeiro lugar, você precisa extrair o fluxo de áudio bruto em um formato descompactado, por exemplo, Áudio estéreo PCM de 16 bits em um contêiner WAV.

ffmpeg -i weird.wma temp.wav

Agora podemos usar o arquivo temp.wav para encurtar o áudio. Temos algumas opções para isso:

Opção 1: SoX

O

SoX oferece alguns filtros diferentes que permitem alterar a velocidade, o tom ou o tempo. Simplesmente mudar a velocidade aumentará o tom para compensar o comprimento, o que pode parecer pouco natural.

O filtro tempo usa um algoritmo avançado para encurtar os arquivos, mas mantém o tom, dividindo-o em janelas de tempo menores e, em seguida, "fundindo-os", acelerando assim o tempo. Por exemplo:

sox temp.wav output.wav -tempo 1.7

Isso pode parecer um pouco estranho. Em caso afirmativo, recorra à opção 2.

Opção 2: Estiramento de Som Extremo de Paul

Este programa promete oferecer melhor qualidade que o SoX, e existe uma versão de linha de comando escrita em disponível em Python . Um comando pode ter essa aparência - lembre-se de que, por padrão, o arquivo é estendido; portanto, para encurtá-lo, calculamos o inverso de 1,7, que é 0,59:

python paulstretch_stereo.py -s 0.59 temp.wav output.wav

Converter áudio bruto em um arquivo compactado

Agora temos um arquivo WAV encurtado, mas isso ainda não foi compactado, então precisamos compactá-lo novamente. Consulte as opções no topo deste post para vários formatos.

ffmpeg -i output.wav -c:a …

Os métodos não-ffmpeg descritos acima perderão seus metadados; você pode adicioná-lo novamente ao converter output.wav para um formato compactado da seguinte forma:

ffmpeg -i output.wav -i weird.wma -map 0 -map_metadata 1 -c:a ...
    
por 15.12.2012 / 16:40