python audio compression

Biblioteca de Python para convertir archivos a MP3 y configurar su calidad



audio compression (6)

Estoy tratando de encontrar una biblioteca de Python que tome un archivo de audio (por ejemplo, .ogg, .wav) y convertirlo a mp3 para su reproducción en una página web.

Además, cualquier idea sobre cómo configurar su calidad para la reproducción sería genial.

Gracias.


Además, las herramientas de audio de Python deberían poder hacer el trabajo con menos necesidad de otras bibliotecas, lo que podría ser más fácil si estás haciendo esto en una cuenta de alojamiento web compartido. (Pero es cierto que no lo he probado, así que no puedo confirmar qué tan útil es).


Otra opción para evitar la instalación de módulos de Python para esta simple tarea sería simplemente ejecutar "cojo" u otro codificador de línea de comando desde la secuencia de comandos de Python (con el módulo popen).


Parece que PyMedia hace esto:

http://pymedia.org/

y más información aquí sobre la conversión a varios formatos, mientras se establece la velocidad de bits:

http://pymedia.org/tut/recode_audio.html

p.ej

params= { ''id'': acodec.getCodecId(''mp3''), ''bitrate'': r.bitrate, ''sample_rate'': r.sample_rate, ''ext'': ''mp3'', ''channels'': r.channels } enc= acodec.Encoder( params )


Yo uso los enlaces de Python para gstreamer. Es un poco difícil comenzar, pero una vez que te vas, casi todo es posible.

Desde la línea de comando (desde la documentación de gstreamer ):

gst-launch -v filesrc location=music.wav ! decodebin ! audioconvert ! audioresample ! lame bitrate=192 ! id3v2mux ! filesink location=music.mp3

La filesrc location=... entrada filesrc location=... podría ser cualquier cosa que gstreamer pueda jugar, no solo .wav. Podría agregar algo llamado filtro de mayúsculas para volver a muestrear a una tasa específica antes de codificar.

En su programa Python usaría gst.parse_launch(...) , obtendría los elementos de filesrc y filesink, y setters de llamadas para cambiar los nombres de archivos de entrada y salida.


Puede usar el módulo ctypes para llamar funciones directamente desde bibliotecas dinámicas. No requiere la instalación de libs de Python externas y tiene un mejor rendimiento que las herramientas de línea de comandos, pero generalmente es más difícil de implementar (además, por supuesto, debe proporcionar una biblioteca externa).


Escribí una biblioteca diseñada para hacer eso = D

from pydub import AudioSegment AudioSegment.from_file("/input/file").export("/output/file", format="mp3")

¡Fácil!

para especificar una tasa de bits, solo usa el bitrate kwarg ...

from pydub import AudioSegment sound = AudioSegment.from_file("/input/file") sound.export("/output/file", format="mp3", bitrate="128k")