Halaman ini menjelaskan praktik terbaik untuk menulis perintah saat menggunakan Gemini 3.8 Flash TTS dan Gemini 3.8 Flash-Lite TTS.
Untuk mengetahui sintaksis permintaan dan contoh kode, lihat Ringkasan Gemini TTS.
Model Gemini 3.8 TTS memperlakukan kolom text sebagai transkrip kata demi kata.
Arah tingkat giliran yang berkelanjutan masuk ke speech_metadata, dan peristiwa vokal point-in-time masuk inline dalam transkrip. Permintaan berikut menggabungkan
style tingkat giliran dengan jeda dan tag vokal inline:
{
"contents": [{
"role": "user",
"parts": [{
"text": "Wait... <short pause> did you hear that? <gasp> Someone's at the door.",
"speechMetadata": {"style": "whispered, nervous"}
}]
}],
"generationConfig": {
"responseModalities": ["AUDIO"],
"speechConfig": {"voiceConfig": {"voice": "Kore"}}
}
}
Kolom gaya versus tag inline
Pisahkan petunjuk performa Anda berdasarkan cakupan:
- Pengiriman tingkat giliran (
speech_metadata.style): Masukkan atribut pengiriman berkelanjutan, seperti emosi, prosodi, kecepatan keseluruhan, atau gaya pengiriman (seperti"whispering","out of breath","muttering", atau"sarcastic"), ke dalam kolomstyledarispeech_metadata. Untuk membuat karakter dan performa yang stabil di setiap giliran, desain persona di awal dalam Desain suara dan gunakanstylehanya untuk penyesuaian tingkat giliran opsional. - Peristiwa pada titik waktu (tag inline): Masukkan jeda singkat non-ucapan, tarikan napas, atau jeda inline di dalam transkrip menggunakan tanda kurung sudut (
<cough>,<breath>,<sigh>,<short pause>). Gunakan tanda kurung sudut (<...>) untuk kualitas audio tertinggi, dan tetap gunakan vokalisasi manusia, bukan efek suara non-vokal.
| Cakupan | Tempatkan di | Contoh |
|---|---|---|
| Tingkat giliran (dipertahankan di seluruh giliran) | speech_metadata.style |
"angry tone", "speaking rapidly", "out of breath", "whispers", "sarcastic" |
| Point-in-time (terjadi pada kata tertentu) | Inline di text (<...>) |
"<cough> Thank you all for coming tonight! <throat-clearing> As I was saying..." |
Kecepatan dan jeda
Anda dapat mengontrol ritme dan keheningan di tiga tingkat:
- Tanda baca dan elipsis: Gunakan koma, tanda hubung (
--), dan elipsis (...) untuk jeda alami. - Tag jeda inline: Sisipkan
<short pause>atau<long pause>di tempat pembicara harus menjeda. Contoh:"Hold on, let me think... <short pause> Alright, I've got it." - Kecepatan tingkat giliran: Tetapkan
"style": "speaking rapidly"atau"style": "speaking slowly"dispeech_metadatauntuk mengontrol kecepatan bicara untuk seluruh giliran.
Prosodi dan nada suara
Gunakan speech_metadata.style untuk mengontrol prosodi, nada, dan infleksi di seluruh giliran bicara. Contohnya, "style": "high pitch, cheerful and excited inflection" atau
"style": "monotone and flat". Jika emosi berubah di tengah dialog, pisahkan
skrip menjadi beberapa giliran, yang masing-masing memiliki style sendiri.
Penekanan
Gunakan huruf kapital untuk kata-kata dalam transkrip, bersama dengan tanda baca dan tag inline,
untuk menekankannya. Misalnya:
"This is a VERY important point!" atau
"It was a VERY long day <sigh> ... nobody listens anymore."
Ledakan vokal dan suara non-ucapan
Tempatkan vokalisasi manusia non-ucapan secara inline dalam tanda kurung sudut (<...>) di
titik tempat suara harus terjadi. Gunakan vokalisasi manusia, bukan efek suara non-vokal seperti tepuk tangan. Tag vokal yang direkomendasikan meliputi:
| Tag | Tag | Tag | Tag |
|---|---|---|---|
<argh> |
<breath> |
<heavy breath> |
<exhales> |
<cackle> |
<cheer> |
<chuckle>/<chuckles> |
<cough> |
<cry> |
<gasp> |
<giggle> |
<groan> |
<growl> |
<grunt> |
<grr> |
<hiss> |
<laugh>/<laughter> |
<moan> |
<pant> |
<pff>/<phew> |
<scream> |
<shout> |
<shriek> |
<sigh>/<sighs> |
<sneeze> |
<snicker> |
<snort> |
<sob> |
<throat-clearing> |
<tsk> |
<whimper> |
<whispers>/<whispering> |
<yawn> |
<short pause> |
<long pause> |
Saluran belakang dan ucapan yang tumpang-tindih
Dalam dialog multi-pembicara, sertakan reaksi pendengar dalam karakter pipa
(|reaction|) di dalam giliran pembicara aktif. Hal ini menciptakan saluran belakang alami atau ucapan yang tumpang-tindih tanpa giliran terpisah untuk setiap reaksi.
- Saluran belakang singkat: Tambahkan reaksi singkat pendengar di dalam giliran pembicara yang aktif:
- Giliran 1 (Pembicara A):
"So the launch is Thursday |oh hmm| Are we actually ready?" - Giliran 2 (Pembicara B):
"Ready enough |oh really?| The last blocker cleared this morning." - Giliran 3 (Pembicara A):
"Then let's ship it |absolutely| and watch the dashboards."
- Giliran 1 (Pembicara A):
- Ucapan yang tumpang-tindih dan berselang-seling: Gunakan beberapa segmen pipa untuk
mensimulasikan ucapan simultan. Fitur ini berfungsi paling baik dengan
gemini-3.8-flash-tts:- Hitung mundur atau chorus:
"Let's surprise him on three |ok| ready?"diikuti dengan"one. two. three. |happy| happy |birthday| birthday!" - Tumpang-tindih penuh:
"Hello |oh| there |my| it |goodness| must |gracious| be |would| almost |you| time |look| for |at that| dinner"
- Hitung mundur atau chorus:
Konsistensi di seluruh generasi dan hal yang harus dihindari
Ikuti panduan berikut untuk menjaga kestabilan identitas vokal di seluruh giliran:
- Merancang persona di awal dalam Desain suara, bukan blok gaya panjang:
Paragraf panjang
"Audio Profile"dan multi-butir"Director's Notes"yang dipertahankan dari model sebelumnya adalah penyebab paling umum terjadinya penyimpangan suara. Gunakan intuisi kreatif yang sama di awal dalam Desain suara untuk menghasilkan personavoice_...kustom yang persisten, lalu bawa ID suara tersebut melalui panggilan TTS Anda. - Mengandalkan referensi suara untuk stabilitas (menghilangkan meta-instruksi):
Model TTS Gemini 3.8 dilatih untuk berfokus pada referensi audio terlebih dahulu.
Jangan sertakan petunjuk yang meminta model untuk menjaga kestabilan suara (seperti
"do not switch speaker identity"atau"maintain identical timbre"). Teks perintah tambahan akan meningkatkan penyimpangan. Hapus petunjuk gaya yang tidak perlu dan biarkan model bervariasi secara alami di sekitar titik stabil yang disediakan oleh referensi suara. - Jangan mencoba mengubah karakteristik penutur yang tidak dapat diubah dalam
style: Hindari memasukkan perubahan usia, gender, nama, atau aksen permanen dalamspeech_metadata.style. Sebagai gantinya, pilih suara regional dari Extended Voice Library atau buat suara dengan Desain suara.
Alur kerja yang direkomendasikan
- Buat karakter sekali saja: Buat karakter Anda di Desain suara atau pilih suara regional dari Koleksi Suara yang Diperluas yang sesuai dengan bahasa target dan persona Anda.
- Tulis transkrip lisan alami dengan ketidaklancaran: Untuk mendapatkan kealamian
maksimal, tulis
textsebagai transkrip lisan yang nyata, termasuk ketidaklancaran dan keraguan percakapan alami (misalnya,"Oh uh yeah I think... hm, so that's interesting"). - Uji TTS biasa terlebih dahulu: Sintesiskan transkrip Anda dengan kolom
stylekosong terlebih dahulu. Sebagian besar permintaan tidak memerlukan petunjukstylesama sekali. - Tambahkan perintah
stylesingkat hanya untuk penyesuaian: Tambahkan stringstylesingkat (seperti"casual, friendly"atau"muttering, then reassuring") hanya untuk belokan yang memerlukan penyesuaian penayangan tertentu, dan gunakan kembali string singkat yang sama di seluruh belokan saat Anda menginginkan dasar pengukuran yang konsisten.
Dialog bolak-balik dan agen suara
Saat Anda membangun agen suara percakapan atau aplikasi multi-turn lainnya:
- Buat satu permintaan TTS untuk setiap giliran saat teks LLM tiba.
- Biarkan
voiceyang dikonfigurasi membawa identitas pembicara di seluruh giliran. Jangan mengirim ulang deskripsi persona yang panjang di setiap giliran. - Biarkan
stylekosong, atau kirim satu string pendek konstan untuk seluruh percakapan. - Membagi respons panjang agen menjadi giliran yang lebih pendek, bukan memperkuat perintah
style.
Langkah berikutnya
- Buat karakter yang konsisten dengan Desain suara.
- Perbarui perintah yang ditulis untuk model sebelumnya dengan panduan migrasi.