Ce référentiel contient un Dockerfile qui étend le conteneur NGC Pytorch 21.02-PY3 et résume certaines dépendances. Pour créer votre propre conteneur, choisissez un conteneur Pytorch à partir des versions de conteneur Nvidia Pytorch et créez un Dockerfile comme format suivant:
FROM nvcr . io / nvidia / pytorch : 21.02 - py3
WORKDIR / path / to / working / directory / text2speech /
COPY requirements . txt .
RUN pip install - r requirements . txt Accédez au /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} et entrez votre jeton spécifié dans votre terminal.Afin de former des modèles de synthèse de la parole, des sons et des séquences de phonèmes exprimant des sons sont nécessaires. C'est wyh dans la première étape, le texte d'entrée est codé dans une liste de symboles. Dans cette étude, nous utiliserons des caractères turcs et des phonèmes comme symboles. Étant donné que le turc est un langage phonétique, les mots sont exprimés tels qu'ils sont lus. Autrement dit, les séquences de caractères sont des mots construits en turc. Dans les langues non phonétiques comme l'anglais, les mots peuvent être exprimés avec des phonèmes. Pour synthétiser la parole turque avec des données anglaises, les mots de l'ensemble de données anglais doivent être traduits phonétiquement en turc.
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' ]Pour accélérer l'entraînement, ceux-ci pourraient être générés lors de l'étape de prétraitement et lire directement sur le disque pendant l'entraînement. Suivez ces étapes pour utiliser un ensemble de données personnalisé.
text2speech/Fastpitch/dataset/ Location. Ces fichiers doivent énumérer un seul énoncé par ligne en tant que: < 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) à partir de text2speech/Fastpitch/data_preperation.ipynb les filelists doivent répertorier un seul énoncé par ligne en tant que: < mel or wav file path > | < pitch file path > | < text > | < speaker_id >L'ensemble de données complet a la structure suivante:
. / 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 La formation produira un modèle FastPitch capable de générer des spectrogrammes de MEL à partir de texte brut. Il sera sérialisé en tant que fichier de point de contrôle .pt , ainsi qu'une série de points de contrôle intermédiaires.
$ 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 - diskLa dernière étape consiste à convertir le spectrogramme en forme d'onde. Le processus de génération de la parole à partir du spectrogramme est également appelé vocoder.
Certains générateurs de spectrogramme de MEL sont sujets à un biais de modèle. Comme les spectrogrammes diffèrent des données réelles sur lesquelles Hifi-Gan a été formée, la qualité de l'audio généré pourrait souffrir. Afin de surmonter ce problème, un modèle HIFI-GAN peut être affiné sur les sorties d'un générateur de spectrogramme MEL particulier afin de s'adapter à ce biais. Dans cette section, nous effectuerons un réglage fin aux sorties FastPitch.
text2speech/Hifigan/data/pretrained_fastpicth_model/ .tts_pitch_data.txt dans le répertoire text2speech/Hifigan/data/ . $ 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 Les spectrogrammes de MEL doivent maintenant être préparés dans le répertoire text2speech/Hifigan/data/mels-fastpitch-tr22khz . Le script de réglage fin chargera un modèle HIFI-AG existant et exécutera plusieurs époques de formation à l'aide de spectrogrammes générés dans la dernière étape.
Cette étape produira un autre fichier de point de contrôle du modèle .pt -AG.
results le répertoire 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 Exécutez la commande suivante pour synthétiser l'audio à partir de texte brut avec un générateur de spectrogramme 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 / Le discours est généré à partir d'un fichier passé avec l'argument -i . L'audio de sortie sera stocké dans le chemin spécifié par l'argument -o .