转录音频
用 OpenRouter 上的 microsoft/mai-transcribe-2,走中转的海外机。照 OpenRouter 模型页1的示例调,只改两处:
- base URL:
https://openrouter.ai换成https://openrouter.reverse-pro.xyz - API key:用
.env里的MY_API_KEY,写成Authorization: Bearer $MY_API_KEY,别打印出来
# 只要文字:直接上传文件,wav、mp3 都行
curl -sS https://openrouter.reverse-pro.xyz/api/v1/audio/transcriptions \
-H "Authorization: Bearer $MY_API_KEY" \
-F model=microsoft/mai-transcribe-2 -F file=@audio.mp3
# 要时间戳和说话人:JSON 提交,base64 从 stdin 传进去,长录音不会撑爆命令行参数
AUDIO_BASE64=$(base64 < audio.wav | tr -d '\n')
curl -sS https://openrouter.reverse-pro.xyz/api/v1/audio/transcriptions \
-H "Authorization: Bearer $MY_API_KEY" -H "Content-Type: application/json" \
--data-binary @- <<EOF
{"model": "microsoft/mai-transcribe-2",
"input_audio": {"data": "$AUDIO_BASE64", "format": "wav"},
"response_format": "verbose_json", "timestamp_granularities": ["word"],
"provider": {"options": {"azure": {"diarization": {"enabled": true}}}}}
EOF
- 结果:同步返回,
text是全文,十几秒的音频几秒就出来。测试音频用assets/大米_14s.wav - 语言:不填
language就自动识别,返回里带language;确定是哪种语言再填,比如"zh" - 时间戳:
verbose_json返回segments,再加timestamp_granularities: ["word"]返回words,中文一个字一条。段落起止要准,就得开diarization:不开的话segments只有一条,从 0 到音频结尾;开了以后起止才对上真正说话的位置,每段、每个字都带speaker - Azure 选项都放在
provider.options.azure里:phraseList.phrases填专有名词,提高识别率;enhancedMode.modelOptions.transcribeStyle写"clean"去掉口头禅和说错重来,默认的"verbatim"照录 - 花费:约 0.1 美元一小时,返回的
usage.cost是这次实际花的。没声音的音轨照样计费,转回来是空的,先测音量,见阅读视频 - 大文件:有 ffmpeg 就先转成 16 kHz 单声道 mp3(
ffmpeg -i in.wav -ac 1 -ar 16000 -b:a 32k out.mp3)。大米这段 2.7 MB 转完只剩 57 KB,转出来的文字一样
维护记录:接口从哪来、实测结果。正常使用不用看,出问题再看。
-
OpenRouter 模型页,2026-10-02 读。 ↩