File size: 2,574 Bytes
5047800
df0da2c
b43db56
00fb423
 
 
 
 
 
e56e711
00fb423
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5c21323
a9d8c7a
00fb423
fee8703
 
 
 
 
 
 
 
 
a9d8c7a
5c21323
00fb423
 
 
5c21323
00fb423
 
 
 
 
 
a9d8c7a
5c21323
 
00fb423
 
5c21323
 
a9d8c7a
 
 
 
 
 
 
 
 
 
 
00fb423
5fd80ed
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
import os
import gradio as gr
os.getenv("app_backend")
# Configuración de la interfaz de Gradio
supported_languages = ["es", "en"]
reference_audios = [
    "serio.wav",
    "neutral.wav",
    "alegre.wav",
    "neutral_ingles.wav"
]

theme = gr.themes.Soft(
    primary_hue="blue",
    secondary_hue="gray",
).set(
    body_background_fill='*neutral_100',
    body_background_fill_dark='*neutral_900',
)

description = """
# Sintetizador de voz de Pedro Labattaglia 🎙️

Sintetizador de voz con la voz del locutor argentino Pedro Labattaglia. 

## Cómo usarlo:
- Elija el idioma (Español o Inglés)
- Elija un audio de referencia de la lista 
- Escriba el texto que desea sintetizar
- Presione generar voz
"""

# Interfaz de Gradio
with gr.Blocks(theme=theme) as demo:
    gr.Markdown(description)

    # Fila para centrar la imagen
    with gr.Row():
        with gr.Column(equal_height=True):  # Esto centra la imagen en la fila
            gr.Image(
                "https://www.labattaglia.com.ar/images/about_me_pic2.jpg", 
                label="", 
                show_label=False,
                container=False,  # Esto permite que la imagen se ajuste al contenedor
                elem_id="image-container"  # Asigna un ID CSS para agregar estilos personalizados
            )

    # Fila para seleccionar idioma, referencia y generar voz
    with gr.Row():
        with gr.Column(scale=2):
            language_selector = gr.Dropdown(label="Idioma", choices=supported_languages)
            reference_audio = gr.Dropdown(label="Audio de referencia", choices=reference_audios)
            input_text = gr.Textbox(label="Texto a sintetizar", placeholder="Escribe aquí el texto que quieres convertir a voz...")
            generate_button = gr.Button("Generar voz", variant="primary")

        with gr.Column(scale=1):
            generated_audio = gr.Audio(label="Audio generado", interactive=False)
            metrics_output = gr.Textbox(label="Métricas", value="Tiempo de generación: -- segundos\nFactor de tiempo real: --")

    # Configuración del botón para generar voz
    generate_button.click(
        predict,
        inputs=[input_text, language_selector, reference_audio],
        outputs=[generated_audio, metrics_output]
    )

# Estilos CSS personalizados
demo.css = """
#image-container img {
    display: block;
    margin-left: auto;
    margin-right: auto;
    max-width: 256px;  /* Ancho máximo de 256px */
    height: auto;      /* Mantener la relación de aspecto */
}
"""

if __name__ == "__main__":
    demo.launch(share=True)