- Pembuatan suara lokal kini bisa menghasilkan kualitas yang cukup realistis bahkan tanpa GPU khusus; dalam contoh lingkungan ini, GPU dibiarkan untuk inferensi LLM sementara TTS ditangani oleh CPU
- Kokoro adalah model 82M parameter, tetapi mendukung berbagai bahasa seperti Inggris, Mandarin, dan Hindi, menyediakan sekitar 50 suara, serta paling dioptimalkan untuk bahasa Inggris
- Konfigurasi paling mudah adalah menjalankan container Kokoro-FastAPI; model suara sudah disertakan sebelumnya sehingga ukuran image sekitar 5GB
- Menyediakan antarmuka yang kompatibel dengan OpenAI speech API, sehingga program yang sudah berbasis API suara tersebut relatif mudah dialihkan untuk memakai TTS lokal
- Sintesis paragraf pendek memakan waktu sekitar 4,7 detik di Intel Core i7-4770K, 4,5 detik di Apple M2 Pro, dan 1,5 detik di AMD Ryzen 7 8745HS, sehingga memungkinkan pola penggunaan untuk mendengarkan alih-alih membaca respons LLM lokal
Kokoro TTS yang Berjalan Hanya dengan CPU
- Beberapa tahun lalu, pembuatan suara lokal yang realistis masih sulit, tetapi kini Anda bisa menghasilkan suara berkualitas tinggi tanpa menyerahkan data pribadi ke layanan eksternal
- Contoh ini dijalankan pada mesin GTX 1080 Ti untuk LLM lokal yang pernah dibahas sebelumnya
- GPU khusus pada mesin tersebut dicadangkan untuk inferensi LLM
- Sintesis suara hanya menggunakan CPU
- Model yang digunakan adalah Kokoro
- Ini adalah model dengan 82M parameter
- Menghasilkan suara realistis dalam berbagai bahasa seperti Inggris, Mandarin, dan Hindi
- Menyediakan sekitar 50 suara, dan terutama dioptimalkan untuk bahasa Inggris
- Pengaturan server paling sederhana adalah menggunakan image container Kokoro-FastAPI
- Sudah menyertakan model suara yang diunduh sebelumnya
- Karena itu, ukuran image container sekitar 5GB
- Perintah menjalankan Docker atau Podman:
podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu - Setelah berjalan, UI web dapat dibuka di
localhost:8880/web; Anda bisa memasukkan teks untuk menghasilkan audio dan memutarnya otomatis
API Kompatibel OpenAI dan Contoh Eksekusi
- Selain UI web, container Kokoro-FastAPI juga menyediakan antarmuka TTS yang kompatibel dengan OpenAI speech API
- Program yang sudah menggunakan OpenAI speech API dapat disesuaikan dengan mudah
- Contoh kode JavaScript dan Python tersedia di github.com/remotebrowser/speak
- Contoh menjalankan JavaScript:
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1 ./speak.js "Good morning! How are you today?" - Contoh menjalankan Python:
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1 ./speak.py "Good morning! How are you today?" - Audio yang dihasilkan disimpan sebagai file MP3
- Jika SoX atau Sound eXchange terpasang, audio akan diputar otomatis
- Informasi tentang SoX dapat dilihat di sox.sf.net
- Untuk memilih suara lain, atur variabel lingkungan
TTS_VOICEexport TTS_API_BASE_URL=http://127.0.0.1:8880/v1 export TTS_VOICE="am_eric" ./speak.js "Good morning! How are you today?" - Daftar lengkap suara yang tersedia ada di Kokoro VOICES.md
Waktu Sintesis per CPU dan Alternatif
- Dari hasil sintesis paragraf uji singkat dengan suara
am_eric, waktu pembuatan terbaik dari 3 kali eksekusi adalah sebagai berikut- Intel Core i7-4770K: 4,7 detik
- Apple M2 Pro: 4,5 detik
- AMD Ryzen 7 8745HS: 1,5 detik
- CPU pertama dalam daftar adalah model yang dirilis 12 tahun lalu, dan CPU lama pun masih mampu menangani pekerjaan ini
- Sebagai alternatif TTS berbentuk container yang kompatibel dengan OpenAI, ada juga Speaches
- Berbeda dari Kokoro-FastAPI, image containernya tidak menyertakan bobot suara; bobot harus diunduh secara eksplisit melalui API
- Juga menyediakan fitur STT berkualitas tinggi, termasuk Whisper
- Jika aplikasi membutuhkan TTS dan STT sekaligus, ini bisa menjadi opsi untuk menanganinya di satu tempat
- Jika digabungkan dengan LLM lokal, ini memungkinkan pola penggunaan untuk mendengarkan respons LLM dalam bentuk suara alih-alih membacanya
1 komentar
Komentar Hacker News
Saya cukup banyak memakai Kokoro di produk aksesibilitas, dan enak dipakai karena tidak perlu GPU NVidia seperti yang diminta banyak TTS lain dengan kualitas serupa
Saya terutama suka karena bisa memasukkan panduan pelafalan IPA secara manual. Soalnya ada kata penting yang homograf sehingga Kokoro kadang salah melafalkannya
Namun, performanya lemah jika diminta mengucapkan hanya satu-dua kata. Misalnya kalau hanya diminta mengucapkan "six", hampir selalu terdengar seperti "ah-six-ah". Sebaliknya, kalau memasukkan kalimat yang lebih panjang seperti "The word is: six", ia membacanya dengan benar, dan karena API Kokoro memberi timestamp tiap kata dalam kalimat, kita bisa memotong kata yang diinginkan saja dengan skrip Python. Intonasinya agak datar, tetapi sangat stabil
Saat bertanya di Discord, saya diberi tahu ini adalah batasan dari skala parameter yang kecil, dan untuk membela Kokoro, suara eleven-labs pun kadang mengalami masalah seperti ini
Hampir semua penggunaan saya adalah kata tunggal, jadi tidak cocok karena saya tidak ingin repot menangani proses menggabungkan atau memisahkan input dan output
Ini menarik karena memang topik yang saya minati
Dulu saya memelihara whisperx secara terpisah, karena menurut saya bukan hanya transkripsi sederhana yang penting, tetapi juga timing dan identifikasi pembicara yang diperlukan untuk penggunaan seperti subtitle. Namun, ia bergantung pada pyannote, dan lisensinya ambigu sehingga otomatisasi instalasinya juga lebih rumit
Jadi saya mencari sesuatu yang memberi transkripsi lebih baik sekaligus mendukung diarization pembicara, lalu memilih parakeet untuk transkripsi dan softformer untuk pemisahan pembicara. Namun, sebagian besar engine yang tersedia tidak menyertakan softformer
Saya membuat server kompatibel OpenAI untuk parakeet-rs yang mendukung softformer (https://github.com/altunenes/parakeet-rs), dan sedang memakainya bersama OpenWhispr, aplikasi transkripsi desktop yang menangani berbagai fitur praktis
Karena GPU sedang dipakai untuk hal lain, saya belum menambahkan jalur GPU, dan saat ini transkripsi hanya berjalan di CPU, tetapi kemampuan menjalankan transkripsi secara lokal kapan pun diinginkan terasa sangat kuat
Untuk pekerjaan yang ingin dilakukan, memakai Senko bersama parakeet membuat pemisahan pembicara berjalan sangat baik. Di MacBook saya, itu lebih cepat dan akurat daripada Pyannote dan whisper
Model ini benar-benar bagus. Sayang saya hampir tidak bisa mencoba model lokal karena kekurangan GPU, tetapi sekitar sebulan lalu saya memasang Kokoro di GTX1650 dan membuat TTS untuk membacakan tulisan
Di WebUI sederhana, saya menempelkan URL atau sekumpulan teks yang disalin, lalu Python membersihkannya dan mengirimkannya ke Kokoro untuk membuat TTS, kemudian hasilnya disediakan sebagai RSS untuk Apple Podcasts. Saya memakainya untuk mengejar bacaan artikel atau blog yang saya simpan saat berkendara pagi
Suatu saat saya ingin membuat sesuatu seperti NotebookLM yang membacakan item berita yang saya simpan layaknya acara radio pagi, dengan beberapa suara yang dipisah-pisahkan
Beberapa bulan lalu saya membuat ekstensi Chrome yang melakukan ini di halaman web mana pun, sekaligus menyorot kalimat yang sedang dibaca
Karena bisa melewati tahap menjalankan container dan menyalin-menempel isi situs web, ini mungkin berguna bagi orang yang ingin memakai Kokoro dengan lebih nyaman
https://chromewebstore.google.com/detail/local-reader-ai-on-...
TTS benar-benar sudah banyak berkembang dan pilihannya juga banyak. Ada Kokoro, dan Pocket TTS adalah model kecil 100M yang juga bisa melakukan kloning suara
Chatterbox Turbo sedikit lebih besar tetapi mendukung kontrol emosi suara dengan lebih baik, sedangkan Fish Audio S2 lebih besar lagi tetapi memungkinkan kontrol nada dan emosi yang jauh lebih rinci, praktis tanpa batas. Semuanya mudah berjalan di MacBook
Repositori yang bagus untuk mulai membandingkan model TTS adalah https://github.com/5uck1ess/tts-bench
Mengingat Kokoro adalah model yang dirilis 1,5 tahun lalu, ini benar-benar model yang bagus, dan performanya sangat baik untuk ukurannya: https://5uck1ess.github.io/tts-bench/scores.html
Dulu saya pernah memakai Piper untuk TTS lokal, dan Kokoro juga terlihat menarik
Sangat keren. Karena saya memakai Linux, saya tidak bisa menggunakan Aqua atau Whipsrflow dan semacamnya, jadi sejak Januari saya memakai solusi buatan sendiri
Baru-baru ini saya merapikannya dan membuatnya mudah dipasang. Kalau tertarik, bisa dilihat di sini: https://github.com/Hugo0/voiceio
Seiring waktu ia membaik dengan sendirinya, berjalan di mesin lokal, dan secara umum merupakan perangkat lunak yang cukup layak dipakai. Sekarang 60% interaksi saya dengan PC murni memakai input suara
Saya sangat menyukai Kokoro. Saya memakainya untuk membacakan ebook yang tidak punya audiobook, dan untuk tujuan itu hasilnya cukup baik
Saya sudah membuat skrip Python yang membaca epub/html, menjalankan model, lalu menulis mp3
Jumlah bahasa yang didukung Kokoro terbatas, jadi untuk dukungan bahasa Belanda saya harus memakai model lain, tetapi kualitasnya tidak sebaik itu. Biasanya jauh lebih lambat dan juga lebih besar, sehingga terlalu besar untuk VRAM 8GB
Pada akhirnya saya bahkan mencoba TTS bawaan Windows; suaranya memang tidak terdengar alami, tetapi setidaknya bisa melafalkan sebagian besar kata dan sangat cepat
Selama sehari saya mengutak-atik AI dan menghapus layer mahal dari Kokoro, lalu hasilnya berjalan 3 kali lebih cepat di CPU ponsel dan MNN
Kualitasnya sangat mirip. Bisa berbeda tergantung lingkungan, tetapi skripnya ada di sini: https://github.com/DavidVentura/translator-rs/blob/master/sc...