在人工智能语音识别领域,OpenAI Whisper作为一个革命性的开源项目,正以其卓越的准确性和强大的多语言支持能力改变着语音处理技术的格局。该项目通过大规模弱监督训练,实现了接近甚至超越人类水平的语音识别准确率。
项目GitHub地址:https://github.com/openai/whisper
一、OpenAI Whisper项目概述¶
OpenAI Whisper是一系列基于大规模弱监督训练的自动语音识别(ASR)和语音翻译模型。作为当前最先进的语音处理系统之一,Whisper通过68万小时的多样化音频数据训练,展现出强大的多语言识别能力和鲁棒性。
项目的主要特点包括:
- 高准确率:识别准确度在很多场景下媲美甚至超越人类速记员
- 超强鲁棒性:对口音、背景噪音、技术术语都有很好的识别能力
- 多语言支持:支持约99种语言的识别,其中65种语言表现优异,并能将它们直接翻译成英语
- 完全免费开源:无需API Key,没有调用次数限制,代码和模型完全开源
- 多种模型规模:从Tiny到Large多种规模,满足不同场景需求
- 双重功能:既可将语音转录为原语言文本,也可直接翻译为英文
二、技术架构与模型特点¶
1. 模型架构¶
Whisper采用序列到序列(Seq2Seq)架构,这种架构特别适合处理语音到文本的转换任务。模型系列包含从Tiny到Large多种规模:
| 模型规模 | 参数量 | 英语专用模型 | 多语言模型 | 所需显存 | 相对速度 |
|---|---|---|---|---|---|
| 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 |
注:相对速度是在A100上转录英语语音的测量结果,实际速度可能因语言、说话速度和硬件等因素而显著不同。.en模型(如tiny.en、base.en)在英语应用中往往表现更好,尤其是tiny.en和base.en模型。这种差异在small.en和medium.en模型上变得不那么显著。*
2. 训练数据构成¶
Whisper的训练数据具有以下特点:
- 总时长:68万小时的多语言音频及对应文本
- 数据分布:
- 65%为英语语音及英文文本(约43.8万小时)
- 18%为非英语语音及英文文本(约12.6万小时)
- 17%为非英语语音及对应语言文本(约11.7万小时)
这种数据构成使模型既擅长英语识别,又具备多语言翻译能力,同时保持了原语言转录的准确性。
3. 多语言支持¶
Whisper支持约99种语言的语音识别,其中65种语言表现优异。主要支持的语言包括但不限于:
- 英语、中文(普通话、粤语等)
- 日语、韩语、越南语、泰语
- 法语、德语、西班牙语、意大利语、葡萄牙语
- 俄语、阿拉伯语、印地语
- 以及其他多种欧洲、亚洲、非洲和美洲语言
三、安装与环境配置¶
Whisper支持多种安装方式,适应不同用户的需求:
1. 环境准备¶
首先创建一个Python环境(推荐Python 3.8-3.11):
# 创建conda环境
conda create -n whisper python=3.9
conda activate whisper
2. PyTorch安装¶
根据您的硬件环境选择合适的PyTorch版本:
NVIDIA GPU:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
CPU版本:
pip install torch torchvision torchaudio
3. Whisper安装¶
您可以选择以下两种安装方式之一:
方式一:从PyPI安装(推荐)
pip install -U openai-whisper
方式二:从GitHub安装(获取最新版本)
pip install git+https://github.com/openai/whisper.git
更新到最新版本:
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
4. FFmpeg安装¶
Whisper需要FFmpeg来处理音频文件:
Ubuntu或Debian:
sudo apt update && sudo apt install ffmpeg
Arch Linux:
sudo pacman -S ffmpeg
macOS (使用Homebrew):
brew install ffmpeg
Windows (使用Chocolatey):
choco install ffmpeg
Windows (使用Scoop):
scoop install ffmpeg
5. Rust环境安装(如果需要)¶
在安装Whisper项目过程中,如果遇到与tiktoken相关的错误,可能需要安装Rust开发环境。这是因为Whisper依赖的tiktoken包在某些平台上可能没有预编译的wheel,需要从源码编译,而tiktoken的编译需要Rust环境。
安装Rust环境后,可能还需要配置PATH环境变量,例如:export PATH="$HOME/.cargo/bin:$PATH"。如果安装失败并显示"No module named 'setuptools_rust'"错误,需要安装setuptools_rust:
pip install setuptools-rust
四、使用方法¶
Whisper提供了简单易用的命令行界面,支持多种音频格式和输出选项。
1. 基本使用¶
# 基本转录(默认使用turbo模型,首次使用会自动下载模型)
whisper audio.flac audio.mp3 audio.wav --model turbo
# 指定模型大小
whisper audio.mp3 --model medium
# 指定输出语言
whisper japanese.wav --language Japanese
# 将非英语音频翻译成英语
whisper japanese.wav --model medium --language Japanese --task translate
注意:默认设置(选择turbo模型)适用于转录英语。但是,turbo模型未经过翻译任务训练。如果需要将非英语语音翻译成英语,请使用多语言模型(tiny, base, small, medium, large)代替turbo。如需最佳翻译结果,请使用medium或large模型。
2. 高级选项¶
# 输出为特定格式(支持txt, vtt, srt, tsv, json, all,默认为输出所有格式)
whisper audio.mp3 --output_format srt
# 设置输出目录
whisper audio.mp3 --output_dir ./transcripts
# 指定模型目录(默认使用 ~/.cache/whisper)
whisper audio.mp3 --model_dir ./models
# 使用温度采样提高准确性
whisper audio.mp3 --temperature 0.0
# 使用最佳_of采样策略
whisper audio.mp3 --best_of 5
# 查看所有可用选项
whisper --help
3. 在Python中使用Whisper¶
import whisper
# 加载模型
model = whisper.load_model("base")
# 转录音频
result = model.transcribe("audio.mp3")
print(result["text"])
# 翻译音频
result = model.transcribe("audio.mp3", task="translate")
print(result["text"])
五、性能与优化¶
为了获得最佳性能,可以考虑以下优化策略:
- 选择合适的模型大小:根据您的硬件能力和准确率要求选择合适的模型
- 使用GPU加速:如果有NVIDIA GPU,确保安装了CUDA版本的PyTorch
- 音频预处理:降低音频采样率可以加快处理速度,但可能影响准确率
- 分段处理:对于长音频,可以分段处理以减少内存使用
- 使用turbo模型:对于需要快速推理的场景,可以使用turbo模型,其推理速度比large快8倍,且VRAM需求仅6GB。但需要注意的是,turbo模型未经过翻译任务训练,如需翻译功能,应使用medium或large模型。
六、应用场景¶
Whisper的高准确率和多语言支持使其适用于多种场景:
- 会议记录:自动转录会议内容,生成文字记录
- 视频字幕:为视频内容自动生成多语言字幕
- 内容创作:将播客、采访等音频内容转换为文字稿
- 语言学习:帮助学习者检查发音和口语练习
- 无障碍访问:为听障人士提供音频内容的文字版本
- 多语言翻译:将非英语内容实时翻译成英语
- 客服系统:自动转录客户通话,用于质量监控和分析
- 媒体监控:分析广播、电视等媒体内容的语音信息
- 学术研究:处理访谈、讲座等学术音频资料
- 法律与医疗:转录法律证词和医疗诊断记录
七、局限性与注意事项¶
尽管Whisper表现出色,但仍有一些局限性需要注意:
- 幻觉问题:在某些情况下,模型可能会生成音频中不存在的文本(例如重复或编造内容)
- 计算资源需求:较大的模型需要较强的硬件支持
- 实时性限制:虽然Turbo版本有所改进,但仍不适合严格的实时应用
- 专业术语:对于高度专业化的术语,可能需要微调模型
- 说话人识别:Whisper不区分不同说话人,所有内容将被转录为单一文本
- 标点符号:模型生成的标点符号可能不完全准确
- 口音与语速:尽管鲁棒性强,但在极端口音或语速下准确率可能有所下降
八、社区与衍生项目¶
Whisper的开源特性催生了众多衍生项目和工具:
- Whisper.cpp:C/C++版本的Whisper,支持更广泛的部署环境 (GitHub链接)
- WhisperX:添加了说话人分离和时间戳对齐功能 (GitHub链接)
- faster-whisper:使用CTranslate2优化的更快速版本 (GitHub链接)
- WhisperLiveKit:完全离线运行的实时语音处理工具包,集成了语音识别、多语言翻译和说话人分离功能,提供Web界面和极低延迟的实时转录体验 (GitHub链接)
- Whisper Desktop:为桌面应用程序提供语音识别功能 (GitHub链接)
九、总结¶
OpenAI Whisper作为一个先进的开源语音识别项目,通过大规模弱监督训练实现了高质量、多语言的语音识别功能。其卓越的准确率、强大的鲁棒性和灵活的部署选项,使其成为开发者和研究人员的理想选择。
无论您是需要为应用程序添加语音识别功能,还是进行语音处理的研究,Whisper都提供了强大而易用的工具。随着项目的不断发展和社区的积极参与,我们可以期待看到更多创新的功能和改进。
在AI225导航,我们致力于为您介绍最新、最有价值的AI工具和项目。OpenAI Whisper代表了语音识别技术的最新进展,值得开发者和研究人员关注和尝试。
