已成功安装OpenAI Whisper但无法使用,通常因环境依赖不全、模型加载失败或命令调用错误;需依次确认Python≥3.8、FFmpeg、PyTorch,安装openai-whisper,下载对应模型,再通过命令行或API执行转写、翻译、字幕生成等任务,并对长音频做FFmpeg分段处理。

如果您已成功安装OpenAI Whisper,但尚未掌握其基本使用方法或本地部署流程,则可能是由于环境依赖未齐备、模型加载失败或命令调用方式不正确。以下是完成Whisper语音转文字功能的完整操作路径:
一、确认基础依赖已安装
Whisper运行依赖Python环境、FFmpeg音频处理工具及PyTorch推理框架。缺失任一组件均会导致模型无法加载或音频解析失败。
1、检查Python版本是否为3.8及以上:运行python --version或python3 --version,输出应类似Python 3.10.12。
2、验证FFmpeg是否可用:执行ffmpeg -version,若提示“command not found”,需按系统类型补装——Ubuntu用户执行sudo apt install ffmpeg,macOS用户执行brew install ffmpeg,Windows用户需下载静态编译包并配置Path环境变量。
3、确认PyTorch已正确安装:运行python -c "import torch; print(torch.__version__)",输出应为有效版本号(如2.0.1),且torch.cuda.is_available()在有NVIDIA显卡时返回True。
二、安装Whisper模型包
openai-whisper是官方维护的Python接口封装,提供命令行与API双模式调用能力,安装后即可直接调用预训练模型。
1、使用pip安装最新稳定版:pip install openai-whisper。
2、国内用户可加速下载,指定阿里云镜像源:pip install openai-whisper -i https://mirrors.aliyun.com/pypi/simple/。
3、若需调试最新特性或自定义修改,可克隆源码安装:git clone https://github.com/openai/whisper.git && cd whisper && pip install -e .。
三、下载并加载预训练模型
Whisper提供5种尺寸模型,参数量从39M(tiny)到1550M(large-v3),模型越大识别精度越高,但对内存与显存要求也越严格。
1、首次运行时,模型将自动从Hugging Face镜像下载至~/.cache/whisper/目录;如需指定路径,可在代码中传入download_root参数。
2、命令行方式加载base模型并转写音频:whisper audio.mp3 --model base --language zh --device cuda。
3、Python API方式加载large-v3模型:import whisper; model = whisper.load_model("large-v3", device="cuda"),其中device可设为"cpu"或"cuda"。
四、执行语音转文字任务
Whisper支持多种输入格式(mp3/wav/flac等)与输出格式(txt/srt/vtt/json等),并可启用时间戳、翻译、语言强制等功能。
1、基础转写(输出txt):whisper meeting.wav --model small --output_format txt。
2、生成带时间轴的SRT字幕文件:whisper lecture.mp3 --model medium --output_format srt --word_timestamps True。
3、将中文语音直接翻译为英文文本:whisper chn_audio.wav --model large-v3 --task translate --language zh --output_format txt。
4、Python脚本调用示例:result = model.transcribe("test.wav", language="zh", task="transcribe"),返回字典含text字段即识别结果。
五、处理长音频与分段优化
对于超过30分钟的音频,直接加载易触发内存溢出;Whisper本身不内置分片逻辑,需借助FFmpeg预处理实现可控切分。
1、使用FFmpeg按30秒切分原始音频:ffmpeg -i long.mp3 -f segment -segment_time 30 -c copy chunk_%03d.mp3。
2、遍历所有分段文件并逐个调用transcribe:for chunk in sorted(glob("chunk_*.mp3")): result = model.transcribe(chunk); print(result["text"])。
3、合并各段输出时注意语义连贯性,避免因分段导致标点或句意断裂;可启用vad_filter=True参数启用语音活动检测,跳过静音段。










