Estoy buscando una biblioteca Python bien mantenida que me permita reproducir archivos de audio en mi Raspberry Pi utilizando la salida de audio estándar.
Hasta ahora he probado varios, pero ninguno parece funcionar. Aunque pyglet funciona bien en mi computadora normal, causa un error en la Raspberry Pi. ¿Existe una biblioteca de Python que ha demostrado ser fácil de usar?
Respuestas:
Recomiendo el muy popular Pygame. Puedo estar equivocado, pero creo que está preinstalado en el Pi. Puedes usar el módulo de música Pygame Mixer para reproducir archivos de audio. He incluido un código de ejemplo a continuación.
Suponiendo que tenemos un archivo de audio llamado
myFile.wav
.NOTA: Si esto falla, vaya al terminal y actualice su sistema con
e intenta de nuevo.
fuente
espeak
bien, pero no esto.Necesitaba un guión para reproducir una canción de treinta segundos en segundo plano mientras respondía a la entrada de otro usuario. Entonces quería que terminara la canción en algún evento.
No creo que sea particularmente elegante, pero abrí una tubería a un proceso de MPlayer en segundo plano.
Luego, cuando quería terminar el proceso de MPlayer, simplemente escribí "q" para salir de la tubería.
Consulte la documentación de MPlayer para ver todo tipo de comandos que puede pasar de esta manera para controlar la reproducción.
¡Ojalá sea algo útil!
fuente
Otra opción es usarlo
mpg321
e invocarlo desde la línea de comandos.Luego en Python:
Pygame es casi seguro más robusto, pero depende, supongo, de cuáles son sus necesidades.
fuente
Recomendaría pyglet en lugar de pygame si no necesita gráficos. En mi opinión, es más simple, más elegante y mejor mantenido. Por otra parte, espero que sea una cuestión de gustos.
fuente
Pygame te ofrece una manera agradable y fácil de cargar y reproducir sonidos, en una variedad de canales.
fuente
Puedes usar varios jugadores externos a través de las tuberías. Sin embargo, casi siempre experimentará una pérdida de velocidad. También hay un problema con el control de reproducción.
Te recomiendo pyaudio, funciona bien.
Si también desea reproducir archivos comprimidos, tendré la libertad de señalarle mi módulo decoder.py. Lo puedes encontrar en PyPI.
También utiliza subprocesos, pero llama a decodificadores en lugar de jugadores. No usan mucha CPU, y algunos saben cómo usar la aceleración de hardware. Luego puede usar pyaudio o algo para generar los datos de audio sin formato. Si lo desea, incluso puede usar pygame utilizando pygame.sndarray. De esa manera, puedes reproducir más formatos de los que admite Pygame.
Intenté decoder.py en el entorno PyQT GUI, con pyaudio y también usando aplay como reproductor externo. Eso fue en Raspberry Pi B.
Los resultados fueron bastante satisfactorios en ambos casos.
La simplicidad puede ser cuestionada.
decoder.py en sí es muy simple, pero tienes que combinarlo con otras librerías y eso aumenta las líneas de código.
Hay un ejemplo sobre cómo reproducir archivos incluidos con decoder.py.
fuente
Estoy ejecutando OSMC (Debian) y tengo sonido para reproducir a través de los altavoces de mi televisor, que está conectado por HDMI. https://youtu.be/p2ljmTE67gs
Mi método se basó en la solución anterior publicada por @xxmbabanexx, así como aquí . Básicamente, tuve que agregar
dtparam=audio=on
a/boot/config.txt
fuente