本文へスキップ

Gemini 2.5 Pro TTSでNSFW音声を生成:実測結果と使える設定

Gemini 2.5 Pro TTSはNSFW台本をそのまま読み、音の指示や対話も表現します。声と設定、1秒$0.00045の料金を解説します。

執筆
SpicyAPI Engineering
公開
読了時間
約 10 分
更新
薄暗い録音ブースで、女性がスタジオマイクに顔を近づけている

音声メッセージ、小説の一章、2人の登場人物による場面など、成人向けの台本を、息遣いやため息も含めて書かれたとおりに読み上げたい。料金も知りたい。SpicyAPIのGemini 2.5 Pro TTSなら、それができます。SpicyAPIはコンテンツフィルターを追加しません。2026年9月のテストでは、成人向け台本が省略や表現の弱化、途中の打ち切りなしで、完全な音声として返されました。

Playgroundでは、次の手順で始めてください。

  1. 雰囲気に合うVoiceを選びます。Enceladus(息の混じる声)、Achernar(柔らかい声)、Sulafat(温かい声)、Gacrux(落ち着いた大人の声)、または既定のKore(はっきりした声)です。
  2. Styleを設定します。親密な内容では通常Whisperが適しています。その場面を伝える文をDelivery instructionsまたはSceneに1、2文追加します。
  3. Text内で、[sighs]や[laughs]のように音を角括弧で指定します。テスト例では音として表現されました。指示自体が読み上げられる場合は、演技指示をDelivery instructionsに移してください。
  4. 登場人物が2人の場合は、Textの代わりにDialogueとSpeakersを使います。

Gemini 2.5 Pro TTSを試す →

まずPlaygroundで試す

Gemini 2.5 Pro TTSを開き、PlaygroundタブのForm表示を使います。

  1. Textに台本を貼り付けます(最大5,000文字)。Cuesのショートカットで[whispers]、[sighs]、[laughs]、[gasps]、[pause]を挿入できます。
  2. Voiceを選びます(例:Enceladus · Breathy)。StyleをWhisper、PaceをUnhurriedにすると、ゆっくりと余韻を残す読み方になります。
  3. Delivery instructionsとSceneに1、2文を書きます。どちらの内容も読み上げられません。
  4. Textの下にある長さに基づく見積もりを確認し、Run modelを押して、Outputで結果を再生します。WAVもそこからダウンロードできます。

コードを書く前に、最も難しい箇所をここで試聴してください。Playgroundで演技として表現されずに読み上げられる指示は、APIでも読み上げられます。以下で各設定の働きを説明します。

結果を変える設定

voice_idには30種類の既成の声から1つを指定します。既定値はKoreです。

雰囲気試聴する声
息の混じる、近い声Enceladus
柔らかく、優しい声Achernar, Vindemiatrix
温かい声Sulafat
大人びた、かすれた声Gacrux, Algenib
はっきりした声Kore, Orus
明るく、軽やかな声Puck, Aoede

さらに4つの任意項目で演技を調整できます。いずれも読み上げられません。

  • styleは全体的な話し方を設定します。whisper、empathetic、vocal_smile、newscaster、promo_hype、deadpanから選びます。
  • paceはリズムを設定します。natural、rapid_fire(速く、歯切れよく)、the_drift(ゆっくり、余韻を残す)、staccato(短い句を区切る)があります。遅い読み方ほど音声の秒数が増え、料金はその秒数に基づきます。
  • instructions(最大1,000文字)には、雰囲気、マイクとの距離、誰に話しかけるかを自由に書きます。形容詞の羅列より、1、2文の指示が効果的です。例:"close to the microphone, unhurried, as if speaking only to the listener"。
  • scene(最大500文字)には、どこで誰に話すかを書きます。例:"a quiet hotel room after midnight"。

accent(英語のアクセント8種類、英語台本のみ)とtemperature(各テイクの変化の程度)は任意です。違いを出したくなるまでは未指定にしてください。言語の項目はありません。モデルが台本の言語を検出し、それぞれの声は持ち味を保ちます。

演技を引き出す台本の書き方

text内の短い角括弧の指示で、音を出す場所や話し方を変える場所を指定します。テスト例では[sighs]と[laughs]が音として表現されました。長い箇所の話し方はstyle: "whisper"またはinstructionsで指定してください。タグが単語として読まれる場合も、代わりにこれらの項目を使います。三点リーダーは間を示します。

次の2つを意識すると役立ちます。

  • 耳で聞く文章を書く。 読ませたい内容を省略せずに書き、三点リーダーやコンマで間を表し、文を短くします。
  • 演技指示は本文ではなく専用項目に書く。 text内に"she whispers breathlessly"と書くと、その言葉が読み上げられます。styleまたはinstructionsに入れてください。

次にコードから呼び出す

このコードはタスクを作成し、完了を待ってWAVのリンクを出力します(pip install spicyapiで導入し、SPICY_API_KEYを設定してください)。

python
import uuid

from spicyapi import SpicyClient, output_assets

client = SpicyClient()  # reads SPICY_API_KEY from the environment

task = client.create_task(
    model="google/gemini-2.5-pro-tts/text-to-speech",
    input_data={
        "text": "Hey... it is me. [sighs] I know it is late. Stay on the line a little longer?",
        "voice_id": "Enceladus",
        "style": "whisper",
        "pace": "the_drift",
        "scene": "A quiet bedroom after midnight, speaking to one listener",
        "instructions": "Close to the microphone, unhurried, a little tired.",
    },
    idempotency_key=str(uuid.uuid4()),  # new key per new request; reuse only to retry the same one
)

final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
    raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")

print(output_assets(final)[0]["url"])  # a 24 kHz, 16-bit mono WAV; copy it to your own storage

音声の保存期間は14日で、単語ごとの時刻情報や字幕はありません。待機、再試行、結果リンクの期限、エラー処理については、Python SDKリファレンス、タスクのドキュメント、保存期間の説明を参照してください。

またはAgentに実行を任せる

アシスタントに音声メッセージを生成させるなら、CLIまたはMCPサーバーを使えるようにします。どちらも料金を表示し、有料呼び出しの前に確認を求めます。Skillは、そのどちらにも追加の指示を提供します。

  • CLI。 spicyapiを使います(npx @spicyapi/cliならインストール不要です)。input.jsonには上のコードのinputオブジェクトを入れます。

``bash spicyapi tasks create --model google/gemini-2.5-pro-tts/text-to-speech \ --input-file input.json --wait ``

  • MCPサーバー。 MCPサーバーを追加し、"Read this script in a whispered Enceladus voice with Gemini 2.5 Pro TTS."と依頼します。spicyapi_task_create(料金確認のため停止します)とspicyapi_task_waitが呼び出されます。
  • Skill。 npx skills add spicyapi-ai/spicy-skillでAgent Skillを導入します。コーディングアシスタントに、最新のスキーマを読むことと、冪等性キーを再利用することを教えます。単独ではタスクを実行できないため、CLIまたはMCPと併用してください。

1つのクリップに2人の登場人物を入れる

2人の場面では、dialogueをtextの代わりに送り(両方は送れません)、配役を定義するspeakersも指定します。各話者には台詞から参照するnameとvoice_idがあり、独自のaccent、style、paceも設定できます。さらに、誰が話しているかを短く説明するprofileを指定できます(読み上げられません)。話者が省略した値にはトップレベルの値が使われます。各台詞は{speaker, text}で、順番に表現されます。最大20行、1行250文字、話者は最大2人です。上と同じ呼び出しで、inputオブジェクトを次の内容に置き換えてください。

json
{
  "speakers": [
    { "name": "Mara", "voice_id": "Sulafat", "style": "whisper", "profile": "Warm, close, unhurried" },
    { "name": "Jonah", "voice_id": "Charon", "profile": "Low, amused" }
  ],
  "dialogue": [
    { "speaker": "Mara", "text": "Stay a little longer." },
    { "speaker": "Jonah", "text": "[laughs] You say that every time." },
    { "speaker": "Mara", "text": "And every time you do." }
  ],
  "scene": "A quiet apartment after midnight"
}

会話はミックス済みの1つのWAVとして返されます。後から人物ごとの台詞を個別に編集するなら、各人物を別々の単一音声タスクで生成し、編集ソフトでファイルをつなげてください。より長い場面、2人を超える声、参照クリップから複製した声については、TTSの比較とChatterboxの音声参照ガイドを参照してください。

料金

実際に返された音声の長さをファイルから測り、1秒あたり$0.00045で課金します。長さは声、スタイル、ペースによって変わります。270文字の段落は23〜29秒になるため、概算料金は文字数を10で割り、$0.00045を掛けた値です。

クリップの長さ料金おおよその文字数
15秒$0.0068150文字
30秒$0.0135300文字
60秒$0.027600文字
5分$0.1353,000文字
7〜9分$0.19〜$0.24textの上限である5,000文字

タスクの実行中は、残高から約$0.30が一時的に確保されます(秒単価で660秒分。モデルが生成できる最長の約655秒のクリップをカバーします)。音声の長さを測定した後、未使用分が解放されます。失敗したリクエストは課金されません。バッチをキューに入れる前に、少なくともこの金額を利用可能な残高として確保してください。先行タスクの一時確保により、次のタスクを開始できなくなることがあります。

つまずきやすい点

  • 指示が単語として読まれる。 書き換えるか、演技指示をstyleまたはinstructionsに移し、角括弧内は音だけにします。
  • 演技指示が無視されているように見える。 accentが作用するのは英語台本だけです。トップレベルのstyleとpaceは、独自の値を設定していないすべての話者に適用されます。
  • textとdialogueを両方送った。 どちらか一方を選んでください。dialogueにはspeakersも必要です。

新しいGeminiの声を選ぶ場合

Gemini 3.8 Flash TTS(1秒$0.00032)とGemini 3.8 Flash-Lite TTS(1秒$0.00021)は、dialogueを含む同じ項目を、より低い料金で受け付けます。Flash-Liteは角括弧内の指示の一部を読み上げる傾向があるため、息遣いやため息が重要ならProを選んでください。Flashも通常は角括弧の指示を表現しますが、まず短い箇所で試聴してください。Gemini 3.8のナレーションガイドでは、この2つを詳しく説明しています。

よくある質問

Gemini 2.5 Pro TTSは検閲なしですか?

テストした成人向け台本は、単語の省略や表現の弱化なしに、完全な音声として返されました。SpicyAPIは追加のコンテンツフィルターを設けません。台本と音声の使い方については、引き続き利用者が責任を負います。実在の人物の発言として扱わないことも含まれます。登場人物は架空の成人にしてください。

[sighs]や[laughs]のような指示は読み上げられますか?

テストした[sighs]と[laughs]の例では、音として表現されました。別の指示が読み上げられる場合は、その指示をinstructionsへ移すか、styleを使ってください。他のモデルの挙動は異なり、上のTTS比較で説明しています。

instructions、scene、styleの違いは何ですか?

styleは全体的な話し方を選ぶ固定の一覧です。instructionsには読み方の指示を自由に書き、sceneにはどこで誰に話すかを書きます。まずstyleを使い、その場面に合わせてinstructionsまたはsceneを追加してください。

1分の音声はいくらですか?

約$0.027です。台本の長さではなく、返された音声の秒数に基づいて課金します。

声を複製できますか?

このエンドポイントではできません。30種類の既成の声から選ぶか、参照クリップを受け付けるモデルを使ってください。

まずPlaygroundで始めてください(先にアカウントを作成します)。Enceladus、Whisper、[sighs]を1つ入れた短い台本で、指示がどう反映されるか確認できます。

他の言語 English · 한국어 · Deutsch · Français · Español · Português (Brasil) · Русский · Italiano · Polski

実際に試してみる

支払いは実行した分だけ。プランもサブスクリプションもありません。

使用モデル:MiniMax H3 · ByteDance Seedance 2.0 Fast