Whisper API 服务器:设置选项与文本处理步骤
Whisper API 服务器是一个 HTTP 服务,接受音频并返回转录文本。它仅处理语音,因此后续对文本的任何处理都需要单独的文本模型。
更新于

要点
- Whisper 是一个语音转文本模型;服务器将其封装在 HTTP 接口之后。
- 你可以租用托管接口、自行托管包装器,或运行本地二进制文件。
- 此 API 仅处理文本:它执行转录后的步骤,而非音频步骤。
- 这两个阶段可以通过 Python 使用 OpenAI SDK 调用两次 API 来连接。
简短回答
Whisper 是 OpenAI 发布的开源语音识别模型。单独使用时,它是一个模型文件和推理代码。服务器为其提供 HTTP 接口,使你的应用可以发送音频文件并获取文本,而不是直接调用 Python 函数。
大多数服务器复制 OpenAI 转录接口的结构,POST /v1/audio/transcriptions,该接口接收包含音频文件和模型名称的多部分上传请求。这种结构使得相同的客户端库可以与托管服务、你机器上的容器或他人编写的包装器通信。
- 输入: 音频文件,通常是 mp3、wav、m4a 或类似格式。
- 输出: 纯文本,或包含片段和时间戳的 JSON,取决于服务器。
- 不包含: 摘要、润色为流畅文本、提取行动项。这些需要语言模型。
获取 Whisper 服务器的三种方式
1. 托管接口
OpenAI 提供托管转录接口,其他提供商也提供基于 Whisper 的转录服务。你按使用量付费,无需管理硬件,并将音频发送到他人的基础设施。不同提供商的计费模式不同,语音服务通常按音频时长收费,因此在承诺大量使用前请检查其当前定价。
2. 自托管包装器
几个开源项目将 Whisper 或其重新实现封装在模仿 OpenAI 转录接口的 Web 服务器中。你可以在带有 GPU 的机器上使用 Docker 运行它,或者在 CPU 上运行(接受较慢的处理速度)。这让你控制音频的去向。但也意味着你要负责模型下载、更新、队列管理和重启。
3. 本地二进制文件
whisper.cpp 项目是该模型的 C 和 C++ 端口,其仓库包含一个示例 HTTP 服务器。它可以在普通笔记本电脑和小型服务器上运行,适合原型开发或每天转录少量录音的单个用户。对于数百小时的批量任务,基于 GPU 的服务通常更实用。
根据三个问题选择:音频可以传输到哪里、每月处理多少小时、谁将维护服务。下面描述的文本步骤对这三种方式都适用。
文本 LLM API 在转录后的位置
原始的 Whisper 转录文本是一堵文字墙。段落分隔很少,除非单独添加说话人分离,否则缺少说话人名称,填充词保留其中。Whisper 还会在产品名称、行话和专有名词上出错。几乎所有实际项目都增加了一个针对文本的第二阶段。
典型的第二阶段任务:
- 修复标点符号,拆分为段落,删除口误。
- 将通话或讲座总结为几个要点。
- 提取结构化数据,如决策、姓名和日期,以 JSON 格式输出。
- 将口语材料重写为文章、剧本或节目备注。
- 翻译或本地化清洗后的文本。
这就是该服务在流程中的定位。它是一个兼容 OpenAI 的文本 API,使用一个模型 uncensored,拥有 100,000 token 的上下文窗口和流式输出。两小时的采访转录通常可以包含在一次请求中,因此你可以跳过较小上下文窗口强制使用的分块逻辑。对于更长的材料,请参阅 快速入门文档 获取请求详情。
该模型经过调整,可在合法成人使用中无内容拒绝地回答。这对转录管道很重要,因为源音频不可预测:采访、播客、小说朗读和支持电话包含粗话和敏感主题。如果模型因为说话者说脏话而拒绝清理转录文本,就会浪费已付费的转录运行。唯一的硬性限制是不接受涉及未成年人的性内容。
工作的两阶段管道
OpenAI Python SDK 允许你创建两个具有不同基础 URL 的客户端。一个指向你的 Whisper 服务器,另一个指向此 API。为你的转录服务设置环境变量;第二个客户端使用此站点的基础 URL。
import os
from openai import OpenAI
# Stage 1: any Whisper-compatible transcription server you run or rent.
stt = OpenAI(base_url=os.environ["STT_BASE_URL"], api_key=os.environ["STT_KEY"])
# Stage 2: the text model.
llm = OpenAI(base_url="https://api.whisperapis.com/v1", api_key=os.environ["LLM_KEY"])
with open("call.mp3", "rb") as f:
transcript = stt.audio.transcriptions.create(
model=os.environ["STT_MODEL"], # the model name your server expects
file=f,
)
resp = llm.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "Clean up this transcript: fix punctuation, keep every statement, no commentary."},
{"role": "user", "content": transcript.text},
],
temperature=0.2,
)
print(resp.choices[0].message.content)有两个细节容易出错。首先,转录模型名称取决于你的服务器配置,这就是为什么它来自环境变量。其次,文本 API 的密钥与你持有的任何语音服务密钥是分开的;每个密钥仅验证其自己的主机。
如果你更喜欢使用 shell,文本阶段是一个普通的聊天补全请求:
curl https://api.whisperapis.com/v1/chat/completions \
-H "Authorization: Bearer $LLM_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "user", "content": "Summarize this transcript in five bullet points: ..."}
]
}'认证是 Authorization 头中的 Bearer 密钥,接口是 POST /v1/chat/completions 和 GET /v1/models。你可以从 API 密钥页面 获取密钥;新账户可以在那里一键领取 $0.50 试用额度,有效期 7 天,无需绑定银行卡。
实践中容易出错的地方
大音频文件
许多 Whisper 服务器限制上传大小,长录音可能在请求中间超时。使用 ffmpeg 等工具将音频拆分为 10 到 30 分钟的片段,转录每个片段,然后连接文本。由于文本 API 接受最多 100,000 token,你可以连接片段并将它们作为单个提示词发送。此 API 的请求体限制为 8 MB,远大于任何转录文本的需求。
速率和并发限制
完整密钥允许 8 个并发请求和每分钟 300 个请求;试用密钥允许 2 个和 60 个。如果你运行带有多个工作进程的队列,请将其限制在密钥的并发数。超过限制将返回 HTTP 429,代码为 rate_limited(每分钟请求过多)或 concurrency(同时过多)。流式请求会保留其槽位直到流结束,因此停滞的客户端可能会比预期更久地占用槽位。退避并重试;如果响应包含 Retry-After: 5 头部,请等待相应时间。
LLM 无法看到的转录错误
如果 Whisper 听错了单词,文本模型只能看到错误的单词。它甚至可能掩盖错误,使其看起来是故意的。在系统提示词中加入姓名和术语的术语表,并指示模型标记不确定的段落而不是猜测。对于关键材料,将原始转录文本与清洗后的文本放在一起。
幻觉填充词
Whisper 有时会在静音或音乐期间生成虚构文本。在发送前修剪静音,并要求第二阶段标记读起来不合适的句子。低 temperature(如 0.2)使清理后的文本更贴近源文本。
此 API 不做什么
它不转录音频。没有音频输入,没有语音输出,没有图像或视频生成,没有嵌入和微调。它是一个位于 chat completions 接口后的托管文本模型,由独立提供商运行,并非 OpenAI 或其他任何模型供应商的官方 API。如果你的项目需要两者,你需要一个语音识别服务器用于第一步,以及本服务用于第二步。
提示词不用于训练。这与你语音提供商如何处理音频是分开的,因此请单独阅读该提供商的条款。
为了成本规划,文本侧按 token 计费,输入 token 每百万 $0.15,输出 token 每百万 $0.50,从永不过期的预付额度中扣除。定价页面列出了充值金额档位和赠送额度。失败或被拒绝的请求不会收费,这可以防止重试循环产生费用。
合理的起步方式
- 运行一个兼容 Whisper 的服务器(托管或本地),并确认它能处理一分钟的文件并返回文本。
- 创建一个账户,领取试用额度,然后使用简短转录文本运行上面的 curl 命令。
- 使用 Python 脚本连接两个客户端,使用你自己的系统提示词来定义你希望的清洗风格。
- 仅在单文件流程正常工作后添加队列,并根据密钥的并发能力进行配置。
大部分工作在于提示词和音频处理,而非胶水代码。从一段你熟悉的录音开始,将输出与你听到的进行比较,并在扩展之前调整指令。
更多指南
问答
Whisper API 服务器与 OpenAI API 是同一个东西吗?
不是。Whisper 是一个模型,而服务器是任何通过 HTTP 暴露该模型的程序。OpenAI 提供一个托管版本,许多人使用复制相同转录路径的开源工具运行自己的版本。
该 API 可以转录音频文件吗?
不是。它仅接受文本。使用语音服务或你自己的 Whisper 服务器处理音频,然后将转录文本发送到这里。
文本步骤使用哪个模型名称?
使用 uncensored 作为模型 ID,基础 URL 为 https://api.whisperapis.com/v1,并将你的密钥作为 Bearer token。
我可以发送多长的转录文本?
上下文窗口为 100,000 token,包含提示词和补全。这足以在一次请求中处理许多长达数小时的录音。
试用需要银行卡吗?
不是。新用户注册后,可在 API 密钥页面一键领取 $0.50 试用额度,无需卡片。
只差一张表单,即可获得密钥
创建账户,复制密钥,更改基础 URL。这就是全部设置。