Blakus commited on
Commit
2ac7c84
1 Parent(s): cf0b522

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -23
app.py CHANGED
@@ -47,16 +47,23 @@ model.cuda()
47
 
48
  print("Modelo cargado en GPU")
49
 
50
- def predict(prompt, language, reference_audio, temperature):
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
- # Otros parámetros pueden mantenerse como están o ajustarse ligeramente.
56
- length_penalty = 1.0
57
- repetition_penalty = 2.0
58
- top_k = 50
59
- top_p = 0.7 # Mayor estabilidad
 
 
 
 
 
 
 
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, # Pasar temperatura ajustada
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, temperature_slider], # Se incluye el slider aquí
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