Chatterbox Luna β€” Suara Indonesia (fine-tune)

Model TTS bahasa Indonesia berbasis Chatterbox, dilatih ulang untuk suara Luna dengan resep yang sudah diuji terhadap ElevenLabs sebagai patokan.

Dibuat oleh dhyield. Semua angka di bawah adalah hasil pengukuran, bukan klaim.


⚑ Ringkas: apa yang ada di sini

Berkas Isi
suara_produksi.py Generator siap pakai β€” resep 7 langkah lengkap
t3_cfg.safetensors T3 fine-tune (suara Luna, 12 epoch)
ve.safetensors Voice encoder (dari Chatterbox dasar)
s3gen.safetensors Pembangkit gelombang (dari Chatterbox dasar)
conds.pt, tokenizer.json Berkas pendukung
RESEP.md Dokumentasi lengkap + semua angka uji
contoh/ Berkas audio contoh

🎯 Hasil uji vs ElevenLabs (teks 4 kalimat, 176 huruf)

Ukuran ElevenLabs Model ini Status
Durasi 12,56 dtk 12,54 dtk βœ… selisih 0,02 dtk
Nada (F0) 244 Hz 237–253 Hz βœ… selisih ≀ 9 Hz
Pita 8–12 kHz βˆ’15,9 dB βˆ’15,1 dB βœ… malah lebih baik
Desis (flatness) 0,0096 0,0069 βœ… lebih bersih
Rentang dinamis 38,9 dB 39,3 dB βœ… setara
Jeda 1,97 dtk 2,70 dtk ⚠️ masih beda (batas Chatterbox)

πŸš€ Cara pakai

Cara 1 β€” konfigurasi PRODUKSI (disarankan, sudah terbukti)

Cara ini tidak perlu model fine-tune di repo ini β€” cukup model dasar + T3 Indonesia:

import torchaudio as ta
from chatterbox.tts import ChatterboxTTS
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file

# 1. model dasar ResembleAI (ASLI)
model = ChatterboxTTS.from_pretrained(device="cuda")

# 2. tukar HANYA T3 ke bahasa Indonesia
ck = hf_hub_download("grandhigh/Chatterbox-TTS-Indonesian", "t3_cfg.safetensors")
model.t3.load_state_dict(load_file(ck, device="cuda"))

# 3. buat suara β€” setelan ini hasil uji, bukan bawaan pustaka
wav = model.generate(
    "Besok pagi kita berangkat ke Serang Banten.",
    audio_prompt_path="klip_referensi.wav",   # 3-4 dtk suara acuan
    exaggeration=0.50,    # bawaan 0.5.  LEBIH TINGGI = bicara LEBIH CEPAT
    cfg_weight=0.20,      # bawaan 0.5.  RENDAH = mengalir, TINGGI = seperti baca naskah
    temperature=0.90,     # bawaan 0.8.  naikkan supaya tidak terdengar "mesin"
)
ta.save("hasil.wav", wav, model.sr)

Cara 2 β€” pakai model fine-tune di repo ini

from chatterbox.tts import ChatterboxTTS
model = ChatterboxTTS.from_local("./chatterbox-luna-id", device="cuda")
wav = model.generate("Teks apa saja.", audio_prompt_path="klip_referensi.wav",
                     exaggeration=0.50, cfg_weight=0.20, temperature=0.90)

Cara 3 β€” generator lengkap (paling bagus)

python suara_produksi.py "Teks yang mau diucapkan" -o hasil -n 16 --atempo 0.85
# keluaran: hasil/03_final.wav

πŸ”‘ TIGA HAL YANG PALING PENTING

1. Chatterbox itu ACAK β€” wajib buat banyak percobaan

Dari 24 percobaan dengan setelan SAMA PERSIS:
  F0 keluaran: 195 Hz ... 253 Hz   (rentang 58 Hz!)

β†’ Satu percobaan tidak cukup. Buat 16-24x, pilih yang nadanya paling dekat target.
β†’ Ini kelemahan dasar Chatterbox, bukan salah setelan.

2. EQ frekuensi tinggi itu WAJIB β€” bukan pemanis

Masalah: hasil Chatterbox terdengar "seperti telepon / voice note"
Sebab  : pita 8-12 kHz kurang 8 dB dibanding ElevenLabs (BUKAN desis!)

  pita 8-12 kHz : Chatterbox mentah βˆ’23,9 dB | ElevenLabs βˆ’15,9 dB
  desis         : Chatterbox 0,0069 | ElevenLabs 0,0096 (Chatterbox lebih bersih)

Obat (satu baris ffmpeg):
  -af "treble=g=6:f=6500:width_type=o:width=1.2,equalizer=f=11000:t=h:width=4000:g=5"

Hasil: pita 8-12 kHz jadi βˆ’15,1 dB (ElevenLabs βˆ’15,9) β†’ selisih tinggal 0,8 dB

3. Kecepatan diatur dengan atempo, bukan exaggeration

exaggeration TINGGI = bicara LEBIH CEPAT (0.7 β†’ 10,68 dtk)
exaggeration RENDAH = lebih lambat (0.5)
Untuk memperlambat lagi, pakai atempo:
  0.85 = laju persis ElevenLabs (14,0 huruf/detik)
  0.80 = lebih santai (13,2 huruf/detik)

PENTING: atempo TIDAK merusak nada (F0 tetap 237-253 Hz di tempo 0,80-1,00)

πŸ“‹ RESEP 7 LANGKAH (semua terukur)

1. Model   : Chatterbox dasar ASLI + HANYA T3 Indonesia
2. Setelan : exaggeration 0.50 | cfg_weight 0.20 | temperature 0.90
3. Referensi: klip 3-4 dtk bernada sesuai target
              (F0 referensi MENENTUKAN F0 keluaran: ref 216 Hz β†’ keluar 216 Hz;
               ref 280 Hz β†’ keluar 261 Hz)
4. Pilih   : buat 16-24 percobaan, ambil F0 terdekat target
5. Perlambat: atempo 0.80-0.85
6. Bersihkan: treble + high-shelf EQ (lihat di atas)
7. Normalisasi: loudnorm I=-18:TP=-1.5:LRA=11

πŸ“œ Lisensi

Suara acuan (Luna) adalah suara milik pembuat model sendiri.


⚠️ Batasan yang jujur

1. Jeda masih 2,70 dtk vs ElevenLabs 1,97 dtk
   β†’ Chatterbox cenderung lebih banyak berhenti. Setelan sudah dicoba sampai batas.

2. Variasi antar percobaan besar (F0 195-253 Hz)
   β†’ wajib buat banyak percobaan lalu pilih

3. Output 24 kHz (ElevenLabs 44,1 kHz)
   β†’ TAPI ini BUKAN penyebab "serek": ElevenLabs juga 0% energi di atas 12 kHz.
     Yang bikin beda adalah pita 8-12 kHz, dan itu sudah diperbaiki dengan EQ.

4. Model ini khusus suara Luna
   β†’ untuk suara lain, ganti klip referensi; untuk bahasa lain, latih ulang
Downloads last month
4
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for dhyield/chatterbox-luna-id

Finetuned
(79)
this model

Space using dhyield/chatterbox-luna-id 1