? Tensorflowtts

Synthèse de la parole de pointe en temps réel pour TensorFlow 2
? Tensorflowtts fournit des architectures de synthèse de la parole de pointe telles que Tacotron-2, Melgan, Multiband-Melgan, FastSpeech, FastSpeech2 Basé sur Tensorflow 2. Avec TensorFlow 2, nous pouvons accélérer la formation / inférences, Optimizer en utilisant davantage de fausses et de tristesse, de faire des modèles TTS peut être exécuté Faster qu'en temps réel et être en train de faire des mobiles ou des modèles TTS peut être exécuté Faster que le temps réel et être en train de faire des mobiles ou des modèles TTS peut être exécuté Faster que le temps réel et être en train de faire des mobiles ou des modèles TTS peuvent être exécutés Faster qu'en temps réel et être en train de faire des mobiles ou des modèles TTS peuvent être exécutés Ferter Systèmes.
Ce référentiel est testé sur Ubuntu 18.04 avec:
Différentes version TensorFlow devraient fonctionner mais pas encore testées. Ce dépôt essaiera de fonctionner avec la dernière version stable TensorFlow. Nous vous recommandons d'installer TensorFlow 2.6.0 à la formation au cas où vous souhaitez utiliser MultiGPU.
$ pip install TensorFlowTTSDes exemples sont inclus dans le référentiel mais ne sont pas expédiés avec le cadre. Par conséquent, pour exécuter la dernière version des exemples, vous devez installer la source ci-dessous.
$ git clone https://github.com/TensorSpeech/TensorFlowTTS.git
$ cd TensorFlowTTS
$ pip install .Si vous souhaitez mettre à niveau le référentiel et ses dépendances:
$ git pull
$ pip install --upgrade .Tensorflowtts fournit actuellement les architectures suivantes:
Nous mettons également en œuvre certaines techniques pour améliorer la qualité et la vitesse de convergence des articles suivants:
Ici dans un échantillon audio sur un ensemble valide. Tacotron-2, FastSpeech, Melgan, Melgan.stft, FastSpeech2, Multiband_melgan
Préparez un ensemble de données dans le format suivant:
|- [NAME_DATASET]/
| |- metadata.csv
| |- wavs/
| |- file1.wav
| |- ...
Où metadata.csv a le format suivant: id|transcription . Il s'agit d'un format de type LJSpeech; Vous pouvez ignorer les étapes de prétraitement si vous avez d'autres ensembles de données de format.
Notez que NAME_DATASET doit être [ljspeech/kss/baker/libritts/synpaflex] par exemple.
Le prétraitement a deux étapes:
Pour reproduire les étapes ci-dessus:
tensorflow-tts-preprocess --rootdir ./[ljspeech/kss/baker/libritts/thorsten/synpaflex] --outdir ./dump_[ljspeech/kss/baker/libritts/thorsten/synpaflex] --config preprocess/[ljspeech/kss/baker/thorsten/synpaflex]_preprocess.yaml --dataset [ljspeech/kss/baker/libritts/thorsten/synpaflex]
tensorflow-tts-normalize --rootdir ./dump_[ljspeech/kss/baker/libritts/thorsten/synpaflex] --outdir ./dump_[ljspeech/kss/baker/libritts/thorsten/synpaflex] --config preprocess/[ljspeech/kss/baker/libritts/thorsten/synpaflex]_preprocess.yaml --dataset [ljspeech/kss/baker/libritts/thorsten/synpaflex]
À l'heure actuelle, nous prenons uniquement ljspeech , kss , baker , libritts , thorsten et synpaflex pour l'argument de l'ensemble de données. À l'avenir, nous avons l'intention de prendre en charge plus de jeux de données.
Remarque : Pour exécuter le prétraitement libritts , veuillez d'abord lire les instructions dans des exemples / fastSpeech2_libritts. Nous devons le reformater avant de faire du prétraitement.
Remarque : Pour exécuter le prétraitement synpaflex , veuillez d'abord exécuter les ordinateurs portables / Préparer_synpaflex.ipynb. Nous devons le reformater avant de faire du prétraitement.
Après le prétraitement, la structure du dossier du projet devrait être:
|- [NAME_DATASET]/
| |- metadata.csv
| |- wav/
| |- file1.wav
| |- ...
|- dump_[ljspeech/kss/baker/libritts/thorsten]/
| |- train/
| |- ids/
| |- LJ001-0001-ids.npy
| |- ...
| |- raw-feats/
| |- LJ001-0001-raw-feats.npy
| |- ...
| |- raw-f0/
| |- LJ001-0001-raw-f0.npy
| |- ...
| |- raw-energies/
| |- LJ001-0001-raw-energy.npy
| |- ...
| |- norm-feats/
| |- LJ001-0001-norm-feats.npy
| |- ...
| |- wavs/
| |- LJ001-0001-wave.npy
| |- ...
| |- valid/
| |- ids/
| |- LJ001-0009-ids.npy
| |- ...
| |- raw-feats/
| |- LJ001-0009-raw-feats.npy
| |- ...
| |- raw-f0/
| |- LJ001-0001-raw-f0.npy
| |- ...
| |- raw-energies/
| |- LJ001-0001-raw-energy.npy
| |- ...
| |- norm-feats/
| |- LJ001-0009-norm-feats.npy
| |- ...
| |- wavs/
| |- LJ001-0009-wave.npy
| |- ...
| |- stats.npy
| |- stats_f0.npy
| |- stats_energy.npy
| |- train_utt_ids.npy
| |- valid_utt_ids.npy
|- examples/
| |- melgan/
| |- fastspeech/
| |- tacotron2/
| ...
stats.npy contient la moyenne et les std des spectrogrammes de MEL divisés de formationstats_energy.npy contient la moyenne et la MST des valeurs d'énergie de la division d'entraînementstats_f0.npy contient la moyenne et les valeurs de F0 dans la division de formationtrain_utt_ids.npy / valid_utt_ids.npy contient des énoncés de formation et de validation IDS respectivement Nous utilisons le suffixe ( ids , raw-feats , raw-energy , raw-f0 , norm-feats et wave ) pour chaque type d'entrée.
Remarques importantes :
dump doit suivre la structure ci-dessus pour pouvoir utiliser le script de formation, ou vous pouvez le modifier par vous-même ?. Pour savoir comment former le modèle à partir de zéro ou affiner avec d'autres ensembles de données / langues, veuillez consulter les détails à l'exemple du répertoire.
Une implémentation détaillée de la classe de jeu de données abstraite de Tensorflow_TTS / DataSet / Abstract_Dataset. Il existe certaines fonctions dont vous avez besoin et comprenez:
Remarques importantes :
Certains exemples pour utiliser cet abstract_dataset sont tacotron_dataset.py, fastspeech_dataset.py, melgan_dataset.py, fastspeech2_dataset.py
Une implémentation détaillée de Base_Trainer à partir de Tensorflow_TTS / Trainer / Base_Trainer.py. Il inclut SEQ2SEQBasedTrainer et GanBasedTrainer hérité de BasedTrainer. Tous les entraîneurs prennent en charge à la fois un seul GPU. Il y a quelques fonctions que vous devez exciter lorsque vous implémentez New_Trainer:
Tous les modèles de ce dépôt sont basés sur le ganbasedTrainer basés sur un forage (voir Train_melgan.py, Train_melgan_stft.py, Train_Multiband_melgan.py) et seq2seqbasedTrainer (voir Train_tacotron2.py, Train_fastSpeech.py).
Vous pouvez savoir comment inférer chaque modèle chez Notebooks ou voir un colab (pour l'anglais), Colab (pour coréen), Colab (pour chinois), Colab (pour le français), Colab (pour l'allemand). Voici un exemple de code pour l'inférence END2end avec FastSpeech2 et Multi-Band Melgan. Nous avons téléchargé tous nos Hub Pre-Trained dans Hugging Face.
import numpy as np
import soundfile as sf
import yaml
import tensorflow as tf
from tensorflow_tts . inference import TFAutoModel
from tensorflow_tts . inference import AutoProcessor
# initialize fastspeech2 model.
fastspeech2 = TFAutoModel . from_pretrained ( "tensorspeech/tts-fastspeech2-ljspeech-en" )
# initialize mb_melgan model
mb_melgan = TFAutoModel . from_pretrained ( "tensorspeech/tts-mb_melgan-ljspeech-en" )
# inference
processor = AutoProcessor . from_pretrained ( "tensorspeech/tts-fastspeech2-ljspeech-en" )
input_ids = processor . text_to_sequence ( "Recent research at Harvard has shown meditating for as little as 8 weeks, can actually increase the grey matter in the parts of the brain responsible for emotional regulation, and learning." )
# fastspeech inference
mel_before , mel_after , duration_outputs , _ , _ = fastspeech2 . inference (
input_ids = tf . expand_dims ( tf . convert_to_tensor ( input_ids , dtype = tf . int32 ), 0 ),
speaker_ids = tf . convert_to_tensor ([ 0 ], dtype = tf . int32 ),
speed_ratios = tf . convert_to_tensor ([ 1.0 ], dtype = tf . float32 ),
f0_ratios = tf . convert_to_tensor ([ 1.0 ], dtype = tf . float32 ),
energy_ratios = tf . convert_to_tensor ([ 1.0 ], dtype = tf . float32 ),
)
# melgan inference
audio_before = mb_melgan . inference ( mel_before )[ 0 , :, 0 ]
audio_after = mb_melgan . inference ( mel_after )[ 0 , :, 0 ]
# save to file
sf . write ( './audio_before.wav' , audio_before , 22050 , "PCM_16" )
sf . write ( './audio_after.wav' , audio_after , 22050 , "PCM_16" )Tous les modèles ici sont sous licence sous l'Apache 2.0
Nous tenons à remercier Tomoki Hayashi, qui a beaucoup discuté avec nous sur Melgan, Multi-Band Melgan, FastSpeech et Tacotron. Ce cadre basé sur son excellent projet parallèle Open-source.