自托管 OpenAI Whisper API 替代方案:FunASR 一行起兼容 /v1/audio/transcriptions 服务
OpenAI 的 /v1/audio/transcriptions(Whisper API)按分钟计费、要把音频上传到云端、还有速率限制。如果你只是想把音频转成文字,完全可以在自己机器上起一个接口完全一致的服务——已有代码只改一个 base_url 就能切过来。FunASR 自带的 funasr-server 就是干这个的。下面每段代码都实测过。
一行启动 OpenAI 兼容服务
pip install -U funasr
funasr-server --model sensevoice --device cuda # 监听 localhost:8000
启动后就有了和 OpenAI 一致的两个端点:POST /v1/audio/transcriptions 和 GET /v1/models。
用 OpenAI 官方 SDK 直接调(只改 base_url)
你原来调 OpenAI 的代码,几乎一字不改,只把 base_url 指到本地服务、api_key 随便填:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
with open("audio.wav", "rb") as f:
r = client.audio.transcriptions.create(model="sensevoice", file=f)
print(r.text)
# -> 欢迎大家来体验达摩院推出的语音识别模型
列出可用模型也和 OpenAI 一样:
print([m.id for m in client.models.list().data])
# -> ['fun-asr-nano', 'sensevoice', 'paraformer']
或者用 curl / 任意 HTTP 客户端
curl http://localhost:8000/v1/audio/transcriptions \
-F "file=@audio.wav" \
-F "model=sensevoice"
# -> {"text": "欢迎大家来体验达摩院推出的语音识别模型"}
因为接口是 OpenAI 兼容的,Node 的 openai 包、LangChain、各种现成 SDK 都能直接连。
对比:OpenAI Whisper API vs FunASR 自托管
| OpenAI Whisper API | FunASR 自托管 | |
|---|---|---|
| 费用 | $0.006 / 分钟 | 免费(自己的机器) |
| 数据隐私 | 音频上传到云端 | 不出本地 |
| 速率限制 | 有 | 无 |
| 中文准确率 | 一般 | 更高(实测对比) |
| 速度 | — | SenseVoice 非自回归,远快于 Whisper |
| 接口 | /v1/audio/transcriptions | 完全一致 |
选哪个模型
sensevoice—— 默认,非自回归,极快,50+ 语言,带情感/事件;日常首选。fun-asr-nano—— LLM 解码,精度最高,31 语言含中文方言(需要 vLLM)。paraformer—— 经典中文生产级,稳。
请求里把 model= 换成对应名字即可,无需重启服务。
从 OpenAI 迁移要改什么
- base_url:指到你的
funasr-server。 - api_key:本地服务不校验,随便填一个非空值。
- 其余不变:
client.audio.transcriptions.create(...)的调用方式一致。
FunASR 是通义实验室开源的工业级语音识别工具包。
在 GitHub 上 Star FunASR ★