Melihat tagihan ElevenLabs atau OpenAI TTS yang datang setiap bulan seringkali membuat sesak napas. Bagi pengembang game indie, biaya panggilan API adalah pengeluaran tetap yang bisa mencekik kelangsungan proyek. Kokoro 82M adalah model open-source dengan lisensi Apache 2.0 yang mampu menghasilkan suara kelas komersial di lingkungan lokal. Dengan menjalankan model ringan berukuran 82 juta parameter ini di PC sendiri, Anda tidak perlu lagi didikte oleh perubahan kebijakan server eksternal.
Optimasi Penggunaan CPU dan Memastikan Responsivitas Real-time
Kekhawatiran terbesar saat menjalankan model lokal adalah terjadinya stuttering atau penurunan frame rate pada game. Untuk mencegah beban CPU yang berlebihan saat sintesis suara, kontrol terhadap thread komputasi harus dilakukan secara paksa. Kokoro 82M mengikuti struktur StyleTTS 2, sehingga paling efisien jika dijalankan menggunakan ONNX Runtime.
- Alokasi Core Fisik: Batasi
intra_op_num_threadspadaSessionOptionsONNX hingga kurang dari setengah total core yang tersedia. Jika Anda menggunakan CPU 8-core, mengalokasikan 2 hingga 4 core saja sudah cukup. - Aktivasi Memory Arena: Aktifkan
enable_cpu_mem_arenauntuk mencegah fragmentasi memori. Hal ini akan meminimalisir lag halus yang muncul saat audio dibuat di latar belakang. - Streaming Playback: Jangan menunggu sampai seluruh kalimat selesai diproses. Gunakan antrean
asynciountuk segera mengirimkan potongan data pertama ke perangkat audio begitu tersedia.
Dengan pengaturan ini, Anda dapat menekan waktu hingga suara pertama muncul (TTFA) hingga di bawah 0,5 detik.
Logika Pra-pemrosesan untuk Memperbaiki Pengucapan yang Kurang Jelas
Sehebat apa pun Kokoro 82M, imersi akan rusak jika ia membaca 'API' sebagai 'api' (dalam bahasa Indonesia) atau gagal memproses '10%'. Karena model ini dilatih berdasarkan International Phonetic Alphabet (IPA), proses normalisasi teks input sangatlah krusial.
Jangan hanya memasukkan teks mentah, buatlah kamus pemetaan menggunakan regular expression. r'\bAPI\b' harus diubah menjadi 'e-pi-ai', dan angka harus diuraikan menjadi teks sesuai konteks, seperti 'satu buah' atau 'satu persen'. Khusus untuk aturan pelafalan bahasa tertentu, penggunaan library pembantu seperti korean-text-normalizer (atau padanannya) sangat disarankan. Ini dapat menghemat waktu hingga 5 jam per minggu yang biasanya habis untuk mengedit file audio secara manual.
Membangun Server FastAPI untuk Mempertahankan Kode yang Sudah Ada
Anda tidak perlu membongkar seluruh kode SDK OpenAI yang sudah digunakan. Dengan menjalankan server ringan menggunakan FastAPI di localhost, Anda bisa mengganti API berbayar hanya dengan mengubah satu baris alamat endpoint.
- Simetri Endpoint: Buat jalur
/v1/audio/speechdan desain agar dapat menerima data JSON sesuai spesifikasi OpenAI. - Penerapan Kuantisasi: Gunakan model kuantisasi
INT8berukuran 92,4MB. Kecepatan inferensinya lebih dari 3 kali lipat lebih cepat dibanding model standar, namun perbedaan kualitas suaranya hampir tidak terdengar oleh telinga manusia. - Konversi Format: Olah raw data yang dihasilkan menggunakan
pydubuntuk segera dikembalikan dalam format.mp3atau.wav.
Dengan cara ini, Anda tetap bisa menggunakan basis kode yang bergantung pada layanan berbayar sambil menghapus biaya langganan bulanan sepenuhnya.
Mencegah Kerusakan Nada pada Kalimat Panjang
Model ringan memiliki keterbatasan di mana pengucapan pada bagian akhir seringkali menjadi kacau atau tercampur suara robot saat memproses kalimat panjang di atas 500 karakter. Untuk mengatasinya, kalimat harus dipecah secara cerdas.
Bagi kalimat berdasarkan tanda titik atau koma, lalu gunakan AudioSegment.silent untuk memasukkan jeda hening secara paksa selama 200 hingga 500 ms di antara kalimat. Menyimulasikan siklus napas manusia saja sudah cukup untuk menghilangkan kecanggungan model. Kuncinya bukanlah sekadar membagi teks, melainkan logika pemutaran seamless yang menyambungkan potongan-potongan audio secara alami. Mengotomatiskan proses ini memungkinkan dialog panjang tetap terdengar natural tanpa terputus.
