1、概述

coqui-ai开源的TTS,它的特色我总结为:可以上传自己的一段人声音频(哪怕就几句),它就能给你克隆了,并且把你要说的文字给转成语音读出来。

2、使用方法

开源地址:https://github.com/coqui-ai/TTS

1)环境

官方说的环境是在Ubuntu18.04上测的,应该至少是这个版本吧,python版本是>=3.9,<3.12。 当然用GPU肯定是最好的。

我的环境:ubuntu22.04,python给了3.10

2)安装

如果不自己整花活儿,就老老实实的用一下,那就这么办:

pip install TTS

就这么简单,当然来加个 -i 镜像速度会快点。

如果想自己训练啥的,就下载源码按教程弄吧,这里就不说了。

3)使用

就用它推荐的第一个例子和模型就行。

import torch

from TTS.api import TTS

# Get device 用GPU还是CPU

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

# List available TTS models 可以看都有些啥模型名字,注意此时模型文件都没有下载

#print(TTS().list_models())

# Init TTS 初始化,传入模型名字,这个路径就得用上面list里的路径,然后下载链接在python安装路径的TTS目录下,这个文件里写的.models.json

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

# Run TTS运行,必须设置语言

# Text to speech to a file 这是输出到文件了。

tts.tts_to_file(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")

注意点:

TTS加载的模型xtts_v2,这个路径在TTS().list_models()里的结果可以找到,如果要换其他模型,就看一下。

language一定要设,中文的是 “zh-cn”

speaker_wav是自己录的一段人声音频,它就是用这个来克隆声音的

file_path就是输出目录和文件名

4)出现的问题

运行程序后,会让你同意个协议,输入y回车就继续了。

第一次的时候会下载指定的这个模型,比如 xtts_v2,然后呢每次尴尬的就是下不下来。

只能想办法下载喽,反正最终要把文件放到这个目录下:

~/.local/share/tts/tts_models--multilingual--multi-dataset--xtts_v2

这一串tts_models--multilingual--multi-dataset--xtts_v2 是程序自动创建的目录,如果模型下载失败,这个目录会直接删掉的,注意。

那想知道模型下载地址的话,在一个json文件里,这个文件在python安装路径的site-packages/TTS目录下,叫 .models.json ,注意前面有个点。

比如这个模型的下载地址其实是:

https://huggingface.co/coqui/XTTS-v2/tree/main

程序会下载4个文件:

model.pth,vocab.json,config.json,hash.md5

所以最终下载目录里这4个都得在,不然程序又重新下,下不下来就删了目录。。

5)效果

我录了几句话,十几秒的音频,然后就能克隆输出了,我用GPU,速度很快,3秒内就输出了,当然这和传的音频还有合成文字的长度有关系。 我好像看到说合成的文字有长度限制,400个token还是咋,我也没试那么长的,以后注意一下。

效果猛的一听确实惊艳,甚至会模仿你传的音频的语气。 但是还是能听出来克隆的声音和原声有点区别,说的时候也会有不自然的地方出现。

当然了,已经很厉害了,也可能我还没找到更好的调教方法,完了试试录个比较长的音频让它克隆看看。