IMS-Toucan
综合介绍
IMS-Toucan 是一个开源的文本转语音(TTS)工具包,由德国斯图加特大学自然语言处理研究所(IMS)开发。 这个项目完全基于 Python 和 PyTorch 框架搭建,设计的初衷是为了让先进的语音合成模型的教学、训练和使用过程变得简单。 该工具包的核心是集成了当前主流的 FastSpeech 2 和 HiFi-GAN 模型,允许用户将文本输入直接转换成高质量的语音波形文件。 IMS-Toucan 不仅支持使用者训练全新的语音模型,也可以对现有的预训练模型进行微调,以实现特定声音的克隆或风格迁移。 它一个显著的特点是其大规模的多语言支持能力,理论上可以覆盖超过7000种语言,为处理资源较少的语言提供了可能。 同时,项目也提供了预训练好的模型,让用户可以不用经过复杂的训练流程,直接上手体验语音合成功能。
功能列表
- 模型训练: 支持使用 FastSpeech 2 架构从头开始训练文本转语音模型。
- 声码器训练: 支持训练基于 HiFi-GAN 的声码器,用于将声学特征(如梅尔频谱)转换成高质量的音频波形。
- 端到端训练: 能够联合训练 FastSpeech 2 和 HiFi-GAN,实现从文本直接到波形文件的一体化生成。
- 模型微调: 用户可以利用官方提供的预训练模型进行微调,从而用较少的数据克隆特定的嗓音。
- 多语言与多说话人支持: 工具包通过使用音素的发音表征作为输入,能够利用多语言数据来提升资源稀缺语言的合成效果,并支持多说话人模型。
- 语音合成接口: 提供简单易用的 Python 接口,用户可以加载训练好的模型,输入文本字符串,然后生成语音文件或直接播放。
- 预训练模型: 提供多个预训练好的模型,包括多语言模型、对齐器和声码器等,用户下载后可直接用于语音合成。
- 可控合成: 允许用户在一定程度上控制生成语音的风格,例如通过调整韵律、重音和语调。
使用帮助
IMS-Toucan 是一个功能强大的工具,以下是详细的安装和使用流程,帮助你从零开始上手。
1. 环境准备与安装
在使用该工具包前,你需要准备一个合适的运行环境。官方推荐使用 Python 3.10 版本。
1.1. 基础环境安装 (以Linux为例)
首先,需要将项目代码从 GitHub 克隆到本地。如果你的电脑配备了支持 CUDA 的英伟达显卡,那么就可以在本地进行模型训练;如果只是进行语音合成(即推理),则不需要显卡。
# 克隆项目仓库
git clone https://github.com/DigitalPhonetics/IMS-Toucan.git
# 进入项目目录
cd IMS-Toucan
对于 Linux 系统,需要确保安装了一些基础的软件包,大部分系统可能已经预装。
# 在Debian/Ubuntu系统上安装依赖
sudo apt-get install libsndfile1 espeak-ng ffmpeg libasound-dev libportaudio2 libsqlite3-dev
官方强烈建议使用虚拟环境来管理项目依赖,避免与系统中的其他 Python 包产生冲突。
# 创建一个名为 "toucan_env" 的虚拟环境
python3.10 -m venv toucan_env
# 激活虚拟环境
source toucan_env/bin/activate
# 安装所有必需的Python库
pip install --no-cache-dir -r requirements.txt
每次需要使用此工具时,都记得先运行 source toucan_env/bin/activate
来激活虚拟环境。
1.2. Windows 和 macOS 用户的注意事项
- Windows: 创建和激活虚拟环境的命令有所不同,请参考 Python 官方的
venv
文档。eSpeak-NG
需要从其 GitHub 发布页面下载.msi
安装程序进行安装。安装后,需要设置一个名为PHONEMIZER_ESPEAK_LIBRARY
的环境变量,指向espeak-ng
的安装路径。 - macOS (M1/M2芯片): 可能会遇到一些兼容性问题,建议通过 Rosetta 2 来运行。同时需要注意环境变量的配置。
2. 使用预训练模型进行语音合成
对于不想进行复杂训练的用户,最快体验功能的方式是使用官方提供的预训练模型。
2.1. 下载预训练模型
项目提供了一个脚本,可以自动下载所有需要的模型文件并放置到正确的目录。
# 确保你处于已激活虚拟环境的项目根目录下
python -m toucan_inference.run_model_downloader
这个脚本会自动从网上下载多语言模型、声码器等必要文件。
2.2. 执行语音合成
IMS-Toucan 提供了一个名为 ToucanTTSInterface.py
的推理接口,用于加载模型和生成语音。 你可以创建一个简单的 Python 脚本来调用它。
例如,创建一个名为 synthesize.py
的文件:
from toucan_inference.inference_models.ToucanTTS.ToucanTTSInterface import ToucanTTSInterface
# 初始化接口,指定模型目录和设备
# 如果有GPU,可以使用 'cuda',否则使用 'cpu'
tts_interface = ToucanTTSInterface(model_name="Meta", device="cuda" if torch.cuda.is_available() else "cpu")
# 要转换的文本列表
text_to_synthesize = [
"Hello world, this is a test.",
"你好世界,这是一个测试。"
]
# 设置语言,例如英语(eng)或中文(cmn)
tts_interface.set_language("eng")
# 将文本列表转换为语音,并保存为 output.wav 文件
tts_interface.read_to_file(
text_list=text_to_synthesize,
file_location="output.wav"
)
print("语音合成完成,文件已保存为 output.wav")
运行这个脚本:
python synthesize.py
你就可以在项目根目录下找到生成的 output.wav
文件。
3. 训练自己的语音模型
如果你有自己的数据集,并希望训练一个独特的语音模型,可以遵循以下步骤。
3.1. 准备数据集
训练模型需要一个数据集,其中包含一系列音频文件(通常是 .wav
格式)以及与之精确对应的文本内容。你需要将这些数据整理成一个特定的格式:一个 Python 字典。
你需要修改 Utility/path_to_transcript_dicts.py
这个文件。在里面创建一个函数,这个函数返回一个字典,字典的键(key)是音频文件的绝对路径,值(value)是该音频对应的文本转录。
例如:
def my_custom_dataset():
# 这是一个示例字典
return {
"/path/to/my/audio/sample1.wav": "This is the first sentence.",
"/path/to/my/audio/sample2.wav": "This is the second sentence."
}
3.2. 创建训练流程
在 TrainingInterfaces/Recipes
目录下,你可以创建一个新的 Python 脚本来定义你的训练流程。可以参考该目录下的 finetuning_example.py
文件。 在这个脚本里,你需要导入你刚刚在 path_to_transcript_dicts.py
中创建的函数,并设置训练参数,例如训练步数、批次大小等。
3.3. 开始训练
训练是通过 toucan_train.py
脚本启动的。你需要通过命令行参数指定你要运行的训练流程(pipeline)和你选择的GPU。
# 示例:运行一个名为 'my_pipeline' 的训练流程,使用第0块GPU
python -m toucan_train --pipeline my_pipeline --gpu-id 0
训练过程会显示在终端中,同时你也可以使用 TensorBoard 工具来可视化监控训练的进度和损失函数的变化。
应用场景
- 学术研究对于语音合成领域的研究人员,IMS-Toucan 提供了一个灵活的实验平台。他们可以利用这个工具包来验证新的模型架构、测试不同的声学特征或探索跨语言语音合成技术。
- 创建自定义语音助手企业或个人开发者可以利用此工具包,通过对自己录制的声音数据进行训练或微调,为自己的应用程序或智能设备创建具有独特性格和品牌辨识度的语音助手。
- 内容创作自动化播客、有声书或视频制作者可以使用 IMS-Toucan 为其内容自动生成旁白或配音。特别是其多语言能力,使得为不同国家和地区的用户提供本地化内容成为可能。
- 辅助工具开发可以用于开发面向视障人士的辅助阅读工具,或者为语言学习软件提供标准发音的范例。其对低资源语言的支持,使得这些应用能够服务于更广泛的人群。
QA
- IMS-Toucan 是基于什么技术开发的?IMS-Toucan 完全基于 Python 和 PyTorch 框架开发。 其核心语音合成模型主要借鉴了 FastSpeech 2 和 HiFi-GAN 的架构。
- 我可以直接使用它来合成语音,而不用自己训练模型吗?可以。IMS-Toucan 提供了预训练好的模型。你只需要下载这些模型文件,就可以通过简单的脚本调用推理接口,直接将文本转换为语音。
- 训练一个全新的语音模型需要准备什么?你需要一个包含成对数据的数据集,即大量的音频文件和每个音频文件对应的准确文本。 然后需要按照工具包的要求编写一个函数来加载这些数据,并配置一个训练流程脚本来启动训练。
- 这个工具包对硬件有什么要求?进行语音合成(推理)对硬件要求不高,普通的 CPU 就可以运行。 但是,如果要训练新的模型,强烈建议使用一块支持 CUDA 的英伟达(NVIDIA)显卡,因为这会大大缩短训练所需的时间。