Skip to content

为何会出现声音、字幕、画面不同步

在不同种类的语言互相翻译后,句子长度是会变化的,发音时长一般也是会变化的,比如从中文翻译为英文,句子长短肯定有所不同,而读出这句中文所用时长和读出这句英文所用时长,一般也是不同的。

中:有多远滚多远

英:Get out of here as far as you can!

中:滚远点

日:ここから出て行け。

原始视频中文发音用时2s,翻译为英文并配音后,时长可能是4s,这必然导致不同步。

如何让它们同步,不在意效果,只要同步

像上面所说,翻译前时长2s,翻译后时长4s,如果仅仅只需要它们能同步即可,不在乎语速快慢或视频画面快慢,可以直接让音频加速2倍,4s的时长就能缩短为2s,自然实现了同步对齐。或让视频慢放,延长原2s片段到4s,也可实现对齐。

音频加速实现对齐具体操作方式:

  1. 软件界面中选择“自动音频加速” ,取消“视频自动慢速” image.png
  2. videotrans/set.ini 中,设置audio_rate=100

image.png

即可实现同步,但弊端显而易见,语速忽快忽慢。

视频慢放实现对齐操作:

  1. 取消软件界面中的“自动音频加速”,选中自动视频慢速

image.png

  1. videotrans/set.ini中,设置为video_rate=50

image.png

这样也可实现对齐,语速保持不变,视频慢放,但同样视频变的忽快忽慢。

如果你只是想要单纯的对齐,不在意效果,可以采取这两种方式。

更好的可接受的同步方法

很显然上面的同步方式没有实用性,音频太快或视频太慢都难以接受,体验太差。为了更好的效果,可以同时启用 “自动音频加速”、“语音前后扩展”、“自动视频慢速”,这三项内容。

具体操作:

  1. 软件界面中选中“自动音频加速”、“语音前后扩展”,同时设定一个较小的总体加速值,比如 10%

image.png

  1. videotrans/set.ini中通过变量audio_rate为音频加速设置一个最大值,防止加速太快,默认是1.8,audio_rate=1.8,即最大语速加速到正常的1.8倍,你可以手动修改为2或1.5等大于1的数值。
  2. videotrans/set.ini中通过变量video_rate为视频慢速设置一个最大值,防止慢放太慢,默认是20,video_rate=20, 即慢放到正常的0.05倍。你可以改为 2或5等大于1的数值。
  3. 在上述1-3的操作后,仍然可能不对齐,因为限定了最大值,当达到最大值还未对齐,就会放弃而直接后延,那么可以继续通过将变量 remove_silence=true设为 true,变量remove_srt_silence=false改为 true,变量remove_white_ms=0设为 100 或 200,来进一步对齐。

remove_silence:涵义是去除配音的前后静音,以缩减配音时长

remove_srt_silence :是当原始字幕时长大于当前配音时长时,移除多余的静音,比如原时长5s,配音后3s,是否移除这2s静音

remove_white_ms:移除2条字幕间的静音长度ms,比如100ms,即如果两条字幕间的间隔大于100ms时,将移除100ms

上述3个变量的共同作用都是去除静音片段,缩减配音时长,以避免配音后延,尽量使配音对齐。

在进行上述1-4步操作后,效果应该会好很多,当然这也会引入新的问题,例如: remove_srt_silence=trueremove_white_ms=100 的使用,使原本的字幕静音间隔缩短,后边语音的开始时刻提前,可能导致语音已经播放了,说话人还未张嘴。

有没有完美同步方法

除了人工参与手动处理,比如精简翻译、添加过渡画面等,目前尚未找到可以程序自动化实现的完美方法。

要同时保证在很长或很短的视频中,在任意语言翻译配音中,通过程序自动化实现 “音频加速范围可接受”、“视频慢速范围可接受”、“张嘴闭嘴时刻和语音起始时刻吻合” 这几个目标,目前看来似乎是个不可能完成的任务。除了人工参与调整,并无完美方法。