Project Icon

TurnVoice

强大的视频声音转换和多语种翻译命令行工具

TurnVoice是一款功能丰富的命令行工具,专注于视频声音转换和多语种翻译。该工具集成了多种语音合成引擎,包括免费的Coqui TTS在内的多个选项。它允许用户精确控制渲染过程,提供句子文本、时间和语音的自定义选项。TurnVoice还具备保留原始背景音频和本地视频处理的能力,适用于各类视频创作需求。

TurnVoice

一个命令行工具,可以转换(YouTube)视频中的声音,并具有额外的翻译功能。1

提示: 对最先进的语音解决方案感兴趣的人也请看看Linguflex。它让你通过说话来控制你的环境,是目前可用的最强大和复杂的开源助手之一。

https://github.com/KoljaB/TurnVoice/assets/7604638/e0d9071c-0670-44bd-a6d5-4800e9f6190c

功能

  • 声音转换
    使用免费的Coqui TTS转换声音,无运营成本 (支持声音克隆,包含58种声音

  • 多样化声音
    支持流行的TTS引擎,如ElevenlabsOpenAI TTSAzure,提供更多声音选择。2

  • 翻译
    以零成本翻译视频,例如从英语翻译成中文。由免费的deep-translator提供支持

  • 改变说话风格 (AI驱动)
    通过提示使每个口语句子以自定义说话风格传递,营造独特风格。3

  • 完全渲染控制
    通过自定义句子文本、时间和声音选择实现精确的渲染控制

    💡 提示:Renderscript编辑器让这一步变得简单

  • 本地视频处理
    处理任何本地视频文件。

  • 保留背景音频
    保持原始背景音频不变。

发布说明中了解更多。

先决条件

推荐使用Nvidia显卡,VRAM大于8 GB,在Python 3.11.4 / Windows 10上测试通过。

[!提示] 使用setx HF_ACCESS_TOKEN "your_token_here"设置你的HF令牌

安装

pip install turnvoice

[!提示] 为了使用GPU加快渲染速度,安装后准备你的CUDA环境:

对于CUDA 11.8
pip install torch==2.1.2+cu118 torchaudio==2.1.2+cu118 --index-url https://download.pytorch.org/whl/cu118

对于CUDA 12.1
pip install torch==2.1.2+cu118 torchaudio==2.1.2+cu211 --index-url https://download.pytorch.org/whl/cu211

使用方法

turnvoice [-i] <YouTube URL|ID|本地文件> [-l] <翻译语言> -e <引擎> -v <声音> -o <输出文件>

为每个你想使用的说话人声音向'voice'参数提交一个字符串。如果你指定了引擎,声音将按列出的顺序分配给这些引擎。如果声音多于引擎,多出的声音将使用第一个引擎。如果没有指定引擎,将默认使用Coqui引擎。如果没有定义声音,将为每个引擎选择一个默认声音。

命令示例:

Arthur Morgan讲解一个烹饪教程:

turnvoice -i AmC9SmCBUj4 -v arthur.wav -o cooking_with_arthur.mp4

[!注意] 需要克隆声音文件(如arthur.wav或.json)在同一目录下(你可以在tests目录中找到一个)。

工作流程

准备

使用以下命令准备带有转录、说话人分离(以及可选的翻译或提示)的脚本:

turnvoice https://www.youtube.com/watch?v=cOg4J1PxU0c --prepare

翻译和提示应该在这个准备步骤中应用。引擎或声音将在之后的渲染步骤中使用。

Renderscript编辑器

编辑器

  1. 打开脚本
    打开editor.html文件。点击文件打开按钮,导航到你启动turnvoice的文件夹。打开下载文件夹。打开与视频名称相同的文件夹。打开full_script.txt文件。
  2. 编辑
    编辑器将可视化显示转录和说话人分离结果,并开始播放原始视频。在播放过程中,验证文本、开始时间和说话人分配,如果检测有误,请进行调整。
  3. 保存
    保存脚本。记住文件的路径。

渲染

使用以下命令渲染精细的脚本以生成最终视频:

turnvoice https://www.youtube.com/watch?v=cOg4J1PxU0c --render <脚本路径>

调整显示的CLI命令中的路径(编辑器无法从浏览器读取该信息)。

使用-e和-v命令为每个说话人轨道分配引擎和声音。

参数

  • -i, --in: 输入视频。接受YouTube视频URL或ID,或本地视频文件路径。
  • -l, --language: 翻译语言。Coqui合成支持:en, es, fr, de, it, pt, pl, tr, ru, nl, cs, ar, zh, ja, hu, ko。省略以保留原始视频语言。
  • -il, --input_language: 转录的语言代码,如果自动检测失败则设置。
  • -v, --voice: 用于合成的声音。接受多个值以替换多个说话人。
  • -o, --output_video: 最终输出视频的文件名(默认:'final_cut.mp4')。
  • -a, --analysis: 打印转录和说话人分析,不进行合成或渲染视频。
  • -from: 开始处理视频的时间。
  • -to: 停止处理视频的时间。
  • -e, --engine: 用于合成的引擎。可以是coqui, elevenlabs, azure, openai或system。接受多个值,与提交的声音相关联。
  • -s, --speaker: 要转换的说话人编号。
  • -snum, --num_speakers: 帮助说话人分离。如果你事先知道视频中确切的说话人数量,请指定。
  • -smin, --min_speakers: 帮助说话人分离。如果你事先知道视频中最少的说话人数量,请指定。
  • -smax, --max_speakers: 帮助说话人分离。如果你事先知道视频中最多的说话人数量,请指定。
  • -dd, --download_directory: 保存下载文件的目录(默认:'downloads')。
  • -sd, --synthesis_directory: 保存合成音频文件的目录(默认:'synthesis')。
  • -ex, --extract: 启用从视频文件中提取音频。否则从互联网下载音频(默认)。
  • -c, --clean_audio: 从最终视频中移除原始音频,得到纯合成结果。
  • -tf, --timefile: 定义用于处理的时间戳文件(功能类似于多个--from/--to命令)。
  • -p, --prompt: 定义一个提示来改变句子的风格,如"杰克船长的说话风格" 3
  • -prep, --prepare: 编写包含说话人分析、句子转换和翻译的完整脚本,但不执行合成或渲染。可以继续。
  • -r, --render: 接受完整脚本并只执行合成和渲染,不进行说话人分析、句子转换或翻译。
  • -faster, --use_faster: 使用faster_whisper进行转录。如果stable_whisper转录出现OOM错误或结果不理想时使用。(可选)
  • -model, --model: 要使用的转录模型。默认为large-v2。可以是'tiny', 'tiny.en', 'base', 'base.en', 'small', 'small.en', 'medium', 'medium.en', 'large-v1', 'large-v2', 'large-v3', 或 'large'。(可选)

-i-l 可以作为位置参数和可选参数使用。

翻译

使用-l参数将视频翻译成另一种语言。

例如,要翻译成中文,你可以使用:

turnvoice https://www.youtube.com/watch?v=ZTH771HIhpg -l zh-CN -v daisy

输出视频
💡 提示: 在tests文件夹中你可以找到一个基于中文音素训练的"chinese.json"语音。

Coqui引擎支持的语言
简写语言
ar阿拉伯语
cs捷克语
de德语
en英语
es西班牙语
fr法语
it意大利语
hu匈牙利语
ja日语
ko韩语
nl荷兰语
pl波兰语
pt葡萄牙语
ru俄语
tr土耳其语
zh-cn中文
其他引擎支持的语言 确保在Azure和系统引擎中选择支持该语言的语音。
简写语言
af南非荷兰语
sq阿尔巴尼亚语
am阿姆哈拉语
ar阿拉伯语
hy亚美尼亚语
as阿萨姆语
ay艾马拉语
az阿塞拜疆语
bm班巴拉语
eu巴斯克语
be白俄罗斯语
bn孟加拉语
bho博杰普尔语
bs波斯尼亚语
bg保加利亚语
ca加泰罗尼亚语
ceb宿务语
ny齐切瓦语
zh-CN中文(简体)
zh-TW中文(繁体)
co科西嘉语
hr克罗地亚语
cs捷克语
da丹麦语
dv迪维希语
doi多格拉语
nl荷兰语
en英语
eo世界语
et爱沙尼亚语
ee埃维语
tl菲律宾语
fi芬兰语
fr法语
fy弗里西语
gl加利西亚语
ka格鲁吉亚语
de德语
el希腊语
gn瓜拉尼语
gu古吉拉特语
ht海地克里奥尔语
ha豪萨语
haw夏威夷语
iw希伯来语
hi印地语
hmn苗语
hu匈牙利语
is冰岛语
ig伊博语
ilo伊洛卡诺语
id印度尼西亚语
ga爱尔兰语
it意大利语
ja日语
jw爪哇语
kn卡纳达语
kk哈萨克语
km高棉语
rw卢旺达语
gom孔卡尼语
ko韩语
kri克里奥尔语
ku库尔德语(库尔曼吉语)
ckb库尔德语(索拉尼语)
ky吉尔吉斯语
lo老挝语
la拉丁语
lv拉脱维亚语
ln林加拉语
lt立陶宛语
lg卢干达语
lb卢森堡语
mk马其顿语
mai迈蒂利语
mg马达加斯加语
ms马来语
ml马拉雅拉姆语
mt马耳他语
mi毛利语
mr马拉地语
mni-Mtei梅泰语(曼尼普尔语)
lus米佐语
mn蒙古语
my缅甸语
ne尼泊尔语
no挪威语
or奥里亚语
om奥罗莫语
ps普什图语
fa波斯语
pl波兰语
pt葡萄牙语
pa旁遮普语
qu克丘亚语
ro罗马尼亚语
ru俄语
sm萨摩亚语
sa梵语
gd苏格兰盖尔语
nso北索托语
sr塞尔维亚语
st塞索托语
sn修纳语
sd信德语
si僧伽罗语
sk斯洛伐克语
sl斯洛文尼亚语
so索马里语
es西班牙语
su巽他语
sw斯瓦希里语
sv瑞典语
tg塔吉克语
ta泰米尔语
tt鞑靼语
te泰卢固语
th泰语
ti提格利尼亚语
ts聪加语
tr土耳其语
tk土库曼语
ak契维语
uk乌克兰语
ur乌尔都语
ug维吾尔语
uz乌兹别克语
vi越南语
cy威尔士语
xh科萨语
yi意第绪语
yo约鲁巴语
zu祖鲁语

Coqui引擎

如果没有使用-e参数指定其他引擎,Coqui引擎是默认引擎。

使用Coqui的语音:

语音(-v参数)

你可以使用预定义的Coqui语音之一,或者克隆自己的语音。

预定义语音

要使用预定义语音,请提交以下语音之一的名称:

'Claribel Dervla', 'Daisy Studious', 'Gracie Wise', 'Tammie Ema', 'Alison Dietlinde', 'Ana Florence', 'Annmarie Nele', 'Asya Anara', 'Brenda Stern', 'Gitta Nikolina', 'Henriette Usha', 'Sofia Hellen', 'Tammy Grit', 'Tanja Adelina', 'Vjollca Johnnie', 'Andrew Chipper', 'Badr Odhiambo', 'Dionisio Schuyler', 'Royston Min', 'Viktor Eka', 'Abrahan Mack', 'Adde Michal', 'Baldur Sanjin', 'Craig Gutsy', 'Damien Black', 'Gilberto Mathias', 'Ilkin Urbano', 'Kazuhiko Atallah', 'Ludvig Milivoj', 'Suad Qasim', 'Torcull Diarmuid', 'Viktor Menelaos', 'Zacharie Aimilios', 'Nova Hogarth', 'Maja Ruoho', 'Uta Obando', 'Lidiya Szekeres', 'Chandra MacFarland', 'Szofi Granger', 'Camilla Holmström', 'Lilya Stainthorpe', 'Zofija Kendrick', 'Narelle Moon', 'Barbora MacLean', 'Alexandra Hisakawa', 'Alma María', 'Rosemary Okafor', 'Ige Behringer', 'Filip Traverse', 'Damjan Chapman', 'Wulf Carlevaro', 'Aaron Dreschner', 'Kumar Dahl', 'Eugenio Mataracı', 'Ferran Simen', 'Xavier Hayasaka', 'Luis Moray', 'Marcos Rudaski'

💡 提示:只需写"-v gracie"即可,因为语音名称的部分也能被识别,并且不区分大小写

每个语音的样本

克隆语音

提交一个或多个包含16位24kHz单声道源材料作为参考wav的音频文件的路径。

示例:

turnvoice https://www.youtube.com/watch?v=cOg4J1PxU0c -e coqui -v female.wav

选择参考wav的技巧

  • 10-30秒的24000、44100或22050 Hz 16位单声道wav文件是你的最佳选择。
  • 24k单声道16位是我的默认设置,但我也发现有些语音使用44100 32位效果最佳。
  • 我在渲染之前使用这个工具测试语音。
  • Audacity是调整采样率的好帮手。尝试不同的帧率以获得最佳结果!

固定TTS模型下载文件夹

保持模型有序!将COQUI_MODEL_PATH设置为你喜欢的文件夹。

Windows示例:

setx COQUI_MODEL_PATH "C:\Downloads\CoquiModels"

Elevenlabs引擎

[!注意] 要使用Elevenlabs语音,你需要将API密钥存储在环境变量ELEVENLABS_API_KEY

所有语音都使用multilingual-v1模型合成。

[!警告] Elevenlabs是一个昂贵的API。专注于短视频。不要让这样一个正在开发中的脚本在按使用付费的API上无人值守地运行。错误发生在昂贵的长时间渲染过程结束时可能会非常令人恼火。

使用Elevenlabs的语音:

语音(-v参数)

提交生成的或预定义语音的名称。

示例:

turnvoice https://www.youtube.com/watch?v=cOg4J1PxU0c -e elevenlabs -v Giovanni

[!提示] 在使用昂贵的引擎之前,先用免费的引擎如Coqui测试渲染。

OpenAI引擎

[!注意] 要使用OpenAI TTS语音,你需要将API密钥存储在环境变量OPENAI_API_KEY

使用OpenAI的语音:

语音(-v参数)

提交语音的名称。目前OpenAI只支持一种语音。Alloy、echo、fable、onyx、nova或shimmer。

示例:

turnvoice https://www.youtube.com/watch?v=cOg4J1PxU0c -e openai -v shimmer

Azure引擎

[!注意] 要使用Azure语音,您需要在AZURE_SPEECH_KEY中设置SpeechService资源的API密钥,并在AZURE_SPEECH_REGION中设置区域标识符

使用Azure语音:

语音(-v参数)

提交生成的或预定义的语音名称。

示例:

turnvoice https://www.youtube.com/watch?v=BqnAeUoqFAM -e azure -v ChristopherNeural

系统引擎

使用系统语音:

语音(-v参数)

以字符串形式提交语音名称。

示例:

turnvoice https://www.youtube.com/watch?v=BqnAeUoqFAM -e system -v David

注意事项

  • 处于早期alpha/开发中状态,可能会出现错误(请报告,以便我们修复)
  • 可能无法总是实现完美的唇形同步,尤其是在翻译成不同语言时
  • 说话人检测效果不佳,可能是操作有误或技术7尚未达到可靠水平
  • 翻译功能目前处于实验性原型状态(由deep-translate驱动),仍然产生不完美的结果
  • 偶尔,合成可能会在音频中引入意外的噪音或失真(我们在新的v0.0.30算法中大大减少了音频伪影)
  • 当源音频中同时存在说话声和带有歌唱的背景音乐时,spleeter可能会混淆

源质量

  • 对于具有清晰口语内容的YouTube视频(播客、教育视频)效果最佳
  • 需要高质量、干净的源WAV文件以实现有效的语音克隆

专业技巧

如何替换单个说话人

首先使用-a参数进行说话人分析:

turnvoice https://www.youtube.com/watch?v=2N3PsXPdkmM -a

然后使用-s参数从列表中选择一个说话人

turnvoice https://www.youtube.com/watch?v=2N3PsXPdkmM -s 2

许可证

TurnVoice自豪地采用Coqui公共模型许可证1.0.0

联系方式 🤝

与我分享你最有趣或最富创意的TurnVoice作品!

如果你有很酷的功能想法或只是想打个招呼,可以通过以下方式联系我:

如果你喜欢这个仓库,请给个星星
✨ 🌟 ✨

Footnotes

  1. 目前处于开发中状态(早期预Alpha版)。请预期CLI API可能会发生变化,如果有任何不如预期的情况,我们提前表示歉意。
    在Win 10上使用Python 3.11.4开发。

  2. 会产生费用。Elevenlabs价格较高,OpenAI TTSAzure价格较为合理。需要将API密钥存储在环境变量中,详情请参见引擎信息。

  3. 会产生费用。使用gpt-4-1106-preview模型,需要将OpenAI API密钥存储在环境变量OPENAI_API_KEY中。 2

  4. 需要Rubberband来进行音高保留的时间拉伸,以使合成音频适应时间窗口。

  5. 需要ffmpeg将mp3文件转换为wav格式。

  6. 需要Huggingface访问令牌来下载说话人分类模型,以使用pyannote.audio识别说话人。

  7. 使用pyannote.audio默认的HF实现在从原始音频分离出的人声轨道上进行说话人分类。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号