当前位置:首页|资讯|OpenAI|Whisper

命令行批量处理OpenAI Whisper语音识别

作者:山风入谷发布时间:2023-08-17

通过批处理脚本.bat实现音视频文件的批量语音识别_(:3」∠)_

功能如下

  • 输入命令行(也可使用预设:令第一个字符为12

  • 使用通配符来选取文件

  • 统计文件数量及类型

  • 文件自动分组(避免命令行超出8191个字符的限制)

  • 运行时间统计(24小时以内,如超出则自行计算天数即可)

OpenAI Whisper运行结果
Whisper-CTranslate2运行结果

上面第二张图片是Whisper-CTranslate2的运行结果,它基于Faster-Whisper项目,与旧OpenAI Whisper命令行兼容。在保证精度的同时,占用内存更少,运行速度更快,且支持用彩色显示单词置信度,非常推荐哦。仓库:https://github.com/Softcatala/whisper-ctranslate2

脚本使用方面,复制代码到文本文档,改后缀为.bat,将其与待处理文件放在同一个目录下,直接运行就可以了

如果嫌要把.bat文件移来移去太麻烦的话,可以把它放在一个固定的位置,比如D:\cmd_AutoRun\Process.bat,然后在cmd中用doskey命令给调用.bat的命令(call)设置一个别名,比如

这样就可以在cmd中输入“wbat”来直接调用脚本文件了,但是这个命令只对当前窗口有效。如果要每次打开cmd都可以使用别名的话,需要修改注册表,具体请搜索“cmd命令别名”
修改成功之后,在文件目录shift+右键,“在此处打开命令窗口”,再输入定义的别名可以调用了。当然,在资源管理器的地址栏输入“cmd”也是同样的效果

Process.bat

一些关于脚本的说明

1.输入命令行

可以直接输入Whisper命令,并用%i来代替文件名,例如

也准备了两种预设,方法是使第一个输入的字符为1或2,脚本会将1或2替换为对应的不完整命令,所以后面还需要补充参数。如“1medium”、“2small -f txt”等等

2.通配符

*表示任意数量的字符,?表示单个字符

*.wav表示所有的wav文件,??x.ogg表示所有结尾为x的三字符ogg文件

要选取多种文件,只需将表达式用半角逗号空格隔开。如*.ogg,*.mp4 *.flac

如果当前目录下全部文件都需要处理,只要输入一个*就可以了

更详细的cmd通配符用法请搜索“cmd通配符”

3.临时文件

脚本在运行过程中会创建名为“process_output.txt的文件来存放信息,并在运行完成后删除

如果当前目录下正好有同名文件,请一定一定要将其转移或备份,否则会被删掉的哦

4.脚本思路

核心思路来源于OpenAI Whisper官网的这句示例

一条whisper命令可以输入多个文件名,只要把他们用空格隔开就好了。脚本所做的事情其实就是将这些文件名整合到形式变量%i中。并且考虑到命令行有8191个字符限制,所以要将过多的文件分组。

看似比较繁琐,不如用for循环遍历所有文件,然后每个文件执行一次命令来得方便
但是经过测试,多文件合并输出的方法相较单文件,处理的速度要快上不少。尤其是在大模型、多个小文件的情况下。推测是每次执行命令就会加载一次模型,而后者将太多时间花在模型的加载上,所以速度较慢。

下面是验证过程

OpenAI Whisper,5样本,medium模型处理结果,时间比1.6344
OpenAI Whisper,5样本,large-v2模型处理结果,时间比1.6768
Whisper-CTranslate2,5样本,large-v2模型处理结果,时间比3.6985

可以看出,在large-v2模型,5个短音频(galgame角色语音)的条件下
OpenAI Whisper合并输出能节省40%左右的时间
Whisper-CTranslate2合并输出甚至能节省73%左右的时间

当然,如果处理长音频,并且样本数量比较少的话,两者的差距并不会有上面这样显著。但无论如何,合并输出的速度都是比单独输出要快的


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1