? Tensorflowtts

Sintesis ucapan canggih real-time untuk TensorFlow 2
? TensorFlowTTS provides real-time state-of-the-art speech synthesis architectures such as Tacotron-2, Melgan, Multiband-Melgan, FastSpeech, FastSpeech2 based-on TensorFlow 2. With Tensorflow 2, we can speed-up training/inference progress, optimizer further by using fake-quantize aware and pruning, make TTS models can be run faster than real-time and be able to deploy on mobile devices or embedded sistem.
Repositori ini diuji pada Ubuntu 18.04 dengan:
Versi TensorFlow yang berbeda harus berfungsi tetapi belum diuji. Repo ini akan mencoba bekerja dengan versi TensorFlow stabil terbaru. Kami menyarankan Anda menginstal TensorFlow 2.6.0 untuk berlatih jika Anda ingin menggunakan MultigPU.
$ pip install TensorFlowTTSContohnya termasuk dalam repositori tetapi tidak dikirim dengan kerangka kerja. Oleh karena itu, untuk menjalankan contoh versi terbaru, Anda perlu menginstal sumber di bawah ini.
$ git clone https://github.com/TensorSpeech/TensorFlowTTS.git
$ cd TensorFlowTTS
$ pip install .Jika Anda ingin meningkatkan repositori dan dependensinya:
$ git pull
$ pip install --upgrade .TensorFlowTTS saat ini menyediakan arsitektur berikut:
Kami juga menerapkan beberapa teknik untuk meningkatkan kualitas dan kecepatan konvergensi dari makalah berikut:
Di sini, dalam sampel audio di set yang valid. Tacotron-2, FastSpeech, Melgan, Melgan.stft, FastSpeech2, Multiband_Melgan
Siapkan dataset dalam format berikut:
|- [NAME_DATASET]/
| |- metadata.csv
| |- wavs/
| |- file1.wav
| |- ...
Di mana metadata.csv memiliki format berikut: id|transcription . Ini adalah format seperti LJSPEECH; Anda dapat mengabaikan langkah -langkah preprocessing jika Anda memiliki set data format lainnya.
Perhatikan bahwa NAME_DATASET harus [ljspeech/kss/baker/libritts/synpaflex] misalnya.
Preprocessing memiliki dua langkah:
Untuk mereproduksi langkah -langkah di atas:
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]
Saat ini kami hanya mendukung ljspeech , kss , baker , libritts , thorsten dan synpaflex untuk argumen dataset. Di masa depan, kami bermaksud mendukung lebih banyak kumpulan data.
Catatan : Untuk menjalankan preprocessing libritts , silakan baca pertama instruksi dalam contoh/fastspeech2_libritts. Kita perlu memformat ulang terlebih dahulu sebelum menjalankan preprocessing.
CATATAN : Untuk menjalankan preprocessing synpaflex , silakan jalankan notebook notebooks/prepared_synpaflex.ipynb. Kita perlu memformat ulang terlebih dahulu sebelum menjalankan preprocessing.
Setelah preprocessing, struktur folder proyek harus:
|- [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 berisi rata -rata dan STD dari spektrogram terpisah pelatihanstats_energy.npy berisi rata -rata dan std nilai energi dari split pelatihanstats_f0.npy berisi nilai rata -rata dan std dari f0 dalam split pelatihantrain_utt_ids.npy / valid_utt_ids.npy masing -masing berisi ID pelatihan dan ucapan validasi Kami menggunakan sufiks ( ids , raw-feats , raw-energy , raw-f0 , norm-feats , dan wave ) untuk setiap jenis input.
Catatan Penting :
dump harus mengikuti struktur di atas untuk dapat menggunakan skrip pelatihan, atau Anda dapat memodifikasinya sendiri? Untuk mengetahui cara melatih model dari awal atau menyempurnakan dengan kumpulan data/bahasa lain, silakan lihat detail di Contoh Direktori.
Implementasi detail kelas dataset abstrak dari TensorFlow_TTS/Dataset/Abstract_dataset. Ada beberapa fungsi yang Anda butuhkan di seluruh negeri dan pahami:
Catatan Penting :
Beberapa contoh untuk menggunakan abstrak ini adalah tacotron_dataset.py, fastspeech_dataset.py, melgan_dataset.py, fastspeech2_dataset.py
Implementasi detail base_trainer dari tensorflow_tts/trainer/base_trainer.py. Ini termasuk seq2seqbasedtrainer dan ganbasedtrainer warisan dari berdasarkan Basedtrainer. Semua pelatih mendukung GPU tunggal/multi. Ada beberapa fungsi yang harus Anda kelebihan saat mengimplementasikan new_trainer:
Semua model pada repo ini dilatih berdasarkan ganbasedtrainer (lihat train_melgan.py, train_melgan_stft.py, train_multiband_melgan.py) dan seq2seqbasedtrainer (lihat train_tacotron2.py, train_fastspeech.py).
Anda dapat mengetahui cara menyimpulkan setiap model di notebook atau melihat Colab (untuk bahasa Inggris), Colab (untuk Korea), Colab (untuk Cina), Colab (untuk Prancis), Colab (untuk Jerman). Berikut adalah contoh kode untuk inferensi end2end dengan fastspeech2 dan multi-band Melgan. Kami mengunggah semua pretrained kami di Huggingface Hub.
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" )Semua model di sini dilisensikan di bawah Apache 2.0
Kami ingin mengucapkan terima kasih kepada Tomoki Hayashi, yang banyak berdiskusi dengan kami tentang Melgan, Multi-band Melgan, Fastspeech, dan Tacotron. Kerangka kerja ini berdasarkan proyek paralelwavegan open-source-nya yang hebat ini.