xaman2 / app.py
salomonsky's picture
Update app.py
28d3a0e verified
raw
history blame
2.33 kB
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()