File size: 2,455 Bytes
374f519
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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()