Periksa file Changelog untuk memiliki gambaran global dari modifikasi terbaru! ?
├── custom_architectures
│ ├── tacotron2_arch.py : Tacotron-2 synthesizer architecture
│ └── waveglow_arch.py : WaveGlow vocoder architecture
├── custom_layers
├── custom_train_objects
│ ├── losses
│ │ └── tacotron_loss.py : custom Tacotron2 loss
├── example_outputs : some pre-computed audios (cf the ` text_to_speech ` notebook)
├── loggers
├── models
│ ├── encoder : the ` AudioEncoder ` is used as speaker encoder for the SV2TTS model *
│ ├── tts
│ │ ├── sv2tts_tacotron2.py : SV2TTS main class
│ │ ├── tacotron2.py : Tacotron2 main class
│ │ ├── vocoder.py : main functions for complete inference
│ │ └── waveglow.py : WaveGlow main class (both pytorch and tensorflow)
├── pretrained_models
├── unitests
├── utils
├── example_fine_tuning.ipynb
├── example_sv2tts.ipynb
├── example_tacotron2.ipynb
├── example_waveglow.ipynb
└── text_to_speech.ipynbPeriksa proyek utama untuk informasi lebih lanjut tentang modul / struktur / kelas utama yang tidak diperpanjang.
* Periksa proyek Encoders untuk informasi lebih lanjut tentang Modul models/encoder
models.tts ):| Fitur | Fuction / class | Keterangan |
|---|---|---|
| Teks-ke-speech | tts | Lakukan TTS pada teks yang Anda inginkan dengan model yang Anda inginkan |
| sungai kecil | tts_stream | Lakukan TTS pada teks yang Anda masukkan |
| TTS Logger | loggers.TTSLogger | mengonversi log logging untuk menyuarakan dan memainkannya |
Notebook text_to_speech menyediakan demonstrasi konkret dari fungsi tts
Arsitektur yang tersedia:
Synthesizer :SV2TTS )Vocoder :Model SV2TTS disesuaikan dari model TACOTRON2 pretrained, dengan menggunakan prosedur pembelajaran transfer parsial (lihat di bawah untuk perincian), yang mempercepat pelatihan.
| Nama | Bahasa | Dataset | Synthesizer | Vocoder | Encoder pembicara | Pelatih | Bobot |
|---|---|---|---|---|---|---|---|
| pretrained_tacotron2 | en | Ljspeech | Tacotron2 | WaveGlow | / | Nvidia | Google Drive |
| TACOTRON2_SIWIS | fr | Siwi | Tacotron2 | WaveGlow | / | Saya | Google Drive |
| sv2tts_tacotron2_256 | fr | Siwi, voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | Google Drive | Saya | Google Drive |
| SV2TTS_SIWIS | fr | Siwi, voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | Google Drive | Saya | Google Drive |
| sv2tts_tacotron2_256_v2 | fr | Siwi, voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | Google Drive | Saya | Google Drive |
| SV2TTS_SIWIS_V2 | fr | Siwi | SV2TTSTacotron2 | WaveGlow | Google Drive | Saya | Google Drive |
Model harus dibatalkan di pretrained_models/ direktori!
Catatan Penting : Model NVIDIA yang tersedia di torch hub memerlukan GPU yang kompatibel dengan konfigurasi yang benar untuk pytorch . Itulah alasan mengapa kedua model disediakan di pos pemeriksaan keras yang diharapkan?
Model sv2tts_siwis adalah versi yang disesuaikan dari sv2tts_tacotron2_256 pada dataset SIWIS (Single-Speaker). Menyempurnakan multi-speaker pada dataset speaker tunggal cenderung meningkatkan stabilitas, dan menghasilkan suara dengan lebih banyak intonasi, dibandingkan dengan hanya melatih model penutur tunggal.
Demo Google Colab tersedia di tautan ini!
Anda juga dapat menemukan beberapa audio yang dihasilkan di example_outputs/ , atau langsung di Colab Notebook;)
Periksa panduan instalasi ini untuk instruksi langkah demi langkah!
Anda mungkin harus menginstal ffmpeg untuk memuat / menyimpan audio.
Google Colab tensorflow 2.x batch_size untuk vocoder inference SV2TTS pretrained similarity loss untuk menguji prosedur pelatihan baru untuk fine-tuning speaker tunggal TTS pada Dokumen (sedang berlangsung) SV2TTS berdasarkan encoder yang dilatih dengan kehilangan GE2E Ada banyak cara untuk mengaktifkan sintesis ucapan multi-speaker :
speaker ID yang tertanam oleh lapisan Embedding yang dapat dipelajari. Embedding pembicara kemudian dipelajari selama pelatihan.Speaker Encoder (SE) untuk menanamkan audio dari speaker referensi. Ini sering disebut sebagai zero-shot voice cloning , karena hanya membutuhkan sampel dari pembicara (tanpa pelatihan).prompt-based baru telah diusulkan untuk mengendalikan pidato dengan petunjuk.SV2TTS Catatan: Pada paragraf berikutnya, encoder mengacu pada bagian Tacotron Encoder , sementara SE mengacu pada model speaker encoder (dirinci di bawah).
Speaker Encoder-based Text-To-Speech terinspirasi dari kertas "dari speaker verifikasi ke teks-ke-speech (sv2tts)". Para penulis telah mengusulkan perpanjangan arsitektur Tacotron-2 untuk memasukkan informasi tentang suara pembicara.
Berikut adalah tinjauan singkat dari prosedur yang diusulkan:
speaker verification . Model ini pada dasarnya mengambil input sampel audio (5-10 detik) dari speaker, dan mengkodekannya pada vektor d -dimensi, bernama embedding . Embedding ini bertujuan untuk menangkap informasi yang relevan tentang suara pembicara (misalnya, frequencies , rythm , pitch , ...).Speaker Encoder (SE) pra-terlatih ini kemudian digunakan untuk menyandikan suara speaker untuk mengkloning.Tacotron-2 , sehingga Decoder memiliki akses ke teks yang dikodekan dan penyematan speaker. Tujuannya adalah bahwa Decoder akan belajar menggunakan speaker embedding untuk menyalin prosodi / intonasi / ... untuk membaca teks dengan suara speaker ini.
Ada beberapa batasan dengan pendekatan di atas:
Speaker Encoder harus memisahkan speaker dengan benar, dan menyandikan suara mereka dengan cara yang bermakna untuk synthesizer.Untuk mengatasi keterbatasan ini, solusi yang diusulkan adalah melakukan pelatihan 2 langkah:
CommonVoice . Ini adalah salah satu database multibahasa terbesar untuk audio, dengan biaya audio berkualitas berisik / variabel. Oleh karena itu, ini tidak cocok untuk melatih model berkualitas baik, sedangkan pra-pemrosesan masih membantu untuk mendapatkan audio yang dapat dipahami.Bagian SE harus dapat membedakan speaker, dan menyematkan (mengkode vektor 1-D) mereka dengan cara yang bermakna .
Model yang digunakan dalam kertas ini adalah model LSTM 3-lapis dengan lapisan normalisasi yang dilatih dengan kehilangan GE2E. Keterbatasan utama adalah bahwa pelatihan model ini sangat lambat , dan membutuhkan waktu 2 minggu pada 4 GPU dalam tesis master corentinj (cf github -nya)
Proyek ini mengusulkan arsitektur yang lebih sederhana berdasarkan Convolutional Neural Networks (CNN) , yang jauh lebih cepat untuk dilatih dibandingkan dengan jaringan LSTM . Selain itu, jarak euclidian telah digunakan daripada metrik cosine , yang telah menunjukkan konvergensi yang lebih cepat. Selain itu, generator berbasis cache khusus diusulkan untuk mempercepat pemrosesan audio. Modifikasi ini diizinkan untuk melatih model akurasi 99% dalam 2-3 jam pada GPU RTX 3090 tunggal!
Untuk menghindari pelatihan model SV2TTS dari awal, yang akan benar -benar mustahil pada satu GPU, prosedur partial transfer learning baru diusulkan.
Prosedur ini mengambil model pra-terlatih dengan arsitektur yang sedikit berbeda, dan mentransfer semua bobot umum (seperti dalam pembelajaran transfer reguler). Untuk lapisan dengan bentuk bobot yang berbeda, hanya bagian umum yang ditransfer, sedangkan bobot yang tersisa diinisialisasi ke nol. Ini menghasilkan model baru dengan bobot yang berbeda untuk meniru perilaku model asli.
Dalam arsitektur SV2TTS , embedding pembicara diteruskan ke lapisan berulang dari Tacotron2 decoder . Ini menghasilkan bentuk input yang berbeda, membuat matriks bobot lapisan berbeda. Pembelajaran transfer parsial memungkinkan untuk nitialize model sedemikian rupa sehingga mereplikasi perilaku model Tacotron2 speaker tunggal asli!
Kontak:
[email protected]Tujuan dari proyek -proyek ini adalah untuk mendukung dan memajukan pendidikan dan penelitian dalam teknologi pembelajaran yang mendalam. Untuk memfasilitasi ini, semua kode terkait tersedia di bawah GNU Affero General Public License (AGPL) V3, ditambah dengan klausul yang melarang penggunaan komersial (CF file lisensi).
Proyek -proyek ini dirilis sebagai "perangkat lunak bebas", yang memungkinkan Anda untuk menggunakan, memodifikasi, menggunakan, dan membagikan perangkat lunak secara bebas, memberi Anda mematuhi ketentuan lisensi. Meskipun perangkat lunak tersedia secara bebas, itu bukan domain publik dan mempertahankan perlindungan hak cipta. Kondisi lisensi dirancang untuk memastikan bahwa setiap pengguna dapat memanfaatkan dan memodifikasi versi kode apa pun untuk proyek pendidikan dan penelitian mereka sendiri.
Jika Anda ingin menggunakan proyek ini dalam upaya komersial berpemilik, Anda harus mendapatkan lisensi terpisah. Untuk perincian lebih lanjut tentang proses ini, silakan hubungi saya secara langsung.
Untuk perlindungan saya, penting untuk dicatat bahwa semua proyek tersedia berdasarkan "sebagaimana adanya", tanpa jaminan atau ketentuan apa pun, baik secara eksplisit maupun tersirat. Namun, jangan ragu untuk melaporkan masalah pada proyek repositori, atau membuat permintaan tarik untuk menyelesaikannya?
Jika Anda menemukan proyek ini berguna dalam pekerjaan Anda, silakan tambahkan kutipan ini untuk memberikan lebih banyak visibilitas! ?
@misc{yui-mhcp
author = {yui},
title = {A Deep Learning projects centralization},
year = {2021},
publisher = {GitHub},
howpublished = {url{https://github.com/yui-mhcp}}
}
Kode untuk proyek ini adalah campuran dari beberapa proyek gitub, untuk memiliki implementasi Tacotron-2 yang sepenuhnya dimodulasi
dynamic decoder mereka, yang sekarang telah dioptimalkan dan diperbarui menjadi Keras 3 yang kompatibel.SV2TTS yang disediakan terinspirasi dari repositori ini, dengan perbedaan kecil dan optimisasi.Makalah: