9router-tts について
9router-tts は、テキストを音声に変換するワークフローで 9Router の音声合成サービスを使うスキルです。モデルと音声を確認でき、音声バイト列または JSON 内の Base64 音声を返します。
主な機能
- 01テキストから音声を生成
- 02TTSモデルと音声の確認
- 03MP3またはJSON形式で応答
- 04プロバイダー固有の音声IDを使用
活用シーン
- 01テキストからMP3ファイルを作成
- 02言語に応じた音声の選択
- 03アプリでのBase64音声受信
- 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 の形式 | 備考 |
|---|---|---|
openai | tts-1/alloy(モデル/音声)または音声のみ | デフォルトモデルは gpt-4o-mini-tts |
elevenlabs | <model_id>/<voice_id> または <voice_id> | デフォルトモデルは eleven_flash_v2_5。音声の一覧は Dashboard で確認できます |
openrouter | openai/gpt-4o-mini-tts/alloy | chat-completions の音声モダリティ経由でストリーミング |
edge-tts | vi-VN-HoaiMyNeural などの音声 ID | noAuth。デフォルトは vi-VN-HoaiMyNeural |
google-tts | en、vi などの言語コード | noAuth |
local-device | OS の音声名(say -v ? / SAPI) | noAuth。ffmpeg が必要です |
deepgram | aura-asteria-en など | トークン認証 |
nvidia、inworld、cartesia、playht | model/voice | プロバイダー固有の認証ヘッダー |
coqui、tortoise | スピーカー / 音声 ID | localhost、認証なし |
hyperbolic | モデル ID | Body = {text} のみ |
コメント
Markdown 対応