? Tensorflowtts

Echtzeit auf der neuesten Sprachsynthese für Tensorflow 2
? Tensorflowtts liefert Echtzeit-Architekturen für hochmoderne Sprachsynthese wie Tacotron-2, Melgan, Multiband-Melgan, Fastspeech2, Fastspeech2-Basis-On-Tensorflow 2. Mit Tensorflow 2 können wir mit Tensorflow 2. eingebettete Systeme.
Dieses Repository wird auf Ubuntu 18.04 getestet mit:
Verschiedene Tensorflow -Version sollten funktionieren, aber noch nicht getestet werden. Dieses Repo wird versuchen, mit der neuesten stabilen Tensorflow -Version zu arbeiten. Wir empfehlen Ihnen, den TensorFlow 2.6.0 für ein Training zu installieren, falls Sie Multigpu verwenden möchten.
$ pip install TensorFlowTTSBeispiele sind im Repository enthalten, werden jedoch nicht mit dem Framework versendet. Um die neueste Version der Beispiele auszuführen, müssen Sie die folgende Quelle installieren.
$ git clone https://github.com/TensorSpeech/TensorFlowTTS.git
$ cd TensorFlowTTS
$ pip install .Wenn Sie das Repository und seine Abhängigkeiten aktualisieren möchten:
$ git pull
$ pip install --upgrade .TensorFlowtts liefert derzeit die folgenden Architekturen:
Wir implementieren auch einige Techniken, um die Qualität und die Konvergenzgeschwindigkeit aus den folgenden Papieren zu verbessern:
Hier in einem Audio -Muster am gültigen Satz. Tacotron-2, Fastspeech, Melgan, Melgan.stft, Fastspeech2, Multiband_Melgan
Bereiten Sie einen Datensatz im folgenden Format vor:
|- [NAME_DATASET]/
| |- metadata.csv
| |- wavs/
| |- file1.wav
| |- ...
Wobei metadata.csv das folgende Format hat: id|transcription . Dies ist ein ljspeech-ähnliches Format; Sie können die Vorverarbeitungsschritte ignorieren, wenn Sie andere Formatdatensätze haben.
Beachten Sie, dass NAME_DATASET beispielsweise [ljspeech/kss/baker/libritts/synpaflex] sein sollte.
Die Vorverarbeitung hat zwei Schritte:
Um die obigen Schritte zu reproduzieren:
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]
Im Moment unterstützen wir nur ljspeech , kss , baker , libritts , thorsten und synpaflex für das Dataset -Argument. In Zukunft beabsichtigen wir, mehr Datensätze zu unterstützen.
Hinweis : Um die Vorverarbeitung libritts auszuführen, lesen Sie bitte zuerst die Anweisung in Beispielen/Fastspeech2_Libritts. Wir müssen es zuerst neu formatieren, bevor wir die Vorverarbeitung durchführen.
Hinweis : Um synpaflex -Vorverarbeitung auszuführen, führen Sie bitte zuerst die Notebooks Notebooks/prepe_synpaflex.ipynb aus. Wir müssen es zuerst neu formatieren, bevor wir die Vorverarbeitung durchführen.
Nach der Vorverarbeitung sollte die Struktur des Projektordners sein:
|- [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.npystats_energy.npy enthält den Mittelwert und die sexuell übertragbaren Energiewerte aus der Trainingsaufteilungstats_f0.npy enthält den Mittelwert und die STD der F0 -Werte in der Trainingsaufteilungtrain_utt_ids.npy / valid_utt_ids.npy enthält Trainings- und Validierungs -Äußerungen -IDs Wir verwenden für jeden Eingangstyp Suffix ( ids , raw-feats , raw-energy , raw-f0 , norm-feats und wave ).
Wichtige Anmerkungen :
dump -Ordners der obigen Struktur folgen, um das Trainingsskript zu verwenden, oder Sie können es selbst ändern? Um zu wissen, wie man das Modell von Grund auf oder gut mit anderen Datensätzen/Sprachen feinsteht, siehe Detail im Beispielverzeichnis.
Eine Detailimplementierung der abstrakten Datensatzklasse aus TensorFlow_tts/Dataset/Abstract_dataset. Es gibt einige Funktionen, die Sie übergeordnet haben und verstehen:
Wichtige Anmerkungen :
Einige Beispiele für diesen Abstract_Dataset sind tacotron_dataset.py, fastspeech_dataset.py, melgan_dataset.py, fastspeech2_dataset.py
Eine Detailimplementierung von Base_Trainer von TensorFlow_tts/Trainer/Base_Trainer.py. Es umfasst SEQ2SeqbasedTrainer und GanbasedTrainer inerit von basiertem Strainer. Alle Trainer unterstützen sowohl Single/Multi GPU. Es gibt einige Funktionen, die Sie bei der Implementierung von New_Trainer übergeben müssen :
Alle Modelle auf diesem Repo sind auf GanbasedTrainer (siehe train_melgan.py, train_melgan_stft.py, train_multiband_melgan.py) und seq2SeqBasedTrainer (siehe Train_tacotron2., Train_fastspeech.py) ausgebildet.
Sie können wissen, wie Sie jedes Modell bei Notebooks inferenzieren oder ein Colab (für Englisch), Colab (für Koreanisch), Colab (für Chinesisch), Colab (für Französisch), Colab (für Deutsch) sehen können. Hier ist ein Beispielcode für End2end-Inferenz mit Fastspeech2 und Multi-Band Melgan. Wir haben alle unsere vorgezogenen in Huggingface -Hub hochgeladen.
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" )Alle Modelle hier sind unter dem Apache 2.0 lizenziert
Wir möchten Tomoki Hayashi danken, der mit uns viel über Melgan, Multi-Band Melgan, Fastspeech und Tacotron bespricht. Dieser Rahmen, der sein großartiges Open-Source-Parallelwavegan-Projekt basiert.