分享

做字幕还在人工打时间轴吗?试试开源免费AI打轴

 参考资料2010 2022-05-26 发布于浙江
日常2022-05-24 19:43 

        如果你有很多老旧的生肉,找不到匹配的字幕,或者你手上的字幕时间轴原来是匹配阉割版、HDTV台标版、带广告录屏ts版或者WEBDL视频版,后来官方出了蓝光版、加长版、上下集二合一版,要重新洗版,原来的时间轴不能匹配现在的视频,用旧的时间轴在新视频播放一下子提前,一下子延后,或者连官方的字幕都是不对的,我就见过官方字幕少了几句话的,在网上又找不到新的字幕匹配,那只能重新打时间轴,匹配现在的视频。

        首先要做一些准备工作,如果你的视频是5.1音轨的,先把纯人声的音轨提取出来,网上有很多软件可以做到。如果你的视频是2.0立体声音轨,可以先用xmedia recode直接把音频复制出来,再用专门的人声分离软件提取出来,比如spleeter gui和izotope。网上有命令行打包做成的spleeter,大小不到100M,搜一下就有了,用鼠标直接把音频拖到exe文件就行了,比gui简单好用,如果某些复杂编码的he-aac、ogg vorbis、opus分离人声失败,就先把音频用xmedia recode转换成相同码率的mp3或者ac3再分离,肯定可以,这种分离人声的音频识别效果会比5.1音轨分离出来的纯人声音轨有一点点差别,也不会差很多,毕竟分离2.0音轨不像5.1音轨的纯人声音轨那样百分百纯净无杂音。

        然后要下载这个subtitle edit绿色版,以下简称SE,版本号是3.6.5,以前的版本没有这个功能,需要Windows安装.Net4.7.2以上的版本。这个绿色版不是官网那个,已经自带语音识别插件,如果使用官方exe版安装的同学请自备梯子下载语音识别插件。FFmpeg和MPV自己上网下载最新版就行了,装好以后自己在SE软件的选项里面设置一下波形图、播放器路径,我已经把mpv-1.dll打包好放在绿色版里面了,解压以后在option那里选择language中文就行了。这个软件虽然说也支持VLC,但是用VLC做字幕预览视频左边右边下面留了很多黑边,不太好看。

https://pan./s/b576bfae87d8

        点击视频→点击打开视频文件,下拉菜单选择所有文件,注意尽量选择音频文件识别。如果直接选择视频识别要花三四倍时间,直接使用音频识别就可以了。点击视频/音频到文本。然后选择模型,软件会自动下载最小的模型。如果需要更大的模型或者其他语言的模型,请自行去VOSK的官网选择下载。网络不好的同学可以先用SE下载一个中文模型,知道软件把模型放在什么路径,然后去VOSK的官网下载更大更新的模型,解压到SE主程序的目录下面的VOSK文件夹就行了,最后点击生成就可以等识别结果了。识别音频的时间要比识别视频的时间快很多,所以建议先把音频提取出来再识别,识别速度跟你的电脑硬件有关,我的笔记本识别音频的时间基本上是视频时间长度的40%左右。

       之后还要进一步处理时间轴,先点击工具→合并短行,点击每行字符数。因为我使用的是方正粗等线gb18030,一个字体自带中日韩英字体,这个字体在电视机上面看srt字幕比较接近东森洋片台,也不用另外改成ass字幕横向缩到95%纵向拉到105%,更不会像思源更纱梦源字体那样在电视机用MX Player播放srt字幕位置明显上移、bold字重不能被某些播放器识别。方正粗等线gb18030做出来的双语字幕,具体设置方法放这里了

        我设置的方法是在不超出电影黑边的基础上尽量把中英文双语的字体调整到最大,不会像FRDS那样中文很大英文又斜体,每一行字幕的中文最多是28个字符,英文数量最多显示85个,换成16:9或者2:1视频直接调整纵边距就行了,字体大小不用重新调整。如果是选择其他字体,比如楷体什么的,字间距就会明显变宽,中英文最多字符数量就比前面的28、85要少,需要自己去调整。两行间最多毫秒数建议修改成500毫秒,默认勾选“仅合并连续行“的意思是,时间轴少于半秒的、没有任何标点符号的相邻字幕都会被合并,如果出现标点符号就算少于500毫秒也不会合并字幕;如果去掉这个勾选,那就算出现标点符号,只要符合少于500毫秒间隔的相邻字幕全部都会被合并。合并之后有些行可能超过了85个字符,需要重新调整。点击工具→点击分割长行,英文填写85,中文填写28,我这里的例子是准备用来做双语字幕的纯英文字幕,所以单行长度和总行长度都是填85,双语字幕自己找插件导出单独的纯中文和纯英文再调整合并就行了,有换行符的自己检查一下用全选替换功能替换成一个英文空格或者一个汉字空格,最后点击确定保存字幕就行了。

        语音识别毕竟是机翻,有可能听出来的是错的,需要人工检查,也可以到官网下载更大的模型,能识别出一些人名和地名,理论上模型数据越多,识别越准确。开源的模型毕竟比不上商业的模型,比如please识别成police,son识别成了sun,help识别成了health,us我们识别成了US美国,上面这些错误就算是在网易见外或者剪映我都见过。剪映只能识别日常对话,你用个医疗剧、法律剧或者科幻剧这些专业名词很多的剧,剪映是识别成其他的文字的,网易见外因为模型多,所以情况会好一些。网易见外识别出来的字幕时间长度有时候太长,有可能是十几秒甚至几十秒,但是都有智能标点符号。剪映识别出来的字幕,网上有很多软件可以直接导出srt,但是全部没有标点符号,一条字幕换了几个人说话,中间一个标点符号都没有,如果片尾静音时间超过几十秒剪映就不识别了,直接结束。Vosk的情况在这两者之间,智能标点符号完全看软件心情,有时候有标点,有时候没有,而且标点全部是句号。以上全部软件都不能分清这句话是视频里面哪个人说的、根据说话的人进行断句,据我所知,目前没有一个软件可以做到这么精确的语音角色识别,所以同时有几个人吵架或者辩论的语音,不支持用这种方法打时间轴,所以需要人工检查。就算是专业的字幕组听译,我也见过有一些字幕组把he听成了she、is听成了was、eternal听成了internal,这个没什么奇怪的,语音翻译只是把他的模型里面最接近音频发音的文字给识别出来,只能做到尽量准确,如果语速太快,一秒钟说了四五个单词,或者很多专门的人名或者地名、医疗法律科幻专业名词,模型里面没有匹配到这个词,就会找发音最接近的单词代替,其他粤语,日语,韩语模型请大家自行测试。如果一个音频有很多个语种,比如杨紫琼最新的电影《瞬息全宇宙》,英文夹带有各种不标准的普通话,粤语,建议使用立体声混音在SE里面调用百度语音输入法语音识别自动输入,可以支持粤语和英文混合语音输入,其他搜狗讯飞平台没试过,请大家自行测试,不过这种识别方法比视频时间长度还要多两三倍时间,也要人工检查,而且现在很多笔记本都被阉割立体声混音了,你有那个时间去搞混合语音输入还不如直接人工检查输入字幕。

        最后就是调整时间轴了,SE是根据FFmpeg打轴的,所以字幕显示时间是完全匹配波形图,人工打轴都没这么准确,毕竟这种体力活人类是比不上机器的。但是人眼观看字幕需要一个缓冲时间。有些字幕组的做法是在字幕结束时间之后延长100毫秒~200毫秒,但是不会修改下一句字幕的开始时间,如果间隔时间少于100毫秒~200毫秒,直接把上一句的结束时间改成下一句的开始时间。这种方法看个人喜好,不过如果碰上语速太快的情况,还是有可能没看完这条字幕就显示下一条字幕了,就算你把两条字幕合并在一起,时间间隔是0了,字幕还是按照原来的时间开始和结束。我推荐的是一些蓝光视频的官方字幕和港台影视频道采用的方法,同时提前100毫秒和延迟100毫秒,使用Aegisub点击计时→时间后续处理器调整时间轴,开始时间和结束的时间里面填写100毫秒就可以了,如果上下两条字幕间隔时间少于100毫秒,下一句的开始时间就会改成上一句的结束时间,这样就算语速太快。也能完整的看完字幕。

        以上就是AI打轴的方法。你学会了吗?

        PS:说一下SE的小技巧,可以在同步里面调整ass字幕的帧率,还可以导入sup图形字幕简单修改时间轴、添加和删除某一条字幕的图片,还可以把srt字幕导出成为sup字幕,用鼠标右键修改srt字幕的粗体、斜体、下划线、颜色、字体、an8排列就行了,ass双语双色字幕可以先在编码方式UTF8旁边的格式那里转换成带有html格式的srt字幕再导出sup就行了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多