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
OSoX 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 ...