剪映的视频翻译时长限制5分钟以内,需要积分2700首次有减免大概21.6元(1秒=9积分/1元=100积分)
• 视频翻译配音工具pyvideotrans
将视频从一种语言翻译为另一种语言,并添加配音
打包链接:夸克网盘分享
升级补丁:解压直接覆盖之前版本
• 声音克隆工具
打包下载:夸克网盘分享
将压缩包内的文件夹复制到 tts 文件夹内,解压后该tts文件夹内会新增3个文件夹,分别是
Bash tts_models--multilingual--multi-dataset--xtts_v2 voice_conversion_models--multilingual--vctk--freevc24 wavlm
设置原音色克隆API
clone-voice地址:http://127.0.0.1:9988/
建议配置:
01、文字识别:
视频翻译配音pyVideoTrans | 视频翻译配音pyVideoTrans
01-1faster 和 openai 和 GoogleSpeech 模式的区别
这3个模式都是用于将视频中的人类说话声识别为字幕。
• openai-whisper更稳定、对环境要求更低使用简单,但速度慢消耗GPU显存多。
• faster-whisper速度快、消耗GPU更少,但安装麻烦,除了cuda还需要安装cudnn cublasxx.dll。
• GoogleSpeech 模式使用google的免费识别接口进行语音识别转为字幕,无需本地模型,但需要填写网络代理
当然这一切的前提是拥有英伟达显卡,如果计算机压根没有英伟达显卡,或者有,但不想或不会安装cuda,那么faster和openai两者使用任意一个都可以,因为不使用cuda加速的情况下,仅在cpu上运算,二者对环境没啥要求,下载即用,速度也都是一样的慢。
GoogleSpeech 模式免费使用,但效果不佳,并且无法区分标点符号,在要求不高并且有代理的情况下可以使用
01-2模型选择:
模型下载:夸克网盘分享
从 base模型、small模型、medium模型到large-v3模型,识别精度越来越好,但消耗计算机资源也越来越多,如果你的计算机拥有性能较好的英伟达显卡,并且显存大于等于8G,同时配置好了CUDA和cuDNN环境,可以尝试使用 large-v3 模型,将能显著提高文字字幕识别准确度。
如果视频中有较多的背景音乐或背景噪声,肯定会干扰文字识别效果。可以尝试选中“保留背景音”,会在识别之前先将背景声音分离出来,只使用里面人类说话声去识别,效果会好很多。
02、文字翻译
首选 ChatGPT/DeepL, 再次Google,再次 Microsoft,最后腾讯翻译百度翻译。
当然也可以使用DeepLx白嫖DeepL,但不稳定,容易被封IP。
视频翻译配音pyVideoTrans | 视频翻译配音pyVideoTrans
同样,在翻译完成后,也会出现暂停按钮,点击暂停,右侧字幕区可手动核对修改翻译结果
为何会出现声音、字幕、画面不同步
在不同种类的语言互相翻译后,句子长度是会变化的,发音时长一般也是会变化的,比如从中文翻译为英文,句子长短肯定有所不同,而读出这句中文所用时长和读出这句英文所用时长,一般也是不同的。
中:有多远滚多远
英:Get out of here as far as you can!
中:滚远点
日:ここから出て行け。
原始视频中文发音用时2s,翻译为英文并配音后,时长可能是4s,这必然导致不同步。
如何让它们同步,不在意效果,只要同步
建议不勾选“配音自动加速”,勾选“视频自动加速”,通过后期处理变速
像上面所说,翻译前时长2s,翻译后时长4s,如果仅仅只需要它们能同步即可,不在乎语速快慢或视频画面快慢,可以直接让音频加速2倍,4s的时长就能缩短为2s,自然实现了同步对齐。或让视频慢放,延长原2s片段到4s,也可实现对齐。
音频加速实现对齐具体操作方式:
软件界面中选择“自动音频加速” ,取消“视频自动慢速”
videotrans/set.ini 中,设置audio_rate=100
即可实现同步,但弊端显而易见,语速忽快忽慢。
视频慢放实现对齐操作:
取消软件界面中的“自动音频加速”,选中自动视频慢速
videotrans/set.ini中,设置为video_rate=50
这样也可实现对齐,语速保持不变,视频慢放,但同样视频变的忽快忽慢。
如果你只是想要单纯的对齐,不在意效果,可以采取这两种方式。
更好的可接受的同步方法
很显然上面的同步方式没有实用性,音频太快或视频太慢都难以接受,体验太差。为了更好的效果,可以同时启用 “自动音频加速”、“语音前后扩展”、“自动视频慢速”,这三项内容。
具体操作:
软件界面中选中“自动音频加速”、“语音前后扩展”,同时设定一个较小的总体加速值,比如 10%
videotrans/set.ini中通过变量audio_rate为音频加速设置一个最大值,防止加速太快,默认是1.8,audio_rate=1.8,即最大语速加速到正常的1.8倍,你可以手动修改为2或1.5等大于1的数值。
videotrans/set.ini中通过变量video_rate为视频慢速设置一个最大值,防止慢放太慢,默认是20,video_rate=20, 即慢放到正常的0.05倍。你可以改为 2或5等大于1的数值。
在上述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=true 和 remove_white_ms=100 的使用,使原本的字幕静音间隔缩短,后边语音的开始时刻提前,可能导致语音已经播放了,说话人还未张嘴。
有没有完美同步方法
除了人工参与手动处理,比如精简翻译、添加过渡画面等,目前尚未找到可以程序自动化实现的完美方法。
要同时保证在很长或很短的视频中,在任意语言翻译配音中,通过程序自动化实现 “音频加速范围可接受”、“视频慢速范围可接受”、“张嘴闭嘴时刻和语音起始时刻吻合” 这几个目标,目前看来似乎是个不可能完成的任务。除了人工参与调整,并无完美方法。