视频翻译配音中几个高频问题解析与应对

去年搞了个开源项目 " 视频翻译配音 github.com/jianchang51... ",使用中接收到不少用户反馈,一些高频出现的常见问题,专门发文解释下。

声音、画面、字幕不同步

首先解释原因:

不同语言相互翻译后,字符长度数量是不同的,发音也是不同的,因此翻译前后的配音必然是有时长差异的,比如原中文配音是2秒,翻译为英文后配音可能是3s,定然导致声音、画面、字幕不同步。

如何尽量保持同步:

在使用时,设置一个较小的配音整体速度,比如10%,使配音速度整体略有提高,以尽量降低时长变长。

再同时选中 "配音自动加速"、"视频自动慢速"、"语音前后延展",这样将把不同步影响降到最低,甚至达到同步效果。

实现原理查看 视频翻译配音声音、画面、字幕 同步对齐问题

如果你不在乎同步问题,只想尽量不延长视频,即便导致一点不同步,那么这3个选项全部都不要选中。

整体识别、预先分割、均等分割的区别

整体识别:

这是语音识别效果最好的,也是最消耗计算机资源的,如果视频比较大,又使用了 large-v3 模型,可能导致闪退。

在识别时,将整个语音文件传递给模型, 由模型内部使用 VAD 进行切分识别和断句,默认静音分割 200ms,最大语句长度3s,可通过 videotrans/set.ini 中,如下图参数进行微调

预先分割:

原理和实现同整体分割类似,主要区别就是为了防止视频过大模型也过大时,计算机资源不足,会在传递给模型前,提前按60s切割为小片段。静音分割同样是200ms,最大语句是3s,也是通过 videotrans/set.ini 上图参数进行调节

均等分割:

顾名思义,这是按照固定长度,将语音文件切割为同样长度,再传递给模型,同时 OpenAI 模型下会强制使用均等分割,即在使用OpenAI模型时,不管你选择的是"整体识别"还是"预先分割",都会强制使用"均等分割"。

均等分割每个片段是10s,静音分割语句间隔是500ms,可通过 videotrans/set.ini 中下图参数调整

注意:设定了10s,每个字幕大体上都是10s时长,但并非每个配音长度一定是10s,发音时长以及会移除配音末尾的静音。

字幕字体大小如何设置

软字幕不可调节大小,由播放器控制。硬字幕可通过修改 videotrans/set.ini 中 fontsize=14 大小来调整,默认是14

控制字幕一行文字个数

默认情况下,中日韩文字一行30个字符,其他语言文字一行60个字符,可通过修改 videotrans/set.ini 中 cjk_len=30other_len=60 调节

代理是怎么回事

如果你不知道代理是什么,也无法访问 Google,那么就不要理会了,记住不要使用 Google、Gemini、OpenAI ChatGPT 就可以了。

切莫在网络代理地址 里胡乱填写或将API地址填写到里面。可以不填,但不要乱填

如果你知道代理是什么,并且也知道你计算机上正使用着代理工具,也能找到代理端口,那么就将代理地址填写到 网络代理地址 框里即可,一般形式是 http://127.0.0.1:数字端口号

请切记, 如果你部署了本地的 DeepLx,那么需要将DeepLx的地址填写到"设置菜单-DeepLX"中,而不是填写到网络代理地址中,然后不断疑惑为什么不能用。

同样,如果你使用了chatGPT的国内中转api,也是要将api地址填写到"设置菜单-OpenAI/ChatGPT"中,而不是网络代理地址中

保留背景音 这个选项是干嘛的

很多视频会有较大的背景噪声,导致识别效果不佳,如果选中了"保留背景音"选项,那么将在识别前先移除视频里的背景声音,只保留纯净人声,会有更好的识别效果,同时会在最终生成结果视频前,再将移除的背景声音合成回去,新视频就能保留原视频的背景效果。

但注意,如果视频太大,比如几百MB或上超过1G,不要使用,即便视频不大,但没有显存或显存很小,也不要使用,否则会非常卡顿导致出错

单独人声背景分离工具,查看 推荐2个分离人声和背景伴奏的工具:urv5和vocal-separate

执行了几个视频后,发现硬盘快满了

在选中了"视频自动慢速"后,会将视频按照字幕切割为小片段,然后再对每个片段进行延长等变换,因此会生成原视频数倍的总尺寸视频片段,这也是"视频自动慢速"功能很慢的原因之一。

在处理完成后,可以手动删除软件目录下的tmp缓存文件夹下的所有内容,但不要删除tmp本身。 如果不手动删除,在关闭软件时,也会自动清理。

对同一个视频反复处理,为什么识别结果不变

默认情况下,如果该视频已经有识别完成或翻译完成的字幕文件了,将不再进行识别、翻译处理了, 以节省时间和计算机资源,如果你想再次处理,请打开"目标文件夹",也就是你"保存到.."的文件夹(如果未手动选择,则在原视频同目录下的_video_out下),删掉里面的所有内容,再重新执行就可以了。

当然你也可以将原视频简单的改个名字,将不再使用原结果。

双字幕怎么处理、软双字幕为什么只显示一个

在"嵌入字幕"下拉菜单里,可以选择"硬字幕嵌入(双)"或"软字幕(双)",在结果视频中,将保留原语言和目标语言两种字幕,其中硬字幕会以上下两行形式展示,而软字幕只会显示一种语言的,如果你想显示另一种软件字幕,请使用视频播放器的字幕管理功能切换。

总是提示显存不足(whole all Unable to allocate)

显存满了,使用小点的模型,比如使用 medium small 而不是 large-v3,large-v3 最低要求显存是8G,但不代表8G显卡就一定能顺畅运行,其他软件也会同时占用显存,而且视频越大所需显存也会越多,当提示这个错误时,请尝试:

  1. 使用小点的模型,比如 small/medium/base
  2. 如果仍然想使用大模型,选择使用"预先分割"或"均等分割"
  3. 修改 videotrans/set.ini
ini 复制代码
cuda_com_type=float32改为 int8,如果报错,再改为int16,
beam_size=5 将5改为 1
best_of=5   将 5 改为1
condition_on_previous_text=true 将 true改为false

GPU 使用率太低

软件工作原理是:

根据视频中的声音识别出文字,将文字翻译为目标语言,根据目标语言合成配音,再将文字、配音、视频合并为新视频,只有在声音识别文字阶段是重度使用GPU的,而其他阶段不使用GPU或只使用很少的GPU。

工作原理 一文搞懂"视频翻译与配音工具"

chatGPT 翻译后行数和原始行数不同或出现空白行

这是chatGPT在翻译时,将原本两行的内容翻译为一行了。

除非一次翻译一行,否则只要翻译的行数足够多,翻译任务执行时间足够长,总会出现一次合并行的问题。

尤其在前一行很长后一行很短只有一两个词,又是前一句的延伸时,chatGPU大概率会将后边一行和前一行翻译为一行内容,这是chatGPT强于普通翻译的地方,不会僵硬翻译每一行,而是照看上下文,但这样对于严格要求返回行数的显然造成了问题。

试了很多办法,包括用更强烈语气要求它不合并,返回行数必须同原文一致。

包括用更多的符号分割限制/给它原文示例和返回示例,甚至包括发送和返回都用标准json格式,但无论怎样,只要一个任务行数足够多,比如大于1000、20000行,并且不是一行一译,至少会出现一次这种合并。

如果只有几十数百行的少量任务,倒很少这情况。

目前的解决办法是:

要么容忍偶尔出现这情况,要么改成一次只发送一行进行翻译。 修改 videotrans/set.ini 中 trans_thread=10trans_thread=1

如果你有好的办法或提示词,可以尝试修改 videotrans/chatgpt.txt 里的提示词进行处理,请在原提示词的基础上处理。目前是发送多行,行位是换行符,行首是<数字行号>.

相关推荐
DK185838322529 小时前
【源码开源部署】电竞代练护航陪玩小程序:全游戏服务平台完整解决方案(附宝塔部署教程)
游戏·微信小程序·uni-app·开源·php
AIGC小尼9 小时前
Windows 本地 AI 漫剧全自动生产线部署完整教程(零基础、全指令、带源码、模型配置、排错方案)
人工智能·windows·ai漫剧
合米AI SOP系统9 小时前
传统产线如何快速上马落地 AI 防错?合米科技 AI SOP 7天即可上线。
大数据·人工智能·科技
思录Echo9 小时前
什么决定具身智能的最终走向?多技术路线与落地现实辨析
大数据·人工智能
ShallWeL9 小时前
Orin 上多模型常驻与显存预算
人工智能·嵌入式硬件·nvidia·orin
xiaohaiAIgeo9 小时前
【2026年】AI监控加行为分析守护实验室安全
大数据·人工智能·科普知识
IT_陈寒9 小时前
Python的多线程就是个假把式,我算是体验到了
前端·人工智能·后端
集和诚JHCTECH10 小时前
案例分享 | BRAV-7721助力印刷电路板(PCB)智能缺陷复判系统
人工智能·嵌入式硬件·边缘计算
衡石科技10 小时前
ChatBI性能优化与流式响应衡石自然语言问数毫秒级体验技术解析
人工智能·科技·性能优化·企业级bi