制作视频外挂字幕

本文最后更新于:2022年4月18日 下午

制作视频外挂字幕

不知道有多少小伙伴有和我一样看网上视频课程喜欢下载下来(爬下来)看?这样视频倍速播放较为自由,还可以做音频处理、自己加字幕等等操作,让学习过程更为愉快。本文主要探讨加字幕过程。

1.方案调研

视频加上了外挂字幕后,字幕形式可以随意调整成自己喜欢的样式,英文课程也可以使用机翻。对于课程加速后不容易听清的问题,加字幕也是一个很有效的辅助。但是如何制作字幕却是一个问题。我探索了一下github,看起来没什么很成熟可以拿来直接用的神经网络,网上也搜不到成熟的商业软件可以一站式解决这个需求。目前据我所知所有可行的方案有:

  • Windows系统中使用华为电脑管家的智能字幕功能。不能自定义格式,可以中英翻译,略有滞后,准确性一般。
  • 使用云服务商的实时语音转文本接口。大部分云服务商都提供完全免费的或数千小时免费的实时语音转文本服务。需要自己写程序和接口交互,需要自己处理分词间隔等问题,较麻烦,准确率一般,略有滞后,不支持翻译。
  • 苹果App Store中由Hangzhou Duoziwei Technology Co.Ltd开发的软件YPlayerBeMyEars软件。两个软件使用同一套引擎,前者是一个能实时显示多语言AI字幕的简陋播放器,支持文本导出(不是字幕导出。导出的文本没有时间戳),性能很差导出长视频字幕时会内存溢出卡死;后者是一个将麦克风音频实时识别字幕显示在屏幕上的纯实时字幕软件,性能同样很差,不支持导出,支持多语言识别。想要使用BeMyEars识别正在播放视频的字幕必须使用第三方Mac音频流控制软件如 BlackHole 等将电脑扬声器重定向到电脑麦克风。
  • 网易见外平台。一个免费的字幕制作平台,支持上传视频或者音频自动生成中英文srt字幕,但每天总时长不能超过两个小时。支持字幕中英机翻,不限量。
  • 剪映。字节跳动旗下的一款视频制作软件,有AI生成字幕功能,不限量,但字幕不能导出。

截至本文上传日期,剪映仍然通过将音频分离出来上传到服务器再由服务器发回字幕的方式生成字幕,同时字幕在本地是实时缓存在文件中的,也就是说可以通过抓包或者读取本地项目缓存文件的方式获得字幕,然后解析其格式化文本生成srt字幕即可。获得srt字幕后可以在网易见外平台上翻译也可以在播放器中自定义喜欢的格式(比如我个人比较喜欢老莱视频中那样白字蓝边灰底的样式)。

image-20220404011306278

2.解析字幕

抓包比较麻烦,但得到的单个json文件字幕内容和时间戳在一起,比较容易处理;分析本地文件则比较复杂,因为剪映将字幕的内容和时间戳分开保存,需要一一配对生成字幕。下面演示分析本地文件生成字幕的方法。

使用剪映生成字幕很简单,这里略过。字幕生成成功后,通过这个我制作的转换网页,本地打开下载下来的html文件即可,按照网页中指示找到你使用的剪映版本项目缓存文件所在目录。里面众多json文件中会有一个体积明显比较大,就是它。

打开网页,调整设置。网页完全根据我自己的电脑分辨率适配,如果你的电脑上输入框溢出看不到右边的按钮,可以修改网页源代码40行和111行,修改其中的行列数值。

如果想要生成适合Linux中使用的字幕文件,换行符选择\n,其他系统中选择\r\n。这一设置影响不大,一般的播放器都能识别。按照你使用的剪映版本调整时间单位,电脑版选微秒,安卓版选毫秒。错误的设置生成的字幕会无法使用。网页提供了一个示例来测试你的设备是否能使用它。点击“生成srt”按钮,下方会生成字幕,有一个下载字幕的按钮可以调用浏览器下载功能将文件保存到本地。测试完成后点击“清空”按钮清空输入框内容

image-20220404014103436

使用文本编辑器打开那个剪映项目缓存文件,将其中全部内容复制出来(ctrl+A,ctrl+C),粘贴到网页输入框中。由于文件通常很大,这个过程可能很卡,要卡半天。冷静、理智、稳重,慢慢等。复制完成后点击“生成srt”按钮,很快就会生成字幕。在下方生成的字幕旁边有下载字幕的按钮,点击下载即可。

接下来,enjoy your watching!

Json向Srt转换网页

转换网页


本博客所有文章除特别声明外均为原创,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!