Blakus commited on
Commit
65ae583
·
verified ·
1 Parent(s): 52ac768

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -33
app.py CHANGED
@@ -52,7 +52,6 @@ def predict(prompt, language, reference_audio):
52
  if len(prompt) < 2 or len(prompt) > 600:
53
  return None, "El texto debe tener entre 2 y 600 caracteres."
54
 
55
- # Obtener los parámetros de la configuración JSON
56
  temperature = config.model_args.get("temperature", 0.85)
57
  length_penalty = config.model_args.get("length_penalty", 1.0)
58
  repetition_penalty = config.model_args.get("repetition_penalty", 2.0)
@@ -80,11 +79,9 @@ def predict(prompt, language, reference_audio):
80
  inference_time = time.time() - start_time
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
88
  real_time_factor = inference_time / audio_length
89
 
90
  metrics_text = f"Tiempo de generación: {inference_time:.2f} segundos\n"
@@ -125,33 +122,6 @@ Sintetizador de voz con la voz del locutor argentino Pedro Labattaglia.
125
  - Presione generar voz
126
  """
127
 
128
- # JavaScript para limpiar los datos de autenticación
129
- clear_auth_js = """
130
- function clearAuthData() {
131
- localStorage.removeItem('gradio_auth_token');
132
- localStorage.removeItem('gradio_auth_expiration');
133
- }
134
-
135
- // Limpiar datos de autenticación cuando la página se refresca o se cierra
136
- window.addEventListener('beforeunload', clearAuthData);
137
-
138
- // Agregar un botón para limpiar manualmente los datos de autenticación
139
- document.addEventListener('DOMContentLoaded', (event) => {
140
- const clearAuthButton = document.createElement('button');
141
- clearAuthButton.textContent = 'Cerrar sesión';
142
- clearAuthButton.style.position = 'fixed';
143
- clearAuthButton.style.top = '10px';
144
- clearAuthButton.style.right = '10px';
145
- clearAuthButton.style.zIndex = '1000';
146
- clearAuthButton.onclick = function() {
147
- clearAuthData();
148
- alert('Sesión cerrada. Por favor, recarga la página.');
149
- };
150
- document.body.appendChild(clearAuthButton);
151
- });
152
- """
153
-
154
- # Interfaz de Gradio
155
  with gr.Blocks(theme=theme) as demo:
156
  gr.Markdown(description)
157
 
@@ -178,13 +148,22 @@ with gr.Blocks(theme=theme) as demo:
178
  generated_audio = gr.Audio(label="Audio generado", interactive=False)
179
  metrics_output = gr.Textbox(label="Métricas", value="Tiempo de generación: -- segundos\nFactor de tiempo real: --")
180
 
181
- # Configuración del botón para generar voz
182
  generate_button.click(
183
  predict,
184
  inputs=[input_text, language_selector, reference_audio],
185
  outputs=[generated_audio, metrics_output]
186
  )
187
 
 
 
 
 
 
 
 
 
 
 
188
  # Agregar el JavaScript para limpiar los datos de autenticación
189
  gr.HTML("<script>" + clear_auth_js + "</script>")
190
 
@@ -200,4 +179,4 @@ demo.css = """
200
  """
201
 
202
  if __name__ == "__main__":
203
- demo.launch(auth=[("Pedro Labattaglia", "PL2024"), ("Invitado", "PLTTS2024")])
 
52
  if len(prompt) < 2 or len(prompt) > 600:
53
  return None, "El texto debe tener entre 2 y 600 caracteres."
54
 
 
55
  temperature = config.model_args.get("temperature", 0.85)
56
  length_penalty = config.model_args.get("length_penalty", 1.0)
57
  repetition_penalty = config.model_args.get("repetition_penalty", 2.0)
 
79
  inference_time = time.time() - start_time
80
 
81
  output_path = "pedro_labattaglia_TTS.wav"
 
 
82
  wavfile.write(output_path, config.audio["output_sample_rate"], out["wav"])
83
 
84
+ audio_length = len(out["wav"]) / config.audio["output_sample_rate"]
85
  real_time_factor = inference_time / audio_length
86
 
87
  metrics_text = f"Tiempo de generación: {inference_time:.2f} segundos\n"
 
122
  - Presione generar voz
123
  """
124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  with gr.Blocks(theme=theme) as demo:
126
  gr.Markdown(description)
127
 
 
148
  generated_audio = gr.Audio(label="Audio generado", interactive=False)
149
  metrics_output = gr.Textbox(label="Métricas", value="Tiempo de generación: -- segundos\nFactor de tiempo real: --")
150
 
 
151
  generate_button.click(
152
  predict,
153
  inputs=[input_text, language_selector, reference_audio],
154
  outputs=[generated_audio, metrics_output]
155
  )
156
 
157
+ # Botón de logout
158
+ logout_button = gr.LogoutButton(logout_msg="Sesión cerrada correctamente", label="Cerrar sesión")
159
+
160
+ # Script para manejar el cierre o refresco de la pestaña
161
+ clear_auth_js = """
162
+ window.addEventListener("beforeunload", function(event) {
163
+ fetch('/logout', {method: 'POST', credentials: 'same-origin'});
164
+ });
165
+ """
166
+
167
  # Agregar el JavaScript para limpiar los datos de autenticación
168
  gr.HTML("<script>" + clear_auth_js + "</script>")
169
 
 
179
  """
180
 
181
  if __name__ == "__main__":
182
+ demo.launch(auth=[("Pedro Labattaglia", "PL2024"), ("Invitado", "PLTTS2024")])