mcpField
V
venice-audio-speech

venice-audio-speech

github.com/veniceaiクリエイティブ・メディア160150 回インストール1 週間前に更新
リポジトリ

venice-audio-speech について

venice-audio-speech は、Venice の音声 API でテキストを音声に変換するスキルです。モデルごとの声や形式、ストリーミング出力、音声サンプルからの声の複製に対応します。

主な機能

  1. 01テキスト読み上げ
  2. 02モデル別の音声選択
  3. 03音声ストリーミング出力
  4. 04音声サンプルからの声の複製
  5. 05対応モデルでのスタイル・感情調整

活用シーン

  1. 01文章からナレーションを作成
  2. 02音声応答や UI 音声を生成
  3. 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/speechBearer キーまたは x402(SIWX)JSON ボディを送信し、生の音声データを返します。入力文字数に応じて課金されます。
POST/api/v1/audio/voicesBearer キーまたは 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 が返されます。

フィールド型デフォルト備考
inputstring—必須。 1~4096 文字で、空白以外の文字を含める必要があります。サニタイズ後に発話可能なテキストが残らない場合(例:マークアップや絵文字のみ)は、400 "Input must contain speakable text" が返されます。
modelstring—指定してください。 OpenAPI スキーマではデフォルトとして tts-kokoro が記載されていますが、そのデフォルトは適用されません。model を省略すると 400 "model is required" が返されます。不明な ID を指定すると 404 が返されます。
voicestring、512 以下モデルのデフォルト音声音声はモデルごとに異なります。他のモデルの音声を指定すると 400 が返されます。POST /audio/voices で作成したクローン音声ハンドル(vv_…)も受け付けます(作成時と同じ model を指定)。また、supports_custom_voice_id: true のモデル(現在は tts-elevenlabs-turbo-v2-5)では、生のプロバイダー Voice ID も受け付けます。
response_formatmp3 / opus / aac / flac / wav / pcmモデルの default_format対応形式はモデルごとに異なります。 model_spec.supported_formats / default_format を確認してください。モデルが対応していない形式をリクエストすると 400 が返されます。
speednumber1.0スキーマ上の範囲は 0.25–4.0 です。Kokoro にはそのまま渡されます。xAI(0.7–1.5)、ElevenLabs Turbo(0.7–1.2)、MiniMax(0.5–2)では範囲内に制限され、その他のモデルでは無視されます。
streamingboolfalsetrue の場合、生成と同時にチャンク化された音声ストリームを返します。false の場合、Content-Length 付きのバッファ済みファイルを返します。
languagestring、2~32 文字—任意のヒントです。形式はモデルごとに異なります(下記参照)。Gemini Flash はロケールリストにない値を削除し、ElevenLabs Turbo は 5 文字を超える値を削除します。Qwen 3、MiniMax、xAI は指定された値をそのまま転送するため、モデルが受け付けない値を指定すると 400 "Invalid request parameters: language" が返されます。その他のモデルでは無視されます。
promptstring、500 以下—スタイルや感情を指定する指示です。Qwen 3 と Gemini Flash で使用され(スタイル指示として送信)、その他では無視されます。
temperaturenumber、0~2—Qwen 3、Orpheus、Chatterbox HD、Gemini Flash で使用され、その他では無視されます。
top_pnumber、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-kokoroaf_skymp3, opus, aac, flac, wav, pcm非公開音声のプレフィックスで多言語に対応します。speed は上限を設けずに渡されます。
tts-qwen3-0-6b / tts-qwen3-1-7bVivianmp3非公開prompt、temperature、top_p、language に対応します。
tts-xai-v1evemp3, wav, pcm匿名化26 種類の音声、ISO 形式の language に対応します。
tts-inworld-1-5-maxCraigwav匿名化低レイテンシです。すべての音声が英語です。
tts-chatterbox-hdAurorawav非公開temperature に対応します。ゼロショットの音声クローニングに対応します。
tts-orpheustarawav非公開temperature に対応します。
tts-elevenlabs-turbo-v2-5Rachelmp3匿名化ElevenLabs の Voice ID をそのまま voice として指定できます。
tts-minimax-speech-02-hdWiseWomanmp3, pcm, flac匿名化language に対応します。このモデルでのクローニングは、通常のキーでは利用できません(下記参照)。
tts-gemini-3-1-flashKoremp3, opus, wav匿名化prompt、temperature、ロケール形式の language に対応します。
tts-gradium-v1Emmawav, 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 は無視されます。

エラー

コード意味
400model が指定されていない、スキーマエラー(厳密な本文、input が 4096 文字を超える/空/発話できない)、モデルで無効な音声、サポートされていない response_format、不正なクローン作成サンプル(/audio/voices)、クローン作成モデル以外と組み合わせたハンドル。
401認証に失敗しました。
402残高が不足しています。Bearer の場合は {"error":"Insufficient USD or Diem balance…"}、キー自体の上限に達した場合は `"API key USD
403PRIVATE_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 パラメーターがありません。希望する言語に対応する音声を選択してください。

コメント