mcpField
9
9router-tts

9router-tts

github.com/decoluaクリエイティブ・メディア31.6k131 回インストール今日更新
リポジトリ

9router-tts について

9router-tts は、テキストを音声に変換するワークフローで 9Router の音声合成サービスを使うスキルです。モデルと音声を確認でき、音声バイト列または JSON 内の Base64 音声を返します。

主な機能

  1. 01テキストから音声を生成
  2. 02TTSモデルと音声の確認
  3. 03MP3またはJSON形式で応答
  4. 04プロバイダー固有の音声IDを使用

活用シーン

  1. 01テキストからMP3ファイルを作成
  2. 02言語に応じた音声の選択
  3. 03アプリでのBase64音声受信
  4. 04複数プロバイダー経由の音声生成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/decolua/9router --skill 9router-tts

インストール後、Claude Code で/9router-ttsを入力して読み込まれたか確認します。

詳細

9Router — テキスト読み上げ

NINEROUTER_URL が必要です(認証が有効な場合は NINEROUTER_KEY も必要です)。セットアップについては、https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md を参照してください。

検出

# 1) List models
curl $NINEROUTER_URL/v1/models/tts | jq '.data[].id'
# 2) Per-model metadata (params, voicesUrl if voice-by-id)
curl "$NINEROUTER_URL/v1/models/info?id=el/eleven_multilingual_v2"
# 3) List voices (elevenlabs, edge-tts, deepgram, inworld, local-device). Optional ?lang=vi
curl "$NINEROUTER_URL/v1/audio/voices?provider=edge-tts&lang=vi" | jq '.data[].model'

/v1/audio/speech の model フィールドには、音声 ID を直接指定します(例:edge-tts/vi-VN-HoaiMyNeural、el/<voice_id>、またはモデルとデフォルト音声の組み合わせである openai/tts-1)。

エンドポイント

POST $NINEROUTER_URL/v1/audio/speech

フィールド必須備考
modelはい/v1/models/tts の音声 ID
inputはい読み上げるテキスト

?response_format=mp3(デフォルト、未加工のバイト列)または ?response_format=json({audio: base64, format})をクエリに指定します。

例

MP3 を保存します:

curl -X POST "$NINEROUTER_URL/v1/audio/speech" \
  -H "Authorization: Bearer $NINEROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"openai/tts-1","input":"Hello world"}' \
  --output speech.mp3

JS(ファイルを保存):

import { writeFile } from "node:fs/promises";
const r = await fetch(`${process.env.NINEROUTER_URL}/v1/audio/speech`, {
  method: "POST",
  headers: { "Authorization": `Bearer ${process.env.NINEROUTER_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ model: "el/eleven_multilingual_v2", input: "Xin chào" }),
});
await writeFile("speech.mp3", Buffer.from(await r.arrayBuffer()));

レスポンスの形式

デフォルト → 未加工の音声バイト列(Content-Type audio/mp3)。

?response_format=json:

{ "audio": "SUQzBAAAA...", "format": "mp3" }

プロバイダーごとの注意事項(モデル形式)

プロバイダーmodel の形式備考
openaitts-1/alloy(モデル/音声)または音声のみデフォルトモデルは gpt-4o-mini-tts
elevenlabs<model_id>/<voice_id> または <voice_id>デフォルトモデルは eleven_flash_v2_5。音声の一覧は Dashboard で確認できます
openrouteropenai/gpt-4o-mini-tts/alloychat-completions の音声モダリティ経由でストリーミング
edge-ttsvi-VN-HoaiMyNeural などの音声 IDnoAuth。デフォルトは vi-VN-HoaiMyNeural
google-ttsen、vi などの言語コードnoAuth
local-deviceOS の音声名(say -v ? / SAPI)noAuth。ffmpeg が必要です
deepgramaura-asteria-en などトークン認証
nvidia、inworld、cartesia、playhtmodel/voiceプロバイダー固有の認証ヘッダー
coqui、tortoiseスピーカー / 音声 IDlocalhost、認証なし
hyperbolicモデル IDBody = {text} のみ

コメント