Convertir con FFmpeg
FFmpeg tiene un filtro de audio incorporado para cambiar el tempo sin cambiar el tono.
Necesitamos codificar el archivo a algún formato que su teléfono reproduzca. Esto depende del teléfono por supuesto. Muchos teléfonos inteligentes modernos como el audio AAC:
ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libfaac -q:a 100 final.m4a
Aquí, puedes cambiar la calidad con la -q:a
Opción, donde el valor es en porcentaje y mayor significa mejor.
O bien, audio MP3 con una calidad (promedio) de 4, donde menos significa mejor (0 que resulta en aproximadamente 245 kBit / s):
ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libmp3lame -q:a 4 final.mp3
Si su teléfono no admite ninguno de estos, tendremos que seguir investigando. Ah, y yo uso ffmpeg
sinónimo de avconv
aquí. No son exactamente iguales, pero para los casos anteriores puede usar cualquiera de las dos herramientas. Si su versión de FFmpeg o avconv no incluye FAAC o LAME, vaya a obtener una compilación estática de Linux desde la página de descarga de FFmpeg .
Si no te gustan los filtros FFmpeg, aquí hay otro enfoque:
Extraer audio crudo
En primer lugar, debe extraer la secuencia de audio sin formato en un formato sin comprimir, por ejemplo. Audio estéreo PCM de 16 bits en un contenedor WAV.
ffmpeg -i weird.wma temp.wav
Ahora podemos usar el archivo. temp.wav
Para acortar el audio. Tenemos algunas opciones para eso:
Opción 1: SoX
SoX ofrece algunos filtros diferentes que le permiten cambiar la velocidad, el tono o el tempo. Simplemente cambiando la velocidad aumentará el tono para compensar la longitud, por lo que esto puede sonar poco natural.
los tempo
el filtro utiliza un algoritmo avanzado para acortar los archivos, pero mantiene el tono, dividiéndolo en ventanas de tiempo más pequeñas y luego "fusionándolas", acelerando así el tempo. Por ejemplo:
sox temp.wav output.wav -tempo 1.7
Esto puede sonar un poco raro. Si lo hace, recurra a la opción 2.
Opción 2: Estiramiento de sonido extremo de Paul
Este programa promete ofrecer una mejor calidad que SoX, y hay una versión de línea de comandos escrita en Python disponible en GitHub . Un comando podría tener este aspecto: tenga en cuenta que, por defecto, estira el archivo, para acortarlo, calculamos el inverso de 1.7, que es 0.59:
python paulstretch_stereo.py -s 0.59 temp.wav output.wav
Convertir audio en bruto en un archivo comprimido
Ahora tenemos un archivo WAV acortado, pero aún no está comprimido, por lo que necesitamos comprimirlo nuevamente. Consulte las opciones en la parte superior de esta publicación para varios formatos.
ffmpeg -i output.wav -c:a …
Los métodos no ffmpeg descritos anteriormente perderán sus metadatos; puede agregarlo de nuevo al convertir output.wav a un formato comprimido así:
ffmpeg -i output.wav -i weird.wma -map 0 -map_metadata 1 -c:a ...
wma
archivos pero puede reproducirogg
?