asr · 2026-10-09
语音识别
引擎是 SenseVoice-Small(int8)。中文、英文、日文、韩文、粤语自动判断。跑在 ai-003 的 CPU 上,不占 GPU。上下游总表见 gateway-upstream-2026-10-06.html。
以前的 FunASR 名字、以前的 Whisper 名字、新名字,以及旧的 WebSocket,现在都进这一个引擎。Whisper Deployment 保持 0 副本。
网关请求(现在用这个)
| 项 | 值 |
|---|---|
| 内网 | POST http://192.168.2.100:11401/v1/audio/transcriptions |
| 鉴权 | 内网 11401 不需要 Bearer |
| 模型名 | funasr、faster-whisper-medium、sensevoice。三个结果相同。不写时按 funasr |
| 正文 | multipart/form-data,字段 file 是音频 |
| 返回 | {"text":"..."} |
| 超时 | 短句几秒。长音频客户端给到 300 秒。当前是 1 个 CPU 副本,请求串行 |
curl -sS http://192.168.2.100:11401/v1/audio/transcriptions \ -F model=funasr \ -F file=@audio.wav
model 换成 faster-whisper-medium 或 sensevoice 即可,文本一样。16 kHz 单声道 WAV 直接识别;其它常见音频由引擎里的 ffmpeg 转成 16 kHz 单声道。
公网
三个地址的正文和模型名与内网相同,只是要带各自的令牌。公网没有另一套模型名。
| 入口 | 地址 | 鉴权 |
|---|---|---|
| ttkk | POST https://ttkk.inping.com/v1/audio/transcriptions | Authorization: Bearer sk-…(ttkk 控制台令牌) |
| ttqq | POST https://ttqq.inping.com/v1/audio/transcriptions | Authorization: Bearer sk-…(ttqq 控制台令牌,转发到 ttkk) |
| api.clavue.com | POST https://api.clavue.com/v1/audio/transcriptions | 会员会话,或 Bearer cv_live_… |
curl -sS https://ttkk.inping.com/v1/audio/transcriptions \ -H "Authorization: Bearer $CLAVUE_KEY" \ -F model=funasr \ -F file=@audio.wav
ttqq 把主机名换成 https://ttqq.inping.com,body 不变。api.clavue.com 同样。令牌若设了模型白名单,要把 funasr、faster-whisper-medium、sensevoice 放进白名单。客户端超时给到 300 秒。
名字对照
| model | 现在是什么 |
|---|---|
funasr | 旧 FunASR 产品名。请求已转到 SenseVoice |
faster-whisper-medium | 旧 Whisper 名。名字保留,不再启动 whisper 副本 |
sensevoice | 新名字,同一个引擎 |
数字会做逆文本归一化。口语「今天下午三点在会议室开会」返回 今天下午3点在会议室开会。
以前的请求方法
这些地址不用改客户端,流量已经切到 SenseVoice。
集群内 OpenAI 接口
POST http://funasr-gateway.default.svc:8899/v1/audio/transcriptions。字段与 11401 相同,三个模型名都认。
curl -sS http://funasr-gateway.default.svc:8899/v1/audio/transcriptions \ -F model=faster-whisper-medium \ -F file=@audio.wav
旧 WebSocket
| 地址 | 说明 |
|---|---|
ws://funasr.default.svc:10095 | 原来的 2pass 端口。协议不变 |
ws://funasr.default.svc:10096 | 同样是识别。以前这个端口是演示网页,识别会失败;现在和 10095 一样 |
两种发送顺序都可以:
- 官方客户端:先 JSON
{"mode":"offline","is_speaking":true,"wav_name":"audio.wav"},再发二进制音频,再 JSON{"is_speaking":false}。 - 旧 funasr-gateway:先发二进制音频,再发一条 JSON
{"mode":"offline","is_speaking":false,"wav_name":"audio.wav"}。
成功时回一条:{"mode":"offline","text":"...","wav_name":"audio.wav","is_final":true}。
集群内也可以直接 POST http://funasr.default.svc:10095/v1/audio/transcriptions(10096 同样)。这条只认音频文件,不看 model。
字段
| 字段 | 作用 |
|---|---|
file | 必填 |
model | 上面三个名字之一 |
response_format | 默认 json。传 text 时,响应体是带引号的 JSON 字符串,不是纯文本 |
language | 会收下,不参与分流。引擎自己判断语言 |
hotwords | 会收下并转发。SenseVoice 不使用 FunASR 热词,识别结果不会因热词改变 |
不要这样用
- 不要打到
/v1/audio/speech。那是合成和音乐。识别只用/v1/audio/transcriptions。 - 不要为了识别去把 whisper Deployment 扩容。扩容后
faster-whisper-medium可能被拆到另一套引擎。 - 不要把
10096当成静态演示页。那个页面已经不在。 - 不要依赖时间戳或逐句分段。当前只回整段文本。
POST /v1/audio/translations不会翻译,它和转写走同一条识别。