YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Multilingual RVC TTS
Proyek ini menyediakan pipeline TTS -> optional RVC untuk sintesis suara lintas bahasa.
Target utamanya:
- mendukung banyak bahasa lewat backend TTS yang bisa diganti
- tetap bisa jalan tanpa RVC
- mudah dipanggil lewat CLI
- bisa dipakai lewat API FastAPI
- bisa memilih model RVC dari registry
voice_models.json - bisa menerima link Hugging Face ZIP langsung dari user
Arsitektur
Backend TTS yang tersedia:
xtts: lokal, keluaran WAV, cocok untuk cloning speaker multibahasaedge: cakupan bahasa luas, default paling praktis, keluaran MP3 jika tanpa RVC
Tahap voice conversion:
rvc-pythondipakai sebagai adaptor RVC opsional- jika model RVC tidak diberikan, hasil TTS langsung disimpan
Instalasi
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Catatan:
- backend
xttsbutuh model Coqui TTS yang lebih berat - backend
edgebutuh koneksi internet saat inferensi - RVC butuh checkpoint model
.pthdan index.indexjika tersedia - resolver Hugging Face butuh koneksi internet saat download model
Voice Models
File registry ada di voice_models.json.
Contoh entri:
[
{
"id": "sample-rvc",
"name": "Sample RVC Voice",
"source": "https://huggingface.co/example-user/example-rvc-model/tree/main"
}
]
source mendukung:
- folder lokal yang berisi
.pthdan opsional.index - file lokal
.pth - file lokal
.zip - link Hugging Face repo/folder/file/zip
Resolver akan mencari file .pth dan .index otomatis. Jika sumbernya .zip, file akan di-download lalu di-extract ke cache lebih dulu.
Contoh
Tanpa RVC:
python -m rvc_tts.cli \
--text "Halo, ini uji TTS bahasa Indonesia." \
--lang id \
--backend xtts \
--speaker-wav /path/ke/referensi.wav \
--output ./out.wav
Dengan backend edge:
python -m rvc_tts.cli \
--text "Halo, ini uji TTS multibahasa." \
--lang id-ID \
--backend edge \
--voice id-ID-GadisNeural \
--output ./out.mp3
Dengan RVC:
python -m rvc_tts.cli \
--text "Halo, ini suara hasil TTS lalu masuk RVC." \
--lang id \
--backend xtts \
--speaker-wav /path/ke/referensi.wav \
--rvc-model /path/ke/model.pth \
--rvc-index /path/ke/model.index \
--output ./final.wav
Auto-detect bahasa:
python -m rvc_tts.cli \
--text "こんにちは、音声テストです。" \
--backend edge \
--voice ja-JP-NanamiNeural \
--output ./jp.mp3
FastAPI
Jalankan server:
uvicorn rvc_tts.api:app --host 0.0.0.0 --port 8000
List voice models:
curl http://127.0.0.1:8000/voice-models
Synthesize dengan auto language detect:
curl -X POST http://127.0.0.1:8000/synthesize \
-H "Content-Type: application/json" \
-d '{
"text": "Halo dunia, ini percobaan API.",
"backend": "edge",
"voice": "id-ID-GadisNeural",
"output_format": "mp3"
}'
Synthesize dengan RVC dari registry:
curl -X POST http://127.0.0.1:8000/synthesize \
-H "Content-Type: application/json" \
-d '{
"text": "Halo, ini suara dengan model RVC dari Hugging Face.",
"backend": "xtts",
"speaker_wav": "/path/ke/ref.wav",
"voice_model_id": "sample-rvc",
"output_format": "wav"
}'
Synthesize dengan link Hugging Face ZIP langsung dari user:
curl -X POST http://127.0.0.1:8000/synthesize \
-H "Content-Type: application/json" \
-d '{
"text": "Halo, ini suara dari model zip Hugging Face.",
"backend": "xtts",
"speaker_wav": "/path/ke/ref.wav",
"voice_model_url": "https://huggingface.co/username/repo/resolve/main/model.zip",
"output_format": "wav"
}'
Ambil file audio:
curl -O http://127.0.0.1:8000/audio/<job_id>
Retensi File
- File output audio disimpan selama 24 jam.
- Cleanup dijalankan otomatis saat ada request baru ke API.
- Response
/synthesizemengembalikan fieldexpires_at.
Keterbatasan
- Tidak ada model tunggal yang benar-benar mencakup semua bahasa dengan kualitas merata.
- Untuk klaim "full bahasa", praktik yang realistis adalah:
- pakai backend yang cakupannya luas
- expose parameter voice/language
- biarkan RVC fokus pada timbre suara, bukan kualitas pelafalan dasar
edgemenghasilkan MP3. Jika ingin diproses RVC, gunakanxttsatau tambahkan tahap konversi ke WAV.
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support