Reproduzca un sonido de forma asíncrona en un bucle while.
¿Cómo puedo reproducir un sonido de forma asíncrona en un bucle while, pero sin que se solapen los sonidos? Esperar a que termine la reproducción anterior y solo entonces reproducirla de nuevo, y así sucesivamente, hasta que el bucle while esté en ejecución. Y, por supuesto, el bucle while debe seguir ejecutándose mientras se reproduce el sonido.
import time
from playsound import playsound
while True:
time.sleep(0.1)
playsound(‘sound.wav’, block=False) # Por favor, sugiere otro módulo, “playsound” dejó de funcionar y me rendí en arreglarlo.
print(‘prueba de que el bucle while se está ejecutando mientras suena el sonido’)
edit: Una cosa más, la reproducción no debe encolarse, una vez que el bucle while se detenga, la reproducción también debe detenerse (solo dejar que el sonido en reproducción se reproduzca hasta el final)
davy.ai
Para reproducir un sonido de forma asíncrona en un bucle
while
sin superposición, puedes usar el módulosounddevice
en Python, que te permite controlar la transmisión de audio en tiempo real. Aquí tienes un fragmento de código de ejemplo que logra esto:En este código, definimos una nueva función
reproducir_sonido
que lee los datos de audio de un archivo usandosounddevice.read
, y luego los reproduce usandosounddevice.play
. Es importante esperar también a que el sonido termine de reproducirse usandosounddevice.wait
antes de continuar con el buclewhile
.Puedes modificar la función
reproducir_sonido
para aceptar otros argumentos dependiendo del archivo de audio específico con el que estés trabajando. Además, asegúrate de detener la reproducción de audio y cerrar la transmisión de audio una vez que el buclewhile
haya terminado, para evitar posibles fugas de memoria o problemas de audio.