File size: 2,786 Bytes
5bc7b63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9865dfb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5bc7b63
 
 
 
 
 
 
9865dfb
 
 
 
 
 
5bc7b63
 
 
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from transformers import pipeline
import gradio as gr
import numpy as np
import librosa

# Utilizamos los tres modelos entrenados
pipe_model_1 = pipeline("automatic-speech-recognition", model="IABDs8a/AfinandoElEntrenamiento")
pipe_model_2 = pipeline("automatic-speech-recognition", model="IABDs8a/whisper-base-full")
pipe_model_3 = pipeline("automatic-speech-recognition", model="IABDs8a/whisper-tiny-top3")

def transcribe(audio, model_choice):
    if model_choice == "AfinandoElEntrenamiento":
        pipe = pipe_model_1
    elif model_choice == "Whisper Base Full":
        pipe = pipe_model_2
    else:
        pipe = pipe_model_3

    # Leer el archivo de audio
    y, sr = librosa.load(audio, sr=16000)
    
    # Convertir a mono si es necesario
    if y.ndim > 1:
        y = librosa.to_mono(y)
    
    # Pasamos el array de muestras a tipo NumPy de 32 bits
    y = y.astype(np.float32)
    
    # Normalizar el audio
    y /= np.max(np.abs(y))
    
    # Realizar la transcripción
    result = pipe({"sampling_rate": sr, "raw": y})
    return result["text"]

# Ruta de la imagen del logo
logo_path = "img/logoLara.png"

# Estilos CSS personalizados
custom_css = """
<style>
body {
    background-color: #c5e6ed; /* Color de fondo principal */
    color: #040404; /* Color del texto principal */
}
.gradio-container {
    border-radius: 10px;
    border: 2px solid #477b84; /* Color de borde */
    padding: 20px;
    background-color: #8cd3dc; /* Color de fondo del contenedor */
}
input[type="file"] {
    border-radius: 10px;
    border: 2px solid #56646c; /* Color del borde del input */
}
button {
    background-color: #477b84; /* Color de fondo de los botones */
    color: #ffffff; /* Color del texto de los botones */
    border-radius: 5px;
    border: 2px solid #040404; /* Color del borde de los botones */
    padding: 10px 20px;
}
button:hover {
    background-color: #6dc6d6; /* Color de fondo de los botones al pasar el ratón */
}
#logo {
    text-align: center;
    margin-bottom: 20px;
}
</style>
"""

# HTML para el logo
logo_html = f"<div id='logo'><img src='{logo_path}' alt='Logo' width='300'></div>"

# Interfaz de Gradio
demo = gr.Interface(
    fn=transcribe,
    inputs=[
        gr.Audio(type="filepath", label="Sube un archivo de audio o graba desde el micrófono"),
        gr.Dropdown(choices=["AfinandoElEntrenamiento", "Whisper Base Full", "Whisper Tiny Top 3"], label="Selecciona el modelo", value="Whisper Base Full")
    ],
    outputs=gr.Textbox(label="Texto Generado"),

    title="Transcripci&oacute;n de Audio con LARA",
    description="Sube un archivo de audio o graba desde el micr&oacute;fono para obtener su transcripci&oacute;n utilizando los modelos Whisper entrenados.",
    article=custom_css,
    
)

demo.launch(share=True)