【脚本】音频文本识别 【10月17日】更新

更新

10月17日:增加了专用于REAPER 7的版本
4月16日:修复了如果要检测的item过多会无响应的问题。注意这次更新不需要重新下整个包,只需要下载两个lua主体文件覆盖一下,然后下载 DSY_PaddleSpeech.py,放到 DSY_PaddleSpeech 文件夹内就可以

1月4日:增加了对英语音频的支持。优化了对识别失败时的处理方式。优化了出错信息提示

11月29日:修改了源代码里一个会导致写入日志失败的地方,现在安装版的reaper也能正常使用。另外之前的打包过于精简,在一些太干净的系统上运行会提示缺少库文件,所以重新补充了进去。请重新下载 DSY_PaddleSpeech.zip 文件,解压后把原来的 DSY_PaddleSpeech 文件夹删除再把新的放进去

10月16日:更新了打包方式,精简掉了一些无用的包,现在解压后体积1G多点。然后不需要再通过启动器运行,直接加载和运行 audio2text.lua 就可以。但仍然要保持路径不包含中文

10月11日:更新了算法,批量识别需时大幅下降。同时去掉了烦人的警告信息,只显示识别结果。模型文件也附带在里面,不再需要等待下载

简介

很久以前就有类似的需求,但自己开发是不可能的,又没找到合适的库。最近终于从百度飞桨团队的开源库中找到一个合适的PaddleSpeech库,解决了这个需求。

脚本主要做的事情是先调用PaddleSpeech对选中item进行语音识别,识别出文字以后在item位置建立一个标记并写入识别到的内容,然后配合自带的Marker manager可以从内容快速定位对应的item。应该还有其他别的用法,不过我能想到的比较通用的就是这样了

下面放一个演示视频,因为实际运行需要比较长时间,视频经过了剪接

识别出文字以后使用自带的marker manager即可快速定位文本对应的音频块
PbiotFKB2h

有个问题是这样识别出来是不带标点符号的,纯是文字。官方虽然有恢复标点符号的例子,但有点复杂,意义不是很大,当前暂不加上

相关文件

PaddleSpeech库我已经打包成可以独立运行的版本,加上一个ffmpeg一共是700多M,所以放到了百度云上。下载以后解压会得到一个 ffmpeg.exe 文件和一个 DSY_PaddleSpeech 文件夹,请把这两个都放到你的 userplugins 文件夹内,并且保持他们的名字不要改变。如果你不确定 userplugins 在哪,请在你的reaper里点击 Options菜单--Show REAPER resource path in Explorer,弹出来的窗口里找到

关于脚本,为了减少被人私下修改代码为己用这种恶心事情,这次采用了加密的形式,且不能放在带中文的路径上。脚本现在分成 zh 和 en 两个版本,分别对应识别中文和英文音频。因为原程序识别中文和英文是需要调用不同的模型文件,不能混合识别,因此脚本也需要分别做成两个版本
DSY_audio2text_zh.lua (4.5 KB)
DSY_audio2text_en.lua (4.5 KB)

10月17日更新
由于REAPER 7.0开始,其期待的lua版本从5.3更新到5.4,之前的脚本由于加密过的原因,只能用于5.3版本下的lua环境,也就是无法用于REAPER 7.0及往后版本。所以重新上传了一个适配REAPER 7的版本。如果需要在7及往后版本使用的话,请用下面的脚本来代替。注意它们也无法用在REAPER 7以前的版本,请自行根据自己的REAPER版本下载)
DSY_audio2text_zh.lua (3.2 KB)
DSY_audio2text_en.lua (3.2 KB)

4月16日的更新需要下载下面的py文件
DSY_PaddleSpeech.py (1.3 KB)

使用方法

请确保三个条件成立,否则脚本无法启动:ffmpeg.exe和DSY_PaddleSpeech文件夹必须放对位置,且至少有一个item被选中

补充

脚本运行时没有限制reaper活动,你仍然可以做别的操作,但建议最好耐心等待脚本运行完毕,不要做太骚的操作,比如把这个工程关了什么的。然后脚本是识别语音的,不要尝试让他去识别音乐,音效类的item。还有是PaddleSpeech只能处理不超过50秒的音频,所以不要用在太长的音频上,轻则出错,重则我也不知道。另外经过测试,程序不能运行在Win8以下的系统上, 程序可以运行在 Win7~Win10上,但特别提醒Win7用户,必须要安装一个编号为 KB2533623 的补丁,否则运行会出错

使用反馈

根据部分用户的反馈,主要遇到了以下这些问题:

运行后完全没有反应

这是由于放到userplugins里的内容没有按照规定的路径放置,比如多套了一层文件夹

运行后看到一个黑色窗口一闪而过

程序在运行时会在某个位置建立一个日志文件记录运行过程,就是说需要做一个写入的操作。如果用户是在安装版的REAPER上运行的话,因为安装版位于系统盘比较敏感的路径下,会遇到权限问题导致写入引起报错。假如你用管理员模式来启动REAPER后可以解决这个问题,就证实是这个原因导致。但非常不建议用管理员模式来使用reaper,会产生一些问题。最佳办法还是及早转换成便携版的REAPER,方法参考 【保姆级教程】REAPER安装版无损转换成便携版

在便携版或者管理员模式下的安装版运行也会弹出黑窗

暂时收到一个用户反馈这个问题。对照报错信息大概是CPU型号太旧不支持avx指令集导致。解决方法是下载以下两个文件

然后他们放到以下路径

\userplugins\DSY_PaddleSpeech\Lib\site-packages\paddle\fluid

再尝试运行脚本即可

Donation

毕竟用爱发电不易,如果我的脚本给你带来了便利,不妨buy me a coffee

如果有需要订制个人化的脚本,请添加以下QQ联系:86989558

我的Reapack源

可以在Reapack里添加这个地址来获取到更多我共享过的脚本

10 Likes

长知识了,原来还有 PaddleSpeech 这种东西,我一直以为好的 speech to text 要用收费服务。

之前免费的也有,但都是像网易见外这种要在线处理的,没法整合到reaper里用

对的,我之前也想过用在线服务,上传/下载/api。上传还需要特定采样率等格式,处理也分长短句,一看下来这太麻烦了 :sweat_smile:

视频看不了哦,我这里

在线播不了可以右击下载。我这也是有时无法播放

视频不支持在 QQ 本体或不那么新的浏览器上播放。

视频换成GIF了

1 Like

讲究~~:+1::+1::+1::+1::+1::+1:字数

谢谢分享~~请问一下出现这个提示之后就无反应是什么问题?reaper版本6.47,音频文件是15秒的wav文件格式

这个有点难判断,你确定那个文件夹已经完整复制进去了吗?如果是的话可能是我打包的问题,目前我只测试过win8和win10两个系统,暂时没在别的系统上试过

是win10系统


Scripts

这个有点难搞,按理说我应该已经把需要的文件都打包在里面了,但这个范畴的我不太了解,不知道里面是不是还有什么特殊情况我没遇到的

谢谢大佬!试了一段1分多的音频,没有问题发生,但字幕太长,屏幕太小显示不了全部,有莫有换行显示的可能?在标记管理器里,这段超长的标记乱码了,短的都没出错 :grinning:

谢谢回复。重新装了别的版本的reaper还是没法解决,可能确实有啥特殊未知情况吧,等以后等重装系统再看看吧~~ :joy:

太长我觉得意义不大,这个脚本主要用于通过文字定位音频位置,方便找到一个个零碎的语音,理论上看到头几个字就够了,不太需要看到完整的内容

Win11 最新版确认没问题。

想起来初次运行的时候有下载模型吗?有等待他下载完成吗?

明白了!多谢大佬!

初次运行脚本就没有下载模型那个界面出现,就是等待一会儿直接就是我贴图第一张的类似你们运行脚本那一步了,然后关闭运行窗口了 :smiling_face_with_tear: