本地部署 Whisper

image-VuLK.png

如图 GPU 正在进行运算,而且速度非常快,比CPU运算快了十几倍

项目地址:https://github.com/openai/whisper

1. 环境准备

在开始部署 Whisper 模型之前,首先需要准备一些基础环境,确保 GPU 可用并且所有依赖项都已正确安装。

1 NVIDIA 显卡与 CUDA 版本对应表

核心说明

  1. 显卡支持的最高 CUDA 版本:由显卡架构决定(NVIDIA 官方定义,无法通过升级驱动突破);
  2. CUDA 架构(sm_xx):框架(PyTorch/TensorFlow)兼容的核心依据(新版框架会淘汰旧架构);
  3. 最低驱动版本:对应 CUDA 版本的最低驱动要求(驱动版本需 ≥ 该值才能使用对应 CUDA);
  4. 向下兼容:显卡可支持低于「最高 CUDA 版本」的所有 CUDA 版本(如 GTX 1070 支持 CUDA 11.8 及以下)。
显卡架构显卡系列/型号(示例)CUDA 架构(sm_xx)支持的最高 CUDA 版本对应 CUDA 版本的最低驱动版本
Pascal(帕斯卡)GTX 10 系列:1050/1060/1070/1080/Ti
Quadro P 系列:P4000/P5000
sm_60、sm_6111.8CUDA 11.8:456.38
Turing(图灵)RTX 20 系列:2060/2070/2080/Ti
GTX 16 系列:1650/1660/Ti
Quadro T 系列:T400/T1000
sm_7512.4CUDA 12.4:551.61
Ampere(安培)RTX 30 系列:3050/3060/3070/3080/3090/Ti
RTX A 系列:A2000/A3000/A4000
DataCenter A10/A100
sm_80、sm_8613.6CUDA 13.6:555.42.02
Ada Lovelace(阿达)RTX 40 系列:4060/4070/4080/4090/Ti
RTX A 系列:A5000/A6000
DataCenter L4/L40
sm_8913.6CUDA 13.6:555.42.02
Hopper(霍珀)RTX 50 系列:5070/5080/5090/Ti
DataCenter H100/H20
sm_10013.6CUDA 13.6:555.42.02
Blackwell(布莱克韦尔)RTX 60 系列(最新)
DataCenter B100/B200
sm_11013.6+(后续兼容更高版本)CUDA 13.6:555.42.02

补充说明(避免踩坑)

  1. 显卡架构查询:通过命令 nvidia-smi --query-gpu=compute_capability --format=csv 可直接获取显卡 CUDA 架构,再对应上表查询兼容信息;
  2. 系统 CUDA 版本兼容:系统可安装高于显卡支持上限的 CUDA(如 GTX 1070 装 CUDA 13.0),但框架(PyTorch)会优先使用自带的兼容 CUDA 运行时(如 cu118),无需卸载系统高版本 CUDA;
  3. 专业显卡适配:Quadro/DataCenter 系列显卡与同架构消费级显卡的 CUDA 支持一致(如 Quadro P4000 与 GTX 1070 同属 Pascal 架构);
  4. 驱动与 CUDA 关系:高版本驱动可兼容低版本 CUDA(如驱动 581.80 支持 CUDA 11.8),低版本驱动无法支持高版本 CUDA。

2 安装 CUDA 和 GPU 驱动

由于 Whisper 在大规模模型训练和推理过程中对计算资源要求较高,使用 CUDA 和 GPU 可以大大加速模型的加载和推理过程。

1. 安装 NVIDIA GPU 驱动:确保你已经安装了适用于你 GPU 的最新驱动。

地址:https://www.nvidia.cn/geforce/drivers/

2. 安装 CUDA :Whisper 支持 CUDA 加速,你需要安装正确版本的 CUDA。你可以参考 NVIDIA 官网 根据系统类型进行安装。一般情况下直接最新版即可,会兼容低版本的,

地址:https://developer.nvidia.com/cuda-downloads
更多版本:https://developer.nvidia.com/cuda-toolkit-archive

3. 安装完成后,可以通过以下 nvcc --version 命令验证 CUDA 是否正常工作:

(.venv) PS E:\applications\project\by umr\Subtitle> nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Wed_Aug_20_13:58:20_Pacific_Daylight_Time_2025
Cuda compilation tools, release 13.0, V13.0.88
Build cuda_13.0.r13.0/compiler.36424714_0

如果输出显示 CUDA 版本信息,则表明 CUDA 已成功安装。

3 安装 Whisper 库

特性:
(PyPI 稳定版)pip install -U openai-whisper
(GitHub 开发版)pip install git+https://github.com/openai/whisper.git

1. 推荐方案:安装 PyPI 稳定版(已安装可忽略,或升级)

pip install openai-whisper

2. 查看安装

(.venv) PS E:\applications\project\by umr\Subtitle> pip show openai-whisper
Name: openai-whisper
Version: 20250625
Summary: Robust Speech Recognition via Large-Scale Weak Supervision
Home-page: https://github.com/openai/whisper
Author: OpenAI
Author-email:
License: MIT
Location: e:\applications\project\by umr\Subtitle\.venv\Lib\site-packages
Requires: more-itertools, numba, numpy, tiktoken, torch, tqdm
Required-by:

4 安装 ffmpeg

FFmpeg 是一个用于处理视频、音频等多媒体文件的开源工具包。它支持几乎所有的多媒体格式转换、剪辑和编辑,是开发者和多媒体工作者必备的工具。windows下载后要配置环境变量,这里不过多赘述

下载地址:https://ffmpeg.org/download.html

1. 查看安装

(.venv) PS E:\applications\project\by umr\Subtitle> ffmpeg -version
ffmpeg version 8.0.1-essentials_build-www.gyan.dev Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 15.2.0 (Rev8, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-openal --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil      60.  8.100 / 60.  8.100
libavcodec     62. 11.100 / 62. 11.100
libavformat    62.  3.100 / 62.  3.100
libavdevice    62.  1.100 / 62.  1.100
libavfilter    11.  4.100 / 11.  4.100
libswscale      9.  1.100 /  9.  1.100
libswresample   6.  1.100 /  6.  1.100

Exiting with exit code 0

5 安装 PyTorch 库

根据你的 CUDA 版本安装支持的 PyTorch 库

PyTorch地址:https://pytorch.org/get-started/locally/
版本对应关系:https://pytorch.org/get-started/previous-versions/

1. 安装

如我的 nvcc --versionCuda compilation tools, release 13.0, V13.0.88 版本 V13, 因为驱动版本支持,但是我的显卡硬件最高只支持 V11.8,高版本的CUDA软件支持且兼容低版本的CUDA,所以安装 V11.8 版本。首先考虑硬件兼容,软件版本可以同版本或者高版本但是不可以低版本。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

2. 查看 pytorch

import torch

# 1. 查看 PyTorch 版本
print("PyTorch 版本:", torch.__version__)

# 2. 查看 PyTorch 自带的 CUDA 版本(应显示 11.8)
print("PyTorch 内置 CUDA 版本:", torch.version.cuda)

# 3. 验证 GPU 是否可用(核心!应返回 True)
print("GPU 是否可用:", torch.cuda.is_available())

# 4. 查看显卡信息(确认识别 GTX 1070)
if torch.cuda.is_available():
    print("显卡型号:", torch.cuda.get_device_name(0))
    print("CUDA 架构:sm_{}{}".format(*torch.cuda.get_device_capability(0)))  # 应输出 sm_61
    print("GPU 显存:", torch.cuda.get_device_properties(0).total_memory / 1024 / 1024, "MB")  # 约 8192 MB
else:
    print("GPU 不可用,请检查安装或驱动!")

6. 使用 Whisper 生成

使用命令进行生成

(.venv) PS E:\applications\project\by umr\Subtitle> whisper .\fssx.mp3 --model medium --device cuda
Detecting language using up to the first 30 seconds. Use `--language` to specify the language
Detected language: Chinese
[00:00.000 --> 00:21.000] Zither Harp
[00:22.000 --> 00:24.000] 蘭露雨偏似雪花
[00:24.000 --> 00:26.000] 飲泣的你動媽
[00:26.000 --> 00:31.000] 這風柳我給你摸到有襟花
[00:31.000 --> 00:33.000] 連掉了跡也不怕
[00:33.000 --> 00:35.000] 怎麼始終牽掛
[00:35.000 --> 00:40.000] 苦心選中今天想載你回家
[00:40.000 --> 00:42.000] 原諒我不再送花
[00:42.000 --> 00:44.000] 傷口仍要結疤
[00:44.000 --> 00:49.000] 花瓣鋪滿心裡墳場才害怕
[00:49.000 --> 00:51.000] 如若你非我不嫁
[00:51.000 --> 00:53.000] 彼此終別火化
[00:53.000 --> 00:58.000] 一生一世等一天需要代價
[00:58.000 --> 01:01.000] 誰都只得那雙手靠擁抱
[01:01.000 --> 01:03.000] 亦難任你擁有
[01:03.000 --> 01:08.000] 要擁有必先等失去怎接受
[01:08.000 --> 01:10.000] 曾願著雪露浪流
[01:10.000 --> 01:12.000] 為何為好事淚流
[01:12.000 --> 01:17.000] 誰能憑愛意要富是山是友
[01:17.000 --> 01:21.000] 何不把悲哀感覺假設是來自你虛構
[01:21.000 --> 01:26.000] 使管裡找不到他掩護眼眸
[01:26.000 --> 01:28.000] 前塵難化像石頭
[01:28.000 --> 01:33.000] 隨緣地拋下便逃走
[01:33.000 --> 01:35.000] 我絕不罕有
[01:35.000 --> 01:38.000] 逛街裡繞過一周
[01:38.000 --> 01:42.000] 我便化烏有
[01:42.000 --> 01:45.000] 情人節不要說穿紙
[01:45.000 --> 01:47.000] 敢撫離髮端
[01:47.000 --> 01:52.000] 這種姿態可會令你更心酸
[01:52.000 --> 01:54.000] 留在汽車裡取暖
[01:54.000 --> 01:56.000] 應該怎麼規勸
[01:56.000 --> 02:01.000] 怎麼可以將手腕忍痛划算
[02:01.000 --> 02:03.000] 人活到幾歲算短
[02:03.000 --> 02:05.000] 失戀自由更短
[02:05.000 --> 02:08.000] 歸家需要幾里留
[02:08.000 --> 02:10.000] 誰能預算
[02:10.000 --> 02:12.000] 忘掉我跟你姻緣
[02:12.000 --> 02:14.000] 櫻花開了幾轉
[02:14.000 --> 02:19.000] 東京之旅一早比一世遙遠
[02:19.000 --> 02:21.000] 誰都只得那雙手
[02:21.000 --> 02:24.000] 靠擁抱亦難任你擁有
[02:24.000 --> 02:28.000] 要擁有必先懂失去怎接受
[02:28.000 --> 02:31.000] 曾願著雪露浪流
[02:31.000 --> 02:33.000] 為何為好事淚流
[02:33.000 --> 02:38.000] 誰能憑愛意要富是山是友
[02:38.000 --> 02:42.000] 何不把悲哀感覺假設是來自你虛構
[02:42.000 --> 02:47.000] 事管裡走不到他厭惡眼眸
[02:47.000 --> 02:49.000] 前塵硬化像石頭
[02:49.000 --> 02:54.000] 隨緣地拋下便逃走
[02:54.000 --> 02:56.000] 我絕不罕有
[02:56.000 --> 02:59.000] 往街裡繞過一周
[02:59.000 --> 03:03.000] 我便化烏有
[03:03.000 --> 03:05.000] 誰都只得那雙手
[03:05.000 --> 03:08.000] 靠擁抱亦難任你擁有
[03:08.000 --> 03:13.000] 要擁有必先懂失去怎接受
[03:13.000 --> 03:15.000] 曾願著雪露浪流
[03:15.000 --> 03:17.000] 為何為好事淚流
[03:17.000 --> 03:22.000] 誰能憑愛意要富是山是友
[03:22.000 --> 03:27.000] 何不把悲哀感覺假設是來自你虛構
[03:27.000 --> 03:32.000] 事管裡走不到他厭惡眼眸
[03:32.000 --> 03:34.000] 前塵硬化像石頭
[03:34.000 --> 03:41.000] 隨緣地拋下便逃走
[03:41.000 --> 03:43.000] 我絕不罕有
[03:43.000 --> 03:46.000] 往街裡繞過一周
[03:46.000 --> 03:52.000] 我便化烏有
[03:52.000 --> 03:54.000] 你還言不夠
[03:54.000 --> 04:01.000] 我把這陳年風流送贈你街奏

7. 更多

核心说明 4 种 Whisper 实现对比详细表格

本文档对比 OpenAI Whisper 及其3种主流衍生实现(Faster Whisper、Insanely Fast Whisper、Transformers 集成)。

详细对比表格

对比维度官方 OpenAI WhisperFaster WhisperInsanely Fast WhisperTransformers 集成
底层依赖PyTorch(核心依赖,纯框架原生实现)CTranslate2(C++ 优化引擎),PyTorch 可选Transformers + Accelerate,PyTorch(≥2.2)Hugging Face Transformers 框架,PyTorch 核心依赖
核心优化方向无额外优化,保持官方原生逻辑模型量化(INT8/FP16)、算子优化、批量推理加速多GPU并行、混合精度计算、模型分片生态扩展支持,自定义预处理/解码策略
速度(相对基准)1x(基准线,最慢)2-4x(显著提速)3-5x(极限最快)1.2-1.5x(略快于官方)
显存占用(medium 模型)中等(约 4GB)低(INT8量化后约 3GB)中高(单卡约 5GB)中等(约 4.2GB)
安装难度低(一键 pip/conda 安装)中(自动安装 CTranslate2 依赖)中高(可能需升级依赖包)中(需额外安装 soundfile 等工具)
自定义灵活性低(仅支持官方预设参数)中(支持量化/解码策略调整)低(侧重速度,自定义功能少)高(可修改模型/预处理/解码逻辑)
功能完整性最全(支持所有模型/语言/输出格式)几乎全(仅缺失少量冷门功能)部分(侧重转录/翻译核心功能)最全(可扩展自定义功能)
模型格式原生 Whisper 模型(.pt)CTranslate2 转换格式(.bin,自动转换)Hugging Face 模型格式(.bin)Hugging Face 模型格式(.bin)
依赖 PyTorch 版本要求无强制高版本(≥1.17 即可)无依赖(CTranslate2 独立运行)高(≥2.2,不支持 sm_61)中(≥1.18 即可,兼容 2.1.2)
支持的量化类型仅 FP16(默认)INT8/FP16/FP32(可选)FP16/FP32(无 INT8 量化)FP16/FP32(需手动实现量化)
输出格式支持TXT/SRT/VTT/JSON/TSV(全格式)TXT/SRT/VTT/JSON(主流格式)TXT/SRT/VTT(核心格式)需手动编码输出(灵活定制)
适用场景日常转录、追求稳定无坑日常转录、追求速度+低显存占用多GPU集群、高端单卡(RTX 30+/40+)科研、二次开发、自定义功能扩展
安装命令pip install openai-whisperpip install faster-whisperpip install insanely-fast-whisperpip install transformers torch torchaudio

选型建议

🌟 性能一般首选:Faster Whisper

  • 核心优势:速度比官方快 3 倍左右,INT8 量化后显存占用仅 3GB(如GTX 1070 无压力),完全兼容旧架构,安装简单,日常转录/生成字幕场景首选。
  • 避坑提示:安装后自动转换模型格式,无需手动操作;推荐使用 --quantize int8 参数优化显存。

📌 兜底选择:官方 OpenAI Whisper

  • 核心优势:稳定无兼容风险,功能最全,适配 PyTorch 2.1.2 无门槛,适合担心第三方版本报错的场景。
  • 避坑提示:无需额外配置,直接用 --device cuda 即可调用 GPU 加速。

🎈 多GPU并行:Insanely Fast Whisper

  • 核心问题:依赖 PyTorch ≥2.2,单卡显存占用高,无明显优势,安装后易报错。

🛠️ 备选:Transformers 集成

  • 核心适用:仅当需要自定义模型(如中文微调模型)、修改预处理逻辑时使用,普通转录场景无需折腾,操作复杂度高于前两者。

补充说明

  1. 所有版本均支持中文转录,推荐指定 --language zh 参数提升准确率;
  2. GTX 1070 8GB 显存可流畅运行 medium 模型,large 模型仅 Faster Whisper(INT8 量化)可尝试(需关闭其他 GPU 占用程序);
  3. 速度对比基于单卡 GPU 测试,CPU 环境下所有版本速度均较慢,优先调用 GPU 加速。

四下皆无人