- Sopro TTS adalah model text-to-speech ringan berbasis bahasa Inggris yang mendukung kloning suara zero-shot dan generasi streaming
- Memiliki 169 juta parameter, dan di CPU dapat menghasilkan audio 30 detik dalam sekitar 7,5 detik dengan kecepatan 0,25 RTF
- Hanya dengan audio referensi berdurasi 3–12 detik, model ini dapat menyalin suara pembicara, serta menggunakan arsitektur dilated conv bergaya WaveNet dan cross-attention ringan
- Proyek berbiaya rendah yang dilatih dengan satu GPU L40S, dengan ruang peningkatan performa jika kualitas data ditingkatkan
- Mendukung mode streaming dan non-streaming, serta CLI, Python API, dan demo web, sehingga sangat berguna untuk eksperimen dan integrasi oleh developer
Gambaran umum Sopro TTS
- Sopro berarti ‘napas’ dalam bahasa Portugis, dan dikembangkan sebagai model TTS bahasa Inggris yang ringan
- Menggabungkan dilated convolution dan cross-attention alih-alih Transformer
- Berupa proyek individu yang dilatih dengan satu GPU L40S
- Fitur utama
- 169M parameter, dukungan streaming, kloning suara zero-shot
- 0,25 RTF di CPU, menghasilkan audio 30 detik dalam 7,5 detik
- Dapat melakukan kloning suara dari audio referensi berdurasi 3–12 detik
Instalasi dan menjalankan
- Hanya menentukan versi dependensi minimum, sehingga bisa diinstal tanpa membuat environment terpisah
- Contoh: versi
torch==2.6.0 memberikan peningkatan performa sekitar 3x pada CPU M3
- Cara instalasi
- PyPI:
pip install sopro
- Repositori GitHub: setelah
git clone, jalankan pip install -e .
Contoh penggunaan
- Contoh menjalankan via CLI
- Bisa menentukan teks, audio referensi, dan file output
- Menyediakan parameter kontrol detail seperti
--style_strength, --no_stop_head, --stop_threshold, --stop_patience
- Contoh Python API
- Memuat model dengan
SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")
- Mendukung non-streaming dan streaming
- Dalam mode streaming, chunk audio yang dihasilkan bisa digabung secara berurutan
Demo streaming interaktif
- Setelah instalasi, jalankan server lokal dengan perintah
uvicorn demo.server:app
- Atau bisa build dan jalankan dengan Docker
docker build -t sopro-demo .
docker run --rm -p 8000:8000 sopro-demo
- Demo dapat diakses di browser melalui
http://localhost:8000
Hal yang perlu diperhatikan dan keterbatasan
- Ada kemungkinan konsistensi output kurang stabil, sehingga perlu penyesuaian parameter
- Kualitas kloning suara sangat bergantung pada kualitas mikrofon dan kebisingan sekitar
- Versi non-streaming memberikan kualitas audio yang lebih baik
- Panjang generasi dibatasi sekitar 32 detik (400 frame), dan jika melebihi dapat muncul output halusinatif
- Menggunakan torchaudio memerlukan ffmpeg, disarankan memakai
soundfile
- Data pelatihan berbentuk sudah ditokenisasi sebelumnya, sementara audio asli dibuang karena masalah ruang penyimpanan
- Disebutkan ada rencana untuk merilis kode pelatihan dan memperluas dukungan multibahasa
Data pelatihan
- Menggunakan dataset Emilia YODAS, LibriTTS-R, Mozilla Common Voice 22, MLS
Referensi dan teknologi dasar
- Memanfaatkan riset dan basis kode seperti Mimi Codec (Kyutai), WaveNet, Attentive Stats Pooling, AudioLM, CSM
1 komentar
Komentar Hacker News
Proyek yang keren dan berguna
Secara pribadi, saya pikir Chatterbox-TTS-Server adalah alternatif terbaik
Memang lambat, tapi kualitas suaranya cukup tinggi
Model ini sangat kuat karena mendukung kloning suara dan kontrol emosi manual lewat vektor emosi
Ini sangat berguna dalam proyek orkestrasi model yang sedang saya kerjakan
Model klasifikasi emosi eksternal mengendalikan persona LLM dan keluaran TTS secara bersamaan untuk menjaga konsistensi
Probabilitas pencarian “memori” juga berubah sesuai keadaan emosi, dan hampir tidak ada TTS lain yang memungkinkan kontrol sehalus IndexTTS2
Berdasarkan video GitHub, keluaran Sopro TTS sangat buruk dan tidak layak dipakai dalam praktik
Sebaliknya, Chatterbox menghasilkan hasil yang mengagumkan
GPU saya RTX5090, dan runtime-nya sangat cepat, sekitar 2 detik untuk menghasilkan 1 detik audio
Anda bisa melihat contoh pertama dan contoh kedua. Yang kedua adalah demo kloning suara YouTuber ArbitorIan
Keren sekali!
Saya memakai Kokoro (82M) secara lokal, dan performanya cepat serta kualitas suaranya juga luar biasa
Saya menangani aktivasi suara dengan ricky0123/vad, lalu memakai Web Speech API untuk pengenalan cepat dan TTS komersial
Sejauh ini saya belum menemukan opsi open source yang cukup cepat
Saya penasaran apa arti “zero-shot”
few-shot berarti memberi beberapa contoh untuk mengarahkan model, sedangkan multi-shot berarti melalui beberapa kali prompt dan proses revisi
Rasanya seperti berhasil membuat kloning suara level Mission Impossible tanpa kompilasi panjang
Saya juga membagikan video YouTube terkait dan puisi permainan bahasa
Saya mencobanya dalam bahasa Inggris dan cukup terkesan
Untuk proyek beranggaran rendah, hasilnya mengejutkan dan sangat mudah digunakan
Kalau ada versi bahasa Jerman, saya pasti ingin mencobanya
Hasilnya cukup mengesankan jika mempertimbangkan keterbatasannya
Saya penasaran apakah ada rencana merilis versi yang lebih kuat, dengan artefak lebih sedikit namun kebutuhan komputasi lebih besar
Saya biasanya memakai Chatterbox, tetapi kalau ini berkembang menjadi berkualitas tinggi, sepertinya bisa menjadi alternatif yang bagus
Biaya komputasinya cukup mahal, tetapi jika respons komunitas bagus, saya berniat mengembangkannya lebih jauh
Sebagai catatan, Chatterbox adalah model yang hebat sekaligus sumber inspirasi
Saya penasaran dengan arti “zero-shot”
Bahkan lebih sewenang-wenang daripada notasi Big O
Artinya, jika model mempelajari probabilitas bersyarat P(Audio|Voice) dan dapat melakukan sampling untuk kelas suara yang tidak terlihat selama pelatihan, maka itu termasuk zero-shot
Memberikan audio referensi bukan berarti mengubah bobot model, melainkan memberikan konteks
Saya mendengarkan audionya dan terkejut karena kualitas suaranya sangat mengerikan
Bahkan lebih buruk daripada suara komputer 15 tahun lalu, dan saya tidak paham kenapa orang-orang bilang ini bagus
Saya sudah mengujinya di beberapa browser dan hasilnya sama
Kalau separah itu, mungkin ada masalah lain, jadi saya ingin ikut melihatnya
Teknologi yang sangat keren
Ke depannya sepertinya akan jadi lebih baik
Namun setidaknya sebagai solusi sementara, akan bagus jika ditambahkan post-processing audio sederhana untuk mengurangi suara serak kasar (razziness)
Saya penasaran apakah ada model seperti ini yang bekerja dalam bentuk pengubah suara speech-to-speech
Maksudnya, model menerima satu sampel suara tetap (prompt) dan aliran audio input real-time, lalu mengubah suara input menjadi nada dan timbre dari prompt
Untuk kasus seperti V-tuber, prompt tidak perlu sering diganti, jadi mungkin saja menerapkan timbre tetap lewat satu kali fine-tuning
Hanya saja, pemrosesan streaming harus diimplementasikan sendiri
Model ini menerima audio A (gaya) dan B (konten), lalu menggabungkan timbre dari A dengan pengucapan dan intonasi dari B
Model seperti ini sebenarnya lebih tepat disebut S+STS (speech+style to speech) daripada “TTS”
Dijelaskan lebih detail di blog resminya
Namun karena ada konflik antara pembuat asli dan para pengembang, sebaiknya hindari fork utama dan cari fork terbaru yang dikelola dalam bahasa Inggris