在人工智能技术的不断进步中,声音合成技术也迎来了新的发展机遇。Aivis项目正是这一领域的杰出代表,它提供了一个全流程的工具,让用户能够从数据集的创建到学习再到推理,一站式地生成逼真的语音。
Aivis是一个基于Bert-VITS2模型的系统,它通过自动化的流程,大幅减少了从一般音源创建学习用数据集所需的工作量和时间。Aivis的设计理念是简化数据准备过程,并通过Web UI简化最终的人工注释工作,使得用户即使没有专业知识也能轻松创建高质量的语音数据集。系统具有以下特点:
- 自动化数据准备:Aivis利用AI技术自动化了从普通音源创建数据集的过程,包括背景噪音的去除和语音的分割。
- 高质量的语音生成:即使是使用Aivis创建的较短数据集训练的模型,也能生成与专用语音库训练出的模型相媲美的高质量语音。
- 易于使用的Web UI:Aivis提供了一个Web界面,使用户能够轻松地进行数据集的最终编辑和注释。
安装与使用
安装Aivis
系统要求
Aivis主要在Linux(Ubuntu 20.04 LTS)x64环境下进行了测试。对于Windows用户,建议使用WSL2。此外,Aivis的运行需要NVIDIA GPU支持。
安装步骤
-
安装基础软件:
- Git
- Python 3.11
- Poetry
- FFmpeg
-
获取Aivis项目代码:
git clone --recurse https://github.com/tsukumijima/Aivis.git
-
创建Python虚拟环境并安装依赖:
cd Aivis poetry env use 3.11 poetry install --no-root
-
更新已安装的环境: 如果需要更新到最新版本,可以使用以下命令:
git pull git submodule update --init --recursive poetry install --no-root
Docker安装
对于希望使用Docker的用户,需要先安装Git和Docker。然后执行以下命令:
-
获取Aivis项目代码:
git clone --recurse https://github.com/tsukumijima/Aivis.git
-
构建Docker镜像:
cd Aivis ./Aivis-Docker.sh build
-
使用Docker运行Aivis:
./Aivis-Docker.sh --help
使用Aivis
数据集准备
-
将音源文件放入
01-Sources
目录下。支持多种音频格式,系统会自动转换为wav格式。 -
如果音源文件较长,建议分割成10分钟左右的小文件,以提高转录精度。
数据集预处理和分割
使用以下命令进行音频的预处理和分割:
# Non-Docker
./Aivis.sh create-segments
# Docker
./Aivis-Docker.sh create-segments
这个命令会去除背景BGM和噪音,并将音频分割成单独的句子。
数据集创建(注释)
通过以下命令启动Web UI,进行手动注释:
# Non-Docker
./Aivis.sh create-datasets '*' 'MySpeaker1,MySpeaker2'
# Docker
./Aivis-Docker.sh create-datasets '*' 'MySpeaker1,MySpeaker2'
在这里,*
代表03-Segments
目录下的所有子目录,MySpeaker1,MySpeaker2
是创建数据集的说话者名称。
模型训练
使用以下命令开始模型训练:
# Non-Docker
./Aivis.sh train 'MySpeaker1' --steps 8000 --batch-size 4
# Docker
./Aivis-Docker.sh train 'MySpeaker1' --steps 8000 --batch-size 4
在这里,--steps
指定了训练的步数,--batch-size
指定了训练时的批量大小。
模型推理
使用以下命令启动推理用的Web UI:
# Non-Docker
./Aivis.sh infer 'MySpeaker1' --model-step 5000
# Docker
./Aivis-Docker.sh infer 'MySpeaker1' --model-step 5000
在这里,--model-step
指定了使用哪个步数的模型进行推理。
注意事项
- 确保安装了所有必要的依赖项和库。
- 在使用Docker时,确保Docker环境配置正确。
- 在训练模型时,根据GPU的性能调整
batch-size
和steps
参数。 - 推理时,可以通过调整
--model-step
来使用不同训练阶段的模型,以获得最佳效果。
数据集目录结构
Aivis的数据集目录结构分为五个主要部分,每个部分都有特定的作用:
-
01-Sources - 存放原始音源文件。
-
02-PreparedSources - 存放预处理后的音源文件和转录文本。
-
03-Segments - 存放分割后的音源文件。
-
04-Datasets - 存放最终的手动创建的数据集。
-
05-Models - 存放训练生成的模型。
各部分详细说明
01-Sources
-
作用:这是存放将要制作成数据集的原始音源文件的目录。
-
内容:可以是任何格式的音频文件,系统会自动将其转换为wav格式。
-
处理:无需事先去除背景音乐或噪音,也无需分割音频文件,这些工作会在后续步骤中自动完成。
02-PreparedSources
-
作用:存放经过预处理的音频文件和对应的转录文本。
-
内容:
-
音频文件:经过背景噪音去除和格式转换后的wav文件。
-
转录文本:使用语音识别技术生成的文本,格式为JSON。
-
-
命名规则:音频文件和转录文本的文件名与原始音源文件名相对应。
03-Segments
-
作用:存放根据转录文本分割后的音频文件。
-
内容:每个分割的音频片段对应一个转录的句子或短语。
-
命名规则:文件名通常包含原始音源文件名、一个序列号和对应的转录文本。
04-Datasets
-
作用:存放最终的、经过人工审核和可能的编辑的数据集。
-
内容:
-
音频文件:存放在
audio/wavs/
目录下,每个文件对应一个分割的音频片段。 -
转录文本:存放在
transcripts.list
文件中,通常包含音频文件名和对应的文本。
-
-
创建:通过
create-datasets
命令启动的Web UI手动创建。
05-Models
-
作用:存放通过训练生成的Bert-VITS2模型。
-
内容:模型文件和相关配置。
-
创建:通过
train
命令生成。
使用指南
-
在01-Sources目录下放置原始音频文件。
-
运行
create-segments
命令进行音频预处理和分割,生成02-PreparedSources和03-Segments目录下的内容。 -
使用
create-datasets
命令和Web UI对03-Segments中的音频进行人工审核和编辑,创建04-Datasets目录下的数据集。 -
运行
train
命令使用04-Datasets中的数据集训练模型,并将结果保存在05-Models目录下。
注意事项
-
确保音频文件质量尽可能高,以便生成高质量的数据集。
-
在02-PreparedSources和03-Segments目录中,如果转录文本不准确,可以删除对应的JSON文件,重新运行
create-segments
命令以重新生成。 -
在04-Datasets目录中创建数据集时,仔细选择说话者并编辑转录文本以确保数据集的质量。
Aivis项目以其创新性和易用性,为语音合成领域带来了新的可能。无论是研究者还是开发者,都可以利用这个工具来探索和实现个性化的语音合成应用。期待Aivis在未来能够带来更多的创新和突破。
项目地址:GitHub - tsukumijima/Aivis: 💠 Aivis: AI Voice Imitation System