implementasi penggunaan model gemini-2.5-flash-preview-tts, model ini digunakan untuk membuat tulisan menjadi suara, atau istilah inggrisnya text to speech
- basic, cara penggunaan biasa
- rotation, merotasi api key
- chunk, memisah kata
- main, mengoptimalkan limitasi rpd (request per day), perbaikan chunk menjadi jumlah kata, penambahan delay menghindari rpm (request per minute), menggabungkan audio ketika terjadi chunking
- install uv
powershell -c "irm https://astral.sh/uv/install.ps1 | more" - jalankan uv:
uv sync - buat file: api-keys.txt
- taruh api keynya didalam api-keys.txt, pisah dengan baris baru untuk merotasinya dapatkan api key disini
- taruh
ffmpeg.exekedalam folder, pastikan sejajar dengan filemain.py - jalankan program:
uv run main.py
| Satuan Limitasi | Singkatan | Batas (Free Tier) | Deskripsi |
|---|---|---|---|
| Requests Per Minute | RPM | 3 | Jumlah maksimum permintaan (panggilan API) yang dapat Anda lakukan per menit. |
| Tokens Per Minute | TPM | 10.000 | Jumlah maksimum token teks input yang dapat Anda kirim per menit. |
| Requests Per Day | RPD | 15 | Jumlah maksimum permintaan (panggilan API) yang dapat Anda lakukan dalam satu hari (24 jam). |
voices = [
# Suara dari daftar Anda sebelumnya
{'name': 'Zephyr', 'style': 'Wanita - Jelas & Bersemangat (Iklan, E-Learning)'},
{'name': 'Puck', 'style': 'Pria - Ceria & Riang (Dongeng Anak, Vlog)'},
{'name': 'Charon', 'style': 'Pria - Berwibawa & Informatif (Berita, Dokumenter)'},
{'name': 'Kore', 'style': 'Wanita - Tegas & Profesional (Presentasi, Pengumuman)'},
{'name': 'Fenrir', 'style': 'Pria - Penuh Semangat (Iklan Enerjik, Video Hype)'},
{'name': 'Leda', 'style': 'Wanita - Muda & Enerjik (Podcast Remaja, Iklan)'},
{'name': 'Orus', 'style': 'Pria - Tegas & Dalam (Narasi Dramatis, Trailer Film)'},
{'name': 'Aoede', 'style': 'Wanita - Ringan & Ramah (Podcast Kasual, Narasi Santai)'},
# Kategori Wanita/Female:
{'name': 'Callirrhoe', 'style': 'Wanita - Santai & Mengalir (Narasi E-book, Panduan)'},
{'name': 'Autonoe', 'style': 'Wanita - Cerdas & Jelas (Konten Edukasi, Tutorial)'},
{'name': 'Despina', 'style': 'Wanita - Halus & Menenangkan (Layanan Pelanggan, Meditasi)'},
{'name': 'Erinome', 'style': 'Wanita - Jernih & Terstruktur (Presentasi Teknis, Berita)'},
{'name': 'Gacrux', 'style': 'Wanita - Dewasa & Berwibawa (Pengumuman Resmi, Dokumenter)'},
{'name': 'Laomedeia', 'style': 'Wanita - Penuh Semangat & Cepat (Review Produk, Podcast)'},
{'name': 'Pulcherrima', 'style': 'Wanita - Antusias & Menonjol (Iklan, Konten Populer)'},
{'name': 'Achernar', 'style': 'Wanita - Lembut & Tenang (Asisten Pribadi, Suara Latar)'},
{'name': 'Schedar', 'style': 'Wanita - Netral & Stabil (Narasi Umum, Instruksi)'},
{'name': 'Sulafat', 'style': 'Wanita - Hangat & Meyakinkan (Konsultasi, Penjualan)'},
{'name': 'Vindemiatrix', 'style': 'Wanita - Lemah Lembut & Anggun (Narasi Fiksi, Iklan Mewah)'},
# Kategori Pria/Male:
{'name': 'Enceladus', 'style': 'Pria - Bergetar & Emosional (Narasi Dramatis, Podcast Karakter)'},
{'name': 'Iapetus', 'style': 'Pria - Jernih & Lugas (Instruksi Teknis, Berita Bisnis)'},
{'name': 'Umbriel', 'style': 'Pria - Mudah Diterima & Kasual (Vlog, Panduan Santai)'},
{'name': 'Algieba', 'style': 'Pria - Halus & Berkarisma (Narasi Film, Audio Drama)'},
{'name': 'Algenib', 'style': 'Pria - Berat & Bertekstur (Trailer, Suara Karakter)'},
{'name': 'Rasalgethi', 'style': 'Pria - Menginformasikan & Berstruktur (Laporan, Berita Formal)'},
{'name': 'Achird', 'style': 'Pria - Ramah & Bersahabat (Sapaan, Pesan Otomatis)'},
{'name': 'Alnilam', 'style': 'Pria - Tegas & Mendalam (Pidato, Komentar Olahraga)'},
{'name': 'Zubenelgenubi', 'style': 'Pria - Santai & Tidak Formal (Obrolan, Narasi Ringan)'},
{'name': 'Sadachbia', 'style': 'Pria - Penuh Semangat & Energik (Iklan, Promosi)'},
{'name': 'Sadaltager', 'style': 'Pria - Berpengetahuan & Otoritatif (Lektor, Kursus Online)'},
]
| Name | Style |
|---|---|
| Zephyr | Jelas & Bersemangat (Iklan, E-Learning) |
| Kore | Tegas & Profesional (Presentasi, Pengumuman) |
| Leda | Muda & Enerjik (Podcast Remaja, Iklan) |
| Aoede | Ringan & Ramah (Podcast Kasual, Narasi Santai) |
| Callirrhoe | Santai & Mengalir (Narasi E-book, Panduan) |
| Autonoe | Cerdas & Jelas (Konten Edukasi, Tutorial) |
| Despina | Halus & Menenangkan (Layanan Pelanggan, Meditasi) |
| Erinome | Jernih & Terstruktur (Presentasi Teknis, Berita) |
| Gacrux | Dewasa & Berwibawa (Pengumuman Resmi, Dokumenter) |
| Laomedeia | Penuh Semangat & Cepat (Review Produk, Podcast) |
| Pulcherrima | Antusias & Menonjol (Iklan, Konten Populer) |
| Achernar | Lembut & Tenang (Asisten Pribadi, Suara Latar) |
| Schedar | Netral & Stabil (Narasi Umum, Instruksi) |
| Sulafat | Hangat & Meyakinkan (Konsultasi, Penjualan) |
| Vindemiatrix | Lemah Lembut & Anggun (Narasi Fiksi, Iklan Mewah) |
| Name | Style |
|---|---|
| Puck | Ceria & Riang (Dongeng Anak, Vlog) |
| Charon | Berwibawa & Informatif (Berita, Dokumenter) |
| Fenrir | Penuh Semangat (Iklan Enerjik, Video Hype) |
| Orus | Tegas & Dalam (Narasi Dramatis, Trailer Film) |
| Enceladus | Bergetar & Emosional (Narasi Dramatis, Podcast Karakter) |
| Iapetus | Jernih & Lugas (Instruksi Teknis, Berita Bisnis) |
| Umbriel | Mudah Diterima & Kasual (Vlog, Panduan Santai) |
| Algieba | Halus & Berkarisma (Narasi Film, Audio Drama) |
| Algenib | Berat & Bertekstur (Trailer, Suara Karakter) |
| Rasalgethi | Menginformasikan & Berstruktur (Laporan, Berita Formal) |
| Achird | Ramah & Bersahabat (Sapaan, Pesan Otomatis) |
| Alnilam | Tegas & Mendalam (Pidato, Komentar Olahraga) |
| Zubenelgenubi | Santai & Tidak Formal (Obrolan, Narasi Ringan) |
| Sadachbia | Penuh Semangat & Energik (Iklan, Promosi) |
| Sadaltager | Berpengetahuan & Otoritatif (Lektor, Kursus Online) |
Anda dapat memulai chunk teks Anda dengan tag di bawah ini. Pastikan untuk menjaga konsistensi format.
Say in a <style-modifier> <emotion-or-tone> <speech-rate> <pitch-modifier> <volume-modifier>:
"Teks yang ingin diucapkan dengan gaya tersebut"
- gaya berbicara marah: hello broo whatsup !!!
- gaya berbicara senang: mantap sekali bro !!!
[INSTRUKSI_SUARA: Bicara dengan energik dan punchy. Seperti ngobrol santai dengan teman. Cepat tapi jelas. Seperti kakak yang excited cerita ke adik.]
[TEKS_SCRIPT]
TEXTNYA MASUKIN
[JEDA: 0.2 detik]
[INSTRUKSI_SUARA: Semangat, persuasif, hangat]
[TEKS_SCRIPT]
TEXTNYA MASUKIN
[JEDA: 0.2 detik]
[INSTRUKSI_SUARA: Jelas dan to the point]
[TEKS_SCRIPT]
TEXTNYA MASUKIN
[JEDA: 0.2 detik]
[INSTRUKSI_SUARA: Casual, mengundang, ceria]
[TEKS_SCRIPT]
TEXTNYA MASUKIN
- Model TTS akan berusaha mencocokkan gaya yang Anda berikan.
- Anda dapat menggunakan tag gaya di awal setiap chunk untuk memastikan gaya tetap konsisten, terutama setelah pemecahan otomatis berdasarkan batas karakter.