ismaeltorres00's picture
Create app2.py
374f519 verified
import gradio as gr
import torch
from transformers import pipeline
import numpy as np
import time
# Definir los modelos
modelos = {
"base": pipeline("automatic-speech-recognition", model="aitor-medrano/lara-base-pushed"),
"small_1": pipeline("automatic-speech-recognition", model="aitor-medrano/whisper-small-lara"),
"small_2": pipeline("automatic-speech-recognition", model="aitor-medrano/whisper-small-lara")
}
def greet(grabacion):
inicio = time.perf_counter()
sr, y = grabacion
# Normalizar el array de muestras
y = (y / np.max(np.abs(y))).astype(np.float32)
resultados = []
tiempos = []
for nombre_modelo, modelo in modelos.items():
inicio_modelo = time.perf_counter()
texto_resultado = modelo({"sampling_rate": sr, "raw": y})["text"]
fin_modelo = time.perf_counter()
resultados.append(f"{nombre_modelo}: {texto_resultado}")
tiempos.append(fin_modelo - inicio_modelo)
tiempo_total = time.perf_counter() - inicio
return (*resultados, *tiempos, tiempo_total)
# Crear la interfaz mejorada
with gr.Blocks() as demo:
gr.Markdown("# Evaluación de Modelos de Reconocimiento Automático de Voz")
with gr.Tab("Ingreso de Audio"):
gr.Audio(label="Graba tu audio", source="microphone", type="numpy", elem_id="audio_input")
with gr.Tab("Resultados y Tiempos"):
with gr.Column():
with gr.Row():
gr.Textbox(label="Resultado Modelo 1", interactive=False, elem_id="resultado1")
gr.Number(label="Tiempo Modelo 1 (s)", interactive=False, elem_id="tiempo1")
with gr.Row():
gr.Textbox(label="Resultado Modelo 2", interactive=False, elem_id="resultado2")
gr.Number(label="Tiempo Modelo 2 (s)", interactive=False, elem_id="tiempo2")
with gr.Row():
gr.Textbox(label="Resultado Modelo 3", interactive=False, elem_id="resultado3")
gr.Number(label="Tiempo Modelo 3 (s)", interactive=False, elem_id="tiempo3")
with gr.Row():
gr.Number(label="Tiempo Total (s)", interactive=False, elem_id="tiempo_total")
demo.add_component(gr.Button("Procesar", variant="primary", elem_id="process_button"))
demo.load(greet, inputs="audio_input", outputs=["resultado1", "resultado2", "resultado3", "tiempo1", "tiempo2", "tiempo3", "tiempo_total"], elem_id="process_button")
demo.launch()