¿Cómo puedo reproducir audio (sería como un sonido de 1 segundo) desde un script de Python?
Sería mejor si fuera independiente de la plataforma, pero primero debe funcionar en una Mac.
Sé que podría ejecutar el afplay file.mp3
comando desde Python, pero ¿es posible hacerlo en Python sin formato? También sería mejor si no dependiera de bibliotecas externas.
Respuestas:
Puede encontrar información sobre el audio de Python aquí: http://wiki.python.org/moin/Audio/
No parece que pueda reproducir archivos .mp3 sin bibliotecas externas. Puede convertir su archivo .mp3 a .wav u otro formato, o usar una biblioteca como PyMedia .
fuente
.wav
archivo?Probablemente, su mejor opción sea utilizar pygame / SDL . Es una biblioteca externa, pero tiene un gran soporte en todas las plataformas.
Puede encontrar documentación más específica sobre el soporte del mezclador de audio en la documentación de pygame.mixer.music
fuente
time.sleep(5)
al final y funcionó. Python 3.6 en Windows 8.1Eche un vistazo a Simpleaudio , que es una biblioteca relativamente reciente y liviana para este propósito:
Luego:
Asegúrese de utilizar archivos PCM de 16 bits sin comprimir.
fuente
Pruebe PlaySound, que es un módulo de función única multiplataforma de Pure Python sin dependencias para reproducir sonidos.
Instalar a través de pip:
Una vez que lo haya instalado, puede usarlo así:
fuente
playsound
. Acabo de probar un par de soluciones aquí, y esta funcionó más fácilmente para mí. Desafortunadamente, lapygame
solución no funcionó para mí, durante una breve prueba.En pydub , hemos optado recientemente por usar ffplay (a través de subproceso) del conjunto de herramientas ffmpeg, que internamente usa SDL.
Funciona para nuestros propósitos, principalmente para facilitar la prueba de los resultados del código pydub en modo interactivo, pero tiene sus desventajas, como hacer que aparezca un nuevo programa en el dock en Mac.
He vinculado la implementación anterior, pero sigue una versión simplificada:
La
-nodisp
bandera evita que ffplay muestre una nueva ventana, y la-autoexit
bandera hace que ffplay salga y devuelva un código de estado cuando el archivo de audio finaliza la reproducción.edit : pydub ahora usa pyaudio para la reproducción cuando está instalado y recurre a ffplay para evitar las desventajas que mencioné. El enlace anterior también muestra esa implementación.
fuente
Perdón por la respuesta tardía, pero creo que este es un buen lugar para anunciar mi biblioteca ...
AFAIK, la biblioteca estándar tiene solo un módulo para reproducir audio: ossaudiodev . Lamentablemente, esto solo funciona en Linux y FreeBSD.
ACTUALIZACIÓN: También existe winsound , pero obviamente esto también es específico de la plataforma.
Para algo más independiente de la plataforma, deberá utilizar una biblioteca externa.
Mi recomendación es el módulo del dispositivo de sonido (pero cuidado, yo soy el autor).
El paquete incluye la biblioteca PortAudio precompilada para Mac OS X y Windows, y se puede instalar fácilmente con:
Puede reproducir sonido de matrices NumPy, pero también puede usar búferes Python simples (si NumPy no está disponible).
Para reproducir una matriz NumPy, eso es todo lo que necesita (asumiendo que los datos de audio tienen una frecuencia de muestreo de 44100 Hz):
Para obtener más detalles, consulte la documentación .
No puede leer / escribir archivos de sonido, necesitará una biblioteca separada para eso.
fuente
Puede ver esto: http://www.speech.kth.se/snack/
fuente
La respuesta de Aaron parece ser 10 veces más complicada de lo necesario. Solo haz esto si solo necesitas una respuesta que funcione en OS X:
Una cosa ... esto vuelve de inmediato. Por lo tanto, es posible que desee hacer esto también, si desea que la llamada se bloquee hasta que el sonido termine de reproducirse.
Editar: tomé esta función y la combiné con variantes para Windows y Linux. El resultado es un módulo multiplataforma de Python puro sin dependencias llamado PlaySound . Lo he subido a pypi.
Entonces ejecútelo así:
Los archivos MP3 también funcionan en OS X. WAV debería funcionar en todas las plataformas. No sé qué otras combinaciones de plataforma / formato de archivo funcionan o no; todavía no las he probado.
fuente
playsound
módulo que escribí? No lo he probado en nada más nuevo que Python 2.7.11 ... Ciertamente puedo buscar arreglar esto en 3.5 ...Este es el mejor y más fácil que he encontrado. Es compatible con Linux / pulseaudio, Mac / coreaudio y Windows / WASAPI.
Consulte https://github.com/bastibe/PySoundFile y https://github.com/bastibe/SoundCard para conocer toneladas de otras funciones súper útiles.
fuente
Es posible reproducir audio en OS X sin bibliotecas de terceros utilizando un análogo del siguiente código. Los datos de audio sin procesar se pueden ingresar con wave_wave.writeframes. Este código extrae 4 segundos de audio del archivo de entrada.
fuente
Pruebe PySoundCard, que utiliza PortAudio para la reproducción, que está disponible en muchas plataformas. Además, reconoce dispositivos de sonido "profesionales" con muchos canales.
Aquí un pequeño ejemplo del Léame:
fuente
También en OSX, desde SO , usando el comando afplay de OSX :
ACTUALIZACIÓN: Todo lo que esto hace es especificar cómo hacer lo que el OP quería evitar hacer en primer lugar. Supongo que publiqué esto aquí porque lo que OP quería evitar era la información que estaba buscando. ¡Ups!
fuente
Pypi tiene una lista de módulos para Python en música. Mi favorito sería jython porque tiene más recursos y bibliotecas para música. Como ejemplo de código para tocar una sola nota del libro de texto :
fuente
Mac OS Probé muchos códigos, pero esto me funciona
fuente
Instale el
playsound
paquete usando:Uso:
fuente
fuente
Para reproducir un sonido de notificación con Python, llame a un reproductor de música, como vlc. VLC me pidió que usara su versión de línea de comandos, cvlc, en su lugar.
Requiere que vlc esté preinstalado en el dispositivo. Probado en Linux (Ubuntu 16.04 LTS); Ejecutando Python 3.5.
fuente
Prueba el dispositivo de sonido
Si no tiene el módulo ingrese
pip install sounddevice
en su terminal.Luego, en su secuencia de comandos de Python preferida (yo uso Juypter), ingrese
sd.play(audio, sr)
jugará lo que quieras a través de PythonLa mejor manera de obtener el audio y la frecuencia de muestreo que desea es con el módulo librosa. Ingrese esto en la terminal si no tiene el módulo librosa.
Cualquiera que sea el archivo wav que desee reproducir, solo asegúrese de que esté en el mismo directorio que su secuencia de comandos de Python. Esto debería permitirle reproducir su archivo wav deseado a través de Python
Saludos, Charlie
PD
Una vez que el audio es un objeto de datos "librosa", Python lo ve como una matriz numerosa. Como experimento, intente jugar una cosa larga (pruebe con 20,000 puntos de datos) de una matriz numérica aleatoria. Python debería jugarlo como ruido blanco. El módulo del dispositivo de sonido también reproduce matrices y listas numerosas.
fuente
En un cuaderno Colab puede hacer:
fuente
Recientemente hice que mi reproductor de música admita todos los archivos de audio localmente. Hice esto descubriendo una forma de usar el módulo vlc python y también los archivos dll de VLC. Puedes comprobarlo: https://github.com/elibroftw/music-caster/blob/master/audio_player.py
fuente
Si está en OSX, puede usar el módulo "os" o el "subproceso", etc. para llamar al comando "play" de OSX. Desde el shell de OSX, parece
reproducir "bah.wav"
Empieza a reproducirse en aproximadamente medio segundo en mi máquina.
fuente
Simplemente puedes hacerlo con la ayuda de cvlc- lo hice de esta manera:
/home/maulo/selfProject/task.mp3. Esta es la ubicación de mi archivo mp3. con la ayuda de "--play-and-exit" podrá volver a reproducir el sonido sin finalizar el proceso de vlc.
fuente