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 multibahasa
  • edge: cakupan bahasa luas, default paling praktis, keluaran MP3 jika tanpa RVC

Tahap voice conversion:

  • rvc-python dipakai 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 xtts butuh model Coqui TTS yang lebih berat
  • backend edge butuh koneksi internet saat inferensi
  • RVC butuh checkpoint model .pth dan index .index jika 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 .pth dan 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 /synthesize mengembalikan field expires_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
  • edge menghasilkan MP3. Jika ingin diproses RVC, gunakan xtts atau tambahkan tahap konversi ke WAV.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support