Blakus commited on
Commit
1ced4b5
·
verified ·
1 Parent(s): e98bc63

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +4 -29
app.py CHANGED
@@ -7,8 +7,6 @@ import scipy.io.wavfile as wavfile
7
  import torch
8
  import torchaudio
9
  import gradio as gr
10
- import numpy as np
11
- import parselmouth
12
  from TTS.api import TTS
13
  from TTS.tts.configs.xtts_config import XttsConfig
14
  from TTS.tts.models.xtts import Xtts
@@ -25,9 +23,6 @@ def check_and_install(package):
25
  print(f"{package} no está instalado. Instalando...")
26
  subprocess.check_call([sys.executable, "-m", "pip", "install", package])
27
 
28
- # Check and install parselmouth
29
- check_and_install("parselmouth")
30
-
31
  print("Descargando y configurando el modelo...")
32
  repo_id = "Blakus/Pedro_Lab_XTTS"
33
  local_dir = os.path.join(get_user_data_dir("tts"), "tts_models--multilingual--multi-dataset--xtts_v2")
@@ -52,22 +47,7 @@ model.cuda()
52
 
53
  print("Modelo cargado en GPU")
54
 
55
- def adjust_pitch(audio_path, pitch_factor):
56
- sound = parselmouth.Sound(audio_path)
57
- manipulation = parselmouth.praat.call(sound, "To Manipulation", 0.01, 75, 600)
58
-
59
- pitch_tier = parselmouth.praat.call(manipulation, "Extract pitch tier")
60
-
61
- parselmouth.praat.call(pitch_tier, "Multiply frequencies", sound.xmin, sound.xmax, pitch_factor)
62
-
63
- parselmouth.praat.call([pitch_tier, manipulation], "Replace pitch tier")
64
- new_sound = parselmouth.praat.call(manipulation, "Get resynthesis (overlap-add)")
65
-
66
- output_path = "pitch_adjusted_output.wav"
67
- new_sound.save(output_path, parselmouth.SoundFileFormat.WAV)
68
- return output_path
69
-
70
- def predict(prompt, language, reference_audio, speed, pitch_factor):
71
  try:
72
  if len(prompt) < 2 or len(prompt) > 600:
73
  return None, "El texto debe tener entre 2 y 600 caracteres."
@@ -104,12 +84,9 @@ def predict(prompt, language, reference_audio, speed, pitch_factor):
104
 
105
  output_path = "pedro_labattaglia_TTS.wav"
106
  # Guardar el audio directamente desde el output del modelo
 
107
  wavfile.write(output_path, config.audio["output_sample_rate"], out["wav"])
108
 
109
- # Adjust pitch
110
- if pitch_factor != 1.0:
111
- output_path = adjust_pitch(output_path, pitch_factor)
112
-
113
  audio_length = len(out["wav"]) / config.audio["output_sample_rate"] # duración del audio en segundos
114
  real_time_factor = inference_time / audio_length
115
 
@@ -146,7 +123,6 @@ Sintetizador de voz con la voz del locutor argentino Pedro Labattaglia.
146
  - Elija el idioma (Español o Inglés)
147
  - Elija un audio de referencia de la lista
148
  - Ajuste la velocidad del habla si lo desea
149
- - Ajuste el pitch de la voz si lo desea
150
  - Escriba el texto que desea sintetizar
151
  - Presione generar voz
152
  """
@@ -166,13 +142,12 @@ with gr.Blocks(theme=theme) as demo:
166
  elem_id="image-container"
167
  )
168
 
169
- # Fila para seleccionar idioma, referencia, velocidad, pitch y generar voz
170
  with gr.Row():
171
  with gr.Column(scale=2):
172
  language_selector = gr.Dropdown(label="Idioma", choices=supported_languages)
173
  reference_audio = gr.Dropdown(label="Audio de referencia", choices=reference_audios)
174
  speed_slider = gr.Slider(minimum=0.5, maximum=2.0, value=1.0, step=0.1, label="Velocidad del habla")
175
- pitch_slider = gr.Slider(minimum=0.5, maximum=2.0, value=1.0, step=0.1, label="Ajuste de pitch")
176
  input_text = gr.Textbox(label="Texto a sintetizar", placeholder="Escribe aquí el texto que quieres convertir a voz...")
177
  generate_button = gr.Button("Generar voz", variant="primary")
178
 
@@ -183,7 +158,7 @@ with gr.Blocks(theme=theme) as demo:
183
  # Configuración del botón para generar voz
184
  generate_button.click(
185
  predict,
186
- inputs=[input_text, language_selector, reference_audio, speed_slider, pitch_slider],
187
  outputs=[generated_audio, metrics_output]
188
  )
189
 
 
7
  import torch
8
  import torchaudio
9
  import gradio as gr
 
 
10
  from TTS.api import TTS
11
  from TTS.tts.configs.xtts_config import XttsConfig
12
  from TTS.tts.models.xtts import Xtts
 
23
  print(f"{package} no está instalado. Instalando...")
24
  subprocess.check_call([sys.executable, "-m", "pip", "install", package])
25
 
 
 
 
26
  print("Descargando y configurando el modelo...")
27
  repo_id = "Blakus/Pedro_Lab_XTTS"
28
  local_dir = os.path.join(get_user_data_dir("tts"), "tts_models--multilingual--multi-dataset--xtts_v2")
 
47
 
48
  print("Modelo cargado en GPU")
49
 
50
+ def predict(prompt, language, reference_audio, speed):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  try:
52
  if len(prompt) < 2 or len(prompt) > 600:
53
  return None, "El texto debe tener entre 2 y 600 caracteres."
 
84
 
85
  output_path = "pedro_labattaglia_TTS.wav"
86
  # Guardar el audio directamente desde el output del modelo
87
+ import scipy.io.wavfile as wavfile
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
91
  real_time_factor = inference_time / audio_length
92
 
 
123
  - Elija el idioma (Español o Inglés)
124
  - Elija un audio de referencia de la lista
125
  - Ajuste la velocidad del habla si lo desea
 
126
  - Escriba el texto que desea sintetizar
127
  - Presione generar voz
128
  """
 
142
  elem_id="image-container"
143
  )
144
 
145
+ # Fila para seleccionar idioma, referencia, velocidad y generar voz
146
  with gr.Row():
147
  with gr.Column(scale=2):
148
  language_selector = gr.Dropdown(label="Idioma", choices=supported_languages)
149
  reference_audio = gr.Dropdown(label="Audio de referencia", choices=reference_audios)
150
  speed_slider = gr.Slider(minimum=0.5, maximum=2.0, value=1.0, step=0.1, label="Velocidad del habla")
 
151
  input_text = gr.Textbox(label="Texto a sintetizar", placeholder="Escribe aquí el texto que quieres convertir a voz...")
152
  generate_button = gr.Button("Generar voz", variant="primary")
153
 
 
158
  # Configuración del botón para generar voz
159
  generate_button.click(
160
  predict,
161
+ inputs=[input_text, language_selector, reference_audio, speed_slider],
162
  outputs=[generated_audio, metrics_output]
163
  )
164