1 puan yazan GN⁺ 4 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Yerel ses üretimi artık özel GPU olmadan da yeterince gerçekçi kalite sunabiliyor; örnek ortamda GPU LLM çıkarımına ayrılırken TTS’yi CPU işliyor
  • Kokoro, 82M parametreli bir model olmasına rağmen İngilizce, Çince, Hintçe gibi birden çok dili destekliyor, yaklaşık 50 ses sunuyor ve en çok İngilizce için optimize edilmiş durumda
  • En kolay kurulum, Kokoro-FastAPI konteynerini çalıştırmak; ses modeli önceden dahil edildiği için imaj boyutu yaklaşık 5GB
  • OpenAI speech API ile uyumlu bir arayüz sunduğundan, mevcut ses API’si tabanlı programları yerel TTS kullanacak şekilde görece kolayca değiştirmek mümkün
  • Kısa paragraf sentezi Intel Core i7-4770K’da 4,7 saniye, Apple M2 Pro’da 4,5 saniye, AMD Ryzen 7 8745HS’de 1,5 saniye civarında; bu da yerel LLM yanıtlarını okumak yerine dinleme kullanımını mümkün kılıyor

Yalnızca CPU ile Kokoro TTS çalıştırmak

  • Birkaç yıl öncesine kadar gerçekçi yerel ses üretimi zordu; artık gizliliği harici servislere emanet etmeden yüksek kaliteli ses üretmek mümkün
  • Örnek, daha önce ele alınan yerel LLM için kullanılan GTX 1080 Ti makinesinde çalıştırılıyor
    • Bu makinenin özel GPU’su LLM çıkarımı için ayrılmış durumda
    • Ses sentezi yalnızca CPU kullanıyor
  • Kullanılan model Kokoro
    • 82M parametreli bir model
    • İngilizce, Çince, Hintçe gibi birden çok dilde gerçekçi sesler üretiyor
    • Yaklaşık 50 ses sunuyor ve ağırlıklı olarak İngilizce için optimize edilmiş
  • En basit sunucu kurulumu, Kokoro-FastAPI konteyner imajını kullanmak
    • Önceden indirilmiş ses modeli dahil
    • Bu nedenle konteyner imajının boyutu yaklaşık 5GB
  • Docker veya Podman çalıştırma komutu:
    podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu
    
  • Çalıştırdıktan sonra web arayüzü localhost:8880/web adresinden açılabilir; metin girerek ses oluşturabilir ve otomatik oynatabilirsiniz

OpenAI uyumlu API ve örnek çalıştırma

  • Kokoro-FastAPI konteyneri, web arayüzünün yanı sıra OpenAI speech API uyumlu bir TTS arayüzü sunuyor
    • Mevcut OpenAI speech API kullanan programları kolayca uyarlamak mümkün
    • JavaScript ve Python örnek kodları github.com/remotebrowser/speak adresinde
  • JavaScript çalıştırma örneği:
    export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
    ./speak.js "Good morning! How are you today?"
    
  • Python çalıştırma örneği:
    export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
    ./speak.py "Good morning! How are you today?"
    
  • Oluşturulan ses MP3 dosyası olarak kaydedilir
    • SoX veya Sound eXchange kuruluysa ses otomatik oynatılır
    • SoX bilgilerine sox.sf.net adresinden ulaşabilirsiniz
  • Farklı bir ses seçmek için TTS_VOICE ortam değişkenini ayarlayın
    export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
    export TTS_VOICE="am_eric"
    ./speak.js "Good morning! How are you today?"
    
  • Kullanılabilir tüm seslerin listesi Kokoro VOICES.md dosyasında

CPU’lara göre sentez süreleri ve alternatifler

  • am_eric sesiyle kısa bir test paragrafı sentezlendiğinde, 3 çalıştırma içindeki en iyi kayda göre üretim süreleri şöyle:
    • Intel Core i7-4770K: 4,7 saniye
    • Apple M2 Pro: 4,5 saniye
    • AMD Ryzen 7 8745HS: 1,5 saniye
  • Listedeki ilk CPU 12 yıl önce piyasaya çıkmış bir model; eski CPU’lar bile bu işi halledebiliyor
  • OpenAI uyumlu konteyner tabanlı TTS alternatifi olarak Speaches da var
    • Kokoro-FastAPI’den farklı olarak konteyner imajına ses ağırlıkları dahil değil; API üzerinden açıkça indirilmesi gerekiyor
    • Whisper dahil yüksek kaliteli STT özellikleri de sunuyor
    • Uygulamanın hem TTS hem de STT’ye ihtiyacı varsa tek yerden işlem yapmak için bir seçenek olabilir
  • Yerel LLM ile birleştirildiğinde, LLM yanıtlarını okumak yerine sesli olarak dinleme kullanımını mümkün kılıyor

1 yorum

 
GN⁺ 4 시간 전
Hacker News yorumları
  • Erişilebilirlik ürünlerinde Kokoro’yu epey kullandım; benzer kalitedeki birçok TTS’nin istediği NVidia GPU’ya ihtiyaç duymaması çalışmayı kolaylaştırdı.
    Özellikle IPA telaffuz kılavuzunu elle ekleyebilme özelliğini seviyorum. Çünkü önemli bir sözcük eşsesli/eşyazımlı olduğunda Kokoro’nun yanlış telaffuz ettiği durumlar oluyordu.
    Ancak yalnızca bir iki kelime söylettiğinizde zayıflıyor. Örneğin sadece "six" söylettiğinizde neredeyse her zaman "ah-six-ah" gibi söylüyor. Bunun yerine "The word is: six" gibi daha uzun bir cümle verirseniz doğru okuyor; Kokoro API’si cümledeki her kelimenin zaman damgasını verdiği için bir Python betiğiyle yalnızca istediğiniz kelimeyi kesip alabiliyorsunuz. Tonlama biraz düz ama çok kararlı.
    Discord’da sorduğumda bunun küçük parametre ölçeğinin bir sınırı olduğunu söylediler; Kokoro’yu savunmak gerekirse eleven-labs seslerinde de bazen böyle sorunlar çıkıyor.

    • Aynı numarayı başka birçok araçta da kullanıyorum. Wispr ya da Google’a "Knight" derseniz "night" olarak çıkıyor; ama "Knight to f3" deyip sonra yalnızca "to f3" kısmını silmek yeterli.
    • Aslında bu TTS modellerinin yaygın bir zayıflığı.
      Benim kullanımımın neredeyse tamamı tek kelimelik olduğu için, giriş ve çıkışı birleştirme ya da bölme işlemleriyle özellikle uğraşmak istemiyorum; bu yüzden bana uymuyor.
  • Bu gerçekten ilgimi çeken bir konu olduğu için eğlenceli.
    Eskiden whisperx’i ayrı olarak tutuyordum; çünkü yalnızca basit transkripsiyon değil, altyazı gibi kullanımlar için gereken zamanlama ve konuşmacı tanıma da önemli diye düşünüyorum. Ancak pyannote’a bağımlı ve lisansı belirsiz olduğu için kurulum otomasyonunu da zorlaştırıyor.
    Bu yüzden daha iyi transkripsiyon sunarken konuşmacı ayrıştırmayı da destekleyen bir şey ararken, transkripsiyon için parakeet’te, konuşmacı ayrıştırma için softformer’da karar kıldım. Fakat kullanılabilir motorların çoğu softformer içermiyor.
    softformer destekleyen parakeet-rs için OpenAI uyumlu bir sunucu yaptım (https://github.com/altunenes/parakeet-rs) ve çeşitli kolaylık işlerini halleden masaüstü transkripsiyon uygulaması OpenWhispr ile birlikte kullanıyorum.
    GPU’yu başka işler için kullandığımdan henüz GPU yolunu eklemedim; şu anda yalnızca CPU ile transkripsiyon yapıyor, ama istediğimde yerelde transkripsiyon çalıştırabilmek bana çok güçlü geliyor.

    • Bu metinden konuşmaya dönüştürme, senin bahsettiğin ise konuşmadan metne dönüştürme.
      Yapmak istediğin iş için parakeet ile birlikte Senko kullanırsan konuşmacı ayrıştırma çok iyi çalışıyor. Benim MacBook’umda Pyannote ve whisper’dan daha hızlı ve daha doğruydu.
    • Basit whisper.cpp ile de benzer şekilde yapılabilir.
  • Bu model gerçekten iyi. GPU eksikliği yüzünden yerel modellerle pek uğraşamamış olmama üzülüyordum; yaklaşık bir ay önce GTX1650’ye Kokoro kurup metin okuma için bir TTS yaptım.
    Basit bir WebUI’de URL ya da kopyalanmış metin blokları yapıştırıyorum; Python bunları temizleyip Kokoro’ya göndererek TTS üretiyor ve sonucu Apple Podcasts için RSS olarak sunuyor. Sabah araba kullanırken biriktirdiğim yazıları ya da blog gönderilerini yakalamak için kullanıyorum.
    Bir gün farklı sesleri bölüştürerek, biriktirdiğim haber öğelerini radyo sabah programı gibi dinleten NotebookLM benzeri bir şey de yapmak istiyorum.

  • Birkaç ay önce herhangi bir web sayfasında bunu yapan bir Chrome eklentisi yaptım; okunan cümleyi aynı anda vurguluyor.
    Hem container başlatma adımını hem de web sitesi içeriğini kopyalayıp yapıştırma adımını atlayabildiği için, Kokoro’yu daha rahat kullanmak isteyenlere faydalı olabilir.
    https://chromewebstore.google.com/detail/local-reader-ai-on-...

  • TTS gerçekten çok ilerledi ve çok seçenek var. Kokoro var; Pocket TTS ise 100M’lik küçük bir model olmasına rağmen ses klonlama da yapabiliyor.
    Chatterbox Turbo biraz daha büyük ama sesin duygu kontrolünü daha iyi destekliyor; Fish Audio S2 ise daha büyük olmakla birlikte ton ve duyguyu pratikte sınırsız biçimde, çok daha ince ayarla kontrol edebiliyor. Bunların hepsi MacBook’ta kolayca çalışıyor.

  • TTS modellerini karşılaştırmaya başlamak için iyi bir depo: https://github.com/5uck1ess/tts-bench
    Kokoro’nun 1,5 yıl önce yayımlanmış bir model olduğu düşünülürse gerçekten iyi bir model ve boyutuna göre performansı mükemmel: https://5uck1ess.github.io/tts-bench/scores.html

  • Daha önce yerel TTS için Piper kullanmıştım; Kokoro da ilginç görünüyor.

  • Çok hoş. Linux kullandığım için Aqua, Whipsrflow vb. kullanamıyorum; ocak ayından beri kendi yaptığım çözümü kullanıyorum.
    Yakın zamanda toparlayıp kurulumu kolaylaştırdım. İlgileniyorsanız buradan bakabilirsiniz: https://github.com/Hugo0/voiceio
    Zamanla kendi kendine iyileşiyor, yerel makinede çalışıyor ve genel olarak kullanılabilir bir yazılım. Bugünlerde PC ile etkileşimlerimin %60’ı tamamen sesli giriş üzerinden.

    • Bu metinden konuşmaya dönüştürme; o ise konuşmadan metne dönüştürme. Yine de STT ilginç görünüyor.
  • Kokoro’yu gerçekten seviyorum. Sesli kitabı olmayan e-kitapları okutmak için kullanıyorum ve bu amaçla epey iyi çalışıyor.
    epub/html okuyup modeli çalıştıran, ardından mp3 yazan bir Python betiği hazırladım.
    Kokoro’nun desteklediği dil sayısı sınırlı olduğu için Felemenkçe desteğinde başka bir model kullanmak zorunda kaldım; onun kalitesi de bu kadar iyi değil. Genelde çok daha yavaş ve daha büyük oluyor; 8GB VRAM için de fazla büyük.
    Sonunda Windows’un yerleşik TTS’ine kadar denedim; doğal gelmiyor ama en azından kelimelerin çoğunu telaffuz edebiliyor ve çok hızlı.

  • Bir gün boyunca yapay zekâyla kurcalayıp Kokoro’daki pahalı katmanları çıkardım; telefon CPU’sunda ve MNN üzerinde 3 kat hızlı çalışıyor.
    Kalite çok benzer. Ortama göre değişebilir ama betik burada: https://github.com/DavidVentura/translator-rs/blob/master/sc...