3 puan yazan GN⁺ 2023-11-20 | 1 yorum | WhatsApp'ta paylaş
  • 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çin python train_second.py --config_path ./Configs/config.yml kullanı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
  • Başlıca çalıştırma koşulları Python >= 3.7, requirements.txt kurulumu, demo çalıştırırken phonemizer ve espeak-ng kurulumu, 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.ipynb ve çok konuşmacı için Inference_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

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

    • Chatbot’un doğal şekilde sohbet etmesini sağlamanın ne kadar zor göründüğünü merak ediyorum
      Ö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
    • Çalıştırmayı denedim ama yalnızca CUDA 11 ile çalışıyor gibi; zaten CUDA 12 ortamım olduğu için test etmek adına CUDA ortamımı bozmayı düşünmüyorum
    • Test sonuçları karışıktı: C:\ dışında bir sürücüye kurunca hata verdi, C:’ye taşıyınca düzgün çalıştı
      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ü
    • 12 GB’nin minimum gereksinim olup olmadığını merak ediyorum. 8 GB’de bellek yetersiz hatası verdi
    • Whisper girdi akışını desteklemediğine göre, transkripsiyonu tetiklemek için tüm LLM yanıtının bitmesi gerekmiyor mu diye düşünüyorum
  • 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

    • 4090’da gerçek zamana göre 15~95 kat çıkarım gerçekten inanılmaz
      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
    • Rehberi takip ediyorum; hâlihazırda kullanmayanlar için mamba artık önerilmiyor
      Bağlantıdaki #mambaforge anchor’ı 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

    • Ubuntu 22.04 üzerinde test ettiğim kurulum adımları şöyle. Google Drive indirme bağlantıları, 24 saat içinde çok fazla indirme olduğu gerekçesiyle engellenebilir ama biraz beklerseniz yeniden çalışacaktır
      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  
      
      Ardından /Demo dizinine gidip Inference_LJSpeech.ipynb veya Inference_LibriTTS.ipynb dosyasını açarsanız çalışması gerekir
    • Stil klonlama için, yüksek kalitede ince ayarlanmış ses sentezinin ardından çıktıyı RVC pipeline ile “güçlendiren” bir yaklaşım görmüştüm
      Ses sentezi tonlama ve telaffuzu, RVC ise sesin dokusunu üstleniyor; bu yüzden StyleTTS ile bu pipeline birleştirilirse ElevenLabs’e yaklaşılabilir
    • LibriTTS demosu, daha önce görmediği bir konuşmacının sesini yaklaşık 5 saniyelik bir kliple klonluyor
    • ElevenLabs ve StyleTTS tarafında uzun konuşmaları test edip etmediğinizi merak ediyorum
      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 house kelimesini garip, tonu yükselir gibi telaffuz ediyor; TTS2 sürümü ise daha doğal duyuluyor
    Sesli 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

    • İlk eşim profesyonel bir seslendirme sanatçısı; birinin “bariz şekilde yapay zeka” diyerek kötü bir yorum bıraktığını gördüm
      2023’te bunu kazanmanın yolu yok
    • Akıcılık hissi daha iyi ama kişisel olarak hâlâ oldukça belirgin bir metalik ton duyduğum için gerçek insan sesinden daha kötü buluyorum
      Yine de sonuç etkileyici ve diğer tüm ses sentezlerinden üstün
    • Bunu ePub’a nasıl entegre etmeyi planladığınızı merak ediyorum. Benzer bir durumdayım ve e-kitaplarda böyle bir şeyi kullanmak istiyorum
  • 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

    • ElevenLabs, ses sentezinde referans noktası ve henüz ondan daha iyisi yok
      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
    • Düzenlenmiş bir başlık ve aynı zamanda abartılı. Yine de StyleTTS2’yi bizzat denediğimde açık kaynak ses sentezi içinde açık ara en iyisi olduğunu gördüm; bu yüzden HN’in üst sıralarında bir süre kalmayı kesinlikle hak ediyor
    • Evet, yönerge ihlali. Başlığı görünce bunun yeni bir araştırma makalesi değil, rastgele bir GitHub projesi olduğunu düşündüm
  • 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 steps değ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ım

    • ElevenLabs, Tortoise-TTS tabanlı ve zaten milyonlarca saatlik veri ile önceden eğitilmiş; bu model ise en fazla 500 saatlik LibriTTS ile eğitilmiş
      XTTS 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
    • Makalenin sonuç bölümüne bakınca, ses klonlamanın henüz pek iyi olmadığını kabul ediyorlar
    • alpha, beta üzerinde çok deneme yaptım ve çeşitli ses klipleri yükledim ama aynı sonucu yaşadım
  • Kalitesi 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

    • İlgi duyduğum alan olan golf simülasyonu için büyük anlam taşıyor
      Ş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

    • README'ye göz attım ama çalıştırmak için minimum donanım gereksinimlerinin ne olduğunu merak ediyorum. CPU'yu ya da sabit diski patlatır mı, bilmiyorum
    • GitHub'a şöyle bir baktım ama bulamadım; belirli bir sese ince ayar yapmanın ne kadar sürdüğünü merak ediyorum
  • Denemek istiyorum ama torch bağımlılıklarını kurmak için her seferinde venv oluş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

    • Python ortam yapılandırması için nix kullanıyorum; Python sürümünü ve poetry'yi, bazen de poetry ile kurulması zor paketleri sabitleyip geri kalanını poetry ile hallediyorum
      İş akışı nix flake init -t github:dialohq/flake-templates#python, ardından nix develop -c $SHELL ile içeri girmek; nix geliştirme ortamındaki shell hook'ta poetry install ve poetry activate çalıştırmak şeklinde
    • Bu tür şeyler için genelde Docker kullanmaya çalışıyorum, ama bağımlılıkları anlamak çok zor olduğu için bu tür projeleri pas geçmemin başlıca nedeni de bu oluyor
    • Aynı sorunu çok hissediyorum. Docker geliştirme konteyneri kullanıp ortak bağımlılıklar için bir taban imaj oluşturmayı, sonra her yeni projede Dockerfile ile özelleştirmeyi düşündüm; ama daha iyi bir alternatif var mı bilmiyorum
    • Ben de benzer durumdayım. conda kullanıyorum ve PyTorch'u doğrudan varsayılan conda ortamına kurma seçeneğine bakıyorum
    • Gerçekten bıktırmaya başladıysa Copilot gibi bir LLM'in bunu bizim yerimize halledebilmesi gerekmez mi diye düşünüyorum
  • Metinden sese dönüştürme modelleri için Civitai benzeri bir LoRA pazaryeri ortaya çıkar mı merak ediyorum
    https://github.com/microsoft/LoRA