核心用法
openrouter-transcribe 是一款基于 bash 的音频转录工具,通过 OpenRouter 统一接口调用 Gemini 2.5 Flash、GPT-4o-audio 等多模态大模型完成语音识别。核心流程为:ffmpeg 将音频转换为单声道 16kHz WAV → base64 编码 → 通过 HTTPS POST 发送至 OpenRouter API → 解析返回文本。
使用示例:
transcribe.sh audio.m4a # 默认使用 Gemini 2.5 Flash
transcribe.sh audio.ogg --model openai/gpt-4o-audio-preview # 切换模型
transcribe.sh audio.m4a --prompt "添加说话人标签" # 自定义指令
transcribe.sh audio.m4a --out transcript.txt # 保存到文件
API Key 通过环境变量 OPENROUTER_API_KEY 或配置文件 ~/.clawdbot/clawdbot.json 注入,无硬编码风险。
显著优点
1. 模型选择灵活:不绑定单一厂商,可在 Gemini、OpenAI、Anthropic 等音频模型间自由切换
2. 零依赖安装:纯 bash 实现,仅依赖系统预装工具(curl/ffmpeg/jq/base64),无 Python/Node 生态包袱
3. 工程细节完善:处理 macOS mktemp 后缀问题、规避 shell 参数长度限制(大文件 base64 写入临时文件)、EXIT trap 确保临时文件清理
4. 身份可追踪:通过 X-Title 和 HTTP-Referer 头在 OpenRouter 仪表板识别调用来源
5. 安全评级优秀:安全认证评分 80/100,获 S 级评级,无高危风险点
潜在缺点与局限
1. 数据必须出域:音频文件需上传至 OpenRouter 服务器处理,不适合绝密/隐私敏感场景
2. 成本不可控:按 token 计费,长音频可能产生意外费用,无内置文件大小限制
3. 网络依赖严格:无离线能力,需稳定国际网络连接,建议添加 --max-time 超时控制(当前未实现)
4. 模型能力差异:不同模型对中文、多说话人、时间戳的支持参差不齐,需自行测试
5. 无实时转录:仅支持文件批量处理,不支持流式/实时语音识别
适合人群
- 开发者/技术用户:熟悉命令行操作,能自主管理 API Key 和费用
- 多模型对比需求:希望同一音频测试不同厂商模型效果
- 轻量集成场景:不愿引入重型 SDK,追求最小化部署
- 不适合:医疗/法律等强合规场景、离线环境、完全不懂命令行的终端用户
常规风险
| 风险类型 | 等级 | 说明 |
|---------|------|------|
| 数据外传 | 中 | 音频上传至 OpenRouter(美国),受 OpenRouter 隐私政策约束 |
| API Key 泄露 | 低 | 仅从环境变量读取,无硬编码,但需确保 `.bashrc`/配置文件权限 |
| 依赖缺失 | 低 | ffmpeg/jq 未安装时脚本失败,需手动安装 |
| 费用超支 | 中 | 大文件无大小限制,建议自行前置检查(如 100MB) |
| 供应商锁定 | 低 | 依赖 OpenRouter 平台稳定性,但模型可迁移至官方 API |