2023-12-27 语音转文字的whisper应用部署


点击 <C 语言编程核心突破> 快速C语言入门


语音转文字的whisper应用部署


前言

要解决问题: 需要一款开源的语音转文字应用, 用于视频自动转换字幕.

想到的思路: openaiwhisper以及根据这个模型开发的whisper.cppC++应用.

其它的补充: 最好在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的是纯英文的, 其它的是多语言的.

越大越慢, 同时耗费的内存及显存越多, 一般我用smallbase, 再大的就干不动了.

如果是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

这还没玩, 如果你安装的库中有版本不匹配的, 哈哈, 找错去吧, 没个几小时是万万不能安装成功的.

此版本的使用方法:

需要将视频或音频文件转换为16khzwav文件, 文件转换非常快, 只要你能装好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语言入门


相关推荐
k4m7v2pz1 天前
16GB Mac 本地跑大模型:ollama 局域网 OpenAI 兼容 API 实战(一:需求与配置)
llm·openai·api·mac·ollama·本地·atomcode
AINative软件工程1 天前
LLM Trace 脱敏工程实践:日志能排障,但别把用户隐私也存下来
openai
SQDN2 天前
OpenAI Python SDK 遇到 502/503 怎么排?先看自动重试、request_id 与 timeout
openai·503·重试·api调试·python sdk
码哥字节2 天前
为什么你的知识库越用越笨?不是没更新,是你少做了这三件事
openai
小马9262 天前
GPT-6 Swarm 架构深度解析:从单体模型到 Agent 集群协同的范式跃迁
gpt·架构·大模型·openai·agent·分布式ai·swarm架构
AINative软件工程2 天前
语义缓存别只看命中率:LLM 应用缓存失效的 5 个生产陷阱
openai
多米哇卡2 天前
OpenAI 下调 GPT-5.6 两款模型 API 价格,Luna 最高降幅达 80%
openai·gpt-5.6·gpt-5.6api价格
SQDN3 天前
Codex CLI 报 wire_api=“chat“ 不再支持?改为 Responses 并验证 /v1/responses
openai·开发工具·codex·responses api·config.toml
SQDN3 天前
Cline 配置 OpenAI Compatible 前怎么验证?先查 Base URL、/models 与模型 ID
openai·api·baseurl·cline·模型调试
天天摸鱼的java工程师4 天前
公司取消前端岗后,做了 10 年 Java 的我,第一次认真拥抱 AI
前端·后端·openai