3 poin oleh GN⁺ 2023-11-20 | 1 komentar | Bagikan ke WhatsApp
  • 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 menggunakan python train_second.py --config_path ./Configs/config.yml
    • Versi DDP dari train_second.py tidak berfungsi sehingga saat ini menggunakan DP, dan skrip fine-tuning juga memiliki kondisi bahwa DDP tidak berfungsi
  • Syarat utama untuk menjalankan adalah Python >= 3.7, instalasi requirements.txt, instalasi phonemizer dan espeak-ng saat 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.ipynb untuk single-speaker dan Inference_LibriTTS.ipynb untuk 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

 
GN⁺ 2023-11-20
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

    • Penasaran seberapa sulit membuat chatbot berbicara secara alami
      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
    • Sudah mencoba menjalankannya, tetapi sepertinya hanya berfungsi di CUDA 11; karena lingkungan saya sudah CUDA 12, saya tidak berniat merusak lingkungan CUDA hanya untuk mengujinya
    • Hasil pengujian beragam: kalau dipasang di drive selain C:, muncul error, dan setelah dipindah ke C: baru berjalan normal
      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
    • Penasaran apakah 12GB adalah spesifikasi minimum. Di 8GB muncul error kehabisan memori
    • Karena Whisper tidak mendukung streaming input, sepertinya transkripsi baru bisa dipicu setelah seluruh respons LLM selesai
  • 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

    • Inferensi 15–95 kali lebih cepat daripada real-time di 4090, itu luar biasa
      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
    • Saya sedang mengikuti panduannya, tetapi kecuali Anda memang sudah menggunakannya, mamba tidak lagi direkomendasikan
      Anchor #mambaforge di tautan itu juga tidak berfungsi
  • Dokumentasinya 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

    • Ini prosedur instalasi yang saya uji di Ubuntu 22.04. Tautan unduhan Google Drive bisa saja diblokir karena terlalu banyak unduhan dalam 24 jam, tetapi jika menunggu sebentar seharusnya bisa lagi
      git clone https://github.com/yl4579/StyleTTS2.git  
      cd StyleTTS2  
      python3 -m venv venv  
      source venv/bin/activate  
      python3 -m pip install --upgrade pip  
      python3 -m pip install wheel  
      pip install -r requirements.txt  
      pip install phonemizer  
      sudo apt-get install -y espeak-ng  
      pip install gdown  
      gdown https://drive.google.com/uc?id=1K3jt1JEbtohBLUA0X75KLw36TW7U1yxq  
      7z x Models.zip  
      rm Models.zip  
      gdown https://drive.google.com/uc?id=1jK_VV3TnGM9dkrIMsdQ_upov8FrIymr7  
      7z x Models.zip  
      rm Models.zip  
      pip install ipykernel pickleshare nltk SoundFile  
      python -c "import nltk; nltk.download('punkt')"  
      pip install --upgrade jupyter ipywidgets librosa  
      python -m ipykernel install --user --name=venv --display-name="Python (venv)"  
      jupyter notebook  
      
      Setelah itu, buka /Demo lalu buka Inference_LJSpeech.ipynb atau Inference_LibriTTS.ipynb, seharusnya berjalan
    • Untuk kloning gaya, saya pernah melihat pendekatan yang “memperkuat” output dengan pipeline RVC setelah sintesis suara yang di-fine-tune dengan kualitas tinggi
      Strukturnya: sintesis suara menangani intonasi dan pengucapan, sedangkan RVC menangani tekstur suara, jadi menggabungkan StyleTTS dengan pipeline ini bisa mendekati ElevenLabs
    • Demo LibriTTS mengkloning suara pembicara yang belum pernah dilihat hanya dari klip sekitar 5 detik
    • Saya penasaran apakah ada yang sudah menguji ujaran panjang di ElevenLabs maupun StyleTTS
      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 house dengan aneh, terasa nadanya naik, sedangkan versi TTS2 terdengar lebih alami
    Saya 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

    • Istri pertama saya adalah pengisi suara profesional, dan saya pernah melihat seseorang meninggalkan ulasan buruk dengan menyebutnya “jelas AI”
      Pada 2023, tidak ada cara untuk menang
    • Ritmenya lebih baik, tetapi secara pribadi saya masih merasa ada nada metalik yang cukup jelas, jadi masih kalah dari suara asli
      Meski begitu hasilnya mengesankan, dan lebih unggul daripada semua sintesis suara lainnya
    • Saya penasaran bagaimana rencana Anda menghubungkannya ke ePub. Situasi saya mirip, jadi ingin memanfaatkan hal seperti ini untuk e-book
  • 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

    • ElevenLabs adalah tolok ukur sintesis suara, dan belum ada yang lebih baik darinya
      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
    • Itu memang judul yang sudah diedit, dan juga berlebihan. Meski begitu, setelah mencoba langsung StyleTTS2, ini jelas yang terbaik di antara sintesis suara open-source, jadi sangat layak berada di bagian atas HN untuk sementara waktu
    • Benar, itu melanggar pedoman. Dari judulnya saya mengira ini proyek GitHub sembarang, bukan paper riset baru
  • 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, dan diffusion steps dengan berbagai cara, tetapi meskipun saya akui ini cepat dan kualitas suaranya lumayan, kloning suaranya sama sekali tidak berjalan dengan benar

    • ElevenLabs berbasis Tortoise-TTS dan sudah dipra-latih dengan jutaan jam data, sedangkan model ini paling banyak hanya dilatih dengan LibriTTS 500 jam
      XTTS 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
    • Jika melihat bagian kesimpulan paper, mereka mengakui bahwa kloning suara masih belum terlalu bagus
    • Saya juga banyak bereksperimen dengan alpha, beta dan mengunggah beberapa klip audio, tetapi mengalami hasil yang sama
  • Kualitasnya 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

    • Ini sangat berarti di bidang yang saya minati, yaitu simulasi golf
      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 sudah melihat sekilas README, tetapi penasaran apa persyaratan hardware minimum untuk menjalankannya. Entah apakah ini akan membuat CPU atau hard disk kewalahan
    • Saya sekilas melihat GitHub tetapi tidak menemukannya; penasaran berapa lama waktu yang dibutuhkan untuk fine-tuning pada suara tertentu
  • Saya ingin mencobanya, tetapi sekarang agak bosan harus membuat venv setiap kali ingin memasang dependensi torch
    Penasaran bagaimana orang lain menanganinya. Ingin tahu apakah ada cara mudah agar beberapa venv berbagi environment torch yang sama; secara manual bisa saja, tetapi apakah ada tool yang membantu untuk itu

    • Untuk konfigurasi environment Python, saya memakai nix; menetapkan versi Python dan poetry, kadang juga paket yang sulit dipasang lewat poetry, lalu sisanya ditangani dengan poetry
      Alur kerjanya adalah masuk dengan nix flake init -t github:dialohq/flake-templates#python, nix develop -c $SHELL, lalu di shell hook environment pengembangan nix menjalankan poetry install dan poetry activate
    • Untuk hal seperti ini biasanya saya ingin memakai Docker, tetapi memahami dependensinya terlalu sulit, dan itu juga menjadi alasan utama saya melewatkan proyek-proyek seperti ini
    • Saya juga sering merasakan masalah yang sama. Saya sempat mempertimbangkan memakai Docker dev container, membuat base image untuk dependensi umum, lalu mengustomisasi dengan Dockerfile untuk setiap proyek baru, tetapi tidak tahu apakah ada alternatif yang lebih baik
    • Saya juga mirip. Saya memakai conda, dan sedang melihat opsi memasang PyTorch langsung di environment conda dasar
    • Kalau sudah benar-benar mulai membosankan, rasanya LLM seperti Copilot seharusnya bisa menangani ini untuk kita
  • Saya penasaran apakah akan muncul marketplace LoRA seperti Civitai untuk model text-to-speech
    https://github.com/microsoft/LoRA