Este repositorio contiene un DockerFile que extiende el contenedor Pytorch 21.02-Py3 NGC y encapsula algunas dependencias. Para crear su propio contenedor, elija un contenedor de pytorch de las versiones de contenedores Nvidia Pytorch y cree un DockerFile como formato siguiente:
FROM nvcr . io / nvidia / pytorch : 21.02 - py3
WORKDIR / path / to / working / directory / text2speech /
COPY requirements . txt .
RUN pip install - r requirements . txt Vaya a /path/to/working/directory/text2speech/docker
$ docker build - - no - cache - t torcht2s .
$ docker run - it - - rm - - gpus all - p 2222 : 8888 - v / path / to / working / directory / text2speech : / path / to / working / directory / text2speech torcht2s$ python - m ipykernel install - - user - - name = torcht2s
$ jupyter notebook - - ip = 0.0 . 0.0 - - port = 8888 - - no - browser - - allow - roothttp://127.0.0.1:2222/?token=${TOKEN} e ingrese su token especificado en su terminal.Para entrenar modelos de síntesis de voz, son necesarios sonidos y secuencias de fonemas que expresan sonidos. Ese es WYH en el primer paso, el texto de entrada está codificado en una lista de símbolos. En este estudio, usaremos personajes y fonemas turcos como símbolos. Dado que el turco es un lenguaje fonético, las palabras se expresan a medida que se leen. Es decir, las secuencias de caracteres son palabras construidas en turco. En idiomas no fonéticos como el inglés, las palabras se pueden expresar con fonemas. Para sintetizar el discurso turco con datos en inglés, las palabras en el conjunto de datos en inglés primero deben traducirse fonéticamente al turco.
valid_symbols = [ '1' , '1:' , '2' , '2:' , '5' , 'a' , 'a:' , 'b' , 'c' , 'd' , 'dZ' , 'e' , 'e:' , 'f' , 'g' , 'gj' , 'h' , 'i' , 'i:' , 'j' ,
'k' , 'l' , 'm' , 'n' , 'N' , 'o' , 'o:' , 'p' , 'r' , 's' , 'S' , 't' , 'tS' , 'u' , 'u' , 'v' , 'y' , 'y:' , 'z' , 'Z' ]Para acelerar el entrenamiento, podrían generarse durante el paso de preprocesamiento y leer directamente desde el disco durante el entrenamiento. Siga estos pasos para usar un conjunto de datos personalizado.
text2speech/Fastpitch/dataset/ ubicación. Esos filelistas deben enumerar un solo enunciado por línea como: < audio file path > | < transcript >text2speech/Fastpitch/data_preperation.ipynb $ python prepare_dataset . py
- - wav - text - filelists dataset / tts_data . txt
- - n - workers 16
- - batch - size 1
- - dataset - path dataset
- - extract - pitch
- - f0 - method pyin
- - extract - mels create_picth_text_file(manifest_path) desde text2speech/Fastpitch/data_preperation.ipynb Esos filelistas deben enumerar un solo enunciado por línea como: < mel or wav file path > | < pitch file path > | < text > | < speaker_id >El conjunto de datos completo tiene la siguiente estructura:
. / dataset
├── mels
├── pitch
├── wavs
├── tts_data . txt # train + val
├── tts_data_train . txt
├── tts_data_val . txt
├── tts_pitch_data . txt # train + val
├── tts_pitch_data_train . txt
├── tts_pitch_data_val . txt El entrenamiento producirá un modelo FastPitch capaz de generar espectrogramas MEL a partir de texto bruto. Se serializará como un solo archivo de punto de control .pt , junto con una serie de puntos de control intermedios.
$ python train . py - - cuda - - amp - - p - arpabet 1.0 - - dataset - path dataset
- - output saved_fastpicth_models /
- - training - files dataset / tts_pitch_data_train . txt
- - validation - files dataset / tts_pitch_data_val . txt
- - epochs 1000 - - learning - rate 0.001 - - batch - size 32
- - load - pitch - from - diskEl último paso es convertir el espectrograma en la forma de onda. El proceso para generar discurso a partir del espectrograma también se llama Vocoder.
Algunos generadores de espectrograma MEL son propensos a modelar sesgo. Como los espectrogramas difieren de los datos verdaderos en los que se capacitó Hifi-Gan, la calidad del audio generado podría sufrir. Para superar este problema, un modelo HIFI-GAN se puede ajustar en las salidas de un generador de espectrograma MEL particular para adaptarse a este sesgo. En esta sección realizaremos el ajuste de las salidas de FastPitch.
text2speech/Hifigan/data/pretrained_fastpicth_model/ Directory.tts_pitch_data.txt en el text2speech/Hifigan/data/ directorio. $ python extract_mels . py - - cuda
- o data / mels - fastpitch - tr22khz
- - dataset - path / text2speech / Fastpitch / dataset
- - dataset - files data / tts_pitch_data . txt # train + val
- - load - pitch - from - disk
- - checkpoint - path data / pretrained_fastpicth_model / FastPitch_checkpoint . pt - bs 16 Los espectrogramas MEL ahora deben estar preparados en el directorio text2speech/Hifigan/data/mels-fastpitch-tr22khz . El script de ajuste fino cargará un modelo Hifi-Gan existente y ejecutará varias épocas de entrenamiento utilizando espectrogramas generados en el último paso.
Este paso producirá otro archivo de punto de control del modelo .pt Hifi-gan ajustado al modelo de FastPitch particular.
results en el directorio text2speech/Hifigan . $ nohup python train . py - - cuda - - output / results / hifigan_tr22khz
- - epochs 1000 - - dataset_path / Fastpitch / dataset
- - input_mels_dir / data / mels - fastpitch - tr22khz
- - training_files / Fastpitch / dataset / tts_data . txt
- - validation_files / Fastpitch / dataset / tts_data . txt
- - fine_tuning - - fine_tune_lr_factor 3 - - batch_size 16
- - learning_rate 0.0003 - - lr_decay 0.9998 - - validation_interval 10 > log . txt$ tail - f log . txt Ejecute el siguiente comando para sintetizar el audio del texto sin procesar con el generador de espectrograma MEL
python inference . py - - cuda
- - hifigan / Hifigan / results / hifigan_tr22khz / hifigan_gen_checkpoint . pt
- - fastpitch / Fastpitch / saved_fastpicth_models / FastPitch_checkpoint . pt
- i test_text . txt
- o wavs / El discurso se genera a partir de un archivo aprobado con el argumento -i . El audio de salida se almacenará en la ruta especificada por el argumento -o .