首页 > 其他分享 >使用whisper批量生成字幕(whisper.cpp)

使用whisper批量生成字幕(whisper.cpp)

时间:2023-07-11 18:00:10浏览次数:36  
标签:视频 %% whisper 字幕 REM cpp wav

前言

最近发现了whisper这个语音生成字幕的本地工具,但是whisper速度不算快,然后在github上发现了whisper.cpp这个项目,执行速度更快,还可以在命令行使用,这样就可以自己定制了。

命令行压缩包下载

命令行下载地址:https://github.com/Const-me/Whisper/releases
下载【cli.zip】,解压即可,笔者解压的目录为:D:\whisper_cli不过为了更方便的输入命令,我把D:whisper_cli的目录,放入了环境变量。
image

模型下载

模型下载地址(下载速度挺快的): https://huggingface.co/ggerganov/whisper.cpp/tree/main
我下载的:ggml-medium.en.bin这个模型,速度和转写正确率已经够用了(一小时的视频,经测试转写需要8-10分钟)。下载后,记住模型存放的位置

image

本命令的作用为:A目录下所有的视频,以及A目录下的子文件夹里的视频,都会依次生成字幕srt文件,同时会生成一份wav音频文件,音频文件等字幕转写完毕后,需要自己手动删除。

具体的命令

@echo off

REM 设置 PATH 环境变量,包含whisper可执行文件
SET PATH=%PATH%;D:\python310\Scripts

REM 指定所有视频所在路径,支持多级目录。
SET "video_dir=S:gogo"

REM 循环遍历所有视频
FOR /R "%video_dir%" %%f IN (*.mp4,*.wav,*.avi,*.ts) DO (
    
    REM 提取视频文件名 
    SET "file_name=%%~nf"
    
    REM 切换到视频所在目录
    cd /d "%%~dpf"
    
    REM 为这个视频生成wav音频文件
	ffmpeg.exe -i "%%f" -ar 32000 -acodec pcm_s16le "%%f.wav"
	
	REM 为这个视频生成字幕,这里需要更改你的模型位置,我是直接放在S盘根目录下的。
	main.exe -l zh -osrt -m S:\ggml-medium.bin "%%f.wav"

    
    
    REM 返回原目录
    cd /d "%video_dir%"
)

pause

将上述指令,新建记事本,赋值粘贴,保存为bat即可。
编码为UTF-8,如果目录里有中文,可能utf-8会不行,换成ANSI再试下。

保存编码示意

image

命令介绍:

main.exe -l zh -osrt -m S:\ggml-medium.bin "test.wav
-l zh --选择语言为中文
-osrt --输出srt字幕文件
-m --指定模型位置,这里写你下载好的ggml-medium.en.bin的位置即可。
更多命令,可以访问:https://github.com/ggerganov/whisper.cpp

执行时会出现问号,为正常现象,最后生成的srt格式是正常的。

image

一些报错

如果一直提示failed to generate timestamp token - skipping one second,则可以修改ffmpeg.exe -i "%%f" -ar 32000 -acodec pcm_s16le "%%f.wav"中的-ar 32000为-ar 48000,用更高的采样率,会降低该报错提示。
image

ps:之所以搞这个命令行,还是因为安装faster-whisper安装一直不成功,卡在了安装CUDA那一步。
这款在转写某些文件时,会出现字幕重复的情况,据说faster-whisper有VAD FILTER选项可以减少字幕重复的情况。

标签:视频,%%,whisper,字幕,REM,cpp,wav
From: https://www.cnblogs.com/jike9527/p/17545484.html

相关文章

  • cpplint使用
    cpplint可用于检查代码是否遵守googlec++代码规范。我的理解是检查你使用的是不是正确的C++。安装:python3-mpipinstallcpplint 与之对应,代码需要格式化为满足googlec++规范的格式,比如使用clang-format--style=google-i$file 会添加合适的空格和换行。 ......
  • OCPP1.6J测试工具OCTT
    OCPP1.6J测试工具OCTT是OCA官方发布的,具有权威性。最新版本为1.4.3。OCA官方会员价为6000欧元,相当于45000RMB。软件包含安装手册,测试用例手册。可以用来测试充电桩或者OCPP服务器的行为。测试用例执行后会生成详细的测试报告。官方售价测试用例文档测试用例测试用......
  • vscode cpp 遇到的问题
    已解决:couldnotfindthetask‘g++buildactivefile,leetcode算法ACM编译调试_dlage的博客-CSDN博客(32条消息)vscode下编译告警“undefinedreference”?三步教你如何解决_vscodeundefinedreferenceto_飘逸的小松鼠的博客-CSDN博客tasks.json{"version":"2.0.0"......
  • cpp: Sudoku
     /*****************************************************************//***\fileConsoleSudoku.cppc++14*\brief九宫独数填充游戏*fromhttps://github.com/vaithak/Sudoku-Generator*\authorgeovindu*\dateJuly2023************************......
  • cpp: Two-level pointer and double dimensional array
    /*****************************************************************//***\fileConsoleTextFileDemoApp.cppc++14*\brief***\authorgeovindu*\dateJune2023*********************************************************************/......
  • 使用 Transformers 为多语种语音识别任务微调 Whisper 模型
    本文提供了一个使用HuggingFace......
  • 实用模型推荐(三)语音转文本模型:whisper
    1.开原地址:https://github.com/openai/whisper          https://github.com/guillaumekln/faster-whisper2.使用场景:语音转文字3.api封装:importosimportuvicornfromfastapiimportFastAPI,UploadFile,Filefromwhisperimportload_modelap......
  • cpp condition_variable wait_for unique_mutex,chrono::seconds
    #include<chrono>#include<condition_variable>#include<ctime>#include<fstream>#include<future>#include<iomanip>#include<iostream>#include<thread>#include<uuid/uuid.h>#include<vector......
  • 【双语字幕】CMU-多模态机器学习
    课程描述    多模态机器学习(MMML)是一个充满活力的多学科研究领域,它通过集成和建模多种交流模式(包括语言、声音和视觉信息)来解决人工智能的一些基础问题。随着对视听语音识别的初步研究,以及最近对图像和视频字幕等语言和视觉项目的研究,这一研究领域给多模态研究人员带来了一......
  • Whisper
    Whisper是OpenAI公司开源的通用的语音识别模型。它是在包含各种音频的大型数据集上训练的,是一个可以执行多语言语音识别、语音翻译和语言识别的多任务模型。它也是一个针对各种语音处理任务进行训练的Transformer序列到序列模型。Whisper执行操作的大致过程:输入的音频被分割......