|
|
|
|
|
import sounddevice as sd |
|
from scipy.io.wavfile import write |
|
import os |
|
|
|
|
|
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...") |
|
|
|
|
|
audio_data = sd.rec(int(duration * sample_rate), samplerate=sample_rate, channels=1, device=device_index) |
|
sd.wait() |
|
|
|
|
|
write(AUDIO_PATH, sample_rate, audio_data) |
|
print(f"Grabación completada. Archivo guardado en: {AUDIO_PATH}") |
|
|
|
if __name__ == "__main__": |
|
|
|
listar_dispositivos() |
|
|
|
|
|
device_index = int(input("Introduce el índice del dispositivo de entrada que deseas utilizar: ")) |
|
|
|
|
|
record_audio(device_index=device_index) |
|
|
|
|