再谈翻译配音后的声音、画面、字幕同步

视频翻译配音后的同步问题,一直是难点,原因就在于翻译为不同语言后,句子长度、发音用时通常都是不同的,原发音用时三秒,翻译为另一种语言并配音后,用时可能是5秒或者2秒。如果时长降低那还比较好处理,直接静音补白就好了。

难就难在时间变长了,原本3秒,配音后变成了5秒,多出的2秒怎么办?

最容易想到的方法就是加速呗,5秒强制加速到3秒说完,加速 1.67 倍,看起来似乎不错啊,可惜有时加速1.67倍 但有时可能要加速 3.67倍甚至更大 ,而有时不加速,声音变的忽快忽慢,快的时候啥也听不清,体验不好。

那视频慢放呢?也面临同样问题,慢的时候就成了慢动作。而且视频慢速处理起来非常慢,也容易出错。

那有没有完美办法呢?有自然是有,比如手动剪辑、精简翻译、添加补间画面、过渡动画、调节时间轴等,但效率太低。

自动化处理还有什么办法?

我们都知道,视频中说话声都是有停顿的,每句话之间前后都有空白静音段,那么在这里能不能做些文章呢?

对于翻译配音后很可能时长会变长的语言,事先设定一个较小的整体加速值,比如10%,尽量减小时长变化。

然后对配音移除末尾的静音,降低配音时长,之后再次判断配音新的时长。

如果发现配音时长还是大于原时长,再看看和下一句话之间有没有静音片段,有的话可以给配音使用,缩短这个静音片段,如果没有,继续往前看有没有可以利用的静音片段。

接着继续对声音加速,但不无限加速,设定一个最大值比如2.5,即最大加速到2.5倍,如果时长还是超过原时长,则顺延增加总时长,后边的时间依次后推。这必然导致画面在前而声音在后。

为减小影响,可以减小每个说话间也就是每条字幕之间的静音片段,例如原本1秒的静音片段,可以缩短到0.8秒,这样就又相应将画面提前了,抵消一些之前后推的影响

同时如果遇到原时长大于配音时长的,比如原时长3秒,配音后2秒,就多出了一秒空白,此时可将空白移除。更进一步降低后推影响。

通过设置 整体语速加速值、配音往前后延展、移除配音尾部静音(remove_silence)、原字幕时长大于配音时移除静音(remove_srt_silence)、缩小字幕之间存在的静音片段(remove_white_silence)、设定加速最大值(audio_rate)。共2个选项 4个变量,通过不同组合和不同数值变化统筹控制时长,尽量实现较合理也简单的同步效果。

这4个变量可在 videotrans/set.ini 文件中修改,至于多少合适,要视具体翻译前后语言不同 说话人语速不同 而不同,根据经验和不断尝试,找出最佳效果。

当然这个实现方式也不是很理想,比如有可能造成话已说完,人才开始张嘴,即声音提前了,但既简单容易实现,容易程序批量控制,又能效果完美的方法,目前还没有思绪,如果你有好的想法,欢迎留言。

相关推荐
垆边人似月.37 分钟前
Python中如何使用get函数实现频次查询
服务器·前端·python
SelectDB技术团队40 分钟前
Snowflake 的开源替代怎么选:能力对照、三条部署路径与迁移执行
大数据·数据库·云原生·开源·snowflake·apache doris
AI 编程助手GPT1 小时前
GPT 脚本别只发一个文件:用 uv 把依赖和锁一起交付
人工智能·python·gpt·uv·依赖管理
wflynn1 小时前
GitHub 日榜趋势速报 | 2026-10-21
开源·github
Patrick在香港1 小时前
第 16,216 次连接之后,它不干了
python·网络编程·socket·tcp·连接池
我命由我123451 小时前
Python 开发 - Python 虚拟环境
运维·开发语言·后端·python·http·https·java-ee
云和数据.ChenGuang2 小时前
LLM大模型对接本地Ollama部署模型
开发语言·人工智能·python·langchain
云和数据.ChenGuang2 小时前
光哥说Python 循环导入(Circular Import)深度解析:成因、排查与解决方案
开发语言·前端·人工智能·python·langchain
葫三生2 小时前
关于三生原理系列被技术开发社区批量收录或引发策展边界讨论的一种思考
大数据·人工智能·深度学习·算法·机器学习·数据挖掘·开源
TomEval3 小时前
【测AI】第16篇:模型公平性与可解释性测试 — AI 的偏见与黑箱
人工智能·python·功能测试·ai·测试用例