转写音频文件
file 是二进制文件,不能用 JSON 请求体。response_format=json 时会返回 {"text":"..."}。
curl https://api-models.com/v1/audio/transcriptions \
-H "Authorization: Bearer $API_MODELS_KEY" \
-F "file=@./meeting.mp3" \
-F "model=whisper-1" \
-F "response_format=json" \
-F "language=zh"import os
import requests
with open("meeting.mp3", "rb") as audio:
response = requests.post(
"https://api-models.com/v1/audio/transcriptions",
headers={"Authorization": f"Bearer {os.environ['API_MODELS_KEY']}"},
files={"file": ("meeting.mp3", audio, "audio/mpeg")},
data={"model": "whisper-1", "response_format": "json", "language": "zh"},
timeout=180,
)
response.raise_for_status()
print(response.json()["text"])import { openAsBlob } from "node:fs";
const form = new FormData();
form.set("file", await openAsBlob("meeting.mp3"), "meeting.mp3");
form.set("model", "whisper-1");
form.set("response_format", "json");
const response = await fetch("https://api-models.com/v1/audio/transcriptions", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.API_MODELS_KEY}` },
body: form,
});
if (!response.ok) throw new Error(await response.text());
console.log((await response.json()).text);获取单词时间戳
设置 response_format=verbose_json,并添加 timestamp_granularities[]=word。其他返回格式不能使用时间戳粒度。
curl https://api-models.com/v1/audio/transcriptions \
-H "Authorization: Bearer $API_MODELS_KEY" \
-F "file=@./meeting.mp3" \
-F "model=whisper-1" \
-F "response_format=verbose_json" \
-F "timestamp_granularities[]=word"把音频翻译为英文
翻译端点会先识别语音,再返回英文文本;它与原语言转写端点不同。
curl https://api-models.com/v1/audio/translations \
-H "Authorization: Bearer $API_MODELS_KEY" \
-F "file=@./chinese.m4a" \
-F "model=whisper-1" \
-F "response_format=json"文件、格式与参数
| 字段 | 要求 | 说明 |
|---|---|---|
file | 必填 | 最大 25 MB;支持 mp3、mp4、mpeg、mpga、m4a、wav、webm |
model | 必填 | whisper-1 |
language | 可选 | ISO-639-1 语言代码,可提高速度和准确率 |
prompt | 可选 | 提示拼写或续写,只使用前 224 tokens |
response_format | 可选 | json、text、srt、verbose_json、vtt |
temperature | 可选 | 0–1,默认 0 |
timestamp_granularities[] | 可选 | word 或 segment,要求 verbose_json |
whisper-1 不支持流式转写。超过 25 MB 的文件需要压缩或分段,并尽量不要在一句话中间切断。
常见问题
| 现象 | 处理 |
|---|---|
| 415 或 JSON 无效 | 使用 -F 发送 multipart 字段 |
| 文件过大 | 压缩或拆分到 25 MB 以下 |
| 没有时间戳 | 使用 verbose_json 并指定时间戳粒度 |
| 翻译结果是英文 | 这是 /translations 的预期行为;保留原语言请用 /transcriptions |