TurnVoice

TurnVoice

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

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

TurnVoice语音转换视频处理AI命令行工具Github开源项目

TurnVoice

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

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

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

功能

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

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

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

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

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

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

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

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

发布说明中了解更多。

先决条件

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

  • 安装NVIDIA CUDA Toolkit 11.8

    <details> <summary>安装NVIDIA CUDA Toolkit:</summary> </details>
  • 安装NVIDIA cuDNN

    <details> <summary>安装NVIDIA cuDNN:</summary>
    • 访问NVIDIA cuDNN存档
    • 下载并安装软件。
      (测试版本为v8.7.0,更新版本也应该可以工作)
    </details>
  • 安装Rubberband命令行工具 4

  • 安装ffmpeg命令行工具 5

    <details> <summary>使用包管理器安装ffmpeg:</summary>
    • 在Ubuntu或Debian上:

      sudo apt update && sudo apt install ffmpeg
    • 在Arch Linux上:

      sudo pacman -S ffmpeg
    • 在MacOS上使用Homebrew (https://brew.sh/):

      brew install ffmpeg
    • 在Windows上使用Chocolatey (https://chocolatey.org/):

      choco install ffmpeg
    • 在Windows上使用Scoop (https://scoop.sh/):

      scoop install ffmpeg
    </details>
  • 接受Huggingface的说话人分离分段条件

  • 在环境变量HF_ACCESS_TOKEN中设置Huggingface访问令牌 6

[!提示] 使用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

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

<details> <summary>Coqui引擎支持的语言</summary>
简写语言
ar阿拉伯语
cs捷克语
de德语
en英语
es西班牙语
fr法语
it意大利语
hu匈牙利语
ja日语
ko韩语
nl荷兰语
pl波兰语
pt葡萄牙语
ru俄语
tr土耳其语
zh-cn中文
</details> <details> <summary>其他引擎支持的语言</summary> 确保在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祖鲁语
</details>

Coqui引擎

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

<details> <summary>使用Coqui的语音:</summary>

语音(-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"
</details>

Elevenlabs引擎

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

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

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

<details> <summary>使用Elevenlabs的语音:</summary>

语音(-v参数)

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

示例:

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

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

OpenAI引擎

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

<details> <summary>使用OpenAI的语音:</summary>

语音(-v参数)

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

示例:

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

Azure引擎

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

<details> <summary>使用Azure语音:</summary>

语音(-v参数)

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

示例:

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

系统引擎

<details> <summary>使用系统语音:</summary>

语音(-v参数)

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

示例:

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

注意事项

  • 处于早期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实现在从原始音频分离出的人声轨道上进行说话人分类。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多