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

23年下半年不怎么忙,开始筹划搞个视频配音的开源项目,初始使用 python 标准库 tkinter 搞了一版,功能也及其简单,完全使用Google的识别和配音api,后来界面替换为了 PyQt5 ,语音识别改为了 openai-whisper 模型,配音增加了 edgeTTS ,近期又将界面调整为 PySide6,配音新增 openai-tts 和elevenlabs 以及集成原音色克隆和离线翻译项目,并进行了大量修改优化,目前在 GitHub 有3.5k star,虽说没啥卵用,但至少还是有几个人在用。略写一遍文字,希望能对使用者有点帮助。

项目开源地址: github.com/jianchang51...

本文主要内容有:

  1. 这是个什么东东,有什么用处
  2. 如何下载、安装、更新
  3. 模型在哪里下载
  4. 翻译渠道怎么选
  5. 代理是什么,必须有吗
  6. 具体如何使用呢
  7. 其他功能模式
  8. 配置CUDA加速
  9. 如何使用原视频中音色配音
  10. 遇到问题怎么办
  11. 是否收费、有无限制
  12. 项目会死吗

这是个什么东东,有什么用处

这是一个开源的视频翻译和配音工具(开源协议GPLv3),可将一种语言和发音的视频,处理后变为另一种语言发音的视频,并嵌入该语言字幕。比如有一个英文电影,发音是英文,没有英文字幕,也没有中文字幕,使用这个工具处理后,可以转成带中文字幕,并且带有中文配音的电影。

除了这个核心功能,还附带其他一些工具:

  • 语音识别文字:可将视频或者音频中的声音识别为文字,并可以导出为字幕文件。
  • 音频视频分离:可将视频分离为一个无声视频文件和一个音频文件
  • 文字字幕翻译:可将文字或srt字幕文件,翻译为其他语言
  • 视频字幕合并:可将字幕文件嵌入到视频中
  • 音频视频合并:可将视频文件、音频文件、字幕文件三者合成为一个文件
  • 文字合成语音:可将任意文字或srt文件,合成为一个音频文件。

这个工具原理是什么呢:

输入视频后,先使用 ffmpeg 分离出音频文件和无声mp4,然后用 faster-whisper 将该音频中的人声识别为文字,接着将文字翻译为目标语言并保存为srt字幕文件,再把翻译结果文字合成为语音并保存为配音音频文件。

最后将无声mp4、配音音频文件、字幕srt文件合并为一个视频文件,即完成。

当然中间步骤更复杂些,比如抽离背景音乐和人声、字幕声音对齐、字幕画面对齐、原时长和配音时长对齐、ffmpeg使用GPU加速、不标准mp4视频处理等。

是否可以源码部署

可以,并且在MacOS和Linux只能使用源码部署,具体查看仓库页面

如何下载exe、安装和更新

这是个开源在 GitHub 的项目,首选下载地址自然是 GitHub: https://github.com/jianchang512/pyvideotrans/releases ,打开后,选择最上面的下载即可

如果你是通过主页过去的,比如地址 github.com/jianchang51... ,打开后在页面中部右侧"Releases"字样的地方点击,即可看到上面下载页面

切记下载可不是点击"Code"-> "Download ZIP" 哦

更新很简单啊,还是去下载页面,看看最新版本是不是比你当前使用的更新,如果是,重新下载,然后解压覆盖就OK了

解压后双击sp.exe即可用:

解压到英文或数字目录下,最好不要含有中文或空格,否则可能出现一些奇怪的问题。 解压后的文件列表如下

模型在哪里下载

默认已内置 base 模型,如果你需要其他模型,请点击到此处去下载模型

下载后解压,将里面名字为**models--Systran--faster-whisper-xx** 形式的文件夹整个复制到 models 目录下。正确的模型放置形式如下

翻译渠道怎么选

在识别出字幕后,如果需要将该字幕转为另一种语言的字幕,比如原本是英语视频,你希望处理后能嵌入中文字幕,那么就需要用到翻译渠道了。

目前支持 Google翻译 百度翻译 腾讯翻译 DeepL翻译 ChatGPT翻译 AzureGPT翻译 Gemini Pro翻译 DeepLx翻译 OTT离线翻译

首选Google翻译 :如果你有代理,并且知道什么是代理,应该怎么填写代理,那么推荐首选 Google翻译,免费白嫖效果还杠杠的,只需要将 代理地址填写到文本框内即可。

其次腾讯翻译 :如果你对代理一窍不通,那么就不要折腾了,去申请免费的腾讯翻译,点此查看腾讯翻译Api申请 每月的前 500 万字符免费.

再次百度翻译 :你也可以去申请百度翻译Api,点此查看百度翻译Api申请 ,未完成认证的,每月5万免费字符,完成个人认证的每月有 100 万字符免费

OTT离线翻译的使用 :如果你愿意折腾,可以选择部署免费的OTT离线翻译,下载地址是 github.com/jianchang51... ,部署后,将地址填写在软件菜单-设置-OTT离线翻译中

使用AI翻译:ChatGPT和AzureGPT必须要有他们的付费账号,免费账号是不可用的,有了账号后,打开菜单-设置-OpenAI/chatGPT key 填写你的chatGPT的sk值,AzureGPT和Gemini同样在菜单-设置中填写

这里要注意,如果你使用的官方chatGPT的api,无需填写"API URL",如果是第三方api,则填写第三方提供的api地址。

openai官方的api和Gemini/AzureGPT都必须要填写代理,否则无法访问

AzureGPT同样此处填写

Gemini目前是免费的,填写api key并且正确设置代理后可用

代理是什么,必须要用吗

如果你要使用Google翻译 或者使用 chatGPT官方api 或者使用 Gemini/AzureGPT ,那么代理是必须的。你需要将这种格式的代理地址"http://127.0.0.1:端口号" 填写在代理地址框中,请注意端口号必须是"http类型的端口,而不是sock的端口"。

比如你使用的是某软件,那么填写 http://127.0.0.1:10809, 如果是某某软件,则填写 http://127.0.0.1:7890 ,如果你使用了代理但不知道填写什么,打开软件左下角或右上部分或者其他地方仔细寻找 http 字样后面跟着的4-5位数字号,然后填写 http://127.0.0.1:端口号

如果你压根不懂什么是代理,由于你知道的原因,不便多说,请自行百度

具体如何使用呢

打开软件,默认界面如下

默认左侧选中的第一个就是标准模式,可完整的进行视频翻译+配音+嵌入字幕整个流程,左侧其他按钮其实都是该功能的拆分,或者其他简单辅助功能。就以标准模式演示下如何使用

标准模式使用举例:

A. 选择视频:首先点击"选择视频"按钮,选中一个待翻译的视频,比如我选中了一个英语视频名为 english.mp4,然后选择"翻译渠道"为Google,填写了我的代理地址 http://127.0.0.1:10809 ,接着"原始语言"选择为了英语,我想翻译为中文,因此"目标语言"选择了中文。

B. 设置配音和字幕:我想白嫖"edgeTTS"的免费配音,因此"TTS"后我选择了edgeTTS,配音角色里有很多,我随意选了一个。

因为我用的笔记本,资源不足,所以"语音模型"我选择了base,后边的"整体识别"和"预先分割"我选了"整体识别",我的视频只有几十M,如果过大,我可能会选"预先分割"。

我想嵌入硬字幕,即放网页上播放时也有字幕,因此"嵌入字幕"我选了"嵌入硬字幕"。

C. 设置同步声画选项:"静音片段"和"配音语速"保持默认没有动。

翻译后不同语言下发音时长不同,比如一句话用中文来表达用时可能是3秒,英文表达可能为5秒,导致时长和视频不一致。

2种解决方式:

  1. 配音自动加速播放,以便缩短配音时长和视频对齐

  2. 视频自动慢速播放,以便延长视频时长和配音对齐。

这里我什么都没选,这种情况下,如果配音后总时长大于原视频时长,将延长画面的最后一帧,直到配音完毕。

D. 保留背景音乐:这个视频里有背景音乐,我想配音后保留,因此我选中了"保留背景音乐"

E: 是否启用CUDA加速:我的笔记本没有CUDA环境,因此我没有选中"CUDA加速"。

最终我的选择如下

点击"开始"按钮,就开始执行了。

识别出的字幕将显示在右侧"字幕编辑区",在翻译前,会有一个30s的等待阶段,你可以点击"暂停"按钮,手动修改调整字幕,然后再进行下一步的翻译,以便结果更精准。

在翻译后,同样有一个30s的等待阶段,可以点击"暂停"按钮,修改翻译结果,以便接下来的配音更准确。

等待进度条完毕时,此时点击该进度条,即可打开目标文件夹,看到生成的文件了。

ini 复制代码
以下是可能存在的全部文件说明,根据执行时配置的选项不同,某些文件可能不会生成
                
english.mp4 = 最终完成的目标视频文件
en.wav|en.m4a = 原始视频中的音频文件 
zh-cn.m4a = 配音后的音频文件(若选择了保留背景音乐则已混入)
en.srt = 原始视频中识别出的字幕
zh-cn.srt = 翻译为目标语言后字幕
vocal.wav = 原始视频中分离出的人声 音频文件
instrument.wav = 原始视频中分离出的背景音乐 音频文件

之所以要生成这么多的文件,是方便用户可能的进一步处理,字幕、音频、背景等素材顺手创建了,免去再使用其他工具处理的麻烦。

其他功能模式

【视频提取字幕】选择视频文件,选择视频源语言,则从视频的【语音中识别出文字】并自动导出字幕文件到目标文件夹

【提取字幕翻译】选择视频文件,选择视频源语言,设置想翻译到的目标语言,则从【视频语音中识别出文字】并翻译为目标语言,然后导出双语字幕文件到目标文件夹

【字幕视频合并】选择视频,然后将已有的字幕文件拖拽到右侧字幕区,将源语言和目标语言都设为字幕所用语言、然后选择配音类型和角色,开始执行

【字幕创建配音】将本地的字幕文件拖拽到右侧字幕编辑器,然后选择目标语言、配音类型和角色,将生成配音后的音频文件到目标文件夹

【语音识别文字】将视频或音频拖拽到识别窗口,将识别出文字并导出为srt字幕格式

【文字合成语音】将一段文字或者字幕,使用指定的配音角色生成配音

【视频音频分离】将视频文件分离为音频文件和无声视频

【视频字幕合并】音频文件、视频文件、字幕文件合并为一个视频文件

【文件格式转换】各种音视频格式之间的相互转换

【文字字幕翻译】将文字或srt字幕文件翻译为其他语言

【两个音频混流】将2个音频文件混合为一个音频文件

如何配置CUDA加速呢

如果你有英伟达显卡,那么可以配置下CUDA环境,然后选中"CUDA加速",将能得到极大的加速。如何配置呢,内容较多,请点击此处查看

如何使用原视频中说话人的音色配音

首先你需要另一个开源项目,clone-voice 安装部署并配置好模型后,将该项目的地址填写到软件的菜单-设置-原音色克隆Api 中

然后TTS选择 "clone-voice",配音角色选择"clone",即可使用

遇到问题怎么办

首先仔细阅读项目主页面 github.com/jianchang51... 大部分问题都有说明哦。

如何还是无法解决,那就发Issue,去这里 github.com/jianchang51... 提交,当然在项目主页面 github.com/jianchang51... 也有QQ群,可以加群。

是否收费、有无限制

项目是GPLv3协议开源的,免费使用,无任何内置收费项目,也没有任何限制(必须遵守我国法律),可以自由使用,当然 腾讯翻译、百度翻译、DeepL翻译、chatGPT、AzureGPT 他们是要收费的,但这雨我无瓜哦,他们也不给我分钱。

项目会死吗

没有不会死的项目,只有长寿和短命的项目,只靠爱发电的项目,可能夭折的更早,当然如果你希望它死的慢一点,活的久一点,在存活的过程中,能得到有效的持续维护和优化,可以考虑捐助呀,帮它续命几天。

相关推荐
成富31 分钟前
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
数据库·人工智能·sql·spring·oracle
CSDN云计算44 分钟前
如何以开源加速AI企业落地,红帽带来新解法
人工智能·开源·openshift·红帽·instructlab
艾派森1 小时前
大数据分析案例-基于随机森林算法的智能手机价格预测模型
人工智能·python·随机森林·机器学习·数据挖掘
hairenjing11231 小时前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小蜗子1 小时前
Multi‐modal knowledge graph inference via media convergenceand logic rule
人工智能·知识图谱
SpikeKing1 小时前
LLM - 使用 LLaMA-Factory 微调大模型 环境配置与训练推理 教程 (1)
人工智能·llm·大语言模型·llama·环境配置·llamafactory·训练框架
黄焖鸡能干四碗2 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
2 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
ctrey_2 小时前
2024-11-4 学习人工智能的Day21 openCV(3)
人工智能·opencv·学习
攻城狮_Dream2 小时前
“探索未来医疗:生成式人工智能在医疗领域的革命性应用“
人工智能·设计·医疗·毕业