Una adaptación de Reformer: el transformador eficiente para la tarea de texto a voz.
Este proyecto contiene:
Nuestro objetivo fue crear una versión significativamente más eficiente del modelo de texto a voz de última generación, reemplazando su arquitectura de transformadores con optimizaciones propuestas en el documento reformador más reciente. Lo usaremos para generar un profundo de Donald Trump basado en un conjunto de datos personalizado de sus discursos, creado específicamente para este propósito.
Desafortunadamente, no pudimos producir resultados que coincidieran con los del papel TTS Transformer, después de experimentar con más de 100 combinaciones de hiperparámetros durante 2 meses. Creemos que el tamaño del modelo es un factor significativo aquí, y para entrenar transformadores para TTS, uno realmente necesita reducir el sobreajuste para permitir un proceso de entrenamiento largo y constante (~ 1 semana de entrenamiento en RTX 2080TI).
Además, tener acceso a la implementación original de Transformer TTS ayudaría mucho.
Si bien el reformador no coincidió con nuestras expectativas, la implementación de Squeezewave coincide con el rendimiento del original sin soporte FP16.
También incluimos CLI para el entrenamiento e inferencia (ver sección de uso ), y todos los datos necesarios para la reproducción de experimentos (ver sección de desarrollo ).
El proyecto está bajo un refactor significativo, esta versión se deja aquí para permitir la compatibilidad con nuestras exámenes anteriores y se moverá en el futuro cercano .
Este proyecto es un paquete normal de Python, y se puede instalar utilizando pip , siempre que tenga Python 3.8 o mayor .
Vaya a la página de lanzamientos para encontrar las instrucciones de instalación para la última versión.
Después de la instalación, puede ver los comandos disponibles ejecutando:
python -m reformer_tts.cli --helpTodos los comandos se ejecutan usando CLI, por ejemplo:
python -m reformer_tts.cli train-vocoder La mayoría de los parámetros (en particular, todos los hiperparámetros de entrenamiento) se especifican a través del argumento --config a cli (que va antes del comando que desea ejecutar), por ejemplo:
python -m reformer_tts.cli -c /path/to/your/config.yml train-vocoder Los valores predeterminados se pueden encontrar en reformer_tts.config.Config (y sus campos).
Gracias a Conda-Forge Community, podemos instalar todos los paquetes (incluidos los binarios necesarios, como ffmpeg ) usando un comando.
conda env create -f environment.ymlPython>=3.8 : which python
python --versionpip install -r requirements.txt Asegúrese de tener ffmpeg>=3.4,<4.0 instalado (instrucciones de instalación)
Para capacitación, asegúrese de tener instalados controladores CUDA y GPU (para más detalles, consulte Instrucciones en el sitio web de Pytorch)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-credentials.jsonNota: Si solo necesita accesorios de lectura (para la reproducción), no necesita realizar el paso 1
dvc pullPara hacer esto, puede ejecutar pruebas de proyecto:
python -m pytest --pyargs reformer_ttsTodas las pruebas deben funcionar en CPU y GPU, y pueden tardar hasta un minuto en completarse.
Recuerde aprobar --pyargs reformer_tts a Pytest, de lo contrario buscará directorios de datos para pruebas
Python>=3.8requirements.txt así como en environment.ymlreformer_tts/cli.py , ejecute python reformer_tts/cli.py --help para una referencia detalladaLa configuración se organiza en las estructuras de datos:
config.py , donde se definen los parámetros y los valores predeterminados , por ejemplo, los parámetros de configuración del conjunto de datos se especifican en reformer_tts.dataset.configreformer_tts.config.Config contiene la configuración de configuración de todos los submódulosDe esta manera, los valores predeterminados se establecen cerca del lugar donde se usan, cualquier valor de configuración se puede anular donde desee
Para cambiar la configuración de tiempo de ejecución
python reformer_tts/cli.py save-config -o config/custom.yml o copiar manualmente uno de los archivos de configuración existentes en config/ directorio-c , es decir: python reformer_tts/cli.py -c config/custom.yml [COMMAND]Para agregar configuración para un nuevo módulo
config.py en tu módulodataset y squeezewave )reformer_tts.config Utilizamos DVC para definir tuberías de procesamiento de datos. El control remoto está configurado en Google Cloud Storage, para obtener detalles Ejecutar dvc config list .
Nodos preparados para ejecutar:
/scidatalgAntes de correr:
Para ejecutar el entrenamiento:
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash/scidatalg/reformer-tts/reformer-tts/ Asegúrese de que el repositorio esté sacado y en la rama adecuadajobs/train_entropy.sbatch : complete el nombre del nodo y el comando de capacitaciónsbatch your/job/script/location.sbatch Pro watch -n 1 squeue -u your_username para ver si su trabajo ya está ejecutando Pro TIP2 Puede ver las actualizaciones del registro ejecutando tail -f file.log o less --follow-name +F file.log
Para extraer de DVC, use jobs/entropy_dvc_pull.sbatch .
Dado que el directorio de /Scidatam no se sincroniza mientras queremos entrenar, tenemos que configurar el entrenamiento en cada nodo por separado a mano. Para configurar Env en nuevo nodo, siga esta instucción:
Nota : Solo los nodos con /Scidatalg son compatibles con estos scripts. Estos nodos son: AsusGPU4, AsusGPU3, ASUSGPU2, ASUSGPU1, Arnold, Sylvester
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash${HOME}/gcp-cred.json (usando su editor favorito)scripts/setup_entropy_node.sh a un archivo nuevo en inicio dir (nuevamente usando el editor)