跳到主要内容

语音识别模型

Whisper 本地部署,一张 24GB 卡就能把语音转写全接下来

从 574MB 的 q5_0 量化到 10GB 显存的 large-v3,Whisper 是少数「小到能塞进任何一张卡、准到敢上生产」的开源模型。租一张卡,音频不出内网。

Whisper 是 OpenAI 在 2022 年开源、至今仍在被大量部署的自动语音识别模型。它是标准的 encoder-decoder Transformer,把音频切成 30 秒窗口转成 log-Mel 频谱送进编码器,解码器再自回归吐出带时间戳的文本。当前最新的开放权重仍是 2024 年 10 月发布的 large-v3-turbo,此后 OpenAI 没有再放出新的开源 Whisper 版本——pip 包 openai-whisper 的最后一个 release 是 v20250625。所以「哪个版本最新」这个问题在 Whisper 上其实已经收敛了,真正在迭代的是它周边的推理运行时。

两个主力权重要分清楚。large-v3 有 1550M 参数,用 128 个 Mel 频段(large-v2 是 80 个),在 100 万小时弱标注 + 400 万小时伪标注音频上训练,覆盖 99 种语言,官方称相对 large-v2 降低 10%–20% 的错误率。large-v3-turbo 是把 large-v3 的解码层从 32 层剪到 4 层再微调出来的 809M 版本,官方表格给的相对速度是 ~8x,代价是轻微的精度损失,而且它没有为翻译任务训练过——你传 --task translate 它会照样返回原语言。这是选型时最常踩的坑。

显存这件事在 Whisper 上有两套数字,都要看。官方仓库给的是参考实现的需求:tiny/base 约 1GB、small 约 2GB、medium 约 5GB、large 约 10GB、turbo 约 6GB。但真正上生产的人几乎都跑 faster-whisper(CTranslate2)或 whisper.cpp(GGML),实测占用低得多——faster-whisper 官方基准里 large-v2 fp16 只占 4525MB,int8 更是压到 2926MB。所以「Whisper 要多大显存」的答案取决于你用哪个运行时,下面的表把两套数字都列出来了。

01 —

Whisper 全系版本与显存对照

官方参考实现显存需求 · CTranslate2 与 GGML 实际权重体积 · 谁该用哪个

版本参数量显存上下文说明
whisper-large-v31550M官方 ~10GB / faster-whisper fp16 实测 4.5GB / GGML fp16 3.1GB / q5_0 1.08GB30 秒音频窗口,解码器 448 token精度基准。128 Mel 频段、99 种语言、含粤语 token,需要最高转写质量或做多语种翻译时用它。
whisper-large-v3-turbo809M官方 ~6GB / GGML fp16 1.62GB / q5_0 仅 574MB30 秒音频窗口,解码器 448 token解码层 32→4 剪枝再微调,相对速度 ~8x,模型卡实测 RTFx 200。绝大多数转写场景的默认选择,但不会做翻译。
whisper-medium / medium.en769M官方 ~5GB / GGML fp16 1.53GB30 秒音频窗口,解码器 448 tokenturbo 出来后基本被取代。仍适合只有 8GB 老卡、或必须用纯英文单语模型压低幻觉率的场景。
whisper-small / small.en244M官方 ~2GB / GGML fp16 488MB30 秒音频窗口,解码器 448 token低延迟实时流的甜点位。T4 上可以同时开多路,CPU 上用 whisper.cpp 也能跑到接近实时。
distil-large-v3.5756M(英文单语,MIT)与 turbo 同量级,fp16 约 1.6GB 权重30 秒音频窗口,解码器 448 token从 large-v3 蒸馏,98k 小时数据训练,比 turbo 再快约 1.5x;更妙的用法是当 large-v3 的投机解码草稿模型,约 2x 加速且输出与 large-v3 完全一致。

02 —

跑 Whisper 该租哪张卡

按秒计费,跑完停机立刻停算力费,不用申请配额

  • 单卡试跑 / 中小批量离线转写(turbo fp16 或 q5_0)

    RTX 3090 24GB$0.193/卡·时

    turbo 权重才 1.6GB,24GB 显存足够把 batch 拉到 16–32 再挂上对齐模型;Ampere 架构支持 SDPA 与 FlashAttention-2,这是全网跑 Whisper 性价比最高的一档。

  • 生产批量流水线:large-v3 fp16 + batch 16 + WhisperX 对齐 + pyannote 分离同卡常驻

    RTX 4090 24GB$0.540/卡·时

    三个模型加起来仍在 24GB 内,Ada 的解码吞吐比 3090 高一大截,一天几千小时音频的队列用它单位成本最低。

  • 多进程并发 / 投机解码双模型 / 数小时长音频队列

    A100 PCIE 80GB$0.824/卡·时

    80GB 可以同时常驻 large-v3 与 distil-large-v3.5 做投机解码,或并排开六到八个 worker 吃满一张卡;比 48GB 的 RTX A6000($0.817/卡·时)只贵 $0.007 却多出 32GB。

  • 极致压成本的纯 fp16 离线跑批

    Tesla V100 32GB$0.188/卡·时

    全站最便宜且带 32GB 显存,faster-whisper 与 whisper.cpp 的 fp16 路径在 Volta 上跑得很稳;但要知道 Volta 不支持 bf16 与 FlashAttention-2,别指望 transformers 的新优化路径。

03 —

四步把 Whisper 跑起来

从空实例到能对外提供 OpenAI 兼容转写接口

  1. 01

    开实例,选 PyTorch 预置镜像,装 faster-whisper

    NexGPU 有 2000+ 预置镜像,直接选 PyTorch 或 Whisper ASR 镜像开机,CUDA 驱动已经装好。注意 ctranslate2 的新版本只支持 CUDA 12 与 cuDNN 9——「找不到 libcudnn_ops_infer.so.8」这类报错九成来自版本错配,用预置镜像可以直接绕过。

    pip install -U faster-whisper==1.2.1
  2. 02

    先用 turbo 跑一条基线,确认吞吐与显存

    第一次运行会自动从 Hugging Face 拉 CTranslate2 权重。compute_type 建议先试 float16;显存吃紧就换 int8_float16,faster-whisper 官方基准里 int8 把 large-v2 的占用从 4525MB 压到 2926MB,速度还更快。VAD 打开可以显著减少静音段的幻觉。

    python -c "from faster_whisper import WhisperModel; m=WhisperModel('turbo', device='cuda', compute_type='float16'); segs,info=m.transcribe('audio.wav', beam_size=5, vad_filter=True, language='zh'); print(info.language); [print(f'[{s.start:.2f}->{s.end:.2f}] {s.text}') for s in segs]"
  3. 03

    要词级时间戳和说话人分离,上 WhisperX

    Whisper 原生只有 token 级时间戳(精度 0.02 秒),想要靠谱的词级边界必须做强制对齐。WhisperX 用 wav2vec2 做对齐、用 pyannote 的 speaker-diarization-community-1 做分离,批量推理下 large-v2 可达约 70 倍实时,beam_size=5 时显存占用仍低于 8GB。分离模型是 gated 的,要先在 Hugging Face 上同意协议并带 token。

    whisperx audio.wav --model large-v3 --compute_type float16 --batch_size 16 --diarize --hf_token $HF_TOKEN --output_format srt
  4. 04

    对外提供服务:vLLM 起 OpenAI 兼容转写接口

    vLLM 的 OpenAI 兼容服务端支持 ASR 模型的 /v1/audio/transcriptions 与 /v1/audio/translations 两个端点,客户端可以直接用 openai SDK 指过来,业务代码一行不用改。想省事就用 NexGPU 的 vLLM 预置镜像;接口起来后从 SSH 隧道或 REST API 转发出去都行。

    vllm serve openai/whisper-large-v3-turbo --port 8000

1000 小时音频到底要花多少钱

先定一个有出处的速度锚点。faster-whisper 官方基准:RTX 3070 Ti 8GB、CUDA 12.4、13 分钟音频,large-v2 fp16 + batch_size=8 跑完只用 17 秒,约合 46 倍实时。large-v3-turbo 的解码层只有 large 的八分之一,放到 RTX 4090 上按 60 倍实时估算是保守的。 算一批 1000 小时的会议录音:1000 ÷ 60 ≈ 16.7 GPU 小时,加上拉模型和预热约 0.3 小时,取 17 小时。17 × $0.540 = $9.18,折合每小时音频 $0.0092。 还想更省就换 RTX 3090 24GB。同一批活按 40 倍实时保守估算是 25 GPU 小时,25 × $0.193 = $4.83——一千小时录音,不到五美元。 存储单独算:faster-whisper 的 large-v3 权重 3.09GB、turbo 1.62GB,再加 wav2vec2 对齐模型和 pyannote 分离模型,一个 10GB 的卷绰绰有余,10 × $0.414 = $4.14/月。注意存储只要卷不销毁就一直计费,而算力费在实例停止的那一秒就停了——跑完把实例停掉,卷留着下次直接开机,模型不用重下。 出网基本不用管:转写产物是纯文本。就算你把 1000 小时 16kHz 单声道 WAV(约 115GB)整批拉回本地,115 × $0.0081 = $0.93。

04 —

常见问题

Whisper 本地部署到底需要多大显存?8GB 的卡够吗?

看你用哪个运行时。官方参考实现的需求是 tiny/base ~1GB、small ~2GB、medium ~5GB、large ~10GB、turbo ~6GB;但换成 faster-whisper 后 large-v2 fp16 实测只占 4525MB,int8 是 2926MB,用 whisper.cpp 的 q5_0 量化 turbo 权重更是只有 574MB。8GB 卡跑 turbo 完全没问题,跑 large-v3 也能跑,只是 batch 拉不大。真正吃显存的是批量推理和同卡挂着的对齐、分离模型。在 NexGPU 上 RTX 3090 24GB 只要 $0.193/卡·时,与其在 8GB 卡上抠 batch,不如直接上 24GB 一次性把流水线摆开。

large-v3 和 large-v3-turbo 该选哪个?turbo 是不是无脑更好?

纯转写场景选 turbo:809M 参数、解码层从 32 剪到 4,相对速度约 8 倍,精度只有轻微下降。但有两个例外必须走 large-v3。一是翻译——turbo 没有为 translate 任务训练过,你指定 --task translate 它照样返回原语言;二是低资源语种和嘈杂音频,1550M 的 large-v3 在这类边缘情况上稳得多。想两头都要,就用 large-v3 配 distil-large-v3.5 做投机解码,约 2 倍加速且输出与 large-v3 逐字一致。这套双模型在 NexGPU 的 A100 PCIE 80GB($0.824/卡·时)上可以同时常驻。

Whisper 转写出现幻觉、整段重复、静音处凭空生成字幕,怎么解决?

这是 Whisper 最出名的毛病,根因是它按 30 秒窗口自回归解码,遇到静音或音乐就会「续写」。三层办法:第一,前置 VAD 切掉静音段,faster-whisper 的 vad_filter=True 用的是 Silero-VAD V6,这一步能解决大半;第二,用官方的质量兜底参数——compression_ratio_threshold=1.35 检测重复、logprob_threshold=-1.0 检测低置信、temperature 传 [0.0, 0.2, 0.4, 0.6, 0.8, 1.0] 做温度回退,触发阈值就丢弃重跑;第三,长音频关掉 condition_on_previous_text,避免一段跑飞后污染后面所有段。另外 transformers 批量推理时必须显式传 attention_mask,否则会出现难查的静默错误。

Whisper 能区分说话人吗?能给出准确的词级时间戳吗?

两个都不能,这是最常见的误解。Whisper 完全没有说话人分离能力,输出的也只是 token 级时间戳(默认精度 0.02 秒),词边界经常飘。标准解法是 WhisperX:用 wav2vec2 做强制对齐拿到真正的词级时间戳,再接 pyannote 的 speaker-diarization-community-1 做分离,两者叠加后仍能在 8GB 显存内跑 large-v2。要注意 pyannote 模型是 gated 的,得先在 Hugging Face 同意用户协议并配置 token。整条链路在 NexGPU 的 RTX 4090 24GB($0.540/卡·时)上一张卡就装得下。

现在还该用 Whisper 吗?Parakeet、Voxtral 这些新模型是不是更强?

Whisper 的开放权重确实停在 2024 年 10 月的 large-v3-turbo,但它依然是覆盖 99 种语言、生态最厚、量化工具链最全的开源 ASR。竞品各有取舍:NVIDIA parakeet-tdt-0.6b-v3 只有 600M 参数、RTFx 高达 3332,Open ASR 榜平均 WER 6.34%,但只覆盖 25 种欧洲语言,且是 CC-BY-4.0;Mistral Voxtral-Mini-3B-2507 是 Apache-2.0,能一次吃 30 分钟音频还带音频理解问答,但 bf16 要约 9.5GB 显存。中文、日韩、粤语这类场景 Whisper 仍是最稳的默认项。真要横向评测就在 NexGPU 上同时开几台按秒计费的实例,跑完自己的数据集再决定,比看榜单可靠。

Whisper 权重是什么许可?转写数据会不会出内网?

官方仓库 README 明确写着代码与模型权重均按 MIT 许可发布,Hugging Face 上 large-v3-turbo 的卡片也标 MIT,large-v3 卡片元数据标的是 Apache-2.0——两者都是宽松许可,商用无障碍。至于数据不出内网,这正是自建的核心理由:调云端转写 API 意味着每一段录音都要上传给第三方,医疗、法务、客服录音这类场景基本过不了合规。在 NexGPU 上自建,权重在你的实例里、音频在你的卷里,实例停机算力费立刻停止;全球 51 个国家和地区、1175 个已验证可租节点,可以按数据驻留要求挑地区落地,支持通过 SSH、Jupyter、Web 终端、REST API 与 CLI 接入,Telegram 上有中英文双语支持,不用排工单。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。