将2个语言字幕合并成一个双语字幕的方法或翻译英文字幕
1# 翻译字幕文件
下载视频对应的srt英文字幕后,将其保存成.txt文件,然后载入google翻译进行翻译。但是google翻译文件有个问题,如果文件太长,比如有成百上千行,google后面大部分没有翻译,只有前几个部分翻译。所以取代的办法是:将字幕内容做成网页内容,然后通过google翻译网页的形式能翻译整个网页即可。然后将翻译好的中文复制下来,放进本地的新建的一个srt文件,比如mov.chs.srt2# 将mov.chs.srt文件中翻译出来的全角标点符号转换为半角
有冒号和箭头是全角的形式,不合英文字幕中的半角一致。然后查看mov.chs.srt文件开头是不是有多余的东西,或空格之类的,删掉。
3#合并差异:
打开终端,到对应字幕文件夹
diff mov.chs.srt mov.eng.srt -D diff > mov.ec.srt
-D 参数是合并差异,后面diff为自行添加的差异标识(文字描述,你怎么写都可以),是必须的。
4# #ifdef 及 #endif 开头的注释句标识
OK,现在我们生成了一个合并好的字幕,但中间凡是差异合并的地方都有以 #ifdef 及 #endif 开头的注释句标识,剩下的工作只要把这样的句子去掉就大功告成了。再用一条命令把它搞定:
cat mov.ec.srt |grep -v '^\#.*' > mov.srt
这句比在vim中用正则还要方便点,当然这也是用的正则,重点在 -v 这个参数,help 中有说:
-v, --invert-match select non-matching lines
即选择不匹配的行,正是我们想要的。单引号中是正则表达式匹配以#开头的行。
如果很不幸,你下载的中英文字幕的时间轴差别很大,这时按照上一篇的方法制作出来的双语字幕就会出现紊乱。其实这个问题还是可以解决的。以射手网的 srt 字幕为例,每一句字幕由三部分组成:序号、时间轴、字幕文字。由于没有搜到 srt 标准比较官方的资料,只发现对于 srt 字幕来说,时间轴和字幕文字是必须的,也就是说,序号可有可无。那对于时间轴差别很大的两个字幕文件来说,只要按时间顺序将其合并,上面提到的问题就迎刃而解了。

Comments
Post a Comment