Skip to content

常见问题

报错,错误中含有 “ffprobe exect error”

image.png

执行中,经常报出含有这类“ffprobe except error”字符的错误,那么大概率是视频名字太长,或者视频所在路径过深,尤其是从youtube下载的视频,名字一般都几百个文字甚至更长,同时如何视频存放的文件夹层级又很深,那么几乎肯定会遇到windows 上路径长度限制。

image.png

像上图这个,文件夹层级深,视频名字长,在调用 ffprobeffmpeg 执行命令时,几乎肯定会报错。

解决方法很简单,直接在某个盘下创建一个英文文件夹,然后将视频改个简单名字放进去,比如D:/myvideos/1.mp4,再试试,应该就无错了。

弹出错误,说是“不含音轨”

)I0XV7V}$RSCRK_$2MW16@2.jpg

有时在执行时,会频繁遇到“无法识别,请检查视频是否含有音轨”等错误。原因一般有以下几种

  1. 确实不存在声音,尤其youtube上下载的视频,一般都是视频画面和声音单独下载,然后再合并的,有可能下载中途出错,最终未合并,导致只有画面而无声音。

    解决方法:重新下载,下载之后播放下检查是否有声音

  2. 存在声音,但背景噪声太大,比如大街上的视频或演唱会的视频,导致无法识别到任何文字。

    解决方法:选中“保留背景音”或使用去除背景音工具提前删除掉背景噪声

image.png

image.png

  1. 所选择的“原始语音”和视频中说话语言不一致,比如你视频里都是英文发声,你应该选择原始语言位“英语”,但是却选了“中文”,那么肯定是无法识别到文字的。

    解决方法:重新选择“原始语言”确保和视频里发声一致。

image.png

识别完成后就闪退

这种情况一般是“没有安装cudnn”或“GPU显存不足”。

解决方法:

  1. 安装cudnn,https://juejin.cn/post/7318704408727519270
  2. 使用小点的模型,比如"small" "medium" 而不是 large-v3
  3. 使用“预先分割”或“均等分割”
  4. 使用 “openai”模型而非 “faster”模型

image.png

识别出的字幕不完整

比如完整视频有10分钟,但只识别出了5分钟的字幕,后边就没有了。 可能的原因

  1. 背景噪声问题,提前去除背景噪声可解决
  2. 有错误发生,但未明确提示,可查看软件目录下 logs/最新日期.log 的报错信息
  3. 后边发声语言和原始语言不同

翻译无法连接

image.png

提示无法连接到 Google 或 chatGPT。 因为你懂的原因,国内无法正常使用这2个服务,如果你要使用,必须确保已掌握了科学上网方式,并且将网络代理地址填写到了“网络代理地址”文本框中。仅仅开了全局可能是无效的,保险的方法是手动填写到“网络代理地址”文本框中。

image.png

这个文本框中是需要填写“网络代理地址”的,而不是填写你的中转api地址的,有用户使用的chatGPT,却将第三方的api中转地址填写到这里,那百分百一万会报错。api地址是需要填写到“设置菜单-Openai/ChatGPT Key” 中的。

image.png

缺少 ffmpeg

如果是windows系统,预打包版本中已含有ffmpeg,无需处理,源码中有 ffmpeg.7z 文件,解压后存放在软件根目录即可。

如果是Linux系统,Debian系可使用 apt-get install ffmpeg 或 Fedora系 yum install ffmpeg 安装即可。

Mac系统使用 brew install ffmpeg 安装

报错信息一堆,含有ffmpeg字样

大概率是视频名称或路径含有 空格、特殊字符、中日韩阿拉伯等文字导致执行ffmpeg出错了。

修改视频名称为简单“英文数字”等组成的新名称,将视频移动到由“英文、数字、下划线”等简单字符组成的目录下,包含上级、上上级目录都是如此。

例如 C:/Program file/videos,这个目录就不可以,含有空格。

D:/videos[001] 这个目录也不行,含有特殊字符[]

E:/中文 ceshi 개하였다 这个含有中韩文字还有空格,会报错。

E:/myvideos001 这个就可以,无空格无特殊字符

youtube 下载视频报错

image.png

  1. 检查代理地址填写是否正确,正确的代理地址是 http://127.0.0.1:数字端口号形式的,不要填写乱七八糟的内容。
  2. youtube视频下载是将视频画面和音频独立下载的2个文件,完毕后再合并为mp4,如果你下载过程中打开了其中的视频文件,那么肯定是没有声音的,请耐心等待下载完成后合并。

软件显示英文界面,如何显示中文界面

打开 videotrans/set.ini,11行左右,找到 lang =,改为 lang=zh

image.png

videtorans/set.ini 中几个参数解释

以下几个参数均在 软件目录/videotrans/set.ini 文件中,打开该文件进行修改,修改保存后,最好重启,否则在使用视频工具箱里的功能时,新修改不会生效。

image.png

1. 调节背景音乐音量:如果手动选择了“添加背景音”文件,想降低背景音量,打开这个文件,找到 backaudio_volume=0.5 默认0.5即代表背景音量减半,你可以降为更低,比如 0.1

2. 调节硬字幕文字大小:找到 fontsize=14,默认14代表文字尺寸,你可以调高比如到20,或降低到12等。

3. 改变识别完和翻译完后的倒计时:找到countdown_sec=30,默认倒计时30秒,你可以修改为大于0的任何正整数。

4. 改变字幕一行显示的文字:找到cjk_len=30other_len=60这2个标量,cjk_len代表中日韩文字一行显示30个字符,other_len代表其他文字一行显示60个字符,你可以根据需要修改

5. 加快配音速度:找到dubbing_thread=2,默认2代表同时2行字幕开始配音,你可以调为更大,比如10,代表同时10行字幕进行配音,但注意,太大了可能遇到频繁限制而出错。

6.改变翻译速度:找到 trans_thread=10,默认10,代表同时翻译10行字幕,可以调为20,表示同时翻译20行,但注意,太大了,一个是会遇到频率限制问题,另外在chatGPT/Gemini等AI翻译时,可能会出现合并行问题,导致翻译前后字幕行数不同,改为1可解决这个问题。

7.减少显存占用:当显存不足时,可通过以下修改降低显存占用

cuda_com_type=float32 改为 cuda_com_type=int8beam_size=5改为 beam_size=1best_of=5 改为 best_of=1temperature=1改为 temperature=0

同时在软件主界面中,"整体识别"改为"预先分割"或"均等分割",将能最大化降低显存占用

image.png

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

整体识别:

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

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

image.png

预先分割:

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

均等分割:

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

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

image.png

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

字幕字体大小如何设置

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

image.png

控制字幕一行文字个数

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

image.png

代理是怎么回事

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

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

image.png

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

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

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

image.png

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

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

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

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

image.png

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

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

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

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

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

image.png

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

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

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

image.png

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

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

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

image.png

GPU 使用率太低

软件工作原理是:

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

image.png

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

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

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

中:有多远滚多远

英: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=1.8 改为 audio_rate=100

image.png

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

视频慢放实现对齐操作:

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

image.png

  1. videotrans/set.ini中,将 video_rate=20调整为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 的使用,使原本的字幕静音间隔缩短,后边语音的开始时刻提前,可能导致语音已经播放了,说话人还未张嘴。

有没有完美同步方法

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

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

如果你有思路,欢迎留言讨论。

github.com/jianchang512