概括

  • OpenAI的开源项目,识别音频视频文件转为文本
  • GitHub地址:https://github.com/openai/whisper
  • 整体流程:
    • 环境准备:安装Python >>> 环境准备:安装ffmpeg >>> 安装whisper >>> 运行whisper识别音频

安装

环境准备(Prerequisites)

在安装 Whisper 之前,你需要确保你的电脑满足以下条件。这是最容易出问题的步骤,请务必仔细检查。

安装Python

Whisper 需要 Python 环境。官方推荐 Python 3.8-3.11 版本。

  • 检查是否已安装 Python:BashBash

    打开你的终端(在 Windows 上是 命令提示符 或 PowerShell,在 macOS 或 Linux 上是 终端),输入:

    python --version

    或者

    python3 --version

    如果显示了 3.8 到 3.11 之间的版本号,说明已安装。否则,请从 Python 官网 下载并安装。

    注意:在 Windows 安装时,请务必勾选 “Add Python to PATH” 选项。

安装 ffmpeg

ffmpeg 是一个功能强大的开源多媒体框架,用于处理音频、视频和其他多媒体文件,Whisper 依赖它来读取和转换音频文件。

  • 检查是否已安装 ffmpeg:

    在终端中输入:

    ffmpeg -version

    如果显示了版本信息,则已安装。如果没有,请根据你的操作系统进行安装:

    • Windows:

      1. 前往 ffmpeg 官网下载页面
      2. gyan.devBtbN 的链接下载一个 release 版本的压缩包 (zip)。
      3. 解压后,会得到一个类似 ffmpeg-6.0-full_build 的文件夹。
      4. 将该文件夹内的 bin 目录(例如 C:\ffmpeg\bin)的完整路径添加到系统的“环境变量”的 Path 变量中。
    • macOS:Bash

      使用 Homebrew 安装是最简单的:

      brew install ffmpeg

    • Linux (Ubuntu/Debian):Bash

      sudo apt update && sudo apt install ffmpeg

  • 如果使用直接ffmpeg,将视频转为音频

1
2
3
4
5
ffmpeg -i "输入文件.mp4" -vn -q:a 0 "输出文件.mp3"
# -i "输入文件.mp4": 指定输入的视频文件。
# -vn: 表示 Video No,即忽略视频轨道,我们只关心音频。
# -q:a 0: 这是推荐的参数,用于输出高质量的可变比特率 (VBR) MP3。0 是质量最高的级别。你也可以用 -b:a 192k 来指定一个固定的比特率。
# "输出文件.mp3": 指定输出的 MP3 文件名。

NVIDIA GPU 环境 (CUDA)(可选,条件允许可选择)

Whisper 可以在 CPU 上运行,但速度会非常慢,尤其是处理长音频或使用大模型时。如果你有 NVIDIA 显卡,强烈建议配置好 CUDA 环境,可以让识别速度提升数十倍。

  • 确保你已安装最新的 NVIDIA 显卡驱动。
  • 安装与驱动兼容的 CUDA Toolkit
  • 之后安装 PyTorch 的 GPU 版本,Whisper 会自动利用它。

安装 Whisper

环境准备好后,安装 Whisper 就非常简单了。

打开终端,使用 pip (Python 的包管理器) 来安装。

基础安装

这是最直接的安装方式:

1
2
3
4
# Python 安装whisper
pip install -U openai-whisper
# Python3安装 whisper
pip3 install -U openai-whisper

-U 参数表示如果已经安装了旧版本,则升级到最新版。

如果需要 GPU 支持

如果你已经配置好了 CUDA,上面的命令通常就足够了。Whisper 会在运行时自动检测并使用 PyTorch 的 GPU 版本。你只需要确保 PyTorch 是正确安装的。可以先访问 PyTorch 官网,获取适合你 CUDA 版本的安装命令,例如:

1
2
# 示例命令,请以 PyTorch 官网的为准
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

然后再安装 Whisper。

使用方法

  • 运行 Whisper 识别音频
  • 安装完成后,你就可以在终端里直接使用 whisper 命令了。

whisper模型

可选模型

Size Parameters English-only model Multilingual model Required VRAM Relative speed
tiny 39 M tiny.en tiny ~1 GB ~10x
base 74 M base.en base ~1 GB ~7x
small 244 M small.en small ~2 GB ~4x
medium 769 M medium.en medium ~5 GB ~2x
large 1550 M N/A large ~10 GB 1x
turbo 809 M N/A turbo ~6 GB ~8x
  • 支持的语言如下

choose from ‘af’, ‘am’, ‘ar’, ‘as’, ‘az’, ‘ba’, ‘be’, ‘bg’, ‘bn’, ‘bo’, ‘br’, ‘bs’, ‘ca’, ‘cs’, ‘cy’, ‘da’, ‘de’, ‘el’, ‘en’, ‘es’, ‘et’, ‘eu’, ‘fa’, ‘fi’, ‘fo’, ‘fr’, ‘gl’, ‘gu’, ‘ha’, ‘haw’, ‘he’, ‘hi’, ‘hr’, ‘ht’, ‘hu’, ‘hy’, ‘id’, ‘is’, ‘it’, ‘ja’, ‘jw’, ‘ka’, ‘kk’, ‘km’, ‘kn’, ‘ko’, ‘la’, ‘lb’, ‘ln’, ‘lo’, ‘lt’, ‘lv’, ‘mg’, ‘mi’, ‘mk’, ‘ml’, ‘mn’, ‘mr’, ‘ms’, ‘mt’, ‘my’, ‘ne’, ‘nl’, ‘nn’, ‘no’, ‘oc’, ‘pa’, ‘pl’, ‘ps’, ‘pt’, ‘ro’, ‘ru’, ‘sa’, ‘sd’, ‘si’, ‘sk’, ‘sl’, ‘sn’, ‘so’, ‘sq’, ‘sr’, ‘su’, ‘sv’, ‘sw’, ‘ta’, ‘te’, ‘tg’, ‘th’, ‘tk’, ‘tl’, ‘tr’, ‘tt’, ‘uk’, ‘ur’, ‘uz’, ‘vi’, ‘yi’, ‘yo’, ‘yue’, ‘zh’, ‘Afrikaans’, ‘Albanian’, ‘Amharic’, ‘Arabic’, ‘Armenian’, ‘Assamese’, ‘Azerbaijani’, ‘Bashkir’, ‘Basque’, ‘Belarusian’, ‘Bengali’, ‘Bosnian’, ‘Breton’, ‘Bulgarian’, ‘Burmese’, ‘Cantonese’, ‘Castilian’, ‘Catalan’, ‘Chinese’, ‘Croatian’, ‘Czech’, ‘Danish’, ‘Dutch’, ‘English’, ‘Estonian’, ‘Faroese’, ‘Finnish’, ‘Flemish’, ‘French’, ‘Galician’, ‘Georgian’, ‘German’, ‘Greek’, ‘Gujarati’, ‘Haitian’, ‘Haitian Creole’, ‘Hausa’, ‘Hawaiian’, ‘Hebrew’, ‘Hindi’, ‘Hungarian’, ‘Icelandic’, ‘Indonesian’, ‘Italian’, ‘Japanese’, ‘Javanese’, ‘Kannada’, ‘Kazakh’, ‘Khmer’, ‘Korean’, ‘Lao’, ‘Latin’, ‘Latvian’, ‘Letzeburgesch’, ‘Lingala’, ‘Lithuanian’, ‘Luxembourgish’, ‘Macedonian’, ‘Malagasy’, ‘Malay’, ‘Malayalam’, ‘Maltese’, ‘Mandarin’, ‘Maori’, ‘Marathi’, ‘Moldavian’, ‘Moldovan’, ‘Mongolian’, ‘Myanmar’, ‘Nepali’, ‘Norwegian’, ‘Nynorsk’, ‘Occitan’, ‘Panjabi’, ‘Pashto’, ‘Persian’, ‘Polish’, ‘Portuguese’, ‘Punjabi’, ‘Pushto’, ‘Romanian’, ‘Russian’, ‘Sanskrit’, ‘Serbian’, ‘Shona’, ‘Sindhi’, ‘Sinhala’, ‘Sinhalese’, ‘Slovak’, ‘Slovenian’, ‘Somali’, ‘Spanish’, ‘Sundanese’, ‘Swahili’, ‘Swedish’, ‘Tagalog’, ‘Tajik’, ‘Tamil’, ‘Tatar’, ‘Telugu’, ‘Thai’, ‘Tibetan’, ‘Turkish’, ‘Turkmen’, ‘Ukrainian’, ‘Urdu’, ‘Uzbek’, ‘Valencian’, ‘Vietnamese’, ‘Welsh’, ‘Yiddish’, ‘Yoruba’

命令预下载模型(可选)

直接运行对应模型的转录命令,Whisper 会自动下载缺失的模型:

1
2
3
4
5
6
7
8
# 下载 small 模型
whisper --model small sample.mp3

# 下载 medium 模型
whisper --model medium sample.mp3

# 下载 tiny 模型
whisper --model tiny sample.mp3

下载完成后,模型文件会保存在缓存目录中(如 ~/.cache/whisper/small.pt

检查模型

缓存/下载的模型位置:/Users/doubleming/.cache/whisper/

1
2
#检查是否有模型,以及下载了哪些模型
ls ~/.cache/whisper/

基本用法

命令行的基本格式是:

1
whisper "你的音频文件路径" --model <模型名称> --language <语言>
  • 你的音频文件路径: 支持多种格式,如 .mp3, .wav, .m4a 等。如果路径包含空格,请用双引号括起来。
  • -model <模型名称>: 这是必须指定的参数。Whisper 提供多种大小的模型,效果和速度各不相同(见下文模型选择部分)。
  • -language <语言>: 指定音频的语言。对于中文普通话,请使用 Chinese。虽然 Whisper 可以自动检测语言,但明确指定可以提高准确性和速度。

实际例子

假设你有一个名为 meeting_audio.mp3 的音频文件,你想用 medium 模型进行识别。

命令如下:

1
whisper "path/to/your/meeting_audio.mp3" --model medium --language Chinese

查看结果

运行命令后,Whisper 会开始处理。

  • 首次运行:它会先下载你指定的模型文件(例如 medium.pt),这需要一些时间,但只需要一次。
  • 处理过程:你会在终端看到实时的识别进度和结果。
  • 输出文件:处理完成后,默认会在你的音频文件所在的相同目录下,生成以下几个文件:
    • meeting_audio.txt: 纯文本文件。
    • meeting_audio.srt: 带时间戳的字幕文件,适合视频。
    • meeting_audio.vtt: 另一种格式的字幕文件。

如何选择合适的模型 (-model)

模型越大,准确率越高,但需要的计算资源(显存/内存)也越多,速度也越慢。

模型 (model) 所需显存/内存 相对速度 准确率 适用场景
tiny ~1 GB 最快 一般 快速测试,对准确率要求不高的场景。
base ~1 GB 很快 较好 推荐的起点,性价比高。
small ~2 GB 中等 效果与速度的良好平衡。
medium ~5 GB 较慢 很好 推荐用于追求高质量结果的场景。
large ~10 GB 最慢 最佳 准确率最高,适合专业用途和嘈杂环境。

给新手的建议

  • 如果没有 GPU,从 tinybase 开始尝试。
  • 如果有不错的 GPU(例如 NVIDIA RTX 3060 或更高),可以直接使用 medium 模型,效果非常出色。

进阶:使用 Python 脚本

如果你想在自己的代码中调用 Whisper,可以这样做:

  • 创建一个 Python 文件,例如 transcribe.py
  • 输入以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import whisper

# 加载模型 (首次运行会自动下载)
# 可以选择 'tiny', 'base', 'small', 'medium', 'large'
model = whisper.load_model("base")

# 指定你的音频文件路径
audio_file = "path/to/your/audio.mp3"

# 进行识别
# language='Chinese' 可以提高中文识别的准确性
result = model.transcribe(audio_file, language='Chinese', fp16=False) # 如果没有GPU或设置复杂,建议fp16=False

# 打印识别出的文本
print(result["text"])

# 你也可以获取带时间戳的片段
# for segment in result["segments"]:
# start_time = segment['start']
# end_time = segment['end']
# text = segment['text']
# print(f"[{start_time:.2f}s -> {end_time:.2f}s] {text}")
  • 在终端中运行这个脚本:Bash

    python transcribe.py

whisper常用命令

以下是 Whisper 常用的命令参数及其作用的完整列表,适用于语音转文本(包括本地和API调用):

基础命令格式

1
whisper [音频文件路径] [参数]

示例:

1
2
3
4
whisper "audio.mp3" --model medium --language zh --output_dir ./output

# small模型;中文;task transcribe为语音转录;输出所有格式的文件
whisper "音频文件路径或目录" --model small --language zh --task transcribe --output_format all --output_dir "输出文本的路径或目录"

核心参数列表

输入/输出控制

参数 作用 示例
[音频文件路径] 指定要转录的音频文件 whisper "input.mp3"
--output_dir 指定输出目录(默认当前目录) --output_dir ./results
--output_format 指定输出格式(默认生成所有格式) --output_format txt
--verbose 显示详细日志(调试用) --verbose True

模型选择

参数 作用 示例
--model 选择模型大小(默认 small --model large
--device 指定运行设备(CPU/GPU) --device cuda

语言处理

参数 作用 示例
--language 强制指定语言(避免自动检测) --language zh
--task 任务类型(transcribetranslate --task translate

性能优化

参数 作用 示例
--fp16 启用FP16加速(需GPU支持) --fp16 True
--threads 设置CPU线程数 --threads 4

高级选项

参数 作用 示例
--temperature 控制生成多样性(0-1) --temperature 0.5
--best_of 生成多个结果选最优 --best_of 5

常用组合示例

快速转录中文(平衡速度与精度)

1
whisper "audio.mp3" --model small --language zh --output_format txt

高精度转录(大模型+GPU加速)

1
whisper "audio.mp3" --model large --language en --device cuda --fp16 True

生成字幕文件(SRT格式)

1
whisper "audio.mp3" --output_format srt --model medium

批量处理目录下所有音频

1
for file in *.mp3; do whisper "$file" --model small; done

输出文件说明

默认生成以下文件(取决于 --output_format):

文件格式 内容 适用场景
.txt 纯文本 简单阅读
.srt 字幕(带时间戳) 视频剪辑
.vtt Web字幕 网页嵌入
.json 结构化数据 编程处理

注意事项

  • 模型下载:首次使用时会自动下载模型(存放于 ~/.cache/whisper/)。
  • 硬件要求
    tiny/base 模型适合CPU。
    small/medium 需至少8GB内存。
    large 推荐GPU运行。
  • 路径问题:文件名/目录避免空格或中文(或用引号包裹)。

完整帮助文档

查看所有参数:

1
whisper --help

总结

  • 准备环境:安装 Python 和 ffmpeg。
  • 安装Whisperpip install -U openai-whisper
  • 运行识别whisper "audio.mp3" --model base --language Chinese

按照这个流程操作,你就可以成功地使用whisper将本地音频文件转换为文本了。