StyleTTS2 - style diffusion ve büyük SLM karşıt öğrenmesine dayalı metinden sese dönüştürme
(github.com/yl4579)- StyleTTS2, style diffusion ve büyük speech language model (SLM) tabanlı karşıt öğrenmeden yararlanarak insan seviyesinde TTS sentezini hedefleyen bir metinden sese dönüştürme modelidir
- Stili diffusion model'in gizil olasılıksal değişkeni olarak modelleyerek reference speech olmadan metne uygun bir stil üretir ve diffusion model'in çeşitli ses sentezlerinden yararlanan verimli latent diffusion kullanır
- WavLM gibi büyük önceden eğitilmiş SLM'leri discriminator olarak kullanır ve differentiable duration modeling uygulayarak end-to-end eğitim ile ses doğallığında iyileştirme sağlar
- LJSpeech tek konuşmacılı veri kümesinde, native English speaker değerlendirme ölçütlerine göre human recordings'i surpass etti; VCTK çok konuşmacılı veri kümesinde human recordings ile match etti; LibriTTS ile eğitilen model ise zero-shot speaker adaptation'da mevcut publicly available models'a kıyasla daha yüksek performans gösterdi
- Eğitim ve çıkarım iş akışı; tek konuşmacılı LJSpeech, çok konuşmacılı VCTK·LibriTTS ve önceden eğitilmiş çok konuşmacılı model temelinde yeni konuşmacı fine-tuning süreçlerini kapsar
- İlk aşama eğitim için
accelerate launch train_first.py --config_path ./Configs/config.yml, ikinci aşama eğitim içinpython train_second.py --config_path ./Configs/config.ymlkullanılır train_second.py'nin DDP sürümü çalışmadığından şu anda DP kullanılır; fine-tuning betiğinde de DDP'nin çalışmadığı koşullar bulunur
- İlk aşama eğitim için
- Başlıca çalıştırma koşulları Python >= 3.7,
requirements.txtkurulumu, demo çalıştırırkenphonemizerveespeak-ngkurulumu, LJSpeech verisinin 24 kHz'e upsampling yapılmasıdır - Önceden eğitilmiş modüller; metin aligner için ASR, pitch extractor için JDC ve PL-BERT'ten oluşur
- ASR aligner; English (LibriTTS), Japanese (JVS), Chinese (AiShell) corpus'larıyla önceden eğitilmiştir
- JDC pitch extractor yalnızca English (LibriTTS) corpus'u ile önceden eğitilmiştir
- PL-BERT yalnızca English (Wikipedia) corpus'u ile önceden eğitildiğinden diğer diller için o dile yönelik PL-BERT gerekir; multilingual PL-BERT 14 dili destekler
- Çıkarım, tek konuşmacı için
Inference_LJSpeech.ipynbve çok konuşmacı içinInference_LibriTTS.ipynbüzerinden sunulur; LJSpeech ve LibriTTS önceden eğitilmiş modelleri Hugging Face'ten indirilebilir - Kod lisansı MIT License'tır; önceden eğitilmiş modeller kullanılırken dinleyicilere sesin sentetik olduğu bildirilmesi veya yalnızca ses kullanım hakkına sahip olunan konuşmacı seslerinin herkese açık biçimde sentezlenmesi koşullarına uyulur
1 yorum
Hacker News yorumları
StyleTTS2, Whisper, OpenHermes2-Mistral-7B gibi açık kaynak parçalarla %100 yerel çalışan bir sesli chatbot yaptım; ChatGPT’den çok daha hızlı yanıt veriyor
Diğer sesli asistanlardaki katı Siri tarzı etkileşim gibi değil, gerçek bir sohbete daha yakın şekilde karşılıklı konuşabilmek eğlenceli
12 GB Nvidia GPU’lu bir Windows oyun PC’sinde, test ölçütü olarak 3060 12 GB’de Python veya CUDA ile uğraşmadan tek seferde kurup sohbet edilebiliyor: https://apps.microsoft.com/detail/9NC624PBFGB7
Demo kulaklık gerektiriyor ve konsol uygulaması olarak çalışıyor; yani pürüzlü yanları var. Yine de yalnızca açık kaynak bileşenlerin birleşimiyle yakında sıradan oyun PC’lerinde mümkün olacak şeyleri şimdiden gösteriyor gibi; henüz yansıtamadığım birkaç iyileştirilmiş model de var
Özellikle karşı taraf çok uzun konuşursa araya girip onu durdurabilmem ya da ben konuşurken yapay zekanın kısa onay tepkileri vermesi gibi söz kesme ve araya girme davranışlarının normal sohbetlerdeki gibi mümkün olmasını isterdim
Hız gerçek zamandan daha hızlı bir seviyeye gelirse teorik olarak bu tür özelliklere başlanabilir gibi; tamamen doğal bir sohbet için yapay zekanın yüz ve beden hareketlerini görüp uzun konuşup konuşmadığını değerlendirecek bağlam farkındalığı da gerekli görünüyor
EVGA 3080Ti 12 GB’de de gecikme oldukça yüksekti; yalnızca bir kez konuşmama rağmen aynı girdiyi birkaç kez işleyip biraz farklı tanıma sonuçlarını tekrarlıyor gibiydi
Sonunda kendi sesini duyup kendi kendine yanıt verme sorunu da görüldü
Geçen ay StyleTTS2’yi test ettim ve yerel kurulum yapacaklara yardımcı olabilecek adım adım notlar derledim: https://llm-tracker.info/books/howto-guides/page/styletts-2
LJSpeech modeliyle VITS ve XTTS’ye karşı hız ve kaliteyi de kısaca karşılaştırdım; StyleTTS2 oldukça iyi ve çok hızlıydı: https://fediverse.randomfoo.net/notice/AaOgprU715gcT5GrZ2
Infill veya outpainting’e karşılık gelen özelliklerin de mümkün olup olmadığını merak ediyorum; bu kalitede ultra hızlı ses sentezinin özellikle indie ve deneysel oyun geliştirmede çeşitli kullanımları olmasını bekliyorum
Bağlantıdaki
#mambaforgeanchor’ı da çalışmadıBelgeler biraz dağınık olduğu için kurulum sürecini tutturmak biraz zahmetliydi ama yaklaşık 20 dakika sonra WSL Ubuntu 22.04 üzerinde düzgün çalıştı
Ses kalitesi çok iyi; gördüğüm diğer açık kaynak ses sentezi projelerinden çok daha iyi ve 4090 GPU ile inanılmaz hızlı
ElevenLabs kalitesine ulaşıyor mu henüz bilmiyorum ama ElevenLabs’in cazibesi, kaliteli ses kütüphanesinin büyük olması ve kolayca seçim yapılabilmesi. Bu kütüphanede varsayılan kadın sesi dışında başka bir ses seçmenin yolunu henüz bulamadım
ElevenLabs’in asıl önemli tarafı, yalnızca 5 dakikalık tek bir örnekle neredeyse anında yapılabilen ses klonlama; şaşırtıcı ve biraz ürkütücü derecede iyi çalışıyor. Bu özelliğin tamamen açık kaynakla mümkün hale gelmesini umuyorum. API hizmetleri pek çok kullanım için fazla pahalı; nispeten ucuz olan OpenAI bile birkaç bin kelime üretmek için yaklaşık 10 cent tutuyor
/Demodizinine gidipInference_LJSpeech.ipynbveyaInference_LibriTTS.ipynbdosyasını açarsanız çalışması gerekirSes sentezi tonlama ve telaffuzu, RVC ise sesin dokusunu üstleniyor; bu yüzden StyleTTS ile bu pipeline birleştirilirse ElevenLabs’e yaklaşılabilir
Kısa ses sentezi, ses sentezi dünyasında neredeyse çözülmüş bir sorun; ancak metinden sese dönüştürmeyle sesli kitap üretmeye çalışınca işler dağılmaya başlıyor
İlginç şekilde TTS2 örneği, gerçek referans sesten daha iyi duyuluyor https://styletts2.github.io/
Örneğin “Then leaving the corpse within the house [...]” örneğinde referans ses
housekelimesini garip, tonu yükselir gibi telaffuz ediyor; TTS2 sürümü ise daha doğal duyuluyorSesli kitabı olmayan Japon light novel’ları gibi çeşitli ePub dosyalarında kullanmak istiyorum. Şu anda Android’de Moon+ Reader TTS kullanıyorum ama epey robotik
2023’te bunu kazanmanın yolu yok
Yine de sonuç etkileyici ve diğer tüm ses sentezlerinden üstün
HN’deki mevcut başlık “StyleTTS2 – open-source Eleven Labs quality Text To Speech”, ancak özgün başlık belirli bir ürün adı içermiyor ve bağlantı verilen arXiv makalesi de ElevenLabs’ten bahsetmiyor
Bu tür başlık düzenlemelerinden kaçınılması gerektiğini sanıyordum
Açık kaynak bir sistem o kaliteye yaklaşıyorsa bu çok dikkate değer; bu yüzden çoğu kişinin bu karşılaştırmayı faydalı bulacağını düşünüyorum. Ben de zaten o karşılaştırma sayesinde ilgilendim
Başarıyla kullanmış olanlara sormak istiyorum: Bu ses klonlama, XTTSv2’den de tamamen farklı ve ElevenLabs’in yanına bile yaklaşmıyor
Tonlamayla pek ilgilenmiyor gibi; ses yüksekliği ve ritmi ise fena sayılmayacak şekilde eşleştiriyor
alpha,beta,embedding scale,diffusion stepsdeğerlerini birçok şekilde değiştirdim ama hızlı ve ses kalitesi iyi olsa da ses klonlamanın hiç düzgün çalışmadığını kabul etmek zorundayımXTTS de muhtemelen 20’den fazla dil ve milyonlarca konuşmacıyla eğitilmiştir
Milyonlarca sesi gördüyse aralarında sizin sesinize benzeyen bir ses mutlaka vardır; yani mesele sonunda eğitim verisine geliyor. Ancak bu ölçekte veri toplamak ve model eğitmek çok zor
alpha,betaüzerinde çok deneme yaptım ve çeşitli ses klipleri yükledim ama aynı sonucu yaşadımKalitesi gerçekten akıl almaz derecede iyi; 2000'lerin başında neredeyse hayal etmesi zor bir seviye
LLM'in bir karakteri üstlenmesi ve bu tür ses sentezinin NPC'lere ses vermesi gibi oyunlarda ilginç olasılıklar var
Şu an golf simülatörlerinde kuşlar ötüyor, çimler sallanıyor ve oynanış gerçekçi; ama hiç insan olmadığı için hafif post-apokaliptik bir hava kalıyor
Gerçek bir turdaki şakalaşmalı sataşmalar veya büyük bir maçtaki seyirci seslerinden çok farklı; LLM tabanlı sohbet eklemek için biçilmiş kaftan gibi görünüyor
Colab notebook'unu az önce denedim; kalite çok iyi görünüyor ve ses klonlamayı da destekliyor
Denemek istiyorum ama torch bağımlılıklarını kurmak için her seferinde
venvoluşturmak artık biraz bıktırdıBaşkalarının bunu nasıl çözdüğünü merak ediyorum. Birden çok
venvin ortak bir torch ortamını paylaşmasını sağlamanın kolay bir yolu var mı; elle yapılabilir ama buna yardımcı olan bir araç var mı bilmek isterimİş akışı
nix flake init -t github:dialohq/flake-templates#python, ardındannix develop -c $SHELLile içeri girmek; nix geliştirme ortamındaki shell hook'tapoetry installvepoetry activateçalıştırmak şeklindeMetinden sese dönüştürme modelleri için Civitai benzeri bir LoRA pazaryeri ortaya çıkar mı merak ediyorum
https://github.com/microsoft/LoRA