Gemini TTS 提示詞指南

本頁面說明使用 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|) 標示聽者的反應。這會產生自然的回應或重疊語音,而不需要為每個反應單獨進行。

  • 簡短附和:在發言者說話時,穿插簡短的聽者反應:
    • Turn 1 (Speaker A): "So the launch is Thursday |oh hmm| Are we actually ready?"
    • Turn 2 (Speaker B): "Ready enough |oh really?| The last blocker cleared this morning."
    • 第 3 輪 (講者 A):"Then let's ship it |absolutely| and watch the dashboards."
  • 重疊和交錯語音:使用多個管道區隔模擬同時語音。這項功能最適合搭配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 中加入年齡、性別、姓名或永久口音變更。請改從擴充語音庫中選取區域語音,或使用語音設計功能建立語音。
  1. 建立角色:在語音設計中建立角色,或從擴充語音庫中選取符合目標語言和角色的區域語音。
  2. 撰寫自然的口語轉錄稿,並加入不流暢的語句:為盡可能提高自然度,請將 text 撰寫為真實的口語轉錄稿,包括自然的對話不流暢和猶豫 (例如 "Oh uh yeah I think... hm, so that's interesting")。
  3. 先測試純文字轉語音:先使用空白的 style 欄位合成轉錄稿 (例如在 Agent Studio 中)。大多數要求完全不需要 style 指令。
  4. 僅在微調時加入簡短的 style 提示:僅在需要特定傳遞調整的回合中加入簡潔的 style 字串 (例如 "casual, friendly" 或 "muttering, then reassuring"),並在需要一致的基準時,在各回合中重複使用該簡短字串。

多輪對話和語音代理

建構對話式語音代理或其他多輪應用程式時:

  • 在 LLM 文字抵達時,為每個回合提出一個 TTS 要求。
  • 讓設定的 voice 在不同對話中傳遞說話者的身分。請勿在每次對話時重新傳送冗長的角色說明。
  • 請將 style 留空,或在整個對話中傳送一個簡短的常數字串。
  • 將代理的長篇回覆拆成較短的回合,而不是強化 style 提示。

後續步驟