G6900部署whispier.cpp

2024-02-15 07:33:29 3点赞 21收藏 0评论

如题,发现什么值得买上面都没有部署whisper.cpp的文章,一直想尝试折腾ai,春节假期刚好有空,搞起来。在B站、知乎上翻了翻,好像语音转写有搞头,折腾成功,聊以记录。

选择折腾whisper.cpp,主要还是受硬件限制,只有联想M93(E3-1268L V3,16G内存)和一台充当NAS的台式机(G6900,32G内存),买不起显卡,经折腾:whisper.cpp对硬件要求不高,E3-1268L V3、G6900都能跑,实测内存占用2G,速度嘛,26.4秒的音频,大概需要2分钟转写完毕,时效性不高,不过还是符合实际需求。

程序

whisper.cpp

官网:https://github.com/ggerganov/whisper.cpp/releases

我下载的是:whisper-bin-x64.zip,其他版本看不懂英文说明,没有尝试。

ffmpeg

官网:https://ffmpeg.org/

下载最新版就好了,我使用scoop安装的。

Python

官网:https://www.python.org/

下载最新版就好了,我使用scoop安装的,下载安装记得将主程序路径添加到环境变量。

源码

whisper.cpp

官网:https://github.com/ggerganov/whisper.cpp

源码也要下载,下载模型或转换模型要用到,Windows下用的是"whisper-bin-x64\whisper.cpp\models\download-ggml-model.cmd"这个批处理,拖到命令提示符里面输入:空格+模型名称,模型名称:make tiny.en、tiny、base.en、 base、small.en、small、medium.en、medium、large-v1、large-v2、large-v3,尝试了几个小时,没下载成功,后来先下载了whisper的相关模型,通过"whisper-bin-x64\whisper.cpp\models\convert-pt-to-ggml.py"这个脚本进行了转换才跑起来。

解压到放到D盘根目录。

whisper

官网:https://github.com/openai/whisper

这个源码也要下载了,转换模型要指定该目录,至于实际有没有用到就不懂了,我是二把刀、二把刀。

解压到放到D盘根目录。

模型

模型下载有坑,如上文所述。有网络条件的可以直接在whisper.cpp官网提供的网址下载,这里就不放了。

我是先下载了whisper的medium.pt模型,再通过"whisper-bin-x64\whisper.cpp\models\convert-pt-to-ggml.py"这个脚本进行了转换才跑起来。模型下载地址:https://openaipublic.azureedge.net/main/whisper/models/345ae4da62f9b3d59415adc60127b97c714f32e89e936602e85993674d08dcb1/medium.pt

模型转换还有一个坑,把whisper.cpp和whisper的源码解压缩到磁盘根目录才可以,也可能是我开打的姿势不对。

另外:large-v3在我的电脑上跑起来非常慢,识别率也没见得高到哪里去,也可能测试样本不够吧。

模型转换命令:python "D:\whisper-bin-x64\whisper.cpp\models\convert-pt-to-ggml.py" "D:\whisper-bin-x64\models\medium.pt" "D:\whisper" "D:\"

这样D盘根目录就会生出适用于whisper.cpp的“.bin”模型文件,将其剪切到whisper-bin-x64\models\目录下,文件名:ggml-medium.bin。

转写

命令

"D:\whisper-bin-x64\main.exe" -m "D:\whisper-bin-x64\models\ggml-medium.bin" -l zh "d:\1.wav" -otxt -of "d:\1.txt" --prompt "简体中文"

输入音频文件,转写出纯文本。

  • "D:\whisper-bin-x64\main.exe":命令转写主程序路径。

  • -m "D:\whisper-bin-x64\models\ggml-medium.bin":指定模型文件

  • -l zh:指定语言

  • "d:\1.wav":指定输入音频

  • -otxt:纯文本输出,无时间轴

  • -of "d:\1.txt":指定输出文件路径

  • --prompt "简体中文":还是会转写为繁体中文,一直搞不懂为啥指定了中文,转写出来还是会有繁体字

服务

"D:\whisper-bin-x64\server.exe" -m "D:\whisper-bin-x64\models\ggml-medium.bin" -l zh --prompt "简体中文" --port 8080

以服务的形式运行,通过curl命令发送需求,并返回json字符串。

  • "D:\whisper-bin-x64\server.exe":后台服务主程序路径。

  • -m "D:\whisper-bin-x64\models\ggml-medium.bin":指定模型文件

  • -l zh:指定语言

  • --port 8080:指定端口

直接访问:127.0.0.1:8080是没有用的,必须使用curl命令发送请求,然后返回json字符串,命令:curl 127.0.0.1:8080/inference -H "Content-Type: multipart/form-data" -F file="@C:\1.WAV" -F temperature="0.0" -F temperature_inc="0.2" -F response_format="json"

上述命令可以成功返回json字符串,不过我想给他改成powershell脚本,但是没有成功,在这里也想请教一下各路大神,上述命令如何通过powershell实现。

最后

贴一下自用的Powershell监控录音文件并转写的脚本:

 $Module = "D:\whisper-bin-x64\models\ggml-medium.bin"  #模型文件路径  $SourcePath = "D:\Recorder"  #音频文件路径  ​  while($true){  #死循环      $Now = Get-Date      #当前时间      $Yestoday = $Now.AddSeconds(-$Now.TimeOfDay.TotalSeconds)      #昨天      Get-ChildItem -Path $SourcePath -Filter '*.*' | Where-Object {$_.CreationTime -gt $Yestoday} |          Group-Object -Property 'BaseName' | Where-Object {$_.Group.Extension -contains '.mp3' -and $_.Count -eq 1} |              ForEach-Object {              #获取所有文件,过滤掉今天之前的文件,按文件名分组,再过滤掉已转写的音频,逐个转写             $Source = $_.Group[0].Fullname             #待转写音频路径                  $Target = $Source.Substring(0,$Source.LastIndexOf('.')) + '.wav'                  #转为wav后的路径                  & ffmpeg.exe -i "$($Source)" -f wav -ac 1 -ar 16000 -y "$($Target)"                  #mp3转为wav                  & D:Softwarewhisper-bin-x64main.exe -m "$($Module)" -l zh "$($Target)" -otxt -of "$($Source.Substring(0,$Source.LastIndexOf('.')))" # --prompt "简体中文"                  #转写音频                  Remove-Item -Path $Target -Force -ErrorAction Ignore                  #删除wav文件              }      Start-Sleep -Seconds 60      #等待60秒  }

最后,再请教一下大神,curl语句如何使用powershell实现,毕竟powershell会用,curl不会用,拜谢。

没图啊,非要我加1张。

powershell代码截图充数。powershell代码截图充数。

吞斜杠呀,我全不替换成全角斜杆了,有需要自己替换一下吧。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
21
扫一下,分享更方便,购买更轻松