【开源】逆向 Codex APP ASR 搓了一个语音转写小工具,支持 Whisper 格式(Codex 实用小工具第二弹)

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社...
【开源】逆向 Codex APP ASR 搓了一个语音转写小工具,支持 Whisper 格式(Codex 实用小工具第二弹)
【开源】逆向 Codex APP ASR 搓了一个语音转写小工具,支持 Whisper 格式(Codex 实用小工具第二弹)
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
  • 我的帖子已经打上 开源推广 标签:
  • 我的开源项目完整开源,无未开源部分:
  • 我的开源项目已链接认可 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 工具,也就是语音转文字。

3f66e8876fbca771ae335a4bd48ef8cd

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 账号。

所以我就把这个小接口逆出来,封装成几个比较容易用的形态:

  1. 一个 Rust CLI:codex-asr audio.wav
  2. 一个 Rust crate:给其他 Rust 项目直接调
  3. 一个本地 REST server:codex-asr serve
  4. 一个 OpenAI Whisper 风格的兼容接口:老的 Whisper 接入脚本比如龙虾之类的,改一下 base_url 就能试
  5. 一个 .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 截图:

image

效果如何

效果很简单,就不多说了。这里放一下一个意外的数据,并发压测:

bb0bc42634872d8bb483e1b13f2c9d1c

可以看到,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 里下载二进制

GitHub

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       接受但忽略

srtvtt 不支持,因为 Codex 这个接口本身不返回时间戳

鉴权问题

如果稍微了解一点的,可以直接传 Access Token 来鉴权。如果懒得折腾,直接用本机的 $CODEX_HOME/auth.json 来鉴权就可以了(默认行为)

但是千万注意:

codex-asr 会复用你的个人 Codex / ChatGPT 登录 token,虽然为了方便我打了 Docker 镜像,但是千万不要把没有保护的服务暴露到公网

这个项目默认的保护:

  1. REST 默认只绑定 127.0.0.1
  2. serve 默认要求本地 API key
  3. --no-api-key 只建议在可信 loopback 环境里用
  4. 公网 Docker 部署示例使用 Caddy 自动 HTTPS,并且仍然要求应用层 api-key
  5. 工具只读取 auth,不会写入或刷新 auth
  6. 不保存转写结果,除非你的调用方自己保存

支持格式

本地测试里,上游可以直接接受这些格式:

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 位参与者

阅读完整话题

来源: linux.do查看原文