Blakus commited on
Commit
4dd639c
1 Parent(s): 871c067

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +74 -19
app.py CHANGED
@@ -13,10 +13,6 @@ from TTS.tts.models.xtts import Xtts
13
  from TTS.utils.generic_utils import get_user_data_dir
14
  from huggingface_hub import hf_hub_download
15
 
16
- HF_TOKEN = os.environ.get("HF_TOKEN")
17
- if not HF_TOKEN:
18
- raise ValueError("No se ha proporcionado el token de Hugging Face. Por favor, configura la variable de entorno HF_TOKEN.")
19
-
20
  # Configuración inicial
21
  os.environ["COQUI_TOS_AGREED"] = "1"
22
 
@@ -85,6 +81,7 @@ def predict(prompt, language, reference_audio):
85
 
86
  output_path = "pedro_labattaglia_TTS.wav"
87
  # Guardar el audio directamente desde el output del modelo
 
88
  wavfile.write(output_path, config.audio["output_sample_rate"], out["wav"])
89
 
90
  audio_length = len(out["wav"]) / config.audio["output_sample_rate"] # duración del audio en segundos
@@ -99,21 +96,79 @@ def predict(prompt, language, reference_audio):
99
  print(f"Error detallado: {str(e)}")
100
  return None, f"Error: {str(e)}"
101
 
102
- # Interfaz de Gradio para el backend
103
- iface = gr.Interface(
104
- fn=predict,
105
- inputs=[
106
- gr.Textbox(label="Texto a sintetizar"),
107
- gr.Dropdown(label="Idioma", choices=["es", "en"]),
108
- gr.Dropdown(label="Audio de referencia", choices=["serio.wav", "neutral.wav", "alegre.wav", "neutral_ingles.wav"])
109
- ],
110
- outputs=[
111
- gr.Audio(label="Audio generado"),
112
- gr.Textbox(label="Métricas")
113
- ],
114
- title="Backend API para Sintetizador de Voz de Pedro Labattaglia",
115
- description="API para generar voz sintética usando el modelo de Pedro Labattaglia"
 
116
  )
117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  if __name__ == "__main__":
119
- iface.launch()
 
13
  from TTS.utils.generic_utils import get_user_data_dir
14
  from huggingface_hub import hf_hub_download
15
 
 
 
 
 
16
  # Configuración inicial
17
  os.environ["COQUI_TOS_AGREED"] = "1"
18
 
 
81
 
82
  output_path = "pedro_labattaglia_TTS.wav"
83
  # Guardar el audio directamente desde el output del modelo
84
+ import scipy.io.wavfile as wavfile
85
  wavfile.write(output_path, config.audio["output_sample_rate"], out["wav"])
86
 
87
  audio_length = len(out["wav"]) / config.audio["output_sample_rate"] # duración del audio en segundos
 
96
  print(f"Error detallado: {str(e)}")
97
  return None, f"Error: {str(e)}"
98
 
99
+ # Configuración de la interfaz de Gradio
100
+ supported_languages = ["es", "en"]
101
+ reference_audios = [
102
+ "serio.wav",
103
+ "neutral.wav",
104
+ "alegre.wav",
105
+ "neutral_ingles.wav"
106
+ ]
107
+
108
+ theme = gr.themes.Soft(
109
+ primary_hue="blue",
110
+ secondary_hue="gray",
111
+ ).set(
112
+ body_background_fill='*neutral_100',
113
+ body_background_fill_dark='*neutral_900',
114
  )
115
 
116
+ description = """
117
+ # Sintetizador de voz de Pedro Labattaglia 🎙️
118
+
119
+ Sintetizador de voz con la voz del locutor argentino Pedro Labattaglia.
120
+
121
+ ## Cómo usarlo:
122
+ - Elija el idioma (Español o Inglés)
123
+ - Elija un audio de referencia de la lista
124
+ - Escriba el texto que desea sintetizar
125
+ - Presione generar voz
126
+ """
127
+
128
+ # Interfaz de Gradio
129
+ with gr.Blocks(theme=theme) as demo:
130
+ gr.Markdown(description)
131
+
132
+ # Fila para centrar la imagen
133
+ with gr.Row():
134
+ with gr.Column(equal_height=True): # Esto centra la imagen en la fila
135
+ gr.Image(
136
+ "https://www.labattaglia.com.ar/images/about_me_pic2.jpg",
137
+ label="",
138
+ show_label=False,
139
+ container=False, # Esto permite que la imagen se ajuste al contenedor
140
+ elem_id="image-container" # Asigna un ID CSS para agregar estilos personalizados
141
+ )
142
+
143
+ # Fila para seleccionar idioma, referencia y generar voz
144
+ with gr.Row():
145
+ with gr.Column(scale=2):
146
+ language_selector = gr.Dropdown(label="Idioma", choices=supported_languages)
147
+ reference_audio = gr.Dropdown(label="Audio de referencia", choices=reference_audios)
148
+ input_text = gr.Textbox(label="Texto a sintetizar", placeholder="Escribe aquí el texto que quieres convertir a voz...")
149
+ generate_button = gr.Button("Generar voz", variant="primary")
150
+
151
+ with gr.Column(scale=1):
152
+ generated_audio = gr.Audio(label="Audio generado", interactive=False)
153
+ metrics_output = gr.Textbox(label="Métricas", value="Tiempo de generación: -- segundos\nFactor de tiempo real: --")
154
+
155
+ # Configuración del botón para generar voz
156
+ generate_button.click(
157
+ predict,
158
+ inputs=[input_text, language_selector, reference_audio],
159
+ outputs=[generated_audio, metrics_output]
160
+ )
161
+
162
+ # Estilos CSS personalizados
163
+ demo.css = """
164
+ #image-container img {
165
+ display: block;
166
+ margin-left: auto;
167
+ margin-right: auto;
168
+ max-width: 256px; /* Ancho máximo de 256px */
169
+ height: auto; /* Mantener la relación de aspecto */
170
+ }
171
+ """
172
+
173
  if __name__ == "__main__":
174
+ demo.launch(share=True)