音视频转文字不求人,OpenAI Whisper来帮您

1、引言

😀平时上下班通勤,有听播客或看视频并做笔记的习惯,边听边记显然效率很低,而且会破坏学习的 连贯性

所以笔者一般都是想办法捣鼓出 字幕 ,然后 对关键信息进行浏览和总结, 而且这种处理方式在遇到 进度慢内容枯燥 的学习视频时,效率极高。

音视频字幕提取 或者说 语音识别 ,两年前写过一篇文章《好家伙 | 自己写一个视频字幕提取工具 - 掘金》,文中实现了三种字幕提取的方案:

  • ① 定时提取视频帧 + 裁剪特定区域 + OCR文字识别
  • ② 判断是否存在字幕流,是直接提取
  • ③ 破解第三方语音转文字APP的API,直接本地脚本批量调用

这里的破解并不是破解了付费接口白嫖!!!掏了98买了两年!!!不过前几个月过期了,按照我的使用频次,续费肯定是不可能的,需要找下替代品。

2、剪映

问了下做短视频的朋友,字幕怎么搞,给我推荐了 剪映专业版 ,使用方法很简单:把视频或者音频拖到下面,然后点击 识别字幕/歌词

静待片刻,会出现字幕:

接着点击右上角的 导出 ,选中 字幕导出,还可以选择字幕的格式:

点击 导出,会生成对应的字幕文件:

能用,但是不支持多个视频的字幕提取(当然也可能是我使用方式不对),像这个冥想的专题视频有76个。一个个搞,得搞到啥时候,需要找一个支持批量提取的工具。

3、Buzz

网上搜了一圈,发现很多人安利了 chidiwilliams/buzz ,基于OpenAI 开源的 Whisper 自动语音识别模型,可以批量将音视频中的内容自动转换为带有时间的字幕,速度极快(模型离线存在本地,转换过程无需联网)。安装方法:

bash 复制代码
# macOS
brew install --cask buzz

# Windows
下载这个页面里的.exe文件安装:https://github.com/chidiwilliams/buzz/releases/latest

# Linux
sudo apt-get install libportaudio2
sudo snap install buzz

用法很简单,此处以winodws为例,打开软件后,点击 File → Import Media File... 选中要提取字幕的音视频文件:

打开目标目录没找到音视频的话,这里选择:

选完文件会弹窗,然后选择 模型(默认就好)视频语言生成字幕的格式

第一次转换需要下载模型 (后面不需要),建议打开 科学上网,不然速度会很慢!!!

模型下载完,静待片刻,等待字幕提取完毕:

可以看到速度很快,5个视频加起来1分钟不到就完成了,在视频所在目录下可以看到生成的字幕文件:

格式不喜欢或者要修改字幕内容,还可以双击,重新导出:

打开看下识别效果:

不能看出有部分 错字 ,以及 繁体字 ,试试换成更大的模型看看效果,比如这里从 tiny → small

可以看到时间长了不少,但是识别准确率却大幅提升:

如果觉得准确率还不够,可以试下更大的模型,不同级别模型的大小及需要的显存大小要求如下:

笔者的i7 6700k没外置显卡,使用medium卡得一匹,转换时长也延长到快3分钟:

另外,Buzz其实还支持其它模型:

不过Whisper模型基本够用了,感兴趣的读者可以试试其它几个,同类型的工具还有 WhisperDesktopjhj0517/Whisper-WebUI (需要自己部署到本地,提供网页UI页面)

4、python 调 whisper库

上面的工具其实够用了,但我想打造一条批处理的流水线:

输入一条视频url → 批量下载视频 → 转音频 → 提取字幕 → 结果合并。

还是得用python调下 openai/whisper,使用它需要 python 3.8-3.10 间的版本,确认安装的python版本在此区间,使用 pip命令安装whisper库

bash 复制代码
# 下述方式二选一

# ① 下载并安装(或更新到)最新版本的whisper,建议
pip install -U openai-whisper

# ② 从存储库中提取并安装最新的提交及其 Python 依赖项
pip install git+https://github.com/openai/whisper.git 

# 要将软件包更新到此存储库的最新版本
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

接着需要安装下 ffmpeg 配下环境变量,Windows系统可参考《ffmpeg的安装配置》

然后安装 pyTorch ,打开官网 pytorch.org 选择cpu版本,最下面会生成一行pip命令用于安装,直接复制:

比如这里的命令:

bash 复制代码
pip3 install torch torchvision torchaudio

# 注:没科学上网会下载有可能很慢,可以替换成国内镜像加快下载速度
pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple

openai-whisper、torch、ffmpeg 这三个东西都准备好了,接着就可以写代码提取字幕了,先看下命令语法:

参数讲解:

  • --task: 指定转录方式,默认使用 --task transcribe 转录模式 ,--task translate 则为 翻译模式,目前只支持翻译成英文。
  • --model :指定使用模型,默认使用 --model small,Whisper 还有 英文专用模型,就是在名称后加上 .en,这样速度更快。
  • --language:指定转录语言,默认会截取 30 秒来判断语种,但最好指定为某种语言,比如指定中文是 --language Chinese。
  • --device:指定硬件加速,默认使用 auto 自动选择,--device cuda 则为显卡,cpu 就是 CPU, mps 为苹果 M1 芯片。
  • --output_format:指定字幕文件的生成格式,txt,vtt,srt,tsv,json,all,指定多个可以用大括号{}包裹,不设置默认all。
  • -- output_dir: 指定字幕文件的输出目录,不设置默认输出到当前目录下。
  • --fp16:默认True,使用16位浮点数进行计算,可以在一定程度上减少计算和存储开销,可能存在精度丢失,笔者CPU不支持,会出现下述警告,指定它为False就不会出现了,即采用32位浮点数进行计算。

执行命令示例如下:

bash 复制代码
whisper.exe test.mp4 --language Chinese --model tiny --fp16 False

识别效果:

生成的字幕文件:

好,接着在python代码中调用:

python 复制代码
import whisper

if __name__ == '__main__':
    model = whisper.load_model("tiny")
    result = model.transcribe("test.mp4", fp16=False, language="Chinese")
    print(result["text"])

运行结果如下:

Tip:如果运行出现下述错误:

if` '/' in name or '\' in name: TypeError: argument of type 'NoneType' is not iterable

可以执行下述命令 卸载whisper 安装openai-whisper:

bash 复制代码
pip uninstall whisper
pip install openai-whisper

没找到直接生成字幕文件的方法,官方仓库给出的api非常简陋... 这部分估计得自己写代码生成,result的结构:

按需获取字段吧,另外还发现了一个两个有意思的库,感兴趣自取:

🤡 对了,有个加快提取速度的小妙招:先用ffmpeg将视频批量转换为音频,再进行字幕提取~

🤣 另外,我还试了下霓虹语字幕提取,识别效果同样很不戳,😍如果再 配合ai翻译 ,以后看小电影岂不是不用在车牌号后面加上: 中字 了,AI YYDS!!!

参考文献及文中部分图片来源5 分钟 Whisper 测评,看完没有人比你更懂「语音识别」

相关推荐
木雷坞3 小时前
Go 项目实战:用 MLiev IAM 落地企业认证中心
后端·golang·认证
漂流瓶jz5 小时前
Webpack如何实现万物皆可import?loader的使用/配置/手写实践
前端·javascript·webpack
ZC跨境爬虫5 小时前
跟着 MDN 学CSS day_41:显式轨道、隐式网格与区域命名放置
前端·javascript·css·ui·交互
修己xj6 小时前
告别手动存图!这款叫 Fatkun 的浏览器插件,简直是素材收集神器
前端
针叶6 小时前
Google Play加固保护导致的崩溃
android·安全·google
袋鼠云数栈7 小时前
从前端到基础设施,ACOS 如何打通企业全链路可观测
运维·前端·人工智能·数据治理·数据智能
AskHarries7 小时前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
Moment7 小时前
长上下文会最终杀死 Rag 吗?
前端·javascript·后端
qcx237 小时前
【系统学AI】25 论文导读 ①:两篇改变 AI 的开山之作——Attention Is All You Need & ReAct
前端·人工智能·react.js·transformer
蝎子莱莱爱打怪8 小时前
🚀 🚀🚀2026年5月GitHub月榜精选:17个项目中挑出10个推荐,实操4个!
人工智能·后端·ai编程