首页博客 → 如何直接在终端里把音频转成文字

如何直接在终端里把音频转成文字

发布于 2026-08-20 · 4 分钟阅读

有时候写程序毫无必要:十来个录音,处理完就忘。终端在这件事上比任何应用都顺手——一条 curl 就把文件变成文字,一段小脚本就能清空整个文件夹。

单个文件

curl https://voicesscribe.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $VS_KEY" \
  -F file=@call.ogg \
  -F model=whisper-1

返回是 JSON。只想要文本就接一个 jq:

curl -s https://voicesscribe.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $VS_KEY" \
  -F file=@call.ogg -F model=whisper-1 | jq -r .text

密钥放环境变量里:带明文密钥的命令会留在 shell 历史和日志里。

其他返回格式

response_format 字段直接在请求里决定输出形态:

# 字幕直接落地成文件
curl -s https://voicesscribe.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $VS_KEY" \
  -F file=@lecture.ogg -F model=whisper-1 \
  -F response_format=srt -o lecture.srt

# 不带 JSON 外壳的纯文本
curl -s https://voicesscribe.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $VS_KEY" \
  -F file=@note.ogg -F model=whisper-1 \
  -F response_format=text

一段脚本处理整个文件夹

#!/bin/bash
set -euo pipefail

for f in recordings/*.ogg; do
  out="${f%.ogg}.txt"
  [ -f "$out" ] && continue
  echo "正在处理 $f"
  curl -s --fail-with-body https://voicesscribe.com/v1/audio/transcriptions \
    -H "Authorization: Bearer $VS_KEY" \
    -F file=@"$f" -F model=whisper-1 \
    | jq -r .text > "$out"
done

检查文件是否已存在让脚本可以重跑:中断后会从断点继续,已处理的录音不会被重复付费。

排查

--fail-with-body 让 curl 在失败时返回非零码并打印错误内容——没有它,脚本会安静地把错误信息写进转录文件。其他有用的技巧:

用你自己的录音试一试。 注册只需一分钟,免费额度足够判断识别质量。

免费获取 API 密钥

常见问题

必须装 jq 吗?

不必。没有它文件里就是完整 JSON。也可以直接请求 response_format=text 拿到纯文本。

怎么避免密钥留在历史里?

放环境变量,或者放进权限受限的文件里由 shell 加载。

脚本一报错就停,怎么继续?

去掉 set -e,或把调用包在状态码判断里,把失败的文件收集起来另跑一遍。

Windows 上能用吗?

可以,PowerShell 自带 curl.exe,参数完全一样。写脚本的话 WSL 或 Git Bash 更顺手。

相关阅读