venice-audio-speech について
venice-audio-speech は、Venice の音声 API でテキストを音声に変換するスキルです。モデルごとの声や形式、ストリーミング出力、音声サンプルからの声の複製に対応します。
主な機能
- 01テキスト読み上げ
- 02モデル別の音声選択
- 03音声ストリーミング出力
- 04音声サンプルからの声の複製
- 05対応モデルでのスタイル・感情調整
活用シーン
- 01文章からナレーションを作成
- 02音声応答や UI 音声を生成
- 03複製した声で音声を合成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ veniceai/ skills --skill venice-audio-speechインストール後、Claude Code で/venice-audio-speechを入力して読み込まれたか確認します。
詳細
Venice TTS(/audio/speech)
POST /api/v1/audio/speech はテキストを音声ストリームまたはファイルに変換します。OpenAI 互換のため、OpenAI SDK の audio.speech.create() をそのまま利用できます。
| メソッド | パス | 認証 | 備考 |
|---|---|---|---|
POST | /api/v1/audio/speech | Bearer キーまたは x402(SIWX) | JSON ボディを送信し、生の音声データを返します。入力文字数に応じて課金されます。 |
POST | /api/v1/audio/voices | Bearer キーまたは x402(SIWX) | multipart/form-data。音声をクローンして vv_… ハンドルを作成します。GET /audio/voices はありません。 |
使用する場面
- ナレーション、音声による応答、またはテキストから生成した UI 音声が必要な場合。
- 特定の音声ファミリー(ElevenLabs、Kokoro、xAI、Qwen 3、Orpheus、Chatterbox、MiniMax、Inworld、Gemini Flash、Gradium)が必要な場合。
- 生成と同時に返されるストリーミング音声が必要な場合。
- 対応モデルでスタイルや感情を制御したい場合、またはクローンした音声で合成したい場合。
音楽、効果音、および文字単位で料金が設定されている ElevenLabs TTS モデル(v3、v4、v4 Turbo、Multilingual v2)(非同期)については、venice-audio-music を参照してください。文字起こし(音声 → テキスト)については、venice-audio-transcription を参照してください。
最小リクエスト
curl https://api.venice.ai/api/v1/audio/speech \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-xai-v1",
"voice": "eve",
"input": "Hello, welcome to Venice Voice.",
"response_format": "mp3",
"speed": 1.0,
"streaming": false
}' --output hello.mp3
レスポンスは生の音声データです。Content-Type は、実際に生成された形式に応じて audio/mpeg、audio/opus、audio/aac、audio/flac、audio/wav、または audio/pcm になります。
リクエストスキーマ
ボディは厳密に検証されます。不明なフィールドを指定すると 400 が返されます。
| フィールド | 型 | デフォルト | 備考 |
|---|---|---|---|
input | string | — | 必須。 1~4096 文字で、空白以外の文字を含める必要があります。サニタイズ後に発話可能なテキストが残らない場合(例:マークアップや絵文字のみ)は、400 "Input must contain speakable text" が返されます。 |
model | string | — | 指定してください。 OpenAPI スキーマではデフォルトとして tts-kokoro が記載されていますが、そのデフォルトは適用されません。model を省略すると 400 "model is required" が返されます。不明な ID を指定すると 404 が返されます。 |
voice | string、512 以下 | モデルのデフォルト音声 | 音声はモデルごとに異なります。他のモデルの音声を指定すると 400 が返されます。POST /audio/voices で作成したクローン音声ハンドル(vv_…)も受け付けます(作成時と同じ model を指定)。また、supports_custom_voice_id: true のモデル(現在は tts-elevenlabs-turbo-v2-5)では、生のプロバイダー Voice ID も受け付けます。 |
response_format | mp3 / opus / aac / flac / wav / pcm | モデルの default_format | 対応形式はモデルごとに異なります。 model_spec.supported_formats / default_format を確認してください。モデルが対応していない形式をリクエストすると 400 が返されます。 |
speed | number | 1.0 | スキーマ上の範囲は 0.25–4.0 です。Kokoro にはそのまま渡されます。xAI(0.7–1.5)、ElevenLabs Turbo(0.7–1.2)、MiniMax(0.5–2)では範囲内に制限され、その他のモデルでは無視されます。 |
streaming | bool | false | true の場合、生成と同時にチャンク化された音声ストリームを返します。false の場合、Content-Length 付きのバッファ済みファイルを返します。 |
language | string、2~32 文字 | — | 任意のヒントです。形式はモデルごとに異なります(下記参照)。Gemini Flash はロケールリストにない値を削除し、ElevenLabs Turbo は 5 文字を超える値を削除します。Qwen 3、MiniMax、xAI は指定された値をそのまま転送するため、モデルが受け付けない値を指定すると 400 "Invalid request parameters: language" が返されます。その他のモデルでは無視されます。 |
prompt | string、500 以下 | — | スタイルや感情を指定する指示です。Qwen 3 と Gemini Flash で使用され(スタイル指示として送信)、その他では無視されます。 |
temperature | number、0~2 | — | Qwen 3、Orpheus、Chatterbox HD、Gemini Flash で使用され、その他では無視されます。 |
top_p | number、0~1 | — | Qwen 3 のみで使用され、その他では無視されます。 |
モデルごとの language:Qwen 3 → 完全な言語名(English、Chinese、…、デフォルトは自動判定)。xAI → ISO 639-1(en)。指定された値がそのまま渡されるため、有効なコードを指定してください(デフォルトは自動判定)。ElevenLabs Turbo → ISO 639-1(5 文字を超える値は削除され、5 文字以下の値はそのまま転送されます)。MiniMax → 完全な言語名(言語ブーストとして送信され、検証されません)。Gemini Flash → English (US) や Japanese (Japan) などの完全なロケール文字列(それ以外は削除されます)。Kokoro、Inworld、Chatterbox、Orpheus、Gradium では無視されます。
モデル
以下の各 ID は、ライブの GET /models?type=tts リストに含まれています。価格は model_spec.pricing.input.usd で、入力文字数 100 万文字あたりの USDです。
| モデル ID | デフォルトの音声 | 形式(デフォルトが先頭) | プライバシー | 備考 |
|---|---|---|---|---|
tts-kokoro | af_sky | mp3, opus, aac, flac, wav, pcm | 非公開 | 音声のプレフィックスで多言語に対応します。speed は上限を設けずに渡されます。 |
tts-qwen3-0-6b / tts-qwen3-1-7b | Vivian | mp3 | 非公開 | prompt、temperature、top_p、language に対応します。 |
tts-xai-v1 | eve | mp3, wav, pcm | 匿名化 | 26 種類の音声、ISO 形式の language に対応します。 |
tts-inworld-1-5-max | Craig | wav | 匿名化 | 低レイテンシです。すべての音声が英語です。 |
tts-chatterbox-hd | Aurora | wav | 非公開 | temperature に対応します。ゼロショットの音声クローニングに対応します。 |
tts-orpheus | tara | wav | 非公開 | temperature に対応します。 |
tts-elevenlabs-turbo-v2-5 | Rachel | mp3 | 匿名化 | ElevenLabs の Voice ID をそのまま voice として指定できます。 |
tts-minimax-speech-02-hd | WiseWoman | mp3, pcm, flac | 匿名化 | language に対応します。このモデルでのクローニングは、通常のキーでは利用できません(下記参照)。 |
tts-gemini-3-1-flash | Kore | mp3, opus, wav | 匿名化 | prompt、temperature、ロケール形式の language に対応します。 |
tts-gradium-v1 | Emma | wav, pcm, opus | 匿名化 | 言語は音声によって決まります。language パラメーターはありません。 |
呼び出す前に、必ず GET /models?type=tts を確認してください。確認する項目は、model_spec.voices(正規の音声リスト)、supported_formats、default_format、supports_custom_voice_id、privacy、pricing、および音声クローニングモデルの場合は voice_cloning です。モデルごとのパラメーター対応状況(prompt / temperature / top_p / language)は /models では公開されていません。上記の表を参照してください。
modelPrivacy: PRIVATE_ONLY のキーでは、anonymized モデルに対して 403 が返されます(PRIVATE_TEXT キーはここでは制限されません)。
音声(model_spec.voices より)
大文字と小文字を区別します。voice を省略すると、モデルのデフォルトが使用されます。
- Kokoro —
<lang><gender>_<name>:aはアメリカ英語、bはイギリス英語、zは中国語、fはフランス語、hはヒンディー語、iはイタリア語、jは日本語、pはポルトガル語、eはスペイン語を表し、f/mは性別を表します。例:af_sky、af_bella、af_heart、am_adam、am_michael、bf_emma、bm_george、ff_siwis、jf_alpha、zf_xiaoxiao、ef_dora、pm_alex(全54種類)。 - Qwen 3 —
Vivian、Serena、Ono_Anna、Sohee、Uncle_Fu、Dylan、Eric、Ryan、Aiden - xAI —
eve、ara、rex、sal、leo、altair、atlas、carina、castor、celeste、cosmo、helios、helix、iris、kepler、lumen、luna、lux、naksh、orion、perseus、rigel、sirius、ursa、zagan、zenith - Orpheus —
tara、leah、jess、mia、zoe、leo、dan、zac - Inworld —
Craig、Ashley、Olivia、Sarah、Elizabeth、Priya、Alex、Edward、Theodore、Ronald、Mark、Hades、Luna、Pixie - Chatterbox —
Aurora、Britney、Siobhan、Vicky、Blade、Carl、Cliff、Richard、Rico - ElevenLabs Turbo —
Rachel、Aria、Sarah、Laura、Charlotte、Alice、Matilda、Jessica、Lily、Roger、Charlie、George、Callum、River、Liam、Will、Eric、Chris、Brian、Daniel、Bill— または任意の ElevenLabs Voice ID - MiniMax —
WiseWoman、FriendlyPerson、InspirationalGirl、CalmWoman、LivelyGirl、LovelyGirl、SweetGirl、ExuberantGirl、DeepVoiceMan、CasualGuy、PatientMan、YoungKnight、DeterminedMan、ImposingManner、ElegantMan - Gemini Flash —
Achernar、Achird、Algenib、Algieba、Alnilam、Aoede、Autonoe、Callirrhoe、Charon、Despina、Enceladus、Erinome、Fenrir、Gacrux、Iapetus、Kore、Laomedeia、Leda、Orus、Pulcherrima、Puck、Rasalgethi、Sadachbia、Sadaltager、Schedar、Sulafat、Umbriel、Vindemiatrix、Zephyr、Zubenelgenubi - Gradium — 英語:
Emma、Kent、Eva、Jack。ドイツ語:Mia、Maximilian。スペイン語:Valentina、Sergio。フランス語:Elise、Leo。ポルトガル語:Alice、Davi
選択したモデルのリストにない音声(または、許可されている場合に有効なハンドル/カスタム Voice ID ではないもの)を指定すると、400 が返されます。プロバイダーが拒否する ElevenLabs Voice ID も 400 を返します(課金されません)。
音声のクローン作成 — POST /audio/voices
音声サンプルから音声をクローンし、/audio/speech の voice として渡すハンドル(vv_…)を取得します。multipart/form-data のみ対応し、最大サイズは25 MBです。
curl https://api.venice.ai/api/v1/audio/voices \
-H "Authorization: Bearer $VENICE_API_KEY" \
-F "model=tts-chatterbox-hd" \
-F "[email protected]"
{ "id": "vv_…", "model": "tts-chatterbox-hd" }
| フィールド | 備考 |
|---|---|
file | 音声サンプル。マルチパートのフィールド名は file です。拡張子/MIME とバイナリシグネチャによって検証されます。5秒以上の、明瞭な音声録音を推奨します(voice_cloning.min_sample_seconds。目安であり、Venice は再生時間を測定しません)。 |
model | デフォルトは tts-chatterbox-hd です。通常の API キーで利用できる唯一のクローン作成モデルです。 |
tts-chatterbox-hd は、/models 上で model_spec.voice_cloning としてクローン作成の仕様を公開しています。
{ "mode": "zero_shot", "accepted_formats": ["mp3", "wav", "flac", "mp4"], "min_sample_seconds": 5, "retention_days": 7 }
- ゼロショット:音声テンプレートは作成されません。参照音声は TTL 付きで保存され、合成のたびに再読み込みされます。ハンドルは使用状況にかかわらず、作成から 7日後 に機能しなくなります。
mp4は M4A に対応します。その他のコンテナ形式のサンプル(または音声以外のシグネチャを持つサンプル)は、アップロード前に400を返します。- クローン作成が成功するたびに、クローンごとの固定料金が課金されます。音声合成は別途、
/audio/speechで文字数に応じて課金されます。
tts-minimax-speech-02-hd も OpenAPI 仕様の model 列挙型に含まれていますが、通常のキーではクローン作成を利用できず、403 "Voice cloning … is not available on your account" が返されます。そのモデルの /models 上の仕様には voice_cloning オブジェクトがありません。これを判断の目安にしてください。
ハンドルは、その作成に使用したモデルに紐付けられます。クローン作成に対応していないモデルとともに渡すと 400 が返されます。別のクローン作成モデルと組み合わせた場合も失敗します。
ストリーミング
{
"model": "tts-xai-v1",
"voice": "eve",
"input": "Hello, this is a long document to narrate. ...",
"streaming": true,
"response_format": "mp3"
}
streaming: true の場合、本文はチャンク化された(Transfer-Encoding: chunked)音声ストリームです。届き次第デコードしてください。pcm(対応モデル:Kokoro、xAI、MiniMax、Gradium)は、未加工の Web Audio 再生に便利です。ヘッダー送信前にストリームが失敗すると、500 {"error":"Stream error"} が返されます。その後は接続が終了するだけです。
OpenAI SDK
import OpenAI from 'openai'
import fs from 'node:fs/promises'
const client = new OpenAI({
apiKey: process.env.VENICE_API_KEY,
baseURL: 'https://api.venice.ai/api/v1',
})
const mp3 = await client.audio.speech.create({
model: 'tts-xai-v1',
voice: 'eve',
input: 'Hello from Venice.',
response_format: 'mp3',
})
await fs.writeFile('hello.mp3', Buffer.from(await mp3.arrayBuffer()))
スタイル/感情(Qwen 3、Gemini Flash)
{
"model": "tts-qwen3-1-7b",
"voice": "Vivian",
"input": "We did it!",
"prompt": "Excited and energetic.",
"temperature": 0.9,
"top_p": 0.95
}
tts-gemini-3-1-flash では prompt(スタイルの指示)と temperature も使用できますが、top_p は使用できません。他のファミリーでは、話し方は音声の選択自体(例:Inworld の Hades と Pixie)によって決まります。prompt/temperature/top_p は無視されます。
エラー
| コード | 意味 |
|---|---|
400 | model が指定されていない、スキーマエラー(厳密な本文、input が 4096 文字を超える/空/発話できない)、モデルで無効な音声、サポートされていない response_format、不正なクローン作成サンプル(/audio/voices)、クローン作成モデル以外と組み合わせたハンドル。 |
401 | 認証に失敗しました。 |
402 | 残高が不足しています。Bearer の場合は {"error":"Insufficient USD or Diem balance…"}、キー自体の上限に達した場合は `"API key USD |
403 | PRIVATE_ONLY キーで anonymized モデルを呼び出した、リージョン制限がある、または /audio/voices でアカウントに公開されていないクローン作成モデルを呼び出した場合。 |
404 | 不明な model です。 |
413 | /audio/voices のサンプルが 25 MB を超えています。 |
429 | レート制限に達しました。 |
500 | 推論の失敗/ストリームエラー。 |
502 | 上流の TTS で一時的なエラーが発生しました — {"error":"Speech synthesis failed due to a temporary upstream error. Please retry."}(code フィールドなし)。バックオフして再試行してください。 |
503 | モデルが一時的にオフラインです — ジッターを加えて再試行してください。 |
本文の形式と再試行方法については、venice-errors を参照してください。
注意点
- 必ず
modelを指定してください。ドキュメントに記載されているデフォルト値は適用されません。 inputの上限は 4096 文字です。長いコンテンツは文の区切りで分割し、クライアント側で音声を連結してください。mp3がデフォルトだとは限りません。Inworld、Chatterbox、Orpheus、Gradium のデフォルトはwavで、モデルのsupported_formatsにないresponse_formatを指定すると400が返されます。response_formatを省略するか、先に/modelsを確認してください。speedが適用されるのは Kokoro(上限・下限なし)、xAI、ElevenLabs Turbo、MiniMax(上限・下限あり)のみです。自然なナレーションには0.8–1.3を使用してください。streamingは Venice 固有のフィールドで、OpenAI SDK の型には含まれていません。追加の本文フィールドとして渡すか、REST エンドポイントを直接呼び出して本文を読み取ってください。- 音声名は大文字と小文字が区別されます(
eve≠Eve、af_sky≠AF_SKY)。leo(xAI/Orpheus)とLeo(Gradium、フランス語)の違いに注意してください。 - Chatterbox のクローン音声ハンドルは、作成から 7 日後に期限切れになります。ハンドルを長期間保存せず、再度クローンを作成してください。
- Gradium には
languageパラメーターがありません。希望する言語に対応する音声を選択してください。