用途
9Router 语音转文字(Speech-to-Text)技能通过 9Router 的 /v1/audio/transcriptions 端点进行音频转写,该端点兼容 OpenAI Whisper 的调用形式,可在多个模型供应商之间选择使用。
前置配置
需要设置环境变量 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'
查询单个模型的参数支持情况(language、response_format、prompt、temperature 等):
curl "$NINEROUTER_URL/v1/models/info?id=openai/whisper-1"
model 为 STT 模型 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:
curl -X POST "$NINEROUTER_URL/v1/audio/transcriptions" \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-F "model=openai/whisper-1" \
-F "file=@audio.mp3" \
-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 返回字幕文本。
供应商差异
| 供应商 | 模型格式 | 说明 |
|---|---|---|
| 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 | Token 鉴权;服务端适配响应 |
| 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 结构;使用 xi-api-key 鉴权而非 Bearer。额外参数:timestamps_granularity(word/character/none)、tag_audio_events,以及说话人标注,可通过 diarize=true 或 num_speakers(1–32)实现——同时发送两者会使请求无效,因此 diarize 生效、num_speakers 被丢弃。language 为空时在上游省略以自动检测。srt/vtt 与 verbose_json 的 segments 来自 Scribe 自身的 additional_formats 渲染,因此当上游渲染不可用时 segments[] 会被省略,而非合成。不接受 temperature 或 prompt——这两个参数不会被转发。 |
适用场景与限制
适用于需要将音频转为文本或字幕、并可灵活切换 OCR 之外多种语音识别供应商的场景。使用前应通过 /v1/models/stt 与 /v1/models/info 确认目标模型的可用性与参数支持情况,因为不同供应商对 prompt、temperature、响应格式和鉴权方式的支持存在差异。