- Sopro TTS, zero-shot ses klonlama ve streaming üretimi destekleyen, İngilizce odaklı hafif bir metinden konuşmaya dönüştürme modeli
- 169 milyon parametreye sahip ve CPU'da 0.25 RTF hızında 30 saniyelik sesi yaklaşık 7.5 saniyede üretiyor
- Yalnızca 3~12 saniyelik referans ses ile konuşmacının sesini klonlayabiliyor; WaveNet tarzı dilated conv ve hafif cross-attention mimarisi kullanıyor
- Tek bir L40S GPU ile eğitilmiş düşük bütçeli bir proje; veri kalitesi iyileştirilirse performansın daha da artma payı var
- Streaming ve non-streaming modları, CLI, Python API ve web demosunu desteklediği için geliştirici deneyleri ve entegrasyon açısından kullanışlı
Sopro TTS'ye genel bakış
- Sopro, Portekizcede “nefes” anlamına geliyor ve hafif bir İngilizce TTS modeli olarak geliştirildi
- Transformer yerine dilated convolution ve cross-attention birleşimini kullanan bir mimari
- Tek bir L40S GPU ile eğitilmiş kişisel bir proje
- Başlıca özellikler
- 169M parametre, streaming desteği, zero-shot ses klonlama
- CPU üzerinde 0.25 RTF ile 30 saniyelik sesi 7.5 saniyede üretme
- 3~12 saniyelik referans ses ile ses klonlama
Kurulum ve çalıştırma
- Yalnızca minimum bağımlılık sürümleri belirtildiği için ayrı bir ortam oluşturmadan kurulabiliyor
- Örnek:
torch==2.6.0 sürümü M3 CPU'da yaklaşık 3 kat performans artışı sağlıyor
- Kurulum yöntemleri
- PyPI:
pip install sopro
- GitHub deposu:
git clone sonrası pip install -e .
Kullanım örnekleri
- CLI çalıştırma örneği
- Metin, referans ses ve çıktı dosyası belirtilebiliyor
--style_strength, --no_stop_head, --stop_threshold, --stop_patience gibi ayrıntılı kontrol parametreleri sunuluyor
- Python API örneği
SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu") ile model yükleniyor
- Hem non-streaming hem de streaming yöntemleri destekleniyor
- Streaming modunda üretilen ses parçaları sıralı biçimde birleştirilebiliyor
Etkileşimli streaming demosu
- Kurulumdan sonra
uvicorn demo.server:app komutuyla yerel sunucu çalıştırılabiliyor
- Alternatif olarak Docker ile build edilip çalıştırılabiliyor
docker build -t sopro-demo .
docker run --rm -p 8000:8000 sopro-demo
- Tarayıcıda
http://localhost:8000 adresine giderek demo görülebiliyor
Dikkat edilmesi gerekenler ve sınırlamalar
- Çıktı tutarlılığı zayıf olabilir ve parametre ayarı gerekebilir
- Ses klonlama kalitesi, mikrofon kalitesine ve ortam gürültüsüne büyük ölçüde bağlı
- Non-streaming sürüm daha yüksek ses kalitesi sunuyor
- Üretim uzunluğu yaklaşık 32 saniye (400 frame) ile sınırlı; bunun aşılması halinde halüsinatif çıktılar oluşabiliyor
- torchaudio kullanılırsa ffmpeg gerekiyor;
soundfile öneriliyor
- Eğitim verisi önceden tokenize edilmiş biçimde tutuluyor; ham sesler depolama alanı sorunları nedeniyle silinmiş
- İleride eğitim kodunun paylaşılması ve çok dilli desteğin genişletilmesi planlanıyor
Eğitim verisi
- Emilia YODAS, LibriTTS-R, Mozilla Common Voice 22, MLS veri setleri kullanıldı
Referanslar ve temel teknolojiler
- Mimi Codec (Kyutai), WaveNet, Attentive Stats Pooling, AudioLM, CSM gibi araştırmalar ve kod tabanlarından yararlanıldı
1 yorum
Hacker News yorumları
Harika ve kullanışlı bir proje
Kişisel olarak Chatterbox-TTS-Server'ın en iyi alternatif olduğunu düşünüyorum
Hızı yavaş ama ses kalitesi oldukça yüksek
Bu model ses klonlama ve duygu vektörleri üzerinden manuel duygu kontrolü sunduğu için çok güçlü bir araç gibi geliyor
Şu anda yürüttüğüm model orkestrasyonu projesinde özellikle faydalı oldu
Harici bir duygu sınıflandırma modeli, tutarlılığı korumak için LLM'in personasını ve TTS çıktısını aynı anda kontrol ediyor
Duygu durumuna göre 'hafıza' arama olasılığı da değişiyor; IndexTTS2 kadar ince ayar kontrolü sunabilen TTS neredeyse yok
Sopro TTS'nin çıktısı GitHub videosuna göre ciddi derecede kötü ve gerçek kullanım için uygun değil
Buna karşılık Chatterbox şaşırtıcı sonuçlar veriyor
GPU'm RTX5090 ve 1 saniyelik üretim için yaklaşık 2 saniyelik çalışma süresiyle oldukça hızlı
Birinci örneğe ve ikinci örneğe bakabilirsiniz. İkincisi, YouTuber ArbitorIan'ın sesinin klonlandığı bir demo
Gerçekten harika!
Ben yerelde Kokoro (82M) kullanıyorum; hem hızlı çalışıyor hem de ses kalitesi mükemmel
Ben ses etkinliğini ricky0123/vad ile işliyorum, hızlı tanıma için Web Speech API kullanıp ardından ticari bir TTS kullanıyorum
Açık kaynak tarafında hâlâ yeterince hızlı bir şey bulamadım
"zero-shot"ın ne anlama geldiğini merak etmiştim
few-shot, modele yön vermek için birkaç örnek sunmaktır; multi-shot ise birden çok istem ve düzeltme sürecinden geçmektir
Uzun bir derleme süreci olmadan Mission Impossible seviyesinde ses klonlama yapılmış gibi hissettiriyor
Bununla ilgili YouTube videosunu ve kelime oyunlu şiiri de paylaşıyorum
İngilizce olarak test ettim ve oldukça etkileyiciydi
düşük bütçeli bir proje için şaşırtıcı sonuçlar verdi ve kullanımı da çok kolaydı
Bir Almanca sürümü olsaydı kesinlikle denemek isterdim
Kısıtlar düşünülünce sonuçlar oldukça etkileyici
Daha güçlü bir sürüm (daha az artifact üreten ve daha fazla hesaplama gerektiren) yayınlama planı var mı merak ediyorum
Genelde Chatterbox kullanıyorum ama bu yüksek kaliteye ulaşırsa iyi bir alternatif olabilir
Hesaplama maliyeti oldukça yüksek ama topluluk tepkisi iyi olursa daha da geliştirmeyi düşünüyorum
Bu arada Chatterbox harika bir model ve ilham kaynağı
"zero-shot"ın anlamını merak etmiştim
Big O gösteriminden bile daha keyfi
Yani model P(Audio|Voice) koşullu olasılığını öğreniyor ve eğitim sırasında görmediği ses sınıfları için örnekleme yapabiliyorsa bu zero-shot'tur
Referans ses vermek, model ağırlıklarını değiştirmek değil, bağlam sağlamak anlamına gelir
Sesi dinledim ve ses kalitesi o kadar korkunçtu ki şaşırdım
15 yıl önceki bilgisayar seslerinden bile kötü; insanların neden bunu iyi bulduğunu anlamıyorum
Birden fazla tarayıcıda test ettim ama sonuç aynıydı
Bu kadar kötüyse başka bir sorun da olabilir, birlikte bakmak isterim
Gerçekten harika bir teknoloji
İleride daha da iyi olacağını düşünüyorum
Yine de geçici bir önlem olarak bile pürüzlü ses tonunu (razziness) azaltacak basit bir ses son işleme adımı eklenirse iyi olur
Bu modellerden herhangi birinin speech-to-speech ses dönüştürücü gibi çalışıp çalışmadığını merak ediyorum
Yani tek bir sabit ses örneğini (istem) ve gerçek zamanlı giriş ses akışını alıp, giriş sesini istemdeki ton ve tınıya dönüştüren bir yapıdan söz ediyorum
V-tuber gibi kullanımda istemi sık sık değiştirmek gerekmeyeceği için, tek seferlik bir fine-tuning ile sabit bir tını yerleştirmek de mümkün olabilir
Ancak akış işleme kısmını kendiniz uygulamanız gerekiyor
Ses A'yı (stil) ve B'yi (içerik) alıp, A'nın tınısını B'nin telaffuz ve tonlamasıyla birleştiriyor
Böyle modelleri aslında "TTS"den çok S+STS (speech+style to speech) olarak görmek daha doğru
Resmî bloglarında ayrıntılı olarak açıklanıyor
Ancak asıl üretici ile geliştiriciler arasında anlaşmazlık olduğu için ana fork'tan kaçınıp İngilizce yönetilen güncel bir fork bulmak daha iyi olur