20秒克隆声音的方法!效果不错,没有显卡也可以!TTS

有些事情就很离谱!!!

我刚写完MyHeygen的文章,这个项目就消失了!我还花了好几天做了Colab脚本,白干。

因为写的是脚本,我大意了,没有fork源项目,也没clone到本地….

拆解这个项目之后,其实主要就是声音驱动画面和声音克隆这两项核心技术。

今天来说说声音克隆这部分。

曾经有个项目很火,号称5秒就能克隆声音,但是实际效果很拉胯。

我之前也分享过一个叫so-vits-svc的项目,效果确实不错,但是需要大量优质的音频素材来训练,有些场景下克隆转换上会有一些问题,上手还是有一定难度。

今天分享一个,无需训练,无需大量音频素材,20秒就能克隆语音的方法。

这个20秒,指的是只要20秒的原始素材,同时也可以指在CPU模式下,合成一句话的时间。实际上10秒钟也可以,GPU模式下合成也会快很多。

完成这一切,全靠一个牛逼的Python项目–TTS。

这是一个用于文本转语音的深度学习工具包,经过研究和生产实践的考验。相比一些玩具类项目,这个实用性会比较高。免费的离线版可供大家研究,收费的在线版可以提高效率和质量。

先来感受一下效果。

这是某巴的一段19秒原始录音:

这是用GPT生成的故事文本:

在一个炎热的夏日,小猫咪在树荫下找到了一个冰凉的西瓜。

这是根据文本生成的语音

这是某路人甲声音克隆后的效果

路人甲的视频由IPhone13pro录制,原始声音只有8秒,有一定的环境噪音,但是最终合成效果还挺干净,音色也克隆的比较到位。

下面是直接声音转声音,音色克隆后的效果!

确实有点东西啊!相似度不能说特别高,但是声音很好听啊。相比文本合成语音的方式会自然很多,也没有读音咬字的问题。

效果看完了,下面就来实操了。

 

1.环境准备

一台普通电脑,没有显卡也没关系,有显卡自然是最好!

本地准备好Python环境,推荐使用conda。

创建虚拟环境

conda create -n tts python=3.10

创建成功之后激活虚拟环境

conda activate tts

2. 安装配置

 

TTS的安装非常简单,只要直接用命令安装TTS就可以了

pip install TTS

3. 准备素材

准备一段20秒正常说话的录音,不要有背景音乐,不要有噪声,声音越纯净越好。

注意要使用.wav结尾的音频文件。如果是.m4a可以通过工具转换,或者使用如下命令转换。

ffmpeg -i test.m4a test.wav

使用命令的话,前提当然是你安装了ffmpeg!

 

4.运行代码

 

简单准备之后立马就可以上手实操作了。

复制以下代码到自己的IDE或者文本编辑器。

 

import torch
from TTS.api import TTS

# 设备
device = "cuda" if torch.cuda.is_available() else "cpu"

# 列出 🐸TTS 的所有可用模型
print(TTS().list_models())

# 初始化TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)

# 运行TTS
# 多语言模型必须指定目标语言
# 文本转语音
tts.tts_to_file(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")

 

修改一下关键参数,主要是最后一行。

模型使用官方推荐的最新模型xtts_v2,不需要修改。

text改成你要它说的文字内容

speaker_wav改成声音克隆的素材

language 是目标语言,说中文就用“zh-cn”

file_path 合成后音频文件名。

然后就可以运行了

python test.py

运行过程中会需要同意相关的协议!

只要输入y ,按回车就可以了。

上面的代码逻辑是,克隆声音,然后再把指定的文本转换成语音。

还可以使用直接语言转语音的方式克隆声音!

修改两行代码即可:

 

tts = TTS(model_name="voice_conversion_models/multilingual/vctk/freevc24", progress_bar=False).to("cuda")
tts.voice_conversion_to_file(source_wav="my/source.wav", target_wav="my/target.wav", file_path="output.wav")

 

根据自己的情况修改下面三个参数

source_wav 指的是声音的来源

target_wav 指的是目标声音

file_path 指的是处理后的声音

修改完成后运行即可:

 

python test.py

 

5. 加速运行

没有显卡的情况下,默认会使用CPU合成。如果有GPU可以提升合成效率,加速很多。

要使用GPU的话,需要安装GPU版torch 2.1.1版本,老版本可能会出现错误。

 

pip install torch==2.1.1+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

安装完成后,运行同一段代码,就能使用GPU了。

好东西不用吹,其他我就不多说什么了!

 

这项目只要包装一下,加个牛逼的名头,就可以…

 

发现好东西,我可没藏着掖着,你们也别保留,记得动动手指!

 

 

小尾巴==========================
公众号:托尼不是塔克
交流群
知识星球
==============================