- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 LINUX DO 社区: 是
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
前言 (点击了解更多详细信息)
这是什么
github.com
GitHub - Wangnov/codex-asr: Unofficial Rust CLI/library and local...
Unofficial Rust CLI/library and local Whisper-compatible REST shim for Codex Desktop ASR using local ChatGPT auth
codex-asr,一个逆向自 Codex APP 的 ASR 工具,也就是语音转文字。
Codex APP 里有一个一次性语音输入接口(仅限 ChatGPT 登录和 OpenAI APIKEY,用中转 provider 是没有这个按钮的)。你在 App 里点语音输入的时候,它会把录音上传到:
https://chatgpt.com/backend-api/transcribe
然后拿回一段文本。
这个接口 不是 OpenAI Whisper API,只是 Codex APP(CLI 没有,CLI 走的是 Realtime,那个就不好拆了)自己在用的一个后端接口。
但它其实挺好用的,毕竟作为 VibeCoding 头子软件里的 ASR,要是转写错了就很影响用户体验。而且我估计背后是基于 whisper API 的,质量还是有保障的。最方便的是可以复用本机 Codex APP 里已经登录好的 ChatGPT 账号。
所以我就把这个小接口逆出来,封装成几个比较容易用的形态:
- 一个 Rust CLI:
codex-asr audio.wav - 一个 Rust crate:给其他 Rust 项目直接调
- 一个本地 REST server:
codex-asr serve - 一个 OpenAI Whisper 风格的兼容接口:老的 Whisper 接入脚本比如龙虾之类的,改一下
base_url就能试 - 一个
.silk/ 微信语音预处理入口:先用本机rust-silk解成 WAV,再上传(这里用了我的另一个开源项目: GitHub - Wangnov/rust-silk: SILK v3 编解码工具与 Rust 封装。内置官方 SILK C 源码(BSD 3-Clause),提供易用的 CLI, 覆盖常见的微信语音(含腾讯前缀)与 PCM/WAV 互转场景 | SILK v3 codec tools and Rust bindings. Bundles the official SILK C sources (BSD 3-Clause) and provides a simple CLI for common WeChat voice (Tencent prefix) and PCM/WAV conversions · GitHub ),这是可选项,个人需求加进去的,也可以选配别的解码后端
以下为 AI 写的 README 截图:
效果如何
效果很简单,就不多说了。这里放一下一个意外的数据,并发压测:
可以看到,96 并发也是很稳定的,这也是我特地把它发出来的原因。想薅个免费(其实也不免费,开了订阅的)稳定的 ASR API 还是要下一点功夫的,有 GPT 自带的就用起来
如何安装
Homebrew
brew tap wangnov/tap
brew install codex-asr
cargo-binstall
cargo binstall codex-asr
cargo install
cargo install codex-asr
GitHub Release 安装脚本
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/Wangnov/codex-asr/releases/latest/download/codex-asr-installer.sh \
| sh
Windows PowerShell:
powershell -ExecutionPolicy ByPass -c "irm https://github.com/Wangnov/codex-asr/releases/latest/download/codex-asr-installer.ps1 | iex"
Docker / GHCR
docker pull ghcr.io/wangnov/codex-asr:latest
docker run --rm ghcr.io/wangnov/codex-asr:latest --version
直接在 Release 里下载二进制
Release 0.1.2 - 2026-05-05 · Wangnov/codex-asr
Release Notes Added REST upload size limit with a clear 413 Payload Too Large response. Changed Reload Codex auth from disk before each transcription request. Add upstream connect and request ti...
如何运行
直接转写:
# 默认读取 $CODEX_HOME/auth.json 或 ~/.codex/auth.json
codex-asr audio.wav
# 给上游一个语言提示
codex-asr audio.wav --language zh
# 输出 JSON
codex-asr audio.wav --json
# 文件没有扩展名时,显式告诉 content type
codex-asr raw-audio --content-type audio/wav
如果你手上是微信语音 / SILK:
codex-asr voice.silk --silk-decoder /path/to/rust-silk
这里要说明一下,Codex 上游接口本身不吃 SILK,所以 codex-asr 会先调用外部 rust-silk,把 .silk / .slk 解成临时 WAV,再上传 WAV。
本地起 REST API:
codex-asr serve --api-key local_dev_key
支持的路由:
GET /healthz
POST /v1/audio/transcriptions
POST /audio/transcriptions
为了方便和大厂兼容,我把常用字段按 Whisper 风格兼容了一下,这样就方便龙虾之类的支持 Whisper 格式的应用来调:
file 必填
model 为了兼容 SDK,接受但忽略
language 转发给 Codex /transcribe
response_format 支持 json / text / verbose_json
prompt 接受但忽略
temperature 接受但忽略
srt 和 vtt 不支持,因为 Codex 这个接口本身不返回时间戳
鉴权问题
如果稍微了解一点的,可以直接传 Access Token 来鉴权。如果懒得折腾,直接用本机的 $CODEX_HOME/auth.json 来鉴权就可以了(默认行为)
但是千万注意:
codex-asr 会复用你的个人 Codex / ChatGPT 登录 token,虽然为了方便我打了 Docker 镜像,但是千万不要把没有保护的服务暴露到公网
这个项目默认的保护:
- REST 默认只绑定
127.0.0.1 serve默认要求本地 API key--no-api-key只建议在可信 loopback 环境里用- 公网 Docker 部署示例使用 Caddy 自动 HTTPS,并且仍然要求应用层 api-key
- 工具只读取 auth,不会写入或刷新 auth
- 不保存转写结果,除非你的调用方自己保存
支持格式
本地测试里,上游可以直接接受这些格式:
WAV PCM
MP3
M4A / MP4 AAC
FLAC
Ogg Opus
WebM Opus
微信语音这类 .silk / .slk,需要走外部 rust-silk 解码成临时 WAV 再传。
说完了
以上就是 Codex 实用小工具系列 第二弹:codex-asr。
有问题欢迎直接丢 issue,也欢迎佬友 Star / 插眼。后续还有其他 Codex 周边小工具,我整理完继续发。
Codex 实用小工具系列目录
第一弹:【开源】切 provider 避免丢会话:Codex-Threadripper(Codex实用小工具系列第一弹)
第二弹:【开源】逆向 Codex APP ASR 搓了一个语音转写小工具,支持 Whisper 格式(Codex 实用小工具第二弹)
4 个帖子 - 3 位参与者