本頁面說明使用 Gemini 3.8 Flash TTS 和 Gemini 3.8 Flash-Lite TTS 時,撰寫提示的最佳做法。
如需要求語法和程式碼範例,請參閱「Gemini TTS 總覽」。
Gemini 3.8 TTS 模型會將 text 欄位視為逐字稿。
持續的轉向層級方向會進入 speech_metadata,而時間點語音事件則會內嵌在轉錄稿中。下列要求會結合回合層級的 style,以及內嵌語音標記和暫停:
{
"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"}}
}
}
樣式欄位與內嵌標記
請依範圍劃分成效指令:
- 回合層級的傳達 (
speech_metadata.style):將持續傳達的屬性 (例如情緒、韻律、整體速度或傳達風格 (如"whispering"、"out of breath"、"muttering"或"sarcastic")) 放入speech_metadata的style欄位。如要建立穩定一致的角色和對話,請預先在語音設計中設計角色,並僅使用style進行選用的回合層級調整。 - 時間點事件 (行內標記):使用角括號 (
<cough>、<breath>、<sigh>、<short pause>),在轉錄稿中行內插入短暫的非語音聲音、呼吸或停頓。如要獲得最高音質,請使用角括號 (<...>),並只標記人聲,而非非人聲的音效。
| 範圍 | 放置位置 | 範例 |
|---|---|---|
| 輪次層級 (在輪次中持續) | speech_metadata.style |
"angry tone"、"speaking rapidly"、"out of breath"、"whispers"、"sarcastic" |
| 時間點 (在特定字詞出現時發生) | 在 text 中內嵌 (<...>) |
"<cough> Thank you all for coming tonight! <throat-clearing> As I was saying..." |
節奏和暫停
你可以在三個層級控制節奏和靜音:
- 標點符號和刪節號:使用逗號、破折號 (
--) 和刪節號 (...) 模擬自然猶豫。 - 內嵌暫停標記:在朗讀者應暫停的位置插入
<short pause>或<long pause>。例如:"Hold on, let me think... <short pause> Alright, I've got it." - 回合層級步調:在
speech_metadata中設定"style": "speaking rapidly"或"style": "speaking slowly",即可控制整個回合的語速。
韻律和音調
使用 speech_metadata.style 控制單一回合的韻律、音調和語調。例如 "style": "high pitch, cheerful and excited inflection" 或 "style": "monotone and flat"。如果對話中途出現情緒變化,請將腳本分成多個回合,每個回合都有自己的 style。
強調
在轉錄稿中將字詞改為大寫,並加上標點符號和行內標記,藉此強調這些字詞。例如:
"This is a VERY important point!" 或
"It was a VERY long day <sigh> ... nobody listens anymore."
語音爆發和非語音聲音
在音效應出現的位置,以角括號 (<...>) 內嵌非語音的人類發聲。使用人類發出的聲音,而非掌聲等非人聲音效。建議使用的語音標記包括:
| 標記 | 標記 | 標記 | 標記 |
|---|---|---|---|
<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> |
附帶訊息和語音重疊
在多位講者對話中,請在主動講者的回合內,以管道字元 (|reaction|) 包裝監聽器反應。這樣一來,系統就會自然建立後方通道或重疊語音,不必為每個反應分別建立回合。
- 簡短的附帶回應:在說話者發言時,加入簡短的聽者反應:
- 第 1 輪 (講者 A):
"So the launch is Thursday |oh hmm| Are we actually ready?" - 第 2 輪 (講者 B):
"Ready enough |oh really?| The last blocker cleared this morning." - 第 3 輪 (講者 A):
"Then let's ship it |absolutely| and watch the dashboards."
- 第 1 輪 (講者 A):
- 語音重疊和交錯:使用多個管道區隔模擬同時說話。最適合搭配以下裝置使用:
gemini-3.8-flash-tts- 倒數或副歌:
"Let's surprise him on three |ok| ready?",然後說出"one. two. three. |happy| happy |birthday| birthday!" - 完全重疊:
"Hello |oh| there |my| it |goodness| must |gracious| be |would| almost |you| time |look| for |at that| dinner"
- 倒數或副歌:
各代裝置的一致性及應避免的事項
請按照下列指引操作,確保語音身分在對話過程中保持穩定:
- 在語音設計中預先設計角色,而非使用長篇樣式區塊:
從舊版模型沿用長篇
"Audio Profile"段落和多個項目符號"Director's Notes",是造成語音漂移最常見的原因。 在語音設計中,一開始就運用相同的創意直覺,生成永久的自訂voice_...角色,然後在 TTS 呼叫中帶入該語音 ID。 - 依據語音參考資料確保穩定性 (省略元指令):
Gemini 3.8 TTS 模型會先根據音訊參考資料進行訓練。
請勿加入指示,要求模型保持語音穩定 (例如
"do not switch speaker identity"或"maintain identical timbre")。 額外的提示文字會增加漂移。捨棄不必要的風格指令,讓模型根據語音參考提供的穩定點自然變化。 - 請勿嘗試在
style中變更不可變更的說話者特徵:請勿在speech_metadata.style中加入年齡、性別、姓名或永久口音變化。請改為從擴充語音庫中選擇地區性語音,或使用語音設計建立語音。
建議工作流程
- 建立角色一次:在「語音設計」中建立角色,或從「擴充語音庫」中選取符合目標語言和角色的區域語音。
- 撰寫包含口語障礙的自然語音轉錄稿:如要盡量呈現自然語音,請撰寫
text,包括自然對話中的口語障礙和猶豫 (例如"Oh uh yeah I think... hm, so that's interesting")。 - 先測試純文字 TTS:先使用空白的
style欄位合成轉錄稿。大多數要求都不需要任何style指示。 - 只為微調新增簡短
style提示:只為需要特定放送調整的輪次新增簡短style字串 (例如"casual, friendly"或"muttering, then reassuring"),並在需要一致基準時,在各輪次重複使用該簡短字串。
多輪對話和語音代理程式
建構對話式語音代理或其他多輪應用程式時,請注意下列事項:
- LLM 文字抵達時,請為每個回合提出一個 TTS 要求。
- 讓設定的
voice在不同回合中傳遞說話者的身分。請勿在每一輪中重新傳送長篇角色描述。 - 將
style留空,或為整個對話傳送一個簡短的常數字串。 - 將服務專員的長篇回覆分成較短的回合,而不是強化提示。
style