23年下半年不怎么忙,开始筹划搞个视频配音的开源项目,初始使用 python 标准库 tkinter 搞了一版,功能也及其简单,完全使用Google的识别和配音api,后来界面替换为了 PyQt5 ,语音识别改为了 openai-whisper 模型,配音增加了 edgeTTS ,近期又将界面调整为 PySide6,配音新增 openai-tts 和elevenlabs 以及集成原音色克隆和离线翻译项目,并进行了大量修改优化,目前在 GitHub 有3.5k star,虽说没啥卵用,但至少还是有几个人在用。略写一遍文字,希望能对使用者有点帮助。
项目开源地址: github.com/jianchang51...
本文主要内容有:
- 这是个什么东东,有什么用处
- 如何下载、安装、更新
- 模型在哪里下载
- 翻译渠道怎么选
- 代理是什么,必须有吗
- 具体如何使用呢
- 其他功能模式
- 配置CUDA加速
- 如何使用原视频中音色配音
- 遇到问题怎么办
- 是否收费、有无限制
- 项目会死吗
这是个什么东东,有什么用处
这是一个开源的视频翻译和配音工具(开源协议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种解决方式:
配音自动加速播放,以便缩短配音时长和视频对齐
视频自动慢速播放,以便延长视频时长和配音对齐。
这里我什么都没选,这种情况下,如果配音后总时长大于原视频时长,将延长画面的最后一帧,直到配音完毕。
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 他们是要收费的,但这雨我无瓜哦,他们也不给我分钱。
项目会死吗
没有不会死的项目,只有长寿和短命的项目,只靠爱发电的项目,可能夭折的更早,当然如果你希望它死的慢一点,活的久一点,在存活的过程中,能得到有效的持续维护和优化,可以考虑捐助呀,帮它续命几天。