Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -47,16 +47,23 @@ model.cuda()
|
|
47 |
|
48 |
print("Modelo cargado en GPU")
|
49 |
|
50 |
-
def predict(prompt, language, reference_audio
|
51 |
try:
|
52 |
if len(prompt) < 2 or len(prompt) > 600:
|
53 |
return None, "El texto debe tener entre 2 y 600 caracteres."
|
54 |
|
55 |
-
#
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
|
61 |
gpt_cond_latent, speaker_embedding = model.get_conditioning_latents(
|
62 |
audio_path=reference_audio
|
@@ -69,19 +76,24 @@ def predict(prompt, language, reference_audio, temperature):
|
|
69 |
language,
|
70 |
gpt_cond_latent,
|
71 |
speaker_embedding,
|
72 |
-
temperature=temperature,
|
73 |
length_penalty=length_penalty,
|
74 |
repetition_penalty=repetition_penalty,
|
75 |
top_k=top_k,
|
76 |
-
top_p=top_p
|
|
|
|
|
|
|
|
|
77 |
)
|
78 |
|
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"
|
@@ -112,9 +124,7 @@ theme = gr.themes.Soft(
|
|
112 |
|
113 |
description = """
|
114 |
# Sintetizador de voz de Pedro Labattaglia 🎙️
|
115 |
-
|
116 |
Sintetizador de voz con la voz del locutor argentino Pedro Labattaglia.
|
117 |
-
|
118 |
## Cómo usarlo:
|
119 |
- Elija el idioma (Español o Inglés)
|
120 |
- Elija un audio de referencia de la lista
|
@@ -143,17 +153,6 @@ with gr.Blocks(theme=theme) as demo:
|
|
143 |
language_selector = gr.Dropdown(label="Idioma", choices=supported_languages)
|
144 |
reference_audio = gr.Dropdown(label="Audio de referencia", choices=reference_audios)
|
145 |
input_text = gr.Textbox(label="Texto a sintetizar", placeholder="Escribe aquí el texto que quieres convertir a voz...")
|
146 |
-
|
147 |
-
# Aquí está el slider de temperatura con una breve explicación
|
148 |
-
temperature_slider = gr.Slider(
|
149 |
-
minimum=0.1,
|
150 |
-
maximum=1.0,
|
151 |
-
value=0.2,
|
152 |
-
step=0.05,
|
153 |
-
label="Temperatura (Estabilidad vs Creatividad)",
|
154 |
-
info="Valores bajos generan una voz más estable pero menos creativa, mientras que valores más altos permiten más variabilidad en la voz."
|
155 |
-
)
|
156 |
-
|
157 |
generate_button = gr.Button("Generar voz", variant="primary")
|
158 |
|
159 |
with gr.Column(scale=1):
|
@@ -163,7 +162,7 @@ with gr.Blocks(theme=theme) as demo:
|
|
163 |
# Configuración del botón para generar voz
|
164 |
generate_button.click(
|
165 |
predict,
|
166 |
-
inputs=[input_text, language_selector, reference_audio
|
167 |
outputs=[generated_audio, metrics_output]
|
168 |
)
|
169 |
|
|
|
47 |
|
48 |
print("Modelo cargado en GPU")
|
49 |
|
50 |
+
def predict(prompt, language, reference_audio):
|
51 |
try:
|
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)
|
59 |
+
top_k = config.model_args.get("top_k", 50)
|
60 |
+
top_p = config.model_args.get("top_p", 0.85)
|
61 |
+
|
62 |
+
# Parámetros agregados
|
63 |
+
num_gpt_outputs = config.model_args.get("num_gpt_outputs", 32)
|
64 |
+
gpt_cond_len = config.model_args.get("gpt_cond_len", 24)
|
65 |
+
gpt_cond_chunk_len = config.model_args.get("gpt_cond_chunk_len", 4)
|
66 |
+
max_ref_len = config.model_args.get("max_ref_len", 10)
|
67 |
|
68 |
gpt_cond_latent, speaker_embedding = model.get_conditioning_latents(
|
69 |
audio_path=reference_audio
|
|
|
76 |
language,
|
77 |
gpt_cond_latent,
|
78 |
speaker_embedding,
|
79 |
+
temperature=temperature,
|
80 |
length_penalty=length_penalty,
|
81 |
repetition_penalty=repetition_penalty,
|
82 |
top_k=top_k,
|
83 |
+
top_p=top_p,
|
84 |
+
num_gpt_outputs=num_gpt_outputs, # Número de muestras del modelo
|
85 |
+
gpt_cond_len=gpt_cond_len, # Longitud del condicionamiento
|
86 |
+
gpt_cond_chunk_len=gpt_cond_chunk_len, # Tamaño del fragmento de audio
|
87 |
+
max_ref_len=max_ref_len # Máximo de segundos para condicionamiento
|
88 |
)
|
89 |
|
90 |
inference_time = time.time() - start_time
|
91 |
|
92 |
output_path = "pedro_labattaglia_TTS.wav"
|
93 |
+
# Guardar el audio directamente desde el output del modelo
|
94 |
wavfile.write(output_path, config.audio["output_sample_rate"], out["wav"])
|
95 |
|
96 |
+
audio_length = len(out["wav"]) / config.audio["output_sample_rate"] # duración del audio en segundos
|
97 |
real_time_factor = inference_time / audio_length
|
98 |
|
99 |
metrics_text = f"Tiempo de generación: {inference_time:.2f} segundos\n"
|
|
|
124 |
|
125 |
description = """
|
126 |
# Sintetizador de voz de Pedro Labattaglia 🎙️
|
|
|
127 |
Sintetizador de voz con la voz del locutor argentino Pedro Labattaglia.
|
|
|
128 |
## Cómo usarlo:
|
129 |
- Elija el idioma (Español o Inglés)
|
130 |
- Elija un audio de referencia de la lista
|
|
|
153 |
language_selector = gr.Dropdown(label="Idioma", choices=supported_languages)
|
154 |
reference_audio = gr.Dropdown(label="Audio de referencia", choices=reference_audios)
|
155 |
input_text = gr.Textbox(label="Texto a sintetizar", placeholder="Escribe aquí el texto que quieres convertir a voz...")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
generate_button = gr.Button("Generar voz", variant="primary")
|
157 |
|
158 |
with gr.Column(scale=1):
|
|
|
162 |
# Configuración del botón para generar voz
|
163 |
generate_button.click(
|
164 |
predict,
|
165 |
+
inputs=[input_text, language_selector, reference_audio],
|
166 |
outputs=[generated_audio, metrics_output]
|
167 |
)
|
168 |
|