9router-stt について
9router-sttは、9Routerの文字起こしエンドポイントに音声を送るスキルです。モデルの確認や設定の指定に対応し、複数のプロバイダーから異なる形式の結果を取得できます。
主な機能
- 01利用可能な文字起こしモデルの確認
- 02API経由の音声文字起こし
- 03言語とプロンプトの指定
- 04JSON、テキスト、字幕での出力
活用シーン
- 01録音音声の文字起こし
- 02SRTまたはVTT字幕の作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ decolua/ 9router --skill 9router-sttインストール後、Claude Code で/9router-sttを入力して読み込まれたか確認します。
詳細
9Router — 音声認識
NINEROUTER_URL が必要です(認証が有効な場合は NINEROUTER_KEY も必要です)。セットアップについては https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md を参照してください。
検出
curl $NINEROUTER_URL/v1/models/stt | jq '.data[].id'
# Per-model params (language, response_format, prompt, temperature support)
curl "$NINEROUTER_URL/v1/models/info?id=openai/whisper-1"
model = 音声認識モデル ID(例:openai/whisper-1、groq/whisper-large-v3、deepgram/nova-3、gemini/gemini-2.5-flash)。
エンドポイント
POST $NINEROUTER_URL/v1/audio/transcriptions(OpenAI Whisper 互換、multipart/form-data)
| フィールド | 必須 | 備考 |
|---|---|---|
model | はい | /v1/models/stt から指定 |
file | はい | 音声ファイル(mp3、wav、m4a、webm、ogg、flac) |
language | いいえ | ISO-639-1(例:en、vi) |
prompt | いいえ | 文字起こしを誘導するヒントテキスト |
response_format | いいえ | json(デフォルト)/text/verbose_json/srt/vtt |
temperature | いいえ | 0~1 |
使用例
curl -X POST "$NINEROUTER_URL/v1/audio/transcriptions" \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-F "model=openai/whisper-1" \
-F "[email protected]" \
-F "language=vi"
JS(Node):
import { createReadStream } from "node:fs";
const form = new FormData();
form.append("model", "groq/whisper-large-v3-turbo");
form.append("file", new Blob([await (await import("node:fs/promises")).readFile("audio.mp3")]), "audio.mp3");
const r = await fetch(`${process.env.NINEROUTER_URL}/v1/audio/transcriptions`, {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.NINEROUTER_KEY}` },
body: form,
});
const { text } = await r.json();
console.log(text);
レスポンスの形式
デフォルト(response_format=json):
{ "text": "Xin chào, đây là bản ghi âm." }
verbose_json では、language、duration、タイムスタンプ付きの segments[] が追加されます。
srt/vtt は字幕テキストを返します。
プロバイダーごとの注意点
| プロバイダー | model の形式 | 備考 |
|---|---|---|
openai | whisper-1、gpt-4o-transcribe、gpt-4o-mini-transcribe | OpenAI ネイティブ形式 |
groq | whisper-large-v3、whisper-large-v3-turbo、distil-whisper-large-v3-en | 最速。OpenAI 形式 |
gemini | gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-lite | サーバーが音声をインラインで含めた generateContent に変換します |
deepgram | nova-3、nova-2、whisper-large | トークン認証。サーバーがレスポンスを適合させます |
assemblyai | universal-3-pro、universal-2 | 非同期のアップロードとポーリングはサーバー側で処理されます |
nvidia | nvidia/parakeet-ctc-1.1b-asr | NIM エンドポイント |
huggingface | openai/whisper-large-v3、openai/whisper-small | HF Inference API |
elevenlabs | scribe_v1、scribe_v2 | Whisper 互換形式。Bearer ではなく xi-api-key 認証を使用します。追加パラメーター:timestamps_granularity(word/character/none)、tag_audio_events、および いずれか一方(diarize=true または num_speakers(1~32))を使った話者ラベリング。両方を送信するとリクエストが無効になるため、diarize が優先され、num_speakers は破棄されます。空の language は、自動検出のため上流には送信されません。srt/vtt と verbose_json のセグメントは Scribe 独自の additional_formats レンダリングから提供されます。そのため、上流のレンダリングが利用できない場合、segments[] は生成されず省略されます。temperature と prompt は受け付けません。これらは転送されません。 |
コメント
Markdown 対応