Spaces:
Sleeping
Sleeping
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() | |