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

去年搞了个开源项目 " 视频翻译配音 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 里的提示词进行处理,请在原提示词的基础上处理。目前是发送多行,行位是换行符,行首是<数字行号>.

相关推荐
whaosoft-1431 小时前
大模型~合集3
人工智能
Dream-Y.ocean1 小时前
文心智能体平台AgenBuilder | 搭建智能体:情感顾问叶晴
人工智能·智能体
丶21361 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
春末的南方城市2 小时前
FLUX的ID保持项目也来了! 字节开源PuLID-FLUX-v0.9.0,开启一致性风格写真新纪元!
人工智能·计算机视觉·stable diffusion·aigc·图像生成
zmjia1112 小时前
AI大语言模型进阶应用及模型优化、本地化部署、从0-1搭建、智能体构建技术
人工智能·语言模型·自然语言处理
jndingxin2 小时前
OpenCV视频I/O(14)创建和写入视频文件的类:VideoWriter介绍
人工智能·opencv·音视频
AI完全体2 小时前
【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)
人工智能·深度学习·神经网络·机器学习·过拟合·模型复杂度·偏差-方差
GZ_TOGOGO2 小时前
【2024最新】华为HCIE认证考试流程
大数据·人工智能·网络协议·网络安全·华为
sp_fyf_20242 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02
人工智能·神经网络·算法·计算机视觉·语言模型·自然语言处理·数据挖掘
新缸中之脑2 小时前
Ollama 运行视觉语言模型LLaVA
人工智能·语言模型·自然语言处理