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

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

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

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

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

この記事は、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未満の区間を無音とした

文末では、<short pause>を入れても入れなくても、間の長さにほとんど差が出ませんでした。

句点だけで0.5秒前後の間が空いていたためです。

文の途中に入れた<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 の中に書きます。

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だけを差し替えたものです。

当方は、同じ中身をREST(/v1beta/interactions)で送って音声ができることを確かめました。

Gemini 3.8のTTSは、何も指定しなければWAVで返すので、そのままファイルに書けば再生できます。

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"},
    ],
},

mode を conversational にすると、会話らしい間合いで順番に話します。

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

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料金の比較にまとめています。

出典

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

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

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

生成AIのおすすめ書籍

周辺機器の優先度

目次