Spaces:
Running
Running
# utils.py | |
import os | |
from TTS.api import TTS | |
class VoiceCloner: | |
def __init__(self, model_name: str = "tts_models/multilingual/multi-dataset/xtts_v2"): | |
""" | |
Inicializa el clonador de voz cargando el modelo de TTS. | |
:param model_name: Nombre del modelo preentrenado para TTS. | |
""" | |
self.model_name = model_name | |
self.model = TTS(model_name) | |
def clone_voice(self, text: str, reference_audio_path: str, output_path: str = "output.wav") -> str: | |
""" | |
Genera un archivo de audio con la voz clonada a partir de un audio de referencia. | |
:param text: El texto que se desea sintetizar. | |
:param reference_audio_path: Path del archivo de audio que servirá como referencia de voz. | |
:param output_path: Path de salida para el archivo de audio resultante. | |
:return: Path del archivo de audio generado. | |
""" | |
# 'YourTTS' permite zero-shot voice cloning siempre que se provea speaker_wav con el audio de referencia | |
# Si quieres forzar el idioma a español, puedes usar el parámetro language="es" | |
self.model.tts_to_file( | |
text=text, | |
speaker_wav=reference_audio_path, | |
language="es", | |
file_path=output_path | |
) | |
return output_path | |