用途
Whisper 是 OpenAI 的多语言语音识别模型,适用于以下场景:语音转文字(支持 99 种语言)、播客/视频转录、会议记录自动化、翻译为英文、嘈杂音频转录以及多语言音频处理。
主要能力
- 支持 99 种语言,基于 680,000 小时音频训练。
- 提供多种模型规模:tiny(39M 参数)、base(74M)、small(244M)、medium(769M)、large(1550M)、turbo(809M)。其中 tiny、base、small、medium 同时提供仅英文和多语言版本;large 和 turbo 仅提供多语言版本。
- 支持转录(transcribe)和翻译为英文(translate)两种任务。
- 支持自动检测语言或手动指定语言。
- 支持初始提示(initial_prompt)以提升技术术语、专有名词和领域词汇的准确率。
- 支持词级时间戳(word_timestamps)。
- 支持温度回退(temperature fallback),在置信度低时使用不同温度重试。
- 命令行工具支持多种输出格式:txt、srt、vtt、json。
- 支持 GPU 加速,GPU 上速度可提升 10-20 倍。
- 可与 LangChain 集成,用于 RAG 等场景。
使用方式
安装
需要 Python 3.8-3.11 和 ffmpeg。
pip install -U openai-whisper
ffmpeg 安装:
- macOS:
brew install ffmpeg - Ubuntu:
sudo apt install ffmpeg - Windows:
choco install ffmpeg
基本转录
import whisper
model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])
for segment in result["segments"]:
print(f"[{segment['start']:.2f}s - {segment['end']:.2f}s] {segment['text']}")
模型选择
可用模型:["tiny", "base", "small", "medium", "large", "turbo"]。推荐使用 turbo 以获得最佳速度/质量平衡,base 用于原型开发。
转录选项
- 指定语言:
model.transcribe("audio.mp3", language="en") - 任务选择:
task="transcribe"(默认)或task="translate"(翻译为英文) - 初始提示:
initial_prompt="..." - 词级时间戳:
word_timestamps=True - 温度回退:
temperature=(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)
命令行用法
whisper audio.mp3
whisper audio.mp3 --model turbo
whisper audio.mp3 --output_format txt
whisper audio.mp3 --output_format srt
whisper audio.mp3 --output_format vtt
whisper audio.mp3 --output_format json
whisper audio.mp3 --language Spanish
whisper spanish.mp3 --task translate
批量处理
import os
audio_files = ["file1.mp3", "file2.mp3", "file3.mp3"]
for audio_file in audio_files:
result = model.transcribe(audio_file)
output_file = audio_file.replace(".mp3", ".txt")
with open(output_file, "w") as f:
f.write(result["text"])
实时转录
使用 faster-whisper:
pip install faster-whisper
from faster_whisper import WhisperModel
model = WhisperModel("base", device="cuda", compute_type="float16")
segments, info = model.transcribe("audio.mp3", beam_size=5)
for segment in segments:
print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")
GPU 加速
model = whisper.load_model("turbo") # 自动使用 GPU
model = whisper.load_model("turbo", device="cpu") # 强制 CPU
model = whisper.load_model("turbo", device="cuda") # 强制 GPU
与其他工具集成
生成 SRT 字幕:
whisper video.mp4 --output_format srt --language English
与 LangChain 集成:
from langchain.document_loaders import WhisperTranscriptionLoader
loader = WhisperTranscriptionLoader(file_path="audio.mp3")
docs = loader.load()
从视频提取音频:
ffmpeg -i video.mp4 -vn -acodec pcm_s16le audio.wav
whisper audio.wav
适用场景
- 播客和视频转录
- 会议记录自动化
- 字幕生成
- 多语言音频处理
- 翻译为英文
- 嘈杂音频转录
限制
- 可能产生幻觉,重复或编造文本。
- 长音频(超过 30 分钟)准确率下降。
- 不支持说话人分离(diarization)。
- 口音会影响质量。
- 背景噪声可能影响准确率。
- 实时延迟不适合实时字幕。
最佳实践
- 使用 turbo 模型以获得最佳速度/质量。
- 指定语言比自动检测更快。
- 添加初始提示以改善技术术语识别。
- 使用 GPU 可提速 10-20 倍。
- 批量处理更高效。
- 转换为 WAV 格式兼容性更好。
- 将长音频分割为小于 30 分钟的片段。
- 检查语言支持,不同语言质量有差异。
- 使用 faster-whisper 比 openai-whisper 快 4 倍。
- 监控 VRAM,根据硬件选择模型大小。
性能
实时因子(CPU / GPU): tiny: ~0.32 / ~0.01 base: ~0.16 / ~0.01 turbo: ~0.08 / ~0.01 large: ~1.0 / ~0.05
实时因子 0.1 表示比实时快 10 倍。
语言支持
主要支持语言包括英语、西班牙语、法语、德语、意大利语、葡萄牙语、俄语、日语、韩语、中文等,共 99 种语言。
资源
- GitHub: https://github.com/openai/whisper
- 论文: https://arxiv.org/abs/2212.04356
- 模型卡: https://github.com/openai/whisper/blob/main/model-card.md
- 许可证: MIT