离线字幕提取,基于 Whisper 封装了一个小工具,支持 GPU

2023-03-29 08:57:43 +08:00
 rerender

制作了这样一个 Windows 上的小工具,用于提取字幕。

生成的字幕还可以离线英文翻译为中文:

4974 次点击
所在节点    分享创造
22 条回复
Greenm
2023-03-29 09:09:08 +08:00
楼主的我没用过,但是同样有一个 windows 上基于 whisper 的竞品: https://github.com/chidiwilliams/buzz
Greenm
2023-03-29 09:10:10 +08:00
@Greenm 说错了,buzz 是 mac ,windows ,Linux 都支持。
renmu
2023-03-29 09:47:51 +08:00
提点可能能做出差异化的东西。
其实你可以支持点别的东西,比如 whisperx ,faster-whisper ,以及一些超参数,反正你是用 Python 起得服务器来实现调用的,应该不会太麻烦。
whisper 对长音频解析的时候会经常出现多句重复的情况,可以做些简单处理。
也可以支持转成 ass 。
不同的音频可能参数会不一样,还可以支持什么参数配置加载。

ps:whisper 好像对唱歌音频效果不太好,有知道大佬吗
wudicgi
2023-03-29 09:54:01 +08:00
赞~~~

我是半个多月前刚了解到的这个 Whisper, 还打算结合以前做过的 SpleeterMsvcExe 项目做个自动生成歌词的工具
Whisper 识别出来的字幕,时间戳对齐的不太好,虽然现在有 word aligned 参数,但加上这个参数后识别效果不如不加时的
结合 Spleeter 对音频文件先分离出 vocals 轨,再按语音强弱把字幕给对齐一下应该就有不错的效果了
learner
2023-03-29 09:55:15 +08:00
"whisper 对长音频解析的时候会经常出现多句重复的情况" 这个我也遇到了,大佬有什么解决办法吗?
learner
2023-03-29 09:55:50 +08:00
@wudicgi " whisper 对长音频解析的时候会经常出现多句重复的情况" 这个我也遇到了,大佬有什么解决办法吗?
wudicgi
2023-03-29 09:57:25 +08:00
另外有一个 whisper.cpp 的项目,可以免除 Python 环境
https://github.com/ggerganov/whisper.cpp

缺点是不支持 GPU, 启用 word aligned 参数时比官方原版的效果要差很多
learner
2023-03-29 09:57:27 +08:00
@renmu " whisper 对长音频解析的时候会经常出现多句重复的情况" 这个我也遇到了,大佬有什么解决办法吗?( V2EX 的回复功能不太会用……
wudicgi
2023-03-29 09:59:10 +08:00
@learner 这个从我用过几次的经验来看,换大一些的模型这种现象出现的会少一些
比如用 medium 模型,和 small, tiny 相比就不容易出这个问题

其他的因为还没具体去看它是如何对音频进行切片处理的,还不太清楚问题根源
renmu
2023-03-29 09:59:48 +08:00
简单粗暴的方法就是对解析后的 srt 再做个处理,如果前后两句重复,那么直接把后一句删了。
learner
2023-03-29 10:10:54 +08:00
@wudicgi 我用了 large 的模型也会出现,我这边试了 1 小时以上的音频基本上是必现的。。。
learner
2023-03-29 10:11:55 +08:00
@renmu 这样中间字幕会缺很多,一小时的视频,可能中间有十分钟都没字幕了
renmu
2023-03-29 10:16:06 +08:00
@learner 我这边的情况是在一般只有在没人说话的时候才会不断重复上一句。
你可以试试 whisperx ,好像情况会好一些,具体我没测试过
tool2d
2023-03-29 10:47:07 +08:00
@wudicgi 我也在用 whisper.cpp 这个,感觉很方便。

可惜识别的是繁体,中文多音字也不少,还要手动校验一次,和英语音译体验不好比。如果中文校验能自动化就好了。
iX8NEGGn
2023-03-29 13:31:41 +08:00
“生成的字幕还可以离线英文翻译为中文”,这也是 whisper 做的吗?我记得它只支持其他语言翻译成英文
koast
2023-03-29 14:33:22 +08:00
@tool2d 繁体的问题可以通过 initial_prompt 来解决,大致是用简体中文给指示就好,在 whisper 的 issue 里有人提到过,效果挺好的
kernelpanic
2023-03-29 14:47:40 +08:00
真复杂,又是 server 又是 npm 的,直接用这个不香吗,https://github.com/Const-me/Whisper ,不用安装,只有几百 kb 大小,再下载个模型 https://huggingface.co/ggerganov/whisper.cpp/tree/main ,直接用,还支持 GPU 加速
rerender
2023-03-29 21:51:27 +08:00
@iX8NEGGn whisper 那个是语音翻译,这里是指使用 whisper 生成字幕后,对字幕翻译,是另一个工具了,将英文文本的 srt 文件,翻译为中文文本的 srt 文件
hanguofu
2023-03-30 06:35:17 +08:00
请问 识别普通话的时候 ,WER 错误率很高吗 ?
rerender
2023-03-30 08:53:00 +08:00
@hanguofu whisper 官方有给一个表,中文是 14.7 ,英文是 4.2 。链接: https://github.com/openai/whisper

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/928031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX