[ Foro de Python ]

escuchar audio con pyton

24-Jan-2023 20:09
Invitado (NoOne)
1 Respuestas

hola buenas, estaba pensando un script para automatizar un programa, y necesito que python escuche audio de una ventana en windows, o el audio total de la pc en su defecto, y segun el nivel de volumen que se alcance realizar otra accion, por ahora solo esta en ideas, pero intente buscar alguna librería o función que me permita la "escucha" del audio y no consigo nada.
si alguien conoce una librería o algún nombre de alguna función para poder direccionar mis búsquedas seria genial.
hago esto a nivel de hobbie por lo que no soy ningun experto
vengo de crear un script muy simple que presiona algunas teclas y quería que lo haga al escuchar un aumento de volumen, no es necesario nada muy optimizado ni nada solo que funcione, gracias


16-Mar-2023 22:01
Invitado (Alejandro Andrade)

Hola.

Para poder escuchar el audio en Python, puedes utilizar la librería PyAudio. PyAudio es una librería de Python que te permite grabar y reproducir audio. Para instalarla puedes usar pip con el siguiente comando:

pip install pyaudio

A continuación te muestro un ejemplo de cómo puedes usar PyAudio para escuchar el audio de tu PC y detectar si el volumen alcanza cierto nivel:

import pyaudio
import numpy as np

# Configuración de PyAudio
chunk = 1024
sample_rate = 44100
format = pyaudio.paInt16
channels = 1

# Inicialización de PyAudio
p = pyaudio.PyAudio()

# Abrir el stream de audio
stream = p.open(format=format, channels=channels, rate=sample_rate,
               input=True, frames_per_buffer=chunk)

# Escuchar el audio
while True:
   # Leer un chunk de audio del stream
   data = stream.read(chunk)

   # Convertir el chunk de audio en un array de numpy
   audio_data = np.frombuffer(data, dtype=np.int16)

   # Calcular el volumen RMS del audio
   rms = np.sqrt(np.mean(np.square(audio_data)))

   # Si el volumen supera cierto umbral, hacer algo
   if rms > umbral:
       hacer_algo()

# Cerrar el stream y terminar PyAudio
stream.stop_stream()
stream.close()
p.terminate()

En el ejemplo, se configura PyAudio para que lea chunks de 1024 muestras de audio cada vez, con una tasa de muestreo de 44100 muestras por segundo, un formato de audio de 16 bits y un solo canal. Luego, se abre el stream de audio con esas configuraciones.

Después, se entra en un bucle que lee chunks de audio del stream, los convierte en un array de numpy y calcula el valor RMS del audio. Si el valor RMS supera cierto umbral, se ejecuta una función llamada 'hacer_algo()'.

En tu caso, deberás ajustar el umbral a un valor que detecte el nivel de volumen adecuado para la acción que deseas realizar.

Espero que esto te ayude.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)