目录
coqui-aiTTS是一个开源的文本转语音(TTS)项目,旨在提供高质量的声音克隆和语音合成功能。它利用深度学习技术,能够模仿特定说话人的声音特征,实现个性化的语音输出。该项目支持多语言,并提供了训练工具,允许用户使用自己的数据集来创建定制的TTS模型。coqui-aiTTS的目标是为开发者和研究者提供一个灵活、强大的TTS解决方案,可用于各种应用场景,如虚拟助手、有声读物或个性化语音界面等。(CUDA驱动11.8)
2.1 (Conda方式安装)Python安装(3.8版本)
2.2 PyTorch (for CUDA support)
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
- 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
控制台输出如图所示。
下面就可以浏览器使用自己克隆的声音了。
如果不出意外的话,可以看到下面的页面。
在其中小框输入要生成的内容,就可以输出自己的声音了。
最终效果如图所示。
最后恭喜你已经完成克隆自己的声音了!!!
六 模型部署常规异常与处理
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'))
这个问题主要是网络不通,需要解决网络问题,看看是不是代理的问题,是的话关闭或者开启即可。
问题显示如下图:
成功安装应该是这个样子: