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

news/2024/5/20 8:08:25 标签: whisper, openai, 语音模型

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


语音转文字的whisper应用部署


前言

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

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

其它的补充: 最好在linux下部署, Windows下困难太多.


whisper_17">一、部署whisper

官方文档要求至少十python3.8-3.10, 同时需要ffmpeg, 要有nv的显卡, 支持cuda

直接安装部署:

pip install -U openai-whisper

期间会安装5-6g的相关文件, 都是显卡相关和cuda相关的东西, 如果不换成国内的源, 估计是不太可能安装完的.

SizeParametersEnglish-only modelMultilingual modelRequired VRAMRelative speed
tiny39 Mtiny.entiny~1 GB~32x
base74 Mbase.enbase~1 GB~16x
small244 Msmall.ensmall~2 GB~6x
medium769 Mmedium.enmedium~5 GB~2x
large1550 MN/Alarge~10 GB1x

需要下载相应的训练文件, 带.en的是纯英文的, 其它的是多语言的.

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

如果是Linux通常是下载时间问题, 而Windows那就是跟自己过意不去, 各种错误, 我是解决不了直接放弃了, 转wsl debian.

使用比较容易, 我一般用命令行, 毕竟没想着部署到服务器给其他人用, 毕竟是真耗费资源, 自己玩玩就可以了.

'/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%, 需要修修补补, 英文貌似效果不错.

whispercpp_107">二、部署whisper.cpp

对于没资源的同志们, 有个好消息, 有位大神, 不, 是一堆大神, 将whisper搞成cpp版了, 而且可以直接在msys2资源管理平台安装!

这是Windows使用者的福音, 这是没有nv显卡的穷人的福音.

但是, 你还是绕不过ffmpeg, 在windows下安装whisper.cpp只需要一句:

$ pacman -S mingw-w64-clang-x86_64-whisper.cpp

系统会自动帮你安装所有的依赖, 但是轮到ffmpeg, 以下命令了解一下.

$ 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是输出格式.

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语言入门



http://www.niftyadmin.cn/n/5289877.html

相关文章

QT C++ TCP Socket 请求心知天气

0.0 相关连接代码部分头文件具体实现 相关连接 心知天气官方天气图标 心知天气官网 代码部分 头文件 #include <QtNetwork> #include <QNetworkAccessManager> #include <QDebug> #include <QJsonValue> #include <QJsonArray> #include &l…

浅谈WPF之ToolTip工具提示

在日常应用中&#xff0c;当鼠标放置在某些控件上时&#xff0c;都会有相应的信息提示&#xff0c;从软件易用性上来说&#xff0c;这是一个非常友好的功能设计。那在WPF中&#xff0c;如何进行控件信息提示呢&#xff1f;这就是本文需要介绍的ToolTip【工具提示】内容&#xf…

css中Link和@import之间有什么区别?

css中Link和import之间有什么区别&#xff1f; link 和 import 都是在 CSS 中用于引入外部样式表的方法&#xff0c;但它们之间存在一些关键的区别&#xff1a; 加载方式&#xff1a; link&#xff1a;通过 HTML 的 link 标签在文档的 <head> 部分引入外部样式表。它是在…

Linux操作系统极速入门[常用指令](安装jdk,MySQL,nginx),以及在linux对项目进行部署。

linux概述&#xff1a; Linux是一套免费使用和自由传播的操作系统 我们为什么要学&#xff0c;Linux&#xff1f; 主流操作系统&#xff1a; linux系统版本&#xff1a; 内核版&#xff1a; 由linux核心团队开发&#xff0c;维护 免费&#xff0c;开源 负责控制硬件 发行版&…

识别潜在风险:财务数据智能化转型

在经济全球化发展趋势的促使下&#xff0c;经济管理模式和信息技术得到有效的融合。随着大数据、云计算、区块 链等技术的兴起与发展&#xff0c;企业也面临着巨大的竞争压力&#xff0c;为了保持竞争力&#xff0c;财务工作的方式也向自动化、智能化转变。数智化成为财务数据转…

CentOS 5/6/7 基于开源项目制作openssh 9.6p1 rpm包—— 筑梦之路

背景介绍 开源项目地址&#xff1a;https://github.com/boypt/openssh-rpms.git 该项目主要支持了centos 5 、6、7版本&#xff0c;针对使用了比较老的操作系统进行openssh安全加固&#xff0c;还是不错的项目&#xff0c;使用简单、一件制作&#xff0c;欢迎大家去支持作者。…

开源项目推荐:Frooodle/Stirling-PDF

简介一个本地的处理 PDF 的工具&#xff0c;界面是 Web UI&#xff0c;可以支持 Docker 部署。各种主要的 PDF 操作都可以支持。比如拆分、合并、转换格式、重新排列、添加图片、旋转、压缩等等。这个本地托管的网络应用最初完全由 ChatGPT 制作&#xff0c;后来逐渐发展&#…

安科瑞故障电弧探测器监测线路老化短路助力电气安全

安科瑞 崔丽洁 【摘要】&#xff1a;电气设备是建筑中不可缺少的一部分&#xff0c;具有较为重要的作用和意义&#xff0c;在应用过程中不仅能够提升建筑本身实用性能&#xff0c;而且可为消费者提供更加优良的生活环境。但设备一旦在运行过程中出现故障&#xff0c;不仅会影响…