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

Estoy tratando de encontrar una biblioteca de Python que tome un archivo de audio (por ejemplo, .ogg, .wav) y lo convierta en mp3 para reproducirlo en una página web.

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

Gracias.

Parece que PyMedia hace esto:

http://pymedia.org/

y más información aquí sobre cómo convertir a varios formatos, al establecer la tasa 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 ) 

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, simplemente use la bitrate kwarg …

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

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

Desde la línea de comandos (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 entrada filesrc location=... podría ser cualquier cosa que gstreamer pueda reproducir, no solo .wav. Puede agregar algo llamado filtro de mayúsculas para volver a muestrear a una tasa específica antes de codificar.

En su progtwig de Python, usaría gst.parse_launch(...) , obtendría los elementos filesrc y de la conexión de archivos y los progtwigdores de llamadas para cambiar los nombres de los archivos de entrada y salida.

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 lo hace en una cuenta de alojamiento web compartido. (Pero hay que admitir que no lo he probado, por lo que no puedo confirmar cuán utilizable es).

Puede usar el módulo ctypes para llamar a funciones directamente desde bibliotecas dinámicas. No requiere que instale librerías externas de Python y tiene 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).

Otra opción para evitar la instalación de módulos de Python para esta tarea simple sería simplemente ejecutar “lame” u otro codificador de línea de comandos desde el script de Python (con el módulo emergente).