Update id/Chatterbox-TTS-Indonesian/README.md
Browse files
id/Chatterbox-TTS-Indonesian/README.md
CHANGED
|
@@ -1,9 +1,7 @@
|
|
| 1 |
---
|
| 2 |
-
license:
|
| 3 |
datasets:
|
| 4 |
-
- grandhigh/
|
| 5 |
-
language:
|
| 6 |
-
- id
|
| 7 |
base_model:
|
| 8 |
- ResembleAI/chatterbox
|
| 9 |
pipeline_tag: text-to-speech
|
|
@@ -16,48 +14,151 @@ tags:
|
|
| 16 |
- voice-cloning
|
| 17 |
- zero-shot
|
| 18 |
---
|
| 19 |
-
# Chatterbox TTS Indonesian 🎭
|
| 20 |
|
| 21 |
-
|
| 22 |
-
-
|
| 23 |
-
- 🗣️ **Training dataset**: [Esepak ID 5K Dataset](https://huggingface.co/datasets/grandhigh/Espeak-ID-5K)
|
| 24 |
|
| 25 |
-
|
| 26 |
|
| 27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
```python
|
| 30 |
import torch
|
| 31 |
-
from IPython.display import Audio
|
| 32 |
from chatterbox.tts import ChatterboxTTS
|
| 33 |
from huggingface_hub import hf_hub_download
|
| 34 |
from safetensors.torch import load_file
|
| 35 |
|
|
|
|
| 36 |
MODEL_REPO = "grandhigh/Chatterbox-TTS-Indonesian"
|
| 37 |
CHECKPOINT_FILENAME = "t3_cfg.safetensors"
|
| 38 |
-
TEXT_TO_SYNTHESIZE = "Bahwa sesungguhnya kemerdekaan itu ialah hak segala bangsa dan oleh sebab itu, maka penjajahan di atas dunia harus dihapuskan, karena tidak sesuai dengan perikemanusiaan dan perikeadilan."
|
| 39 |
|
|
|
|
| 40 |
model = ChatterboxTTS.from_pretrained(device="cuda")
|
|
|
|
|
|
|
| 41 |
checkpoint_path = hf_hub_download(repo_id=MODEL_REPO, filename=CHECKPOINT_FILENAME)
|
| 42 |
t3_state = load_file(checkpoint_path, device="cpu")
|
|
|
|
|
|
|
| 43 |
model.t3.load_state_dict(t3_state)
|
| 44 |
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
display(Audio(wav_audio.numpy(), rate=model.sr))
|
| 47 |
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
|
| 49 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
-
|
| 52 |
|
| 53 |
-
###
|
| 54 |
|
| 55 |
-
|
| 56 |
-
Base model: [Chatterbox](https://huggingface.co/ResembleAI/chatterbox)
|
| 57 |
-
License: [MIT](https://choosealicense.com/licenses/mit/)
|
| 58 |
|
| 59 |
-
|
| 60 |
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
datasets:
|
| 4 |
+
- grandhigh/SuaraGabungan-ID
|
|
|
|
|
|
|
| 5 |
base_model:
|
| 6 |
- ResembleAI/chatterbox
|
| 7 |
pipeline_tag: text-to-speech
|
|
|
|
| 14 |
- voice-cloning
|
| 15 |
- zero-shot
|
| 16 |
---
|
|
|
|
| 17 |
|
| 18 |
+
# Chatterbox-TTS-Indonesian
|
| 19 |
+
Model **Chatterbox-TTS-Indonesian** adalah model Text-to-Speech (TTS) yang dilatih ulang (fine-tuned) menggunakan arsitektur Chatterbox-TTS. Model ini dirancang khusus untuk menghasilkan suara Bahasa Indonesia yang alami dan berkualitas tinggi dari teks.
|
|
|
|
| 20 |
|
| 21 |
+
Model ini sangat ideal untuk berbagai aplikasi, seperti:
|
| 22 |
|
| 23 |
+
* Membaca artikel atau berita secara otomatis.
|
| 24 |
+
* Asisten suara atau bot interaktif.
|
| 25 |
+
* Pembuatan konten audio.
|
| 26 |
+
|
| 27 |
+
-----
|
| 28 |
+
### Dataset Pelatihan
|
| 29 |
+
|
| 30 |
+
Model ini dilatih ulang menggunakan dataset **SuaraGabungan-ID** yang kami kumpulkan. Dataset ini merupakan kompilasi dari beberapa sumber publik yang berbeda, yang dilisensikan secara permisif:
|
| 31 |
+
|
| 32 |
+
* **Espeak-ID-5K** (Lisensi MIT)
|
| 33 |
+
* **FLEURS** (dibuat oleh Google, Lisensi CC BY 4.0)
|
| 34 |
+
* **ind\_famal** (Lisensi Apache 2.0)
|
| 35 |
+
|
| 36 |
+
Untuk detail lisensi dan atribusi lengkap dari dataset, silakan kunjungi repositori [SuaraGabungan-ID](https://huggingface.co/datasets/grandhigh/SuaraGabungan-ID).
|
| 37 |
+
|
| 38 |
+
-----
|
| 39 |
+
### Tutorial Penggunaan
|
| 40 |
+
|
| 41 |
+
Anda memerlukan **Python 3.11** atau versi yang lebih baru dan GPU yang mendukung **CUDA** untuk kinerja optimal.
|
| 42 |
+
|
| 43 |
+
#### 1\. Instalasi
|
| 44 |
+
|
| 45 |
+
Mulailah dengan menginstal semua pustaka yang diperlukan.
|
| 46 |
+
|
| 47 |
+
```bash
|
| 48 |
+
!pip install chatterbox-tts
|
| 49 |
+
!pip install -U ml_dtypes
|
| 50 |
+
```
|
| 51 |
+
|
| 52 |
+
Jika Anda kesulitan menginstal pustaka pada versi yang lebih baru, gunakan kode berikut.
|
| 53 |
+
```bash
|
| 54 |
+
!pip install chatterbox-tts==0.1.1
|
| 55 |
+
!pip install -U ml_dtypes
|
| 56 |
+
!pip install transformers==4.44.2 peft==0.11.1
|
| 57 |
+
```
|
| 58 |
+
|
| 59 |
+
#### 2\. Inisialisasi Model & Unduh Checkpoint
|
| 60 |
+
|
| 61 |
+
Selanjutnya, unduh checkpoint model dan muat ke dalam model Chatterbox-TTS.
|
| 62 |
|
| 63 |
```python
|
| 64 |
import torch
|
| 65 |
+
from IPython.display import Audio, display
|
| 66 |
from chatterbox.tts import ChatterboxTTS
|
| 67 |
from huggingface_hub import hf_hub_download
|
| 68 |
from safetensors.torch import load_file
|
| 69 |
|
| 70 |
+
# Definisikan repo dan nama file checkpoint
|
| 71 |
MODEL_REPO = "grandhigh/Chatterbox-TTS-Indonesian"
|
| 72 |
CHECKPOINT_FILENAME = "t3_cfg.safetensors"
|
|
|
|
| 73 |
|
| 74 |
+
# Inisialisasi model di perangkat CUDA
|
| 75 |
model = ChatterboxTTS.from_pretrained(device="cuda")
|
| 76 |
+
|
| 77 |
+
# Unduh checkpoint dari Hugging Face Hub
|
| 78 |
checkpoint_path = hf_hub_download(repo_id=MODEL_REPO, filename=CHECKPOINT_FILENAME)
|
| 79 |
t3_state = load_file(checkpoint_path, device="cpu")
|
| 80 |
+
|
| 81 |
+
# Muat state_dict ke dalam model
|
| 82 |
model.t3.load_state_dict(t3_state)
|
| 83 |
|
| 84 |
+
# Kosongkan cache GPU
|
| 85 |
+
torch.cuda.empty_cache()
|
| 86 |
+
```
|
| 87 |
+
|
| 88 |
+
#### 3\. Sintesis Suara (Teks-ke-Suara)
|
| 89 |
+
|
| 90 |
+
Gunakan metode `model.generate()` untuk mengubah teks menjadi audio.
|
| 91 |
+
|
| 92 |
+
```python
|
| 93 |
+
TEXT_TO_SYNTHESIZE = "Bahwa sesungguhnya kemerdekaan itu ialah hak segala bangsa dan oleh sebab itu, maka penjajahan di atas dunia harus dihapuskan, karena tidak sesuai dengan perikemanusiaan dan perikeadilan."
|
| 94 |
+
|
| 95 |
+
# Hasilkan audio
|
| 96 |
+
wav_audio = model.generate(TEXT_TO_SYNTHESIZE)
|
| 97 |
+
|
| 98 |
+
# Tampilkan audio di notebook
|
| 99 |
display(Audio(wav_audio.numpy(), rate=model.sr))
|
| 100 |
```
|
| 101 |
+
<audio controls src="https://huggingface.co/grandhigh/Chatterbox-TTS-Indonesian/resolve/main/example1.wav">Your browser does not support audio.</audio>
|
| 102 |
+
|
| 103 |
+
#### 4\. Sintesis Suara dengan Audio Prompt (Voice Cloning)
|
| 104 |
+
|
| 105 |
+
Anda juga dapat menggunakan audio prompt untuk mempersonalisasi suara hasil sintesis. Model ini akan mencoba meniru gaya, nada, dan timbre dari suara pada file audio yang Anda berikan.
|
| 106 |
|
| 107 |
+
**Catatan:** Pastikan Anda memiliki file audio (`input.wav`) yang tersedia di lokasi yang ditentukan. Anda juga dapat menggunakan file dari URL.
|
| 108 |
+
|
| 109 |
+
```python
|
| 110 |
+
# Ganti dengan path ke file audio prompt Anda
|
| 111 |
+
audio_prompt_path = '/content/input.wav'
|
| 112 |
+
|
| 113 |
+
# Hasilkan audio dengan prompt dan spesifikkan bahasa
|
| 114 |
+
wav_audio_clone = model.generate(
|
| 115 |
+
TEXT_TO_SYNTHESIZE,
|
| 116 |
+
audio_prompt_path=audio_prompt_path
|
| 117 |
+
)
|
| 118 |
+
|
| 119 |
+
# Tampilkan audio di notebook
|
| 120 |
+
display(Audio(wav_audio_clone.numpy(), rate=model.sr))
|
| 121 |
+
```
|
| 122 |
+
<audio controls src="https://huggingface.co/grandhigh/Chatterbox-TTS-Indonesian/resolve/main/example2.wav">Your browser does not support audio.</audio>
|
| 123 |
|
| 124 |
+
-----
|
| 125 |
|
| 126 |
+
### Demo Interaktif (Jupyter Notebook)
|
| 127 |
|
| 128 |
+
Anda dapat mencoba model ini secara interaktif menggunakan Jupyter Notebook yang tersedia di repositori ini. Notebook ini akan memandu Anda dari instalasi hingga menghasilkan suara TTS.
|
|
|
|
|
|
|
| 129 |
|
| 130 |
+
**[Buka di Google Colab](https://colab.research.google.com/#fileId=https://huggingface.co/grandhigh/Chatterbox-TTS-Indonesian/blob/main/demo.ipynb)**
|
| 131 |
|
| 132 |
+
-----
|
| 133 |
+
### Lisensi
|
| 134 |
+
|
| 135 |
+
Model ini dilisensikan di bawah **Lisensi Apache 2.0**. Lisensi ini memungkinkan penggunaan, modifikasi, dan distribusi model secara bebas, baik untuk tujuan non-komersial maupun komersial, dengan kewajiban untuk menyertakan pemberitahuan lisensi dan atribusi yang sesuai.
|
| 136 |
+
|
| 137 |
+
-----
|
| 138 |
+
### Sitasi
|
| 139 |
+
|
| 140 |
+
Jika Anda menggunakan model ini dalam publikasi ilmiah atau proyek riset, harap sitasi model dasar dan dataset yang digunakan untuk pelatihannya.
|
| 141 |
+
|
| 142 |
+
#### Model Dasar (Chatterbox-TTS)
|
| 143 |
+
|
| 144 |
+
```
|
| 145 |
+
@misc{chatterboxtts2025,
|
| 146 |
+
author = {{Resemble AI}},
|
| 147 |
+
title = {{Chatterbox-TTS}},
|
| 148 |
+
year = {2025},
|
| 149 |
+
howpublished = {\url{https://github.com/resemble-ai/chatterbox}},
|
| 150 |
+
note = {GitHub repository}
|
| 151 |
+
}
|
| 152 |
+
```
|
| 153 |
+
|
| 154 |
+
#### Dataset (FLEURS)
|
| 155 |
+
|
| 156 |
+
```
|
| 157 |
+
@article{fleurs2022arxiv,
|
| 158 |
+
title = {FLEURS: Few-shot Learning Evaluation of Universal Representations of Speech},
|
| 159 |
+
author = {Conneau, Alexis and Ma, Min and Khanuja, Simran and Zhang, Yu and Axelrod, Vera and Dalmia, Siddharth and Riesa, Jason and Rivera, Clara and Bapna, Ankur},
|
| 160 |
+
journal={arXiv preprint arXiv:2205.12446},
|
| 161 |
+
url = {https://arxiv.org/abs/2205.12446},
|
| 162 |
+
year = {2022},
|
| 163 |
+
}
|
| 164 |
+
```
|