EKNA_V1 / src /audio_recorder.py
fireedman's picture
Primer commit, creo que faltan los modelos pesados
d4757ae
# audio_recorder.py
import sounddevice as sd
from scipy.io.wavfile import write
import os
# Ruta para guardar el archivo de audio en el directorio `assets/audio/`
AUDIO_PATH = os.path.join("..", "assets", "audio", "grabacion_8s.wav")
def listar_dispositivos():
"""
Lista todos los dispositivos de audio disponibles en el sistema.
"""
print("Dispositivos de audio disponibles:")
dispositivos = sd.query_devices()
for idx, dispositivo in enumerate(dispositivos):
print(f"{idx}: {dispositivo['name']} - {'Entrada' if dispositivo['max_input_channels'] > 0 else 'Salida'}")
print("\nSelecciona el índice del dispositivo de entrada que prefieras para grabar audio.")
def record_audio(duration=8, sample_rate=44100, device_index=None):
"""
Graba el audio desde el micrófono durante un tiempo específico y lo guarda como archivo WAV.
Args:
duration (int): Duración de la grabación en segundos.
sample_rate (int): Frecuencia de muestreo del audio.
device_index (int): Índice del dispositivo de audio a utilizar.
"""
print("Grabando...")
# Iniciar la grabación con un canal
audio_data = sd.rec(int(duration * sample_rate), samplerate=sample_rate, channels=1, device=device_index)
sd.wait() # Espera a que la grabación termine
# Guardar el archivo de audio
write(AUDIO_PATH, sample_rate, audio_data)
print(f"Grabación completada. Archivo guardado en: {AUDIO_PATH}")
if __name__ == "__main__":
# Paso 1: Listar dispositivos de audio
listar_dispositivos()
# Aquí esperaremos tu selección del índice del dispositivo
device_index = int(input("Introduce el índice del dispositivo de entrada que deseas utilizar: "))
# Paso 2: Grabar audio con el dispositivo seleccionado
record_audio(device_index=device_index)