视频翻译配音声音、画面、字幕 同步对齐问题

大家都知道,不同语言即使对于同一句话,发音时长也是不同的,比如一句话用中文2s就能说完,但翻译为英语后,句子可能变的很长,需要3s或更多时间才能讲完。如下面的例子,中文读完用时2.3s,而翻译为英文配音后读完需要3.8s(来自deepl.com)。

例子:

中文:用时 2.300 秒

00:00:13,530 --> 00:00:15,830

本期我们介绍电磁阀的功用原理

英文:用时 3.800 秒

"In this issue, we introduce the functional principle of electromagnetic valves."

这种情况就导致在对视频进行字幕翻译并配音后,新视频的时长同原视频的时长不相等,从而造成 "画面、声音、字幕" 无法对齐。

如何解决该问题呢,一种思路是尽量精简译文,保持翻译短小精悍,但除非人工翻译,机器翻译几乎无法做到这一点,因此忽略这种方法。

另外有2种比较容易实现的思路,也是目前我所采用的。

一是强制配音加快语速:

在原时长内必须说完,看上面的例子,英文配音后,正常语速需要 3.8秒,为了让它在 2.3秒 内讲完,需将语速提升为原语速的 1.65 倍,从而实现了 声音、画面、字幕对齐。

但很显然,这种方式必然导致语速时快时慢,而且有时太快,压根听不清说的什么,体验很不好。

二是强制视频慢放延长画面:

以配音后时长为准,将原时长内的视频片段慢速播放,将时长延长到配音时长。

还是看上面例子,原用时 2.3秒,配音时长3.8秒,将原视频里 00:00:13,530 --> 00:00:15,830 这2.3秒时间段内的视频片段截取出来,然后通过 ffmpeg 滤镜 setpts 将视频延长 1.65倍,时长就变为了 3.8秒,这样就和配音时长一致了,从而实现了对齐,而配音并不需要加快语速。

这种方法避免了语速的时快时慢,但很显然又带来了另一个问题:画面变的时快时慢,有时候慢的像是在进行慢动作回放,体验同样不好。

如果同时结合上面两点是否可行呢,自然是可以的。

还是看上面示例,同时采用 "配音加速" 和 "视频慢放" ,将配音语速加快 0.825 倍,即原本 1.65 的一半,同样将视频延长 0.825倍,这样可将影响降到最低,保证了语速不至于太快,同时视频不至于太慢。

感觉仍不完美,还有没有其他办法呢

若是采用人工调整,无论是精简翻译,还是调整配音语速或者视频抽插帧,方法都很多,但效率太低,我想要的是程序自动化实现。

目前想到了另一种思路,即在配音延长后,先检测原视频中,对应每条字幕结尾到下一条字幕开始之前是否存在静音区间,如果有,那就延长本条字幕结尾时间,直到达到配音时长,或者达到了下一条字幕开始时间。

看前文例子,原中文这条字幕:00:00:13,530 --> 00:00:15,830,时长只有2.3s,距离正常播放完毕3.8s的英文配音还差1.5s,此时检测下一条字幕和本条字幕结束时间 00:00:15,830 之间是否存静音时段,这里假如下一条字幕开始时间是 00:00:17,830 ,显然存在2s的区间,那么配音就无需加速,只需要将本条字幕显示结尾时长延长1.5s就可以了。

这是比较顺利的情况,如果后边没有间隔,或者间隔不足 1.5s 怎么办,此时再检测距离同上一条字幕结束是否存在静音片段,如果有,那么就将本条字幕开始时间往前移动,直到延长1.5s或者达到上条字幕结束时间。

但更多见的情况是,前后都移动了仍然无法正常语速播放完毕怎么办呢?

那就强制语音加速,为避免加速太多导致无法听清,设置一个最大加速倍数如1.5倍,超出就不再加速。

那不还是不同步吗?

别忘了还可以继续视频慢速,到了这一步,只能强制视频慢放,直到全部对齐。

这是目前的思路,不完美,但相比其他方法,应该效果要好很多,不过暂时还未实现,仍停留在思考阶段。

相关推荐
关键帧Keyframe5 天前
iOS 不用 libyuv 也能高效实现 RGB/YUV 数据转换丨音视频工业实战
音视频开发·视频编码·客户端
关键帧Keyframe6 天前
音视频面试题集锦第 7 期
音视频开发·视频编码·客户端
关键帧Keyframe6 天前
音视频面试题集锦第 8 期
ios·音视频开发·客户端
蚝油菜花11 天前
MimicTalk:字节跳动和浙江大学联合推出 15 分钟生成 3D 说话人脸视频的生成模型
人工智能·开源·音视频开发
音视频牛哥13 天前
Android平台RTSP|RTMP播放器高效率如何回调YUV或RGB数据?
音视频开发·视频编码·直播
<Sunny>16 天前
MPP音视频总结
音视频开发·1024程序员节·海思mpp
GoFly开发者16 天前
GoFly快速开发框架已集成了RTSP流媒体服务器(直播、录播)代码插件-开发者集成流媒体服务器更加方便
go·音视频开发
音视频牛哥1 个月前
如何设计开发RTSP直播播放器?
音视频开发·视频编码·直播
dvlinker1 个月前
【音视频开发】使用支持硬件加速的D3D11绘图遇到的绘图失败与绘图崩溃问题的记录与总结
音视频开发·c/c++·视频播放·d3d11·d3d11绘图模式
音视频牛哥1 个月前
Android平台GB28181实时回传流程和技术实现
音视频开发·视频编码·直播