架空のキャラクターからの音声メッセージは、声が人物に合い、読み方が瞬間に合うときに機能します。Qwen3 TTSは成人キャラクターの台本を単一音声のMP3に変換し、読み方は平易な言葉で書いたメモで操作します。 SpicyAPIのタスクには9種類のプリセット音声があり、テキスト1,000文字あたり$0.068、1リクエストあたり100文字が最低です。2026年9月のテストでは、直述およびオーディオブック調のパッセージで使われた成人向け語彙がそのまま読み上げられました。録音した音声メッセージやナレーションに使ってください。この経路には音声クローンもリアルタイム配信もありません。
ホスト型タスクに含まれるもの
| 詳細 | Qwen3 TTSタスク |
|---|---|
| 必須入力 | text、1~2,000文字 |
| 読み方の指示 | instructions、最大1,000文字。読み上げられず、課金対象外 |
| 既定の音声 | Serena |
| 出力 | 24 kHzモノラルMP3 1本 |
| 価格 | テキスト1,000文字あたり$0.068、最低100文字($0.0068) |
| アップロードした音声の参照 | 公開されていません |
| 1リクエストで複数の話者 | 公開されていません。各ターンを個別に生成してください |
| 数値による速度やピッチ | 公開されていません。読み方はinstructionsに記述してください |
プリセットを選び、Qwen3 TTSタスクページで生成してください。QwenチームのリポジトリはCustomVoice、Base(クローン)、VoiceDesignの各版も扱っています。これらは別の提供形態です。ライブラリのref_audioやspeaker引数はここでは入力にならず、音声のフィールドはvoice_idです。
台詞に合う音声を選ぶ
| プリセット | 公開されている音声の説明 | 母語 |
|---|---|---|
| Serena | 温かく柔らかい女性声 | 中国語 |
| Vivian | 明るくやや攻めた女性声 | 中国語 |
| Uncle_Fu | 低くて柔らかな男性声 | 中国語 |
| Dylan | 明瞭な北京の男性声 | 中国語、北京方言 |
| Eric | 生き生きしてやや嗄れた男性声 | 中国語、四川方言 |
| Ryan | リズムのある男性声 | 英語 |
| Aiden | 明瞭なアメリカ英語の男性声 | 英語 |
| Ono_Anna | 軽く遊びのある女性声 | 日本語 |
| Sohee | 温かく表情豊かな女性声 | 韓国語 |
どのプリセットも対応するすべての言語を読めますが、最高品質のためにはQwenチームが音声の母語を推奨しています。英語の男性キャラクターにはRyanかAidenから始めてください。英語の女性キャラクターにはSerenaかVivianを試してください。このセットに英語の母語を持つ女性声はないので、決定する前に試聴してください。
Serenaの音声メッセージのサンプルを聴く:深夜の「あとで電話して」というメモを、息も切らせた挑発的な指示で読んだものです。
まずPlaygroundで試す
Qwen3 TTSタスクページを開き、Playgroundタブを使います。
- Textには聞こえる言葉だけを貼り付けます(ページのサンプル台本は最初のテストに最適です)。
- Voiceで名前を選びます(既定はSerena)。
- Delivery instructionsに読み方のメモを書きます。
- LanguageはAuto-detectのままにします。判定があいまいな英語台本なら英語を選んでください。
- 実行し、Outputで結果を再生してMP3をダウンロードします。
デート帰りの架空の成人:Text「I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again.」、Voice Serena、Delivery instructions「温かく少し内気で、1人の成人の聞き手に静かに話し、最後の質問は会話的な口調のまま」。テキストをSerena:や「Read this in a soft voice」で始めないでください。どちらもそのまま読み上げられます。コードを書く前に、ここでは2〜3の音声とメモを試聴してください。価格は実行前に表示されます。
languageにはauto、zh、en、de、fr、es、it、pt、ru、ja、koを指定できます。テキストをどのように読むかを選ぶもので、翻訳を行うものではありません。
次はコードから呼び出す
Python SDK(pip install spicyapi)をインストールし、環境変数にSPICY_API_KEYを設定してから実行します。
import urllib.request
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
task = client.create_task(
model="alibaba/qwen-3-tts/text-to-speech",
input_data={
"text": "I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again.",
"voice_id": "Serena",
"language": "en",
"instructions": "Warm and slightly shy, speaking quietly to one adult listener. Keep the final question conversational.",
},
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']}")
urllib.request.urlretrieve(output_assets(final)[0]["url"], "voice-message.mp3")待機、リトライ、見積り、エラーはPython SDKリファレンスと非同期タスクガイドにあります。
Agentに実行させる
アシスタントに台詞を読ませたい場合は、CLIかMCPサーバーを渡します。どちらも価格を表示し、有料呼び出しの前に確認を求めます。Skillはどちらの上にも指示を追加します。
- CLI.
spicyapiはターミナルから1つのタスクを実行します(npx @spicyapi/cliはインストールなしで動きます)。同じinputオブジェクトをinput.jsonに入れてください。
``bash spicyapi tasks create --model alibaba/qwen-3-tts/text-to-speech \ --input-file input.json --idempotency-key voice-message-take-1 --wait ``
- MCPサーバー. アシスタントにMCPサーバーを追加して「Qwen3 TTSで、Serenaで、温かく少し内気で、この台詞を読んで」と依頼します。
spicyapi_task_createを呼び出し(価格確認で停止します)、次にspicyapi_task_waitを呼び出します。 - Skill.
npx skills add spicyapi-ai/spicy-skillはAgent Skillをインストールします。コーディングアシスタントが最新のスキーマを読み、冪等性キーを再利用するよう教えます。それ自体はタスクを実行できないため、CLIかMCPと組み合わせて使ってください。
同じ台詞を3通りに演出する
テキストと音声を固定し、メモだけを変更します。「I thought you'd forgotten」の場合:
| 意図した気持ち | 試す指示 |
|---|---|
| 安堵 | 「安堵のため息を小さく、微笑み、最後の単語だけ少し小さく」 |
| 傷ついた | 「静かに控えめ、少し遅く、微笑みなし」 |
| からかう | 「軽く遊び心たっぷりに、語尾を少し上げて、笑みを隠しているように」 |
一度に変えるのは一項目だけです。「ささやきを外す」や「最初の文の後は少し遅く」はそのテイクを直しますが、「より情緒的で、より人間らしく」は直りません。結果が劇的すぎる場合は、メモを「自然な会話調の読み方。」まで短くしてください。
NSFW台本も読めるか
テストでは直述の成人向けパッセージ、オーディオブック構成のパッセージ、指示の多いパッセージを対象とし、SerenaまたはRyanに読み方の指示を添えて試しました。直述版とオーディオブック版の文字起こしは、成人向け語彙を含めて台本と一語ずつ一致し、指示のテキストが読み上げられることはありませんでした。
指示の多いパッセージも成人向け語彙は保持しましたが、単語ではない発音のため台本からのずれが大きくなりました。呼吸や笑いは制御の対象ではなく試聴の対象として扱ってください。場面がそうした音に依存しているなら、その瞬間を先に生成し、他のモデルの括弧や丸括弧の書き方がそのまま使えると仮定しないでください。
2人のキャラクターの場面を作る
1リクエストで得られるのは1つの声です。架空の成人2人の場合は、各ターンを個別に生成してください。
| ターン | 音声 | テキスト | 演出 |
|---|---|---|---|
| 1 | Serena | 「Did you really think I'd leave without saying goodnight?」 | 温かく落ち着いた質問 |
| 2 | Ryan | 「No. I was hoping you would come find me.」 | 静かで楽しげな返答 |
複数話者対応のComfyUIチュートリアルは、話者名、間隔、重なりを追加ノードで解析します。ここではそれらのタグは入力フィールドではありません。発話テキストから名前を取り除き、各ターンをそれぞれのvoice_idで送り、間隔は編集ソフトで設定してください。まず短い間隔から始め、返答が自然に聞こえるまで2つ目のクリップを動かします。1つのtextフィールドに両方の名前を書くと、1つのプリセットがラベルと両方の台詞を読み上げます。会話全体を台本に書いてクリップを自動で結合したい場合は、Seed Speech 2.0のダイアログワークフローをご覧ください。その結合スクリプトはどの音声でも使えます。
1声の長い物語は、2,000文字を超えないように文や段落の切れ目で分割し、各セクションで同じ音声とメモを再利用します。フレーズを置き換えたい場合は、前後の文全体を再生成し、隣の無音で切ります。そうすれば音量とリズムがそろいます。
最低課金は短い返事で効く
費用はmax(text characters, 100) × $0.068 / 1,000で、スペースと句読点も数えます。指示は無料です。
| 入力の長さ | 課金対象の文字数 | 費用 |
|---|---|---|
| 40文字 | 100 | $0.0068 |
| 80文字 | 100 | $0.0068 |
| 180文字 | 180 | $0.01224 |
| 1,000文字 | 1,000 | $0.068 |
| 2,000文字 | 2,000 | $0.136 |
別々の40文字の回答を10回作ると$0.068です。テキストの合計は400文字しかないものの、同じ声で400文字を1リクエストにすれば$0.0272になります。編集の都合が許すなら、1声の連続したナレーションはまとめてください。ただし、最低課金を避けるために違うキャラクターをまとめるのはやめましょう。
期待どおりの結果にならないときの直し方
| 問題 | 変更 |
|---|---|
| 台詞が急ぎすぎている | instructionsに「急がず、最初の文の後に自然な間を入れる」を追加 |
| 名前の発音が違う | textに音訳で書く。公開用の文字起こしでは正しい表記を保つ |
| メモを変えても音色が変わらない | 別のプリセットを試す。読み方のメモは声の基本的な性格を変えません |
リクエストがspeed、pitch、ref_audioを拒否した | 削除して上記の4つのフィールドを使う |
アップロードした音声のクローンやリアルタイムの会話が必要な場合は、それに対応するタスクを選んでください。成人向け台本での他の音声モデルを比較するには、テキスト読み上げAPIの比較をご覧ください。






