Coqui - ai公司推出的Coqui TTS作为一款先进的开源TTS项目,为开发者和用户带来了前所未有的便利和创新。本文将深入剖析Coqui TTS的模型架构、功能特点、应用场景以及使用方法,带您领略这款神奇工具的魅力。
Github地址:https://github.com/coqui-ai/tts
项目地址:https://huggingface.co/spaces/coqui/xtts
文档地址:https://tts.readthedocs.io/en/dev/models/xtts.html
一、模型概述
二、技术架构
文本到频谱模型
说话人编码器
声码器模型
三、功能特点
跨语种语音克隆
丰富的预训练模型
灵活的训练工具
语音控制和编辑
低资源适应性
四、应用场景
语音助手
教育领域
娱乐产业
辅助技术
客户服务
五、快速使用
1、安装TTS
2、运行多说话者和多语言模型
import torch
from TTS.api import TTS
# 获取设备
# 如果CUDA可用,则使用GPU,否则使用CPU
device = "cuda" if torch.cuda.is_available() else "cpu"
# 列出可用的🐸TTS模型
# 打印出所有可用的TTS模型,供用户选择
print(TTS().list_models())
# 初始化TTS模型
# 使用多语言、多数据集的xtts_v2模型
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)
# 运行TTS模型
# ❗由于这个模型是多语言声音克隆模型,我们必须设置目标speaker_wav和language
# 将文本转换为语音的振幅值列表作为输出
wav = tts.tts(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en")
# 将文本转换为语音并保存到文件
# 使用指定的声音样本和语言将文本"Hello world!"转换为语音,并保存到"output.wav"
tts.tts_to_file(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav") 3、运行单个说话者模型
# 初始化TTS(文本到语音)模型,指定目标模型名称,并设置进度条为False
# 这里使用的是Tacotron2-DDC模型,专门用于德语语音合成
tts = TTS(model_name="tts_models/de/thorsten/tacotron2-DDC", progress_bar=False).to(device)
# 运行TTS模型,将文本转换为语音并保存到文件
# 这里将德语文本"Ich bin eine Testnachricht."转换为语音并保存到OUTPUT_PATH指定的路径
tts.tts_to_file(text="Ich bin eine Testnachricht.", file_path=OUTPUT_PATH)
# 示例:使用YourTTS进行英语、法语和葡萄牙语的声音克隆
# 重新初始化TTS模型,这次使用的是多语言、多数据集的YourTTS模型
tts = TTS(model_name="tts_models/multilingual/multi-dataset/your_tts", progress_bar=False).to(device)
# 将英文文本"This is voice cloning."转换为语音,并使用指定的声音样本进行声音克隆,保存到"output.wav"
tts.tts_to_file("This is voice cloning.", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")
# 将法语文本"C'est le clonage de la voix."转换为语音,并使用指定的声音样本进行声音克隆,保存到"output.wav"
tts.tts_to_file("C'est le clonage de la voix.", speaker_wav="my/cloning/audio.wav", language="fr-fr", file_path="output.wav")
# 将葡萄牙语文本"Isso é clonagem de voz."转换为语音,并使用指定的声音样本进行声音克隆,保存到"output.wav"
tts.tts_to_file("Isso é clonagem de voz.", speaker_wav="my/cloning/audio.wav", language="pt-br", file_path="output.wav") 4、声音转换
将源声音文件source_wav中的声音转换为目标声音文件target_wav中的声音,并保存到output.wav
# 初始化声音转换模型,这里使用的是VCTK数据集上的FreeVC24模型,专门用于多语言声音转换
tts = TTS(model_name="voice_conversion_models/multilingual/vctk/freevc24", progress_bar=False).to("cuda")
# 将源声音文件"my/source.wav"中的声音转换为目标声音文件"my/target.wav"中的声音,并保存到"output.wav"
tts.voice_conversion_to_file(source_wav="my/source.wav", target_wav="my/target.wav", file_path="output.wav") 5、结合声音克隆和声音转换模型
# 通过这种方式,你可以使用🐸TTS中的任何模型进行声音克隆。
# 初始化TTS模型
# 这里使用的是德语Tacotron2-DDC模型
tts = TTS("tts_models/de/thorsten/tacotron2-DDC")
# 使用TTS模型和声音转换模型进行声音克隆并保存到文件
# tts_with_vc_to_file函数结合了TTS和声音转换的功能,允许我们克隆一个声音
# 这里的文本是德语,询问如何用意大利语表达“我爱你”
tts.tts_with_vc_to_file(
# 需要转换的文本
"Wie sage ich auf Italienisch, dass ich dich liebe?",
# 目标说话者的声音样本文件路径
speaker_wav="target/speaker.wav",
# 输出文件的路径
file_path="output.wav"
) 