最近有个需求,需要提取视频中的文字稿。试了几种方案,各有千秋,也各有各的问题。

字节语音识别

字节的 CapCut(剪映国际版字幕功能)、飞书(妙记功能),都有免费的语音识别,效果很一般。

在语速较快、普通话不标准的时候,会错得很离谱,对配音本身有要求高。

不过,这个方案可以作为起手方案,因为速度快、又免费,试试也无妨,效果不行再尝试其他方案。

硬字幕提取

视频本身就有字幕,所以可以直接靠文字识别来提取,我用的是 video-subtitle-extractor

效果还可以,但是背景不能有其他文字。对框选区域也比较严格,框小了容易漏很多句子,框大了容易识别错乱,而且会慢很多。

识别后,将字幕去掉时间轴、修改因背景问题识别错误的部分,然后交给 AI 加上标点。

Whisper

OpenAI 的方案,实测比字节好很多,但是 官方 Demo 不带标点。理论上提供带标点的 init_prompt 可以解决,问题是 Demo 好像没法提供这个参数。

所以说,就变成了要么自己搭一个环境本地跑,要么把不带标点的文稿交给 AI 加标点。

自己搭的话,我测试了一个带标点的中文微调,Belle-whisper-large-v3-zh-punct,直接在 Colab 上提取。遇到的问题是数字都会变成中文,比如出现“iPhone十五”“二百五十六G”这样的情况。

我没找到特别好的解决办法,最终是把稿子丢给 Gemini Pro 改成合适的阿拉伯数字。

另外,我使用了两个 prompt。第一个让 AI 尝试修复原文可能的识别错误,第二个让 AI 对有疑问的句子不要改动。将两组输出交给 WinMerge 比对,可以快速找到识别不太对劲的地方(如果音频普通话不好的话,差别还是挺多的)。

总结

没什么特别好的方案,都有问题。