本页用的就是下面这个接口。multipart/form-data 上传音频,不是 JSON。
POST https://api.siliconflow.cn/v1/audio/transcriptions Authorization: Bearer <你的Key> Content-Type: multipart/form-data file=<音频二进制> model=XingChenAGI/XingChenASR-V3.2-Ultra
// 返回
{
"duration": 7.97,
"text": "今天天气很好,我们一起去公园散步吧。人工智能正在改变世界。",
"usage": { "type": "duration", "seconds": 8 }
}
usage.seconds 即计入时长。curl -X POST https://api.siliconflow.cn/v1/audio/transcriptions ^ -H "Authorization: Bearer %SF_KEY%" ^ -F "file=@D:/test/audio.wav" ^ -F "model=XingChenAGI/XingChenASR-V3.2-Ultra"
# CLI:D:\pros\free-ai\asr.py(密钥读 .env,不用写在代码里)
cd /d/pros/free-ai
py asr.py audio.wav # 直接打印文本
py asr.py audio.wav --json # 输出 JSON:{"text":..., "duration":...}
py asr.py --models # 列出全部音频模型
# 作为库调用
import asr
r = asr.transcribe("audio.wav")
print(r["text"], r["duration"])
const fd = new FormData();
fd.append("file", fileInput.files[0]);
fd.append("model", "XingChenAGI/XingChenASR-V3.2-Ultra");
const r = await fetch("https://api.siliconflow.cn/v1/audio/transcriptions", {
method: "POST",
headers: { Authorization: "Bearer " + key }, // 不要手动设 Content-Type
body: fd
});
const { text, duration } = await r.json();
接口返回 Access-Control-Allow-Origin: *,浏览器可跨域直连,无需自建后端。
| 字段 | 说明 |
|---|---|
| file | 音频文件二进制(multipart),常见格式 mp3 / wav / m4a / flac / ogg |
| model | XingChenAGI/XingChenASR-V3.2-Ultra(本页固定,不提供其他选择) |
列音频模型:GET https://api.siliconflow.cn/v1/models?type=audio(参数是 type=audio,写 asr / speech-to-text 都返回空)。
输入一次口令即可,之后 30 天内自动通过