Amazonで商品を見るセール会場へ

Gemini 3.8 Flash TTSの記法|間・息・笑いのタグとstyleの書き分け

Gemini 3.8 Flash TTSは、話し方の指定と、本文に入れるタグを分けて書きます。

間を入れたいだけなら、<short pause>と<long pause>の2つを覚えれば足ります。

  • 間・息・笑い・ため息:本文の中に、英語のタグを山括弧で書く
  • 全体の速さや声の調子:本文とは別の style に書く
  • 閉じタグ:いらない
  • 日本語の原稿でも:タグは英語・半角で書く

記法とAPI形式は2026年10月23日に公式ガイドと照合しました。測定値は2026年9月27日の既存記録です。今回は元音声・測定コード・書き起こしを再照合しておらず、API生成や聴取も再実施していません。

目次

よく使う記法の早見表

やりたいこと書き方書く場所
短い間<short pause>本文
長めの間<long pause>本文
息を吸う<breath>本文
笑う<laugh>本文
軽く笑う<chuckle>本文
ため息<sigh>本文
咳払い<throat-clearing>本文
全体をゆっくり読むspeaking slowlystyle
全体を穏やかに読むcalm and relaxedstyle
タグは公式ガイドの一覧から、styleの言葉は公式ガイドの例から選んだもの

タグは、日本語の原稿の中でも英語のまま、半角の山括弧で書きます。

スポンサーリンク

styleと本文のタグの違い

Gemini 3.8 Flash TTSは、本文をそのまま読み上げる原稿として扱います。

そのため公式ガイドでは、指示を効く範囲で2つに分けて書くよう説明されています。

効く範囲書く場所例
発話の最初から最後まで続くもの(感情・速さ・声の調子)speech_metadata の stylespeaking slowly、calm and relaxed、whispers
ある一点で起きるもの(間・息・笑い)本文の中<short pause>、<breath>、<laugh>
公式ガイドの「Style field versus inline tags」による

styleには、年齢・性別・名前・ずっと変わらない訛りは書かないよう勧められています。

それらは、声そのものを選ぶか、Voice designで声を作る側で決めます。

間の入れ方

句読点で入れる

公式ガイドでは、カンマ・ダッシュ・三点リーダーで、会話らしい自然なためらいが出るとされています。

タグを使う前に、まず句読点で足りるかを聞いてみると手間が減ります。

<short pause>と<long pause>

間を置きたい位置に、そのままタグを書きます。

今日の作業はここまでです。<long pause>明日は資料の見直しから始めます。

秒数を指定する記法は、公式ガイドにはありません。

実際にどれくらい間が空くか

以下は同じ原稿を各3回生成し、途中で最長の無音を測った当時の記録です。モデル・声・原稿に依存する参考値で、タグの秒数仕様ではありません。

タグを置いた場所タグいちばん長い無音(3回)
文末(「。」のあと)なし0.48〜0.69秒
文末(「。」のあと)<short pause>0.22〜0.90秒
文末(「。」のあと)<long pause>1.47〜3.13秒
文の途中(読点なし)なし0.08〜0.23秒
文の途中(読点なし)<short pause>0.31〜0.79秒
2026年9月27日に当方が測定。モデルは gemini-3.8-flash-tts、声は Kore。10ミリ秒ごとの最大振幅が500未満の区間を無音とした

掲載した各3回の記録では、文末の無指定と<short pause>の範囲が重なっています。この少数試行だけで、タグに効果がないとは判断できません。

句点のみでも0.48〜0.69秒の無音が記録されています。ただし、測った「途中で最長の無音」が必ずタグ位置の間に対応するとは限らず、波形と聴取で位置を確かめる必要があります。

文の途中に入れた<short pause>は、3回中2回で0.8秒近い間になりました。

<long pause>は、はっきり間が伸びる一方で、1.5秒から3.1秒まで回ごとの差が大きく出ました。

固定秒数が必要なら生成後に波形と聴取で対象位置を確認し、音声編集で無音を調整します。再生成による聞き比べだけでは長さを保証できません。

測った原稿は次の2つです。

文末:今日の作業はここまでです。(ここにタグ)明日は資料の見直しから始めます。
文の途中:資料は(ここにタグ)明日までに出します。

息・笑い・ため息のタグ一覧

公式ガイドで勧められているタグは、次のとおりです。

種類タグ
息<breath>、<heavy breath>、<exhales>、<pant>、<gasp>、<yawn>
笑い<laugh>、<laughter>、<chuckle>、<chuckles>、<giggle>、<snicker>、<cackle>
ため息・ほっとする<sigh>、<sighs>、<phew>、<pff>
泣く・うめく<cry>、<sob>、<whimper>、<groan>、<moan>
叫ぶ・声を張る<scream>、<shriek>、<shout>、<cheer>
いら立ち・うなり<argh>、<grr>、<growl>、<grunt>、<hiss>、<tsk>、<snort>
体の音<cough>、<sneeze>、<throat-clearing>
ささやき<whispers>、<whispering>
間<short pause>、<long pause>
タグは公式ガイドの「Vocal bursts and non-speech sounds」の一覧。種類の分け方は当方による

拍手や物音のような、人の声でない効果音のタグは避けるよう書かれています。

当方の試しでは、<laugh>と<sigh>は、書き起こしにも笑い声・ため息として出ました。

当時の書き起こしは<breath>を拾いませんでした。書き起こしに出ないことだけでは、息の音が生成されなかったとは判断できません。

日本語の原稿でもタグは英語・半角で書く

公式ガイドには、英語以外の原稿でも、タグは英語のまま使うと良い結果になると書かれています。

閉じタグはなく、<laugh>…</laugh>のように囲む書き方は公式ガイドに載っていません。

全角や日本語で書いたときに起きたこと

同じ原稿で、タグの書き方だけを変えて音声を作り、読まれた言葉を書き起こして比べました。

タグの書き方作った回数原稿にない言葉が入った回数入った言葉
<short pause>(英語・半角)50-
<short pause>(全角の山括弧)63少し休み、ちょっと待ってくださいね、少し長かったかな
<短い間>(日本語)62短い間
2026年9月27日に当方が測定。書き起こしは gemini-3.8-flash で行った

全角の山括弧では、原稿にない一言をAIが足してしまうことがありました。

日本語で書いたタグは、「短い間」とそのまま読み上げられることがありました。

日本語入力のまま打つと山括弧が全角になりやすいので、半角に切り替えてから打ちます。

styleの書き方

styleは、speech_metadata の中に、短い言葉で書きます。

公式ガイドには、次のような例が載っています。

  • cheerful and friendly(明るく親しげに)
  • calm and relaxed(落ち着いて)
  • speaking slowly(ゆっくり)
  • speaking rapidly(早口で)
  • whispers(ささやく)
  • out of breath(息を切らして)
  • monotone and flat(抑揚なく)

公式ガイドでは、まずstyleを空にして試し、直したい発話にだけ短い指定を足す手順が勧められています。

何段落もある長い演出メモは、声が回ごとにぶれるいちばんの原因とされています。

話の途中で感情を変えたいときは、発話を分けて、それぞれにstyleを付けます。

styleの効き方

30字ほどの原稿を、styleなしと、styleありで3回ずつ音声にして、話している部分の長さを測りました。

style話している部分の長さ(3回)
なし4.10〜4.57秒
speaking slowly9.27〜9.86秒
ゆっくり話す8.56〜9.62秒
2026年9月27日に当方が測定。モデルは gemini-3.8-flash-tts、声は Kore

どちらも2倍ほどの長さになり、日本語で書いたstyleも効いていました。

ただし公式ガイドの例はすべて英語なので、迷ったら英語で書くほうが無難です。

コードで書くとこうなる

本文はtext、styleは同じ発話のannotationsに書きます。Python例はgoogle-genai >= 2.25.0と、対象モデルを利用できるAPI認証が前提です。APIキーはGEMINI_API_KEYなどの安全な環境設定で渡し、コードへ直書きしないでください。

import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.8-flash-tts",
    input=[{
        "type": "user_input",
        "content": [{
            "type": "text",
            "text": "今日の作業はここまでです。<long pause>明日は資料の見直しから始めます。",
            "annotations": [{
                "type": "speech_metadata",
                "style": "speaking slowly",
            }],
        }],
    }],
    response_format={"type": "audio"},
    generation_config={"speech_config": [{"voice": "Kore"}]},
)

with open("out.wav", "wb") as f:
    f.write(base64.b64decode(interaction.output_audio.data))

これは公式ガイドのPython例の本文とstyleを変更したものです。interaction.output_audioはSDKの便利プロパティで、RESTのJSONではsteps[].content[].dataの音声ブロックを扱います。レスポンスのMIMEタイプを確認して保存してください。

2026年9月27日の記録では、同じ中身をREST(/v1beta/interactions)で送って音声生成を確認しています。今回のPython SDKでの実行確認ではありません。

この単発リクエストの既定出力はaudio/wavです。base64を復号したWAVへヘッダーを重ねて付けないでください。PCMなどを明示指定した場合は、指定形式に応じて保存方法を変えます。

2人の会話と相づちの記法

1回のリクエストで話させられるのは、用意された声を使った2人までです。

発話ごとに text を分け、それぞれの speech_metadata に speaker を書きます。

公式の移行ガイドでは、すべての発話に speaker を書くことが求められています。

"content": [
    {"type": "text", "text": "資料はもう見ましたか?",
     "annotations": [{"type": "speech_metadata", "speaker": "Joe"}]},
    {"type": "text", "text": "<chuckle>まだ半分です。",
     "annotations": [{"type": "speech_metadata", "speaker": "Jane"}]},
],
# generation_config の speech_config に書く
"speech_config": {
    "mode": "conversational",
    "speakers": [
        {"speaker": "Joe", "voice": "Puck"},
        {"speaker": "Jane", "voice": "Kore"},
    ],
},

RESTのspeech_config.modeにはconversationalを指定できます。本文の2話者コードはRESTのフィールド構成を説明する断片で、そのまま実行するPythonプログラムや完全なJSONではありません。現行SDK例ではspeech_configへspeakersを持つオブジェクトを渡します。

聞き手の短い相づちは、話し手の発話の中に縦棒で囲んで書けます。

So the launch is Thursday |oh hmm| Are we actually ready?

縦棒の中は、聞き手の相づちとして重ねて読まれます。

2話者の設定と相づちは公式資料に基づく例ですが、この記事では音声生成を検証していません。カスタム音声で複数話者を組み合わせる場合は、各話者の発話を別々に生成する方法が案内されています。

旧モデルから移るときに変わる書き方

gemini-3.1-flash-tts-preview までは、演出の指示を本文に書き込む使い方がありました。

3.8では、その指示を style に、話者の名前を speaker に移すよう、公式の移行ガイドに書かれています。

当方の試しでは、「(ゆっくり穏やかに)」や「(speaking slowly)」を本文の頭に書いても、5回とも読み上げられはしませんでした。

ただ、本文に指示を書く使い方は3.8の公式ガイドでは案内されていないため、styleに書くほうが確かです。

音声の形式も変わり、以前は頭の情報がない生のPCMで返っていたのが、3.8ではWAVで返ります。

自分でWAVの頭を付けていたコードは、その処理を外して、返ってきた中身をそのまま書き出すよう案内されています。

APIの料金は、ChatGPT・Claude・GeminiのAPI料金の比較にまとめています。

出典

スポンサーリンク

よくある質問:Gemini 3.8 Flash TTSのタグと話し方

Gemini 3.8 Flash TTSで、間を入れるには、どう書きますか?

本文の中に、英語のタグを半角の山括弧で書きます。

短い間は <short pause>、長めの間は <long pause> です。

間を入れたいだけなら、この2つを覚えれば足ります。

閉じタグはいりません。

句読点でも間は入ります。

<short pause> を文末に入れると、間は長くなりますか?

9月27日の既存記録では文末の無指定と<short pause>の測定範囲が重なりました。各3回の参考値なので、差がないという一般的な結論にはできません。

句点のみでも0.48〜0.69秒の無音が記録されています。ただし、測った「途中で最長の無音」が必ずタグ位置の間に対応するとは限らず、波形と聴取で位置を確かめる必要があります。

文の途中に入れた <short pause> は、3回中2回で0.8秒近い間になりました。

<long pause> は、どれくらいの間になりますか?

文末に入れると、記事の測定では1.47〜3.13秒で、はっきり間が伸びる一方、回ごとの差が大きく出ました。

固定秒数が必要なら生成後に波形と聴取で対象位置を確認し、音声編集で無音を調整します。再生成による聞き比べだけでは長さを保証できません。

息・笑い・ため息は、どのタグで入れますか?

息は <breath>、笑いは <laugh>・<chuckle>、ため息は <sigh>、咳払いは <throat-clearing> などです。

公式ガイドで勧められているタグには、ほかにも泣く・叫ぶ・ささやくなどの種類があります。

拍手や物音のような、人の声でない効果音のタグは避けるよう書かれています。

当時の書き起こしでは笑い・ため息が記録され、息は拾われませんでした。音が実際に生成されたかの判定には、元音声の聴取と波形の確認が必要です。

日本語の原稿でも、タグは英語で書くのですか?

英語・半角で書きます。

公式ガイドには、英語以外の原稿でも、タグは英語のまま使うと良い結果になると書かれています。

記事の測定では、全角の山括弧では、原稿にない一言をAIが足してしまうことがあり、日本語で書いたタグは、「短い間」とそのまま読み上げられることがありました。

日本語入力のまま打つと山括弧が全角になりやすいので、半角に切り替えてから打ちます。

全体の速さや声の調子は、どこに書きますか?

本文とは別の style に、短い言葉で書きます。

公式ガイドの例は、cheerful and friendly(明るく親しげに)、calm and relaxed(落ち着いて)、speaking slowly(ゆっくり)、speaking rapidly(早口で)、whispers(ささやく)などです。

まず style を空にして試し、直したい発話にだけ短い指定を足す手順が勧められています。

何段落もある長い演出メモは、声が回ごとにぶれるいちばんの原因とされています。

話の途中で感情を変えたいときは、発話を分けて、それぞれに style を付けます。

日本語で書いた style も、効きますか?

記事の測定では、speaking slowly でも、日本語の「ゆっくり話す」でも、話している部分の長さが2倍ほどになり、効いていました。

ただし、公式ガイドの例はすべて英語なので、迷ったら英語で書くほうが無難です。

2人の会話や、旧モデルからの移行は、どうしますか?

1回のリクエストで話させられるのは、用意された声を使った2人までで、発話ごとに text を分け、それぞれの speech_metadata に speaker を書きます(公式の移行ガイドは、すべての発話に speaker を書くことを求めています)。

RESTのspeech_config.modeにはconversationalを指定できます。本文の2話者コードはRESTのフィールド構成を説明する断片で、そのまま実行するPythonプログラムや完全なJSONではありません。現行SDK例ではspeech_configへspeakersを持つオブジェクトを渡します。

gemini-3.1-flash-tts-preview までは演出の指示を本文に書き込む使い方がありましたが、3.8では、その指示を style に、話者の名前を speaker に移します。

なお、2人の会話と相づちは、記事の筆者は試していません。

記法は2026年10月23日の公式ガイドと照合済みです。掲載した9月の測定記録は今回再検証しておらず、現行SDK実行・音声生成・聴取・2話者の相づちも未検証です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

生成AIのおすすめ書籍

周辺機器の優先度

目次