StyleTTS2 - Konversi Teks ke Ucapan Berbasis style diffusion dan Pelatihan Adversarial SLM Besar
(github.com/yl4579)- StyleTTS2 adalah model konversi teks ke ucapan yang menargetkan sintesis TTS setingkat manusia dengan memanfaatkan style diffusion dan pelatihan adversarial berbasis speech language model (SLM) besar
- Memodelkan gaya sebagai variabel acak laten pada diffusion model untuk menghasilkan gaya yang sesuai dengan teks tanpa reference speech, serta menggunakan latent diffusion yang efisien dengan memanfaatkan sintesis suara beragam dari diffusion model
- Menggunakan model pralatih besar SLM seperti WavLM sebagai discriminator, serta menerapkan duration modeling yang dapat didiferensiasikan untuk melakukan pelatihan end-to-end dan meningkatkan kealamian suara
- Pada dataset single-speaker LJSpeech, menurut evaluasi native English speaker, model ini melampaui human recordings; pada dataset multi-speaker VCTK, model ini menyamai human recordings; dan model yang dilatih dengan LibriTTS menunjukkan performa lebih tinggi dibandingkan publicly available models yang ada dalam zero-shot speaker adaptation
- Workflow pelatihan dan inferensi mencakup single-speaker LJSpeech, multi-speaker VCTK·LibriTTS, serta fine-tuning speaker baru berbasis model multi-speaker pralatih
- Pelatihan tahap pertama menggunakan
accelerate launch train_first.py --config_path ./Configs/config.yml, sedangkan pelatihan tahap kedua menggunakanpython train_second.py --config_path ./Configs/config.yml - Versi DDP dari
train_second.pytidak berfungsi sehingga saat ini menggunakan DP, dan skrip fine-tuning juga memiliki kondisi bahwa DDP tidak berfungsi
- Pelatihan tahap pertama menggunakan
- Syarat utama untuk menjalankan adalah Python >= 3.7, instalasi
requirements.txt, instalasiphonemizerdanespeak-ngsaat menjalankan demo, serta upsampling data LJSpeech ke 24 kHz - Modul pralatih terdiri dari ASR untuk text aligner, JDC untuk pitch extractor, dan PL-BERT
- ASR aligner dipralatih dengan korpus English(LibriTTS), Japanese(JVS), dan Chinese(AiShell)
- JDC pitch extractor hanya dipralatih dengan korpus English(LibriTTS)
- PL-BERT hanya dipralatih dengan korpus English(Wikipedia), sehingga bahasa lain memerlukan PL-BERT untuk bahasa tersebut, dan multilingual PL-BERT mendukung 14 bahasa
- Inferensi disediakan melalui
Inference_LJSpeech.ipynbuntuk single-speaker danInference_LibriTTS.ipynbuntuk multi-speaker, dan model pralatih LJSpeech serta LibriTTS dapat diunduh dari Hugging Face - Lisensi kode adalah MIT License, dan saat menggunakan model pralatih, pengguna harus mengikuti ketentuan untuk memberi tahu pendengar bahwa suara tersebut adalah suara sintetis atau hanya mensintesis secara publik suara dari speaker yang memiliki hak penggunaan suara
1 komentar
Komentar Hacker News
Membuat chatbot suara 100% lokal dari komponen open source seperti StyleTTS2, Whisper, dan OpenHermes2-Mistral-7B, dan responsnya jauh lebih cepat daripada ChatGPT
Menarik karena bisa saling berbicara lebih mirip percakapan sungguhan, bukan interaksi kaku ala Siri seperti asisten suara lain
Di PC gaming Windows dengan GPU Nvidia 12GB, berdasarkan pengujian di 3060 12GB, bisa dipasang sekaligus dan langsung diajak bicara tanpa perlu mengutak-atik Python atau CUDA: https://apps.microsoft.com/detail/9NC624PBFGB7
Demonya masih kasar, misalnya perlu headphone dan berjalan sebagai aplikasi konsol, tetapi terasa seperti pratinjau hal yang sebentar lagi akan mungkin dilakukan di PC gaming biasa hanya dengan gabungan open source; masih ada beberapa model perbaikan yang belum sempat dimasukkan
Khususnya, saya berharap interupsi dan menyela bisa dilakukan seperti percakapan biasa: kalau lawan bicara terlalu lama bicara, saya bisa masuk dan menghentikannya, atau AI memberi tanggapan singkat saat saya sedang berbicara
Kalau kecepatannya sudah lebih cepat daripada real-time, secara teori fitur seperti itu tampaknya bisa mulai dibuat, dan untuk percakapan yang benar-benar alami, AI tampaknya juga perlu kesadaran konteks untuk melihat wajah dan gestur tubuh lalu menilai apakah seseorang sedang berbicara panjang
Di EVGA 3080Ti 12GB pun latensinya cukup besar, dan meski saya hanya berbicara sekali, tampaknya input yang sama diproses berkali-kali sambil mengulang hasil pengenalan yang sedikit berbeda
Pada akhirnya juga terlihat masalah ia mendengar suaranya sendiri lalu merespons dirinya sendiri
Bulan lalu saya menguji StyleTTS2, dan sudah merangkum catatan langkah demi langkah yang mungkin berguna bagi orang yang ingin memasangnya secara lokal: https://llm-tracker.info/books/howto-guides/page/styletts-2
Saya juga membandingkan kecepatan dan kualitasnya secara sederhana dengan VITS dan XTTS memakai model LJSpeech, dan StyleTTS2 cukup bagus serta sangat cepat: https://fediverse.randomfoo.net/notice/AaOgprU715gcT5GrZ2
Penasaran apakah fitur setara in-fill atau outpainting juga mungkin, dan sintesis suara supercepat dengan kualitas seperti ini tampaknya akan sangat berguna terutama untuk pengembangan game indie dan eksperimental
Anchor
#mambaforgedi tautan itu juga tidak berfungsiDokumentasinya agak renggang, jadi proses menyesuaikannya sedikit merepotkan, tetapi setelah sekitar 20 menit berjalan dengan baik di WSL Ubuntu 22.04
Kualitas suaranya sangat bagus, jauh lebih baik daripada proyek sintesis suara open-source lain yang pernah saya lihat, dan pada GPU 4090 sangat cepat
Saya belum tahu apakah sudah sampai kualitas ElevenLabs, tetapi daya tarik ElevenLabs terutama ada pada library suara berkualitas tinggi yang besar dan mudah dipilih. Di library ini saya belum menemukan cara memilih suara lain selain suara perempuan bawaan
Inti sebenarnya dari ElevenLabs adalah kloning suara yang hampir instan hanya dengan satu sampel 5 menit, dan hasilnya luar biasa serta agak menyeramkan saking bagusnya. Saya berharap fitur ini bisa sepenuhnya tersedia sebagai open source. Layanan API terlalu mahal untuk banyak penggunaan, dan bahkan OpenAI yang relatif murah pun memakan biaya sekitar 10 sen untuk menghasilkan beberapa ribu kata
/Demolalu bukaInference_LJSpeech.ipynbatauInference_LibriTTS.ipynb, seharusnya berjalanStrukturnya: sintesis suara menangani intonasi dan pengucapan, sedangkan RVC menangani tekstur suara, jadi menggabungkan StyleTTS dengan pipeline ini bisa mendekati ElevenLabs
Sintesis audio pendek hampir merupakan masalah yang sudah terselesaikan di dunia sintesis suara, tetapi ketika mencoba membuat audiobook dengan text-to-speech, masalahnya mulai berantakan
Menariknya, contoh TTS2 terdengar lebih baik daripada suara ground truth aslinya https://styletts2.github.io/
Misalnya pada contoh “Then leaving the corpse within the house [...]”, suara ground truth mengucapkan
housedengan aneh, terasa nadanya naik, sedangkan versi TTS2 terdengar lebih alamiSaya ingin memakainya untuk berbagai file ePub seperti light novel Jepang yang tidak punya audiobook. Saat ini saya memakai TTS Moon+ Reader di Android, dan suaranya cukup robotik
Pada 2023, tidak ada cara untuk menang
Meski begitu hasilnya mengesankan, dan lebih unggul daripada semua sintesis suara lainnya
Judul HN saat ini adalah “StyleTTS2 – open-source Eleven Labs quality Text To Speech”, tetapi judul aslinya tidak mencantumkan nama produk tertentu, dan paper arXiv yang ditautkan di sana juga tidak menyebut ElevenLabs
Setahu saya penyuntingan judul seperti ini sebaiknya dihindari
Jika sistem open-source mendekati kualitas itu, hal tersebut sangat layak diperhatikan, jadi saya rasa kebanyakan orang akan menghargai perbandingan itu. Justru perbandingan itulah yang membuat saya tertarik
Saya penasaran dengan orang-orang yang berhasil memakainya: kloning suara ini sama sekali berbeda dari XTTSv2 dan apalagi masih jauh dari ElevenLabs
Tampaknya tidak terlalu memperhatikan intonasi, hanya cukup baik dalam mencocokkan tinggi nada dan tempo
Saya sudah mencoba mengubah nilai
alpha,beta,embedding scale, dandiffusion stepsdengan berbagai cara, tetapi meskipun saya akui ini cepat dan kualitas suaranya lumayan, kloning suaranya sama sekali tidak berjalan dengan benarXTTS juga mungkin dilatih dengan lebih dari 20 bahasa dan jutaan pembicara
Kalau sudah melihat jutaan suara, pasti ada suara yang mirip dengan Anda di antaranya, jadi pada akhirnya ini masalah data pelatihan. Namun mengumpulkan dan melatih data berskala sebesar itu sangat sulit
alpha,betadan mengunggah beberapa klip audio, tetapi mengalami hasil yang samaKualitasnya benar-benar luar biasa bagus, pada awal 2000-an hampir sulit dibayangkan level seperti ini
Ada kemungkinan menarik di game, misalnya LLM mengambil peran sebagai karakter dan sintesis suara seperti ini memberi suara kepada NPC
Saat ini simulator golf punya burung berkicau, rumput bergoyang, dan gameplay yang realistis, tetapi sama sekali tidak ada orang, sehingga terasa agak seperti suasana pasca-apokaliptik
Ini sangat berbeda dari saling menggoda dan menekan dengan bercanda di ronde sungguhan atau suara penonton di pertandingan besar, jadi tampaknya sangat cocok untuk menambahkan obrolan berbasis LLM
Saya baru saja mencoba notebook Colab, dan kualitasnya tampak sangat bagus; juga mendukung kloning suara
Saya ingin mencobanya, tetapi sekarang agak bosan harus membuat
venvsetiap kali ingin memasang dependensi torchPenasaran bagaimana orang lain menanganinya. Ingin tahu apakah ada cara mudah agar beberapa
venvberbagi environment torch yang sama; secara manual bisa saja, tetapi apakah ada tool yang membantu untuk ituAlur kerjanya adalah masuk dengan
nix flake init -t github:dialohq/flake-templates#python,nix develop -c $SHELL, lalu di shell hook environment pengembangan nix menjalankanpoetry installdanpoetry activateSaya penasaran apakah akan muncul marketplace LoRA seperti Civitai untuk model text-to-speech
https://github.com/microsoft/LoRA