点击 <C 语言编程核心突破> 快速C语言入门
语音转文字的whisper应用部署
前言
要解决问题: 需要一款开源的语音转文字应用, 用于视频自动转换字幕.
想到的思路: openai
的whisper
以及根据这个模型开发的whisper.cpp
C++应用.
其它的补充: 最好在linux
下部署, Windows
下困难太多.
一、部署whisper
官方文档要求至少十python3.8-3.10
, 同时需要ffmpeg
, 要有nv
的显卡, 支持cuda
直接安装部署:
pip install -U openai-whisper
期间会安装5-6g
的相关文件, 都是显卡相关和cuda
相关的东西, 如果不换成国内的源, 估计是不太可能安装完的.
Size | Parameters | English-only model | Multilingual model | Required VRAM | Relative speed |
---|---|---|---|---|---|
tiny | 39 M | tiny.en |
tiny |
~1 GB | ~32x |
base | 74 M | base.en |
base |
~1 GB | ~16x |
small | 244 M | small.en |
small |
~2 GB | ~6x |
medium | 769 M | medium.en |
medium |
~5 GB | ~2x |
large | 1550 M | N/A | large |
~10 GB | 1x |
需要下载相应的训练文件, 带.en
的是纯英文的, 其它的是多语言的.
越大越慢, 同时耗费的内存及显存越多, 一般我用small
或base
, 再大的就干不动了.
如果是Linux通常是下载时间问题, 而Windows那就是跟自己过意不去, 各种错误, 我是解决不了直接放弃了, 转wsl debian
.
使用比较容易, 我一般用命令行, 毕竟没想着部署到服务器给其他人用, 毕竟是真耗费资源, 自己玩玩就可以了.
bash
'/home/lhb/.local/bin/whisper' --model base --language Chinese '/home/lhb/Cpp/voice/极简SQL_0_课程邀请.mp3' --output_format vtt
我的模型部署后, 系统提示没有放进PATH
中, 所以需要把脚本的绝对路径写上,
model
参数是选择你用的模型, 我一般用base或small
, tiny
基本是个玩具, 不可用, 其他的我的硬件带不起来.
语言是你的是啥就选啥, 好像支持九十多种, 一般就是英语和中文.
请务必安装ffmpeg
, 这个是必选项, 没有它啥也干不了. 因为无论音频还是视频解码都是它.
whisper
模型一般装ffmpeg
后, 大部分文件都可转换.
输出格式, 可以有四五种, 字幕或直接txt
, 我就选vtt
, 目前比较通用.
效果目前看还可以, 我是给自己的课程加字幕, 对于中文, 准确率估计不会小于80%, 需要修修补补, 英文貌似效果不错.
二、部署whisper.cpp
对于没资源的同志们, 有个好消息, 有位大神, 不, 是一堆大神, 将whisper
搞成cpp
版了, 而且可以直接在msys2
资源管理平台安装!
这是Windows
使用者的福音, 这是没有nv
显卡的穷人的福音.
但是, 你还是绕不过ffmpeg
, 在windows
下安装whisper.cpp
只需要一句:
bash
$ pacman -S mingw-w64-clang-x86_64-whisper.cpp
系统会自动帮你安装所有的依赖, 但是轮到ffmpeg
, 以下命令了解一下.
bash
$ pacman -S mingw-w64-clang-x86_64-ffmpeg mingw-w64-clang-x86_64-aom mingw-w64-clang-x86_64-bzip2 mingw-w64-clang-x86_64-dav1d mingw-w64-clang-x86_64-fontconfig mingw-w64-clang-x86_64-frei0r-plugins mingw-w64-clang-x86_64-fribidi mingw-w64-clang-x86_64-gmp mingw-w64-clang-x86_64-gnutls mingw-w64-clang-x86_64-gsm mingw-w64-clang-x86_64-lame mingw-w64-clang-x86_64-libass mingw-w64-clang-x86_64-libbluray mingw-w64-clang-x86_64-libcaca mingw-w64-clang-x86_64-libexif mingw-w64-clang-x86_64-libgme mingw-w64-clang-x86_64-libiconv mingw-w64-clang-x86_64-libmodplug mingw-w64-clang-x86_64-libplacebo mingw-w64-clang-x86_64-librsvg mingw-w64-clang-x86_64-libsoxr mingw-w64-clang-x86_64-libssh mingw-w64-clang-x86_64-libtheora mingw-w64-clang-x86_64-libva mingw-w64-clang-x86_64-libvorbis mingw-w64-clang-x86_64-libvpx mingw-w64-clang-x86_64-libwebp mingw-w64-clang-x86_64-libx264 mingw-w64-clang-x86_64-libxml2 mingw-w64-clang-x86_64-onevpl mingw-w64-clang-x86_64-openal mingw-w64-clang-x86_64-opencore-amr mingw-w64-clang-x86_64-openjpeg2 mingw-w64-clang-x86_64-opus mingw-w64-clang-x86_64-rav1e mingw-w64-clang-x86_64-rtmpdump mingw-w64-clang-x86_64-SDL2 mingw-w64-clang-x86_64-speex mingw-w64-clang-x86_64-srt mingw-w64-clang-x86_64-svt-av1 mingw-w64-clang-x86_64-vid.stab mingw-w64-clang-x86_64-vulkan mingw-w64-clang-x86_64-x265 mingw-w64-clang-x86_64-xvidcore mingw-w64-clang-x86_64-zimg mingw-w64-clang-x86_64-zlib
这还没玩, 如果你安装的库中有版本不匹配的, 哈哈, 找错去吧, 没个几小时是万万不能安装成功的.
此版本的使用方法:
需要将视频或音频文件转换为16khz
的wav
文件, 文件转换非常快, 只要你能装好ffmpeg
.
然后调用whisper.cpp.exe
文件, -m
是模型, 模型与上边的不通用! 需要再下载一波.
其它的差不多, 告诉语言, 我们一般是中文, 这里使用zh
, 不能用Chinese
, -ovtt
是输出格式.
bash
ffmpeg -i D:\极简SQL\课程视频\极简SQL_0_课程邀请.mp4 -ar 16000 -ac 1 -c:a pcm_s16le e:\clangC++\voiceToText\srt.wav
whisper.cpp -m e:\clangC++\voiceToText\ggml-model-whisper-base.bin -l zh e:\clangC++\voiceToText\srt.wav -ovtt
whisper.cpp -m e:\clangC++\voiceToText\ggml-model-whisper-small.bin -l zh e:\clangC++\voiceToText\srt.wav -ovtt
效果和openai
的原版有少许不同, 估计是训练模型不一致导致的, 但大差不差, 正确率完全一样.
总结
请开始你的字幕自动加载吧.
点击 <C 语言编程核心突破> 快速C语言入门