音声合成
OpenAI の音声 API で Qwen3-TTS と ZONOS2 を使ってテキストを音声にします。プリセットのボイス、説明文から作るボイス、短い録音からのボイスクローン、感情の指定に対応し、10〜40 以上の言語で使えます。料金は音声 1 分単位です。
Lovely Router は OpenAI の音声エンドポイント POST /v1/audio/speech を提供しており、当社の GPU で動くオープンウェイトの音声モデルが応答します。OpenAI SDK の接続先を https://lovelyrouter.com/v1 にして Lovely Router のキーを使うと、レスポンスで音声が返ります。OpenAI のフィールドに加えて、説明文からボイスを作る、短い録音から声をクローンする、言語を指定する、ZONOS2 では感情を指定する、といったことができます。すべてのフィールドは音声のエンドポイントのリファレンスにあります。
モデル#
| モデル | 料金 | 得意なこと | 言語 |
|---|---|---|---|
qwen3-tts | 1 分あたり $0.036 | 説明文から作るボイス、スタイル指示に対応した 9 種類のプリセットボイス、ボイスクローン | 10 言語:中国語、英語、日本語、韓国語、ドイツ語、フランス語、ロシア語、ポルトガル語、スペイン語、イタリア語 |
zonos2 | 1 分あたり $0.036 | 再現度の高いボイスクローン、感情(喜び、悲しみ、怒り、驚き) | 40 以上。英語、中国語、日本語が最も得意 |
どちらも生成した音声の秒数で課金され、1 リクエストあたり最低 1 秒です。Qwen3-TTS は Alibaba の Qwen チームが、ZONOS2 は Zyphra が、どちらも Apache-2.0 ライセンスで公開しています。
どちらのモデルも、使われていないときは休止するホスト型 GPU で動いています。しばらく使われなかった後の最初のリクエストは、モデルの読み込みを待つため qwen3-tts で約 45 秒、zonos2 で最長 2 分ほどかかります。その後は、Qwen3-TTS は実時間の約 2 倍の速さで、ZONOS2 は 1 リクエストあたりほぼ実時間で生成し、複数のリクエストを同時に処理するとさらに速くなります。
音声を生成する#
curl https://lovelyrouter.com/v1/audio/speech \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-tts",
"input": "おかえりなさい!ご注文の商品を発送しました。木曜日に届く予定です。",
"voice": "ono_anna",
"instructions": "明るく親しみやすく、少し速めに"
}' \
--output welcome.mp3レスポンスは音声そのものです(response_format を指定しなければ MP3)。音声の長さ(秒)は x-lovely-audio-seconds ヘッダーに入ります。テキストは最大 4,096 文字で、長いテキストは同じボイスで 1 文ずつ読み上げられます。
ボイス#
voice には、モデルのプリセットボイス、保存したボイスの id、または OpenAI のボイス名を指定できます。OpenAI のボイス名は最も近いプリセットに対応付けられるので、OpenAI 向けに書いたコードはそのまま動きます。
qwen3-tts のボイス | 声の特徴 | ネイティブ言語 |
|---|---|---|
vivian | 明るく、少し個性のある若い女性 | 中国語 |
serena | 温かく優しい若い女性 | 中国語 |
uncle_fu | 落ち着いた低くまろやかな男性 | 中国語 |
dylan | 若く、澄んだ自然な男性 | 中国語(北京方言) |
eric | 明るく、少しハスキーな男性 | 中国語(四川方言) |
ryan | リズム感のある力強い男性 | 英語 |
aiden | 明るいアメリカ英語の男性 | 英語 |
ono_anna | 軽やかで遊び心のある若い女性 | 日本語 |
sohee | 温かく感情豊かな女性 | 韓国語 |
zonos2 には american_female、american_male、british_female の 3 種類があります。
どのボイスもそのモデルが対応するすべての言語を話せますが、ネイティブ言語が最もきれいです。voice を省略すると、モデルが language に合ったプリセットを選びます(qwen3-tts:中国語は vivian、日本語は ono_anna、韓国語は sohee、それ以外は ryan)。
スタイルの指示#
qwen3-tts では、instructions でプリセットやクローンしたボイスの話し方を指定できます。感情、話す速さ、声の大きさ、ささやき声、訛りなど。声優に演技を伝えるように、どの言語で書いてもかまいません:
{ "model": "qwen3-tts", "voice": "uncle_fu", "input": "みんな集まって。本当は何があったのか話してあげよう。", "instructions": "ゆっくり、秘密めかして、半分ささやくように" }ボイスを作る#
voice を省略して instructions に声の説明(年齢、性別、声質、話す速さ、雰囲気、訛り)を書くと、qwen3-tts がその声を新しく作ります:
{ "model": "qwen3-tts", "input": "おーい!帆を下ろせ、港に入るぞ。", "instructions": "しゃがれた大声の年老いた海賊の船長。少し酔っていて、楽しそう" }作ったボイスは毎回少しずつ変わります。同じ声を使い続けたいときは、生成した音声をボイスとして保存し、以降はその id を使ってください。
感情(ZONOS2)#
zonos2 では instructions の代わりに emotion を使います。happy、sad、angry、surprised のいずれか、または {"happy": 0.7, "surprised": 0.3} のような 0〜1 の重みです。話者の声はそのままで、表現だけが変わります。
ボイスをクローンする#
どちらのモデルも、短い録音から声をクローンできます。1 人がはっきり話している 3〜15 秒の音声で、音楽は入れないでください。一度保存すれば、その id を voice に使えます:
curl https://lovelyrouter.com/v1/audio/voices \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-F name="ナレーター" \
-F transcript="ご清聴ありがとうございました。また来週の番組でお会いしましょう。" \
-F consent=true \
-F file=@narrator.wav返されるのはボイスオブジェクトです。その id で音声を生成します:
curl https://lovelyrouter.com/v1/audio/speech \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "qwen3-tts", "voice": "voice_8f2c4a1e9b7d3f60a5c2e1d4", "input": "今日はお茶の歴史についてお話しします。"}' \
--output episode.mp3transcriptは録音で話している内容です。これがあると Qwen3-TTS はより本人に近い声でクローンします。ない場合は声質だけを合わせます。ZONOS2 には不要です。consent: trueが必須です。自分の声であること、または話者からクローンの許可を得ていることを確認し、使い方に責任を持つことになります。人をだましたり、なりすましたりするためにクローンしないでください。- 保存したボイスは無料で、あなたのアカウントだけが使え、削除するまで保持されます。1 アカウント最大 100 件。WAV、MP3、M4A、OGG/Opus、FLAC、WebM、最大 10 MB。
- 保存したボイスは両方のモデルで、それぞれが対応するすべての言語で使え、
qwen3-ttsではinstructionsとも組み合わせられます。
一度だけクローンするなら、録音をリクエストと一緒に送ります:reference_audio(https URL、data: URL、または base64)、reference_text、consent: true。
出力#
response_format | 得られるもの |
|---|---|
mp3(既定) | MP3、128 kbps |
opus | Ogg Opus、64 kbps |
aac | AAC(ADTS) |
flac | FLAC |
wav | WAV、16 ビット |
pcm | 生の 16 ビットリトルエンディアン、24 kHz モノラル(OpenAI と同じ) |
Qwen3-TTS は 24 kHz、ZONOS2 は 44.1 kHz の音声を生成します。speed(0.25〜4.0)は音の高さを変えずに速さだけを変えます。課金は返された音声の秒数です。
料金と制限#
- どちらのモデルも音声 1 分あたり $0.036、秒単位で課金(1 秒あたり $0.0006)、1 リクエストあたり最低 1 秒です。失敗したリクエストは課金されません。
- リクエストには正の残高が必要ですが、事前の引き当てはありません。呼び出しは生成した秒数とともにログページに表示されます。
- 入力は最大 4,096 文字、instructions は最大 1,000 文字。
- ストリーミングはありません。音声は完成してから返ります。
stream_format: "sse"は400を返します。 - 音声モデルは
/v1/audio/speechだけに応答します。Chat Completions に送ると、このページを案内する404が返ります。creative-hostedチャネルグループで提供しています。