--- title: FVOICE_V2 emoji: 🎙️ colorFrom: indigo colorTo: blue sdk: gradio sdk_version: "4.44.0" app_file: app.py pinned: false --- ````markdown # VITS2: Mejora de la Calidad y Eficiencia en Síntesis de Voz en una Sola Etapa mediante Aprendizaje Adversarial y Diseño Arquitectónico ## Jungil Kong, Jihoon Park, Beomjeong Kim, Jeongmin Kim, Dohee Kong, Sangjin Kim Implementación no oficial del artículo [VITS2 paper](https://arxiv.org/abs/2307.16430), secuela del artículo original [VITS paper](https://arxiv.org/abs/2106.06103). Este repositorio está basado en [VITS2 p0p4k](https://github.com/p0p4k/vits2_pytorch). ![Alt text](resources/image.png) ## Descripción VITS2 es un modelo de síntesis de voz en una sola etapa que mejora significativamente la naturalidad, eficiencia y accesibilidad en comparación con su predecesor. Entre sus ventajas destacan: - Mayor naturalidad en la voz generada. - Mejor adaptación a múltiples hablantes. - Mayor eficiencia en entrenamiento e inferencia. - Menor dependencia de conversión fonémica (enfoque end-to-end). ## Créditos - [VITS repo](https://github.com/jaywalnut310/vits) - [VITS2 p0p4k](https://github.com/p0p4k/vits2_pytorch) --- ## **Requisitos Previos** 1. **Python** >= 3.10 2. **PyTorch** >= 2.7.0 3. Crear y activar un entorno virtual 4. Clonar este repositorio 5. Instalar las dependencias: ```bash pip install -r requirements.txt ```` 6. Instalar **espeak-ng** * En Linux: ```bash sudo apt-get install espeak-ng ``` * En Windows: seguir este [tutorial](https://www.youtube.com/watch?v=BBlivx6o0WM) --- ## **Inferencia (uso del modelo)** Ya no es necesario ejecutar notebooks ni compilar módulos adicionales. Para usar el modelo entrenado, simplemente ejecuta: ```bash python app.py ``` * Descarga los modelos desde este [Google Drive](https://drive.google.com/drive/folders/1GDOh8VqPcJNO-0dKtMc_B5dAoU-0p9Ht?usp=sharing) * Colócalo en una carpeta llamada `models/` --- ## **Entrenamiento** ### Preparación de datos 1. Asegúrate de que tus audios estén en **mono** y a **22050 Hz**: ```bash ffmpeg -i input.wav -ac 1 -ar 22050 output.wav ``` 2. Usa la app de segmentación (`Audio-segmentation`) para dividir los audios largos y generar el `metadata.csv`. 3. Ejecuta el script para generar los archivos `train.txt` y `val.txt` desde el `metadata.csv` generado: ```bash python create_train_val.py ``` ### Transfer Learning Si deseas realizar fine-tuning sobre un modelo ya entrenado: 1. Crea una carpeta llamada `logs/NOMBRE_MODELO` 2. Coloca el checkpoint del modelo base dentro de esa carpeta 3. Renómbralo como: ```text G_0.pth ``` Esto reiniciará el contador de pasos a cero, pero conservará los pesos del modelo anterior. --- ### Entrenamiento del modelo 1. Copia un archivo `.json` de configuración desde `configs/`, renómbralo (ej. `MYMODEL.json`) y modifícalo según tu dataset. 2. Si es en inglés, usa `"english_cleaners"`. Para español, deja `"spanish_cleaners"`. 3. Ejecuta: ```bash python -m Train.trainer_engine --config configs/MYMODEL.json -m MYMODEL ``` --- ## **Conversión a ONNX (opcional)** Una vez entrenado el modelo, puedes convertirlo a ONNX. Desde `src/`, usa el módulo `import onnx`. --- ## **Resumen** | Objetivo | Acción | | --------------------------- | ----------------------------------------------------------------------- | | Usar modelo entrenado | `python app.py` | | Entrenar modelo nuevo | `python -m Train.trainer_engine --config configs/NOMBRE.json -m NOMBRE` | | Preparar audios | Convertir con ffmpeg a 22050Hz mono + segmentación automática | | Crear `train.txt`/`val.txt` | `python create_train_val.py` usando `metadata.csv` generado | | Transfer learning | Crear `logs/MODELO/`, poner `G_0.pth` | | Convertir a ONNX | Usar `import onnx` desde `src/` después del entrenamiento | --- ## ToDos 1. Interfaz gráfica 2. Video tutorial de uso 3. Catálogo más amplio de voces 4. Voces en lenguas originarias 5. Integración con LLM para chat con voz ``` ```