Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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"]
|
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")])
|