声音克隆项目coqui-aiTTS实战(大模型实战)

目录

coqui-aiTTS是一个开源的文本转语音(TTS)项目,旨在提供高质量的声音克隆和语音合成功能。它利用深度学习技术,能够模仿特定说话人的声音特征,实现个性化的语音输出。该项目支持多语言,并提供了训练工具,允许用户使用自己的数据集来创建定制的TTS模型。coqui-aiTTS的目标是为开发者和研究者提供一个灵活、强大的TTS解决方案,可用于各种应用场景,如虚拟助手、有声读物或个性化语音界面等。(CUDA驱动11.8)

一  coqui-aiTTS简介

1.1 coqui-aiTTS简介

1.2 oqui-aiTTS项目开源地址

二  依赖基础环境搭建

2.1 (Conda方式安装)Python安装(3.8版本)

2.2 PyTorch (for CUDA support)

2.3 eSpeak NG 安装

2.4 Coqui TTS代码下载和安装

1. Coqui TTS代码下载

三  coqui-aiTTS预训练模型合成声音

3.1 查看模型

3.2 合成英文声音

3.3 合成中文声音

四 coqui-aiTTS克隆声音

4.1 声音样本准备

4.2 metadata.csv文件准备

4.3 训练脚本准备

4.4 克隆训练

五 使用克隆的声音(训练含有克隆声音的模型)

5.1 tts-server命令

5.2 已经训练模型合成声音

六 模型部署常规异常与处理

6.1 下载问题

6.2 stft requires the return_complex parameter

6.3 ValueError:  [!] Model file not found in the output path

6.4 timeout('_ssl.c:1114: The handshake operation timed out'))


一  coqui-aiTTS简介

1.1 coqui-aiTTS简介

coqui-aiTTS是一个开源的文本转语音(TTS)项目,旨在提供高质量的声音克隆和语音合成功能。它利用深度学习技术,能够模仿特定说话人的声音特征,实现个性化的语音输出。该项目支持多语言,并提供了训练工具,允许用户使用自己的数据集来创建定制的TTS模型。coqui-aiTTS的目标是为开发者和研究者提供一个灵活、强大的TTS解决方案,可用于各种应用场景,如虚拟助手、有声读物或个性化语音界面等。(CUDA驱动11.8)

1.2 oqui-aiTTS项目开源地址

这个是github 上一个比较火的开源项目:GitHub - coqui-ai/TTS: 🐸💬 - a deep learning toolkit for Text-to-Speech, battle-tested in research and production

项目说明文档如下:TTS 0.22.0 documentation

二  依赖基础环境搭建

2.1 (Conda方式安装)Python安装(3.8版本)

conda create -n ttsenv python=3.8.10

首先安装conda,然后运行上面的命令,出现下面的情况,直接输出y。就可以安装指定版本的Python环境。

安装成功入下图所示。

输入:conda activate ttsenv 激活环境。

前缀显示如图,在表示进入指定的虚拟环境,这个环境和系统的python环境是隔离的。

2.2 PyTorch (for CUDA support)

进入下面的链接:Start Locally | PyTorch

选择适合自己的。

页面显示如下图所示:

复制其中的安装命令:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

成功安装页面显示:

验证是否成功安装

CMD终端输入:pip list,成功安装如图所示。

2.3 eSpeak NG 安装

eSpeak NG 安装地址如下:

Microsoft C++ 生成工具 - Visual Studio

CSDN:https://download.csdn.net/download/sdfghwijiebvnd/89664356

显示页面如下:

2.4 Coqui TTS代码下载和安装

1. Coqui TTS代码下载

如果网络环境比较好,直接使用git下载指定版本。

git clone GitHub - coqui-ai/TTS: 🐸💬 - a deep learning toolkit for Text-to-Speech, battle-tested in research and production(建议使用0.11.1,不然很可能需要的是Python 3.9以上版本)

如果网络环境不行,可以使用CSDN下载好的资源。

CSDN:https://download.csdn.net/download/sdfghwijiebvnd/89664369

  1. Coqui TTS安装

解压并进入项目文件夹,TTS-0.11.1

cd TTS-0.11.1

安装TTS命令:

pip install -e .

安装成功输出如图所示:

验证是否安装成功:pip list

出现TTS就代表安装成功了。

三  coqui-aiTTS预训练模型合成声音

3.1 查看模型

查看模型命令:

tts --list_models

输出所有预训练的模型:如下图所示:

3.2 合成英文声音

使用默认的模型生成一个英文语言。

tts --text "I love money " --out_path speech.wav

如果是第一次会先自动下载模型,如图所示。(如果下载异常见,5.3 ValueError:  [!] Model file not found in the output path

下载的模型默认位置如图所示:
C:\Users\yourname\AppData\Local\tts

成功显示输出如图所示:

生成的语言地址见CSDN: https://download.csdn.net/download/sdfghwijiebvnd/89664787

3.3 合成中文声音

合成中文的声音,选择一个支持中文的模型。

这里使用的是:

tts --text "愿您心想事成,幸福安康,前程似锦,家庭美满,事业有成,快乐常在。" --model_name "tts_models/zh-CN/baker/tacotron2-DDC-GST" --out_path speech_zh.wav

CSDN:https://download.csdn.net/download/sdfghwijiebvnd/89664856

coqui-aiTTS克隆声音

4.1 声音样本准备

声音样本需要是多个音频文件,每个音频文件对应一句话,以及这句话的文本。

这个样本越多越好,一般建议是1000句话以上,要是简单一点可以100句话也可以,但是效果的话可能不是很好。音频文件格式是wav格式。

注意:所有的文件的音频参数是一样的。如果不一样,先进行转换为统一的参数。

如图所示:

4.2 metadata.csv文件准备

这里使用的是LJSpeech 数据集,标准的数据集的 metadata.csv 文件通常包含三列数据,每一行代表一个音频文件及其对应的文本:

第一列:音频文件的基本名称(不包括文件扩展名)。例如:LJ001-0001

第二列:该音频文件对应的完整文本(未经处理的原始文本)。

第三列:该音频文件对应的处理过的文本(通常经过清理和标准化)。

01.wav|好好学习,天天向上?|好好学习,天天向上

02.wav|又是美好的一天|又是美好的一天

03.wav|认识你非常开心|认识你非常开心

4.3 训练脚本准备

这里使用的脚本是train_vits.py

详细配置如下:

import os

import re

from trainer import Trainer, TrainerArgs

from TTS.tts.configs.shared_configs import BaseDatasetConfig

from TTS.tts.configs.vits_config import VitsConfig

from TTS.tts.datasets import load_tts_samples

from TTS.tts.models.vits import Vits, VitsAudioConfig

from TTS.tts.utils.text.tokenizer import TTSTokenizer

from TTS.utils.audio import AudioProcessor

def main():

output_path = os.path.dirname(os.path.abspath(__file__))

#output_path = "c:\\temp\tts"

dataset_config = BaseDatasetConfig(

formatter="ljspeech",

        meta_file_train=r"metadata.csv",  #metadata.csv元数据文件地址

        path=r"wav"    #音频所有文件目录

)

audio_config = VitsAudioConfig(

#音频配置,需要和实际的相匹配

sample_rate=22050, win_length=1024, hop_length=256, num_mels=80, mel_fmin=0, mel_fmax=None

)

config = VitsConfig(

audio=audio_config,

#生成的目录名称前缀

run_name="vits_chinese_voice",

batch_size=4,

eval_batch_size=4,

batch_group_size=5,

num_loader_workers=1,

num_eval_loader_workers=1,

run_eval=True,

test_delay_epochs=-1,

epochs=1000,

text_cleaner="chinese_mandarin_cleaners",

use_phonemes=False,

phoneme_language="zh",

phoneme_cache_path=os.path.join(output_path, "phoneme_cache"),

compute_input_seq_cache=True,

print_step=25,

print_eval=True,

mixed_precision=False,

output_path=output_path,

datasets=[dataset_config],

cudnn_benchmark=False,

#模型训练过程中需要测试的语句配置

test_sentences=[

  "这是一个测试句子。",

  "欢迎使用语音合成模型。",

  "请确保你的数据集格式正确。",

],

)

# INITIALIZE THE AUDIO PROCESSOR

# Audio processor is used for feature extraction and audio I/O.

# It mainly serves to the dataloader and the training loggers.

ap = AudioProcessor.init_from_config(config)

# INITIALIZE THE TOKENIZER

# Tokenizer is used to convert text to sequences of token IDs.

# config is updated with the default characters if not defined in the config.

tokenizer, config = TTSTokenizer.init_from_config(config)

# LOAD DATA SAMPLES

# Each sample is a list of ```[text, audio_file_path, speaker_name]```

# You can define your custom sample loader returning the list of samples.

# Or define your custom formatter and pass it to the `load_tts_samples`.

# Check `TTS.tts.datasets.load_tts_samples` for more details.

train_samples, eval_samples = load_tts_samples(

dataset_config,

eval_split=True,

eval_split_max_size=config.eval_split_max_size,

# eval_split_size=config.eval_split_size,

    eval_split_size=0.025,

)

# init model

model = Vits(config, ap, tokenizer, speaker_manager=None)

# init the trainer and

trainer = Trainer(

TrainerArgs(),

config,

output_path,

model=model,

train_samples=train_samples,

eval_samples=eval_samples,

)

trainer.fit()

print("tts!")

from multiprocessing import Process, freeze_support

if __name__ == '__main__':

    freeze_support()  

    main()

4.4 克隆训练

训练的话运行脚本就可以。(如果出现问题的话,参考:5.2 stft requires the return_complex parameter)

python train_vits.py

成功训练如图所示:

这个训练的过程一般比较漫长。训练的数据写入到一个文件夹。

生成的目录大概长成这个样子。

目录里面的文件如下图所示。其中红框的地方就是我们需要的。

五 使用克隆的声音(训练含有克隆声音的模型)

5.1 tts-server命令

这个命令是启动一个可视化的web页面

下面看下使用方式。

tts-server --help

,通过帮助,可以看出如何添加之前的配置:

一个是--model_path MODEL_PATH

一个是--config_path CONFIG_PATH

5.2 已经训练模型合成声音

这里还是使用tts-server命令。

进入到生成目录,输入如下命令:

tts-server --config_path  config.json  --model_path best_model.pth

控制台输出如图所示。

下面就可以浏览器使用自己克隆的声音了。

http://localhost:5002/

如果不出意外的话,可以看到下面的页面。

在其中小框输入要生成的内容,就可以输出自己的声音了。

最终效果如图所示。

最后恭喜你已经完成克隆自己的声音了!!!

六 模型部署常规异常与处理

6.1 下载问题

Github给的安装方式不一定可以下载:
git clone https://github.com/coqui-ai/TTS

pip install -e .[all,dev,notebooks]  # Select the relevant extras

要是不行直接下载安装包就可以。

CSDN:https://download.csdn.net/download/sdfghwijiebvnd/89664369

6.2 stft requires the return_complex parameter

出现这个问题是版本不兼容的问题,不过没有关系,可以做一些小的修改。

问题现象如图所示:

更具位置找到下面文件,functional.py,报错上有显示文件地址。

C:\Users\yourusername\.conda\envs\ttsenv\lib\site-packages\torch\functional.py

然后进行修改,找到666行,并添加如下代码。

   

    if not return_complex:

        return torch.view_as_real(_VF.stft(input, n_fft, hop_length, win_length, window,  

                                           normalized, onesided, return_complex=True))

插入后的代码如下图所示:

6.3 ValueError:  [!] Model file not found in the output path

出现ValueError:  [!] Model file not found in the output path这个报错往往是没有正确下载模型,但是运行识别时候发现已经找到文件夹,但是运行不了。报错如图所示:

解决办法很简单,到模型目录删除不完整模型,位置:

C:\Users\yourname\AppData\Local\tts。

删除后重新运行命令即可。

重新下载如图所示:

6.4 timeout('_ssl.c:1114: The handshake operation timed out'))

这个问题主要是网络不通,需要解决网络问题,看看是不是代理的问题,是的话关闭或者开启即可。

问题显示如下图:

成功安装应该是这个样子:

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值