import streamlit as st import sounddevice as sd from pydub import AudioSegment import speech_recognition as sr input_devices = sd.query_devices(kind='input') print("Dispositivos de entrada de audio disponibles:") for i, device in enumerate(input_devices): print(f"{i + 1}. {device['name']}") # Selecciona el dispositivo de audio selected_device_index = int(input("Selecciona el número del dispositivo de entrada de audio: ")) - 1 selected_device = input_devices[selected_device_index] # Imprime la información del dispositivo seleccionado print(f"\nDispositivo seleccionado: {selected_device['name']}") print(f"Índice: {selected_device['index']}") print(f"Canales: {selected_device['max_input_channels']}") print(f"Frecuencia de muestreo: {selected_device['default_samplerate']} Hz") # Configuración del grabador de audio fs = 44100 # Frecuencia de muestreo duration = 10 # Duración máxima de la grabación en segundos # Muestra el botón para iniciar/parar la grabación if st.button("Iniciar/Parar Grabación"): st.write("Grabando...") # Grabar audio audio_data = sd.rec(int(fs * duration), samplerate=fs, channels=1, dtype="int16") sd.wait() st.write("Grabación completada.") # Guarda la grabación en un archivo temporal with st.spinner("Procesando grabación..."): temp_file_path = "grabacion.wav" audio_segment = AudioSegment.from_int(signal=audio_data, sample_width=2, frame_rate=fs, channels=1) audio_segment.export(temp_file_path, format="wav") # Reproduce la grabación st.audio(temp_file_path, format="audio/wav", start_time=0) # Reconocimiento de voz con Google recognizer = sr.Recognizer() audio_file = sr.AudioFile(temp_file_path) with audio_file as source: try: audio_text = recognizer.recognize_google( source, language="es-ES", show_all=False ) st.write("Texto reconocido:", audio_text) except sr.UnknownValueError: st.warning("No se detectó ninguna entrada de audio.") except sr.RequestError as e: st.error(f"Error en la solicitud al servicio de reconocimiento de voz: {e}") # Elimina el archivo temporal st.audio_recorder_cleanup()