File size: 1,852 Bytes
d4757ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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)