【安装日记】Whisper-OpenAI 开源语音识别工具_openai whisper
文章目录
-
-
- **1. 安装 Whisper**
-
- **1.1 系统依赖**
- **1.2 安装 Whisper**
- **1.3 GPU 加速(可选)**
- **2. 模型详解**
-
- **2.1 模型类型**
- **2.2 模型下载**
- **3. 命令行使用**
-
- **3.1 基础命令**
- **3.2 核心参数**
- **3.3 高级用法**
- **4. Python API 使用**
-
- **API 参数**
- **5. 性能优化**
-
- **5.1 加速技巧**
- **5.2 内存不足处理**
- **6. 常见问题解决**
-
- **6.1 错误:`FileNotFoundError: [Errno 2] No such file or directory: \'ffmpeg\'`**
- **6.2 错误:`ERROR: Could not find model file`**
- **6.3 识别结果不准确**
- **7. 扩展应用**
-
- **7.1 实时语音识别**
- **7.2 集成到其他工具**
- **8. 注意事项**
-
关于 Whisper(OpenAI 开源语音识别工具)的详细安装与使用指南,涵盖技术细节、参数解释、优化技巧和常见问题解决方案。
1. 安装 Whisper
1.1 系统依赖
- 必须安装 FFmpeg:处理音频/视频编解码。
- Linux:
# Debian/Ubuntusudo apt update && sudo apt install ffmpeg# CentOS/RHELsudo yum install ffmpeg ffmpeg-devel - macOS:
# 使用 Homebrewbrew install ffmpeg - Windows:
- 推荐通过 官方二进制包 安装,或使用 Chocolatey:
choco install ffmpeg - 安装后需将
ffmpeg添加到系统环境变量PATH。
- 推荐通过 官方二进制包 安装,或使用 Chocolatey:
- Linux:
1.2 安装 Whisper
-
通过 pip 安装:
pip install -U openai-whisper- Python 版本要求:建议 Python 3.9 或更高版本。
- 依赖项:自动安装
torch,numpy,tqdm,more_itertools等。
-
验证安装:
whisper --version # 输出 Whisper 版本
1.3 GPU 加速(可选)
-
NVIDIA GPU 用户:
- 安装 CUDA Toolkit 11.7+ 和 cuDNN。
- 安装 PyTorch 的 CUDA 版本:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 - 验证 GPU 是否启用:
import torchprint(torch.cuda.is_available()) # 输出应为 True
-
Apple Silicon (M1/M2) 用户:
- 使用
Metal Performance Shaders (MPS)加速:pip install torch torchaudio -U --pre --extra-index-url https://download.pytorch.org/whl/nightly/cpu - 运行命令时添加
--device mps:whisper audio.mp3 --device mps
- 使用
2. 模型详解
2.1 模型类型
Whisper 提供 5 种预训练模型,按精度和速度排序(从低到高):
tinybasesmallmediumlarge- 多语言支持:
large模型支持 99 种语言,其他模型支持主要语言(如中、英、日、西等)。
2.2 模型下载
- 自动下载:首次运行时会自动下载模型到
~/.cache/whisper/。 - 手动下载(解决网络问题):
- 从 Hugging Face 仓库下载模型文件(如
medium.pt)。 - 将文件放入
~/.cache/whisper/(Linux/macOS)或C:\\Users\\\\.cache\\whisper\\(Windows)。
- 从 Hugging Face 仓库下载模型文件(如
3. 命令行使用
3.1 基础命令
whisper [音频文件路径] --model [模型名] --language [语言代码]
- 示例:
# 使用中等模型转录英文音频,生成 TXT 和 SRT 文件whisper lecture.mp3 --model medium --language en --output_format txt,srt
3.2 核心参数
--modelsmall)--languagezh, en, ja),若未指定会自动检测--tasktranscribe(转录)或 translate(翻译为英文)--output_formattxt, srt, vtt, tsv, json(默认全部生成)--output_dir--fp16--devicecpu, cuda, mps(Apple Silicon)--temperature--best_of--beam_sizebest_of 配合使用)--word_timestampsjson 和 srt 格式)3.3 高级用法
- 处理长音频(自动分割):
whisper long_audio.wav --model large --language en --split_duration 300 # 每 300 秒分割一次 - 仅生成字幕文件:
whisper audio.mp4 --task translate --output_format srt # 翻译为英文字幕 - 自定义提示词(提升准确性):
whisper audio.mp3 --initial_prompt \"以下是关于量子力学的讲座。\" # 提供上下文提示
4. Python API 使用
通过 Python 脚本灵活调用 Whisper:
import whisper# 加载模型model = whisper.load_model(\"medium\")# 转录音频result = model.transcribe(\"audio.mp3\", language=\"zh\", fp16=False)# 输出结果print(result[\"text\"]) # 完整文本for segment in result[\"segments\"]: print(f\"[{segment[\'start\']}-{segment[\'end\']}s] {segment[\'text\']}\")
API 参数
transcribe()方法支持所有命令行参数:result = model.transcribe( \"audio.wav\", language=\"en\", temperature=0.2, beam_size=5, word_timestamps=True, initial_prompt=\"This is a podcast about climate change.\")
5. 性能优化
5.1 加速技巧
- GPU 加速:确保安装 CUDA 版本的 PyTorch。
- 量化模型(降低内存占用):
model = whisper.load_model(\"medium\", device=\"cuda\", in_memory=True) - 批处理(同时处理多个文件):
whisper audio1.mp3 audio2.wav --model small --output_dir ./outputs/
5.2 内存不足处理
- 使用更小的模型(如
base或tiny)。 - 添加
--split_duration参数分割长音频。
6. 常见问题解决
6.1 错误:FileNotFoundError: [Errno 2] No such file or directory: \'ffmpeg\'
- 原因:FFmpeg 未正确安装或未添加到
PATH。 - 解决:
- 重新安装 FFmpeg 并确认命令行中
ffmpeg -version可执行。 - Windows 用户需手动添加 FFmpeg 到环境变量。
- 重新安装 FFmpeg 并确认命令行中
6.2 错误:ERROR: Could not find model file
- 原因:模型下载失败或路径错误。
- 解决:
- 手动下载模型并放入
~/.cache/whisper/。 - 指定模型路径:
whisper audio.mp3 --model /path/to/custom_model.pt
- 手动下载模型并放入
6.3 识别结果不准确
- 优化方法:
- 使用更大的模型(如
medium或large)。 - 添加
--initial_prompt提供上下文关键词。 - 清理音频背景噪音(使用 Audacity 等工具预处理)。
- 使用更大的模型(如
7. 扩展应用
7.1 实时语音识别
结合麦克风输入库(如 pyaudio)实现实时转录:
import whisperimport pyaudioimport wave# 录制音频并保存为文件CHUNK = 1024FORMAT = pyaudio.paInt16CHANNELS = 1RATE = 16000RECORD_SECONDS = 5p = pyaudio.PyAudio()stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)frames = []print(\"Recording...\")for _ in range(0, int(RATE / CHUNK * RECORD_SECONDS)): data = stream.read(CHUNK) frames.append(data)stream.stop_stream()stream.close()p.terminate()# 保存为 WAV 文件with wave.open(\"temp.wav\", \'wb\') as wf: wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b\'\'.join(frames))# 使用 Whisper 转录model = whisper.load_model(\"base\")result = model.transcribe(\"temp.wav\")print(result[\"text\"])
7.2 集成到其他工具
- 生成字幕文件:将 SRT 文件导入视频剪辑软件(如 Premiere、DaVinci Resolve)。
- 批量处理脚本:
# 遍历目录下所有 MP3 文件for file in *.mp3; do whisper \"$file\" --model small --output_dir ./transcripts/done
8. 注意事项
- 音频格式:支持 MP3、WAV、OGG、FLAC 等格式,建议使用 16kHz 单声道音频。
- 硬件要求:
large模型需至少 10GB 内存(GPU 推荐 16GB+ VRAM)。- 长音频处理可能需要更多内存。
- 隐私保护:离线运行,无需联网(模型下载后数据不上传)。
通过上述指南,你可以充分利用 Whisper 实现高精度语音识别。如需进一步定制(如微调模型),可参考 官方 GitHub 仓库 和开发者文档。


