工程实践
换个地址就能用:在本地跑通 OpenAI 转录接口

三个端点、六种返回格式、默认离线——openasr serve 在 localhost 上回答你的客户端已经在发的那些请求,只是诚实地告诉你:这是子集,不是全量。
大多数转录代码写出来就已经长成了同一个样子:一个 multipart 上传,一个 model 字段,一个 response_format,拿回 JSON。真正想动的只有那一跳——从云端挪到本地。OpenASR 的本地服务在回环地址上回答同样的 HTTP 形状,所以你改的是一行 base URL,不是整个客户端。但有一句话要从头带到尾:它镜像的是 OpenAI 转录接口的一个聚焦子集,从来不是全量 API。
回环地址上的三个端点
openasr serve 启动一个默认绑定回环地址的 HTTP 服务,其中三条路由与 OpenAI 转录接口形状一致:GET /health 做存活探针,GET /v1/models 列出本地可用的模型 ID,POST /v1/audio/transcriptions 干正事。
# 在回环地址上启动 OpenAI 兼容的转录子集服务openasr serve --addr 127.0.0.1:8080转录端点接受你的客户端已经在发的那些 multipart 字段,返回六种响应格式之一——json、text、srt、vtt、verbose_json、markdown——同一条路由同时覆盖程序化调用和字幕工作流。需要字幕的场景直接请求 srt 或 vtt,从同一个生成转录的调用里拿到字幕文件。
# POST /v1/audio/transcriptionscurl -s http://127.0.0.1:8080/v1/audio/transcriptions \ -F file=@fixtures/sample.wav \ -F model=whisper-small \ -F response_format=json说「兼容」,说的是子集
把预期对齐:这不是完整的 OpenAI 兼容。FAQ 里写得明白——OpenASR 实现的是一个聚焦的本地转录子集加上本地实时路由,不是整个 API 表面。这个切片之外的路由、参数、行为统统不存在,文档会告诉你「没有」,而不是在运行时以某种意外的方式失败。
不是全量 API
OpenASR 回答
/v1/audio/transcriptions、/v1/models和/health——不包括更广泛的 OpenAI API。把它当作转录场景的即插即用,在假设任何其他路由存在之前先查文档。
什么都不出去,什么都不自己进来
这条路径里没有托管推理服务。常规流程默认离线,也没有模型或运行时的自动下载机制——FAQ 明确说明:CLI、API 和默认测试期间不会发生任何自动模型下载。模型只在你主动要求时才到达:openasr pull 解析一条目录条目,通过共享核心拉取引擎安装一个 .oasr 包——同一个引擎也可以从守护进程的 POST /v1/models/{id}/pull 和桌面版的 Models 页面触达。
你换的是 base URL,不是客户端——没有任何东西会在你没有要求的情况下被获取、发送或安装。
认清边界
当前的活跃车道刻意保守:离线且仅输出最终结果,不做 beam search,不提供多语言产品级保证。所以一个指向这里的客户端拿到的是请求/响应形状的忠实子集,但你不应该把 OpenAI 完整的功能集——或任何多语言质量承诺——读进「兼容」这个词里。它对自己实现的部分是即插即用的,对其余部分是明说的。
这个子集的意图很小:让集成面保持熟悉,让音频和模型留在运行 openasr serve 的那台机器上,不假装自己是更多的东西。换掉 base URL,留住你的客户端,边界问题查文档。