首页 > 极客资料 博客日记

GPT-SoVITS语音合成模型实践

2024-09-29 22:00:03极客资料围观17

这篇文章介绍了GPT-SoVITS语音合成模型实践,分享给大家做个参考,收藏极客之家收获更多编程知识

1.概述

GPT-SoVITS是一款开源的语音合成模型,结合了深度学习和声学技术,能够实现高质量的语音生成。其独特之处在于支持使用参考音频进行零样本语音合成,即使没有直接的训练数据,模型仍能生成相似风格的语音。用户可以通过微调模型,进一步提升其性能,以适应特定的应用需求。

2.内容

2.1 GPT-SoVITS简介

这个开源的文本到语音(TTS)项目可以在Linux、MacOS和Windows系统上运行,具有极高的灵活性和兼容性。用户只需提供一段长达1分钟的音频文件,即可轻松克隆特定的声音。该项目支持将汉语、英语和日语的文本转换为克隆的语音,为多语言环境中的应用提供了便利。

 

2.2 语音合成

VITS是一种用于端到端文本到语音(TTS)的模型,结合了对抗学习和条件变分自动编码器,旨在生成高质量的语音效果。近年来,虽然已经提出了多种单阶段训练和并行采样的TTS模型,但它们的样本质量往往无法与传统的两阶段系统相媲美。为了解决这个问题,VITS采用了一种并行的端到端方法,能够生成更自然、更真实的声音。

该模型通过标准化流和对抗训练过程增强的变分推理,显著提升了生成建模的表达能力。此外,VITS引入了随机持续时间预测器,能够从输入文本中合成出节奏各异的语音。这种设计允许模型捕捉潜在变量的不确定性,形成了一种自然的一对多关系,使得同一段文本可以以不同的音高和节奏进行多样化的表达。这种灵活性和高质量的输出使VITS在语音合成领域中具备了广泛的应用潜力。

2.3 Whisper语音识别

Whisper是OpenAI开发的先进自动语音识别(ASR)系统,经过训练的语料库包含68万小时的多语言(涵盖98种语言)和多任务监督数据。OpenAI认为,这种庞大且多样化的数据集显著提升了系统对各种口音、背景噪音和专业术语的识别能力,使其在实际应用中表现出色。

除了语音识别功能,Whisper还支持多种语言的转录和翻译,能够将非英语语言直接翻译成英语。这种多功能性使得Whisper不仅适用于语音转文字的任务,还能在国际交流、内容创建和教育等领域发挥重要作用。凭借其出色的准确性和灵活性,Whisper为用户提供了一个强大的工具,有助于打破语言障碍,促进沟通与理解。

Whisper的基本原理基于一种Transformer序列到序列模型,旨在处理多种语音任务,包括多语言语音识别、语音翻译、口语语言识别以及语音活动检测。通过将这些任务统一表示为一个需要解码器预测的符号序列,Whisper能够有效地替代传统语音处理管道中的多个阶段,简化了处理流程。

该模型采用多任务训练的格式,使用一系列特殊符号作为任务指示符或分类目标。这种设计不仅提升了模型的灵活性,还使其在处理不同类型的语音输入时表现出色。例如,当面对多种语言或不同口音时,Whisper能够利用其训练数据中的丰富信息,快速适应并提高识别准确性。通过这种创新的方法,Whisper在语音处理领域展示了强大的能力,能够满足多样化的用户需求。


Whisper系统提供了五种不同的模型尺寸,以平衡速度和准确性。每种模型的设计旨在满足不同应用场景的需求,用户可以根据自己的具体要求选择合适的模型。以下是可用模型的名称、对应的大致内存需求和相对速度:

  • 小型模型:内存需求低,速度快,适合实时语音识别任务,但在复杂音频环境中的准确性可能稍逊。
  • 中型模型:提供更好的准确性,同时保持相对较快的速度,适合大多数日常应用。
  • 大型模型:在准确性上有显著提升,适合对精度要求较高的场景,如医疗记录转录和法律文件审阅,但相对速度略慢。
  • 超大型模型:具有出色的语音识别性能,能够处理复杂口音和技术术语,适合专业领域的使用,内存需求较高,速度相对较慢。
  • 特大模型:提供顶尖的准确性,特别适用于高噪声环境和多方对话场景,内存需求极大,速度较慢,适合不需要实时处理的情况。

通过这些不同尺寸的模型,用户可以根据自己的硬件资源和应用需求,灵活选择最合适的选项,以实现最佳的语音识别效果。

 

3.GPT-SoVITS安装与部署

3.1 配置要求

1.训练

  • Windows
    • 需支持CUDA的nVIDIA显卡,显存至少6GB。
    • 不支持的显卡包括:10系之前的所有型号、GTX 1060及以下、GTX 1660及以下、GTX 2060及以下,以及3050 4GB显卡。
    • 操作系统需为Windows 10或11。
    • 如果没有显卡,系统会自动切换至CPU训练,但速度非常慢。
  • macOS
    • 需运行macOS 14或更高版本。
    • 必须安装Xcode命令行工具,可通过运行xcode-select --install完成安装。
  • Linux
    • 熟练使用Linux环境。
    • 需配备显存至少为6GB的显卡。
    • 同样,如果没有显卡,系统将自动切换至CPU训练,速度较慢。

2.推理

  • Windows
    • 需支持CUDA的nVIDIA显卡,显存至少4GB(未经过测试,3GB可能无法完成语音合成,因此推测4GB应该足够)。
    • 操作系统需为Windows 10或11。
    • 如果没有显卡,系统会自动识别并使用CPU进行推理。
  • macOS
    • 需运行macOS 14或更高版本。
    • 必须安装Xcode命令行工具,方法同上。
  • Linux
    • 熟练使用Linux环境。
    • 需配备显存至少为4GB的显卡。
    • 如果没有显卡,系统将自动识别并使用CPU进行推理。

通过这些配置要求,用户可以确保系统能够高效地进行训练和推理,以实现最佳的性能表现。

3.2 Mac环境要求

1.软件要求

  • 确保已通过运行 xcode-select --install 安装 Xcode 命令行工具。
  • 安装 Homebrew 以便于安装必要的软件(如 git、ffmpeg)。

2.安装 conda(如果已安装可以跳过)

测试通过的 Python 和 PyTorch 版本:

  • Python 3.9、Pytorch 2.2.1

可以通过如下命令检测是否已安装。

conda info

3.安装FFmpeg(如果已安装可以跳过)

可以通过如下命令检测是否已安装以及版本要大于等于6.1

# 安装
brew install ffmpeg
# 检查环境
ffmpeg -version

3.3 项目准备

1.下载项目代码

如果没有安装Git,打开终端执行

brew install git
brew install git-lfs
brew install rust

如果已安装Git,直接在终端中定位到要存放项目的目录(此处以桌面为例,请按实际情况操作,本文档所有路径皆基于此前提),然后克隆仓库到本地,~/代表当前用户目录下

#示例
cd ~/desktop # ~代表当前用户
git clone --depth=1 https://github.com/RVC-Boss/GPT-SoVITS

2.下载预训练模型(直接参考项目README.md就好)

从 GPT-SoVITS Models 下载预训练模型,并将它们解压替换 ~/desktop/GPT-SoVITS/GPT_SoVITS/pretrained_models 。对于 UVR5(人声/伴奏分离和混响移除)(推荐使用UVR5客户端,可以跳过这步) 的是UVR5教程从 UVR5 Weights 下载模型,并将它们放置在 ~/GPT-SoVITS/tools/uvr5/uvr5_weights 中。(若使用UVR5客户端,可以跳过这步)对于中文自动语音识别,从 Damo ASR Model 下载模型,将它们解压替换 ~/desktop/GPT-SoVITS/tools/asr/models 。

#一步到位命令
cd ~/desktop/GPT-SoVITS/tools/asr/models
git lfs install
git clone https://www.modelscope.cn/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch.git
git clone https://www.modelscope.cn/iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch.git
git clone https://www.modelscope.cn/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch.git

3.4 环境准备

1.创建环境

先关闭终端,再打开终端输入

conda create -n GPTSoVits python=3.9
conda activate GPTSoVits

遇到y/n的就一直点y回车
如果遇到:connot find conda,那是因为conda没装好,输入

conda -v

查看有没有装好。可以试试重新打开终端。

2.安装依赖

终端输入

cd ~/desktop/GPT-SoVITS
conda activate GPTSoVits
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

3.运行

conda activate GPTSoVits
cd ~/desktop/GPT-SoVITS
python webui.py zh_CN

4.训练模型

GPT-SoVITS WebUI提供了全面的功能,包括数据集制作、模型微调训练和语音克隆推理。如果您只是想体验效果,可以直接使用官方分享的语音模型。这种设计使用户能够迅速上手,无需复杂的设置或深入的技术知识。

4.1 数据集处理

1.处理原音频

如果原音频足够干净,比如从游戏中提取的干声,可以跳过这一步。接着,点击开启Open UVR5-WebUI,稍等片刻后,打开浏览器访问 http://localhost:9873。

2.切割音频

在切割音频之前,建议将所有音频文件导入音频软件(如剪映)进行音量调整,将最大音量设置为-9dB到-6dB,过高的音量应予以删除。

打开WebUI后,首先输入原音频的文件夹路径。接下来,可以调整以下建议参数:

  • min_length:根据显存大小调整,显存越小,值调得越小。
  • min_interval:根据音频的平均间隔进行调整。如果音频过于密集,可以适当降低该值。
  • max_sil_kept:此参数会影响句子的连贯性,不同音频需不同调整。如果不确定,建议保持默认值。

点击“开启语音切割”,切割过程将立即完成,默认输出路径为 output/slicer_opt。这样,您就能快速获得处理后的音频片段。

 打开切分文件夹,将时长超过“显存数”秒的音频手动切分至该时长以下。例如,如果显卡显存为10GB,建议将超过10秒的音频切分至10秒以下,或者直接删除(稍微超出一点的可以不处理)。过长的音频可能会导致显存爆满。

如果经过语音切割后仍然是一个文件,说明音频过于密集,可以尝试调低min_interval参数以获得更好的切割效果。这样可以确保音频文件在处理时不会超出显存限制。

3.音频降噪

如果原音频足够干净,比如从游戏中提取的干声,可以跳过这一步。输入刚才切割完成音频的文件夹路径,默认为 output/slicer_opt,然后点击“开启语音降噪”。处理完成后,降噪后的音频将默认输出到 output/denoise_opt 目录。这样,您就可以轻松获得清晰的音频文件。

4.打标并校对

只需输入刚才的切分文件夹路径,如果音频经过降噪处理,默认输出路径为 output/denoise_opt;如果没有降噪,则为 output/slicer_opt。

接下来,选择达摩ASR或Fast Whisper,然后点击“开启离线批量ASR”。默认输出路径为 output/asr_opt。请注意,这一步可能需要等待一段时间,因为系统需要下载相应的模型。

  • 达摩ASR:专用于中文识别,效果最佳。
  • Fast Whisper:支持99种语言,尤其在英语和日语的识别方面表现突出。建议选择large V3模型,语种选择自动(auto)即可。

需要注意的是,由于识别出的文本可能不够准确,建议进行人工校对标注(这一步较耗时间,如果不追求极致效果可以选择跳过)。这里我只是为了演示流程,所以此步骤可以略过。

4.2 微调训练

1. 数据集格式化

在1-GPT-SOVITS-TTS选项卡中,填写以下信息:

  • 实验/模型名:输入实验名称,确保不要使用中文。
  • 文本标注文件:选择您的标注文件。
  • 训练集音频文件目录:指定音频数据集的文件夹路径。

确保所有路径和文件名正确无误,以便顺利进行后续操作。

填写完成后,您可以选择逐个点击下面的三个按钮,等待每个操作执行结束后再点击下一个。如果遇到报错,请查看后台日志,有些报错只需重试即可解决。

另外,您也可以直接使用“开启一键三连”按钮,一键完成这三步操作,节省时间和精力。

2.训练微调模型

选择 1B-微调训练 子选项卡,配置 batch_size 等参数。然后依次点击 开启 SoVITS 训练开启 GPT 训练。请注意,这两个训练任务不能同时进行(除非您有两张显卡)。如果训练过程中中断,您可以直接再点击开始训练,系统会从最近的保存点继续。

对于 SoVITS 训练,建议将 batch_size 设置为显存的一半以下。过高的设置可能导致显存爆满,并不是越高就越快。您需要根据数据集的大小进行调整,而不是严格按照显存的一半来设置。如果出现显存不足的情况,请适当降低 batch_size。以下是针对切片长度为10秒时,不同显存下 SoVITS 训练的最大 batch_size 的实测值供您参考;如果切片更长或数据集更大,则需要适当减少。

接下来,设置训练轮数。SoVITS 模型的轮数可以设置得高一些,因为训练速度较快。而对于 GPT 模型,通常建议设置轮数为10,不要超过20,以确保训练效率和模型性能的平衡。

4.3 推理

1.开启推理服务

选择 1C-推理 子选项卡,配置模型路径(如果模型没有显示出来,可以点击右侧的按钮进行刷新)。然后,点击 开启 TTS 推理 WEBUI 按钮以打开推理页面。在推理页面中,您可以输入文本并生成语音,体验模型的效果。

稍等片刻后,打开浏览器访问 http://localhost:9872。

2.语音克隆推理

在推理页面中,第一步选择所需的模型。第二步上传参考语音和文本(建议时长在5秒到10秒之间,参考音频非常重要,它会影响模型学习语速和语气,请认真选择)。第三步输入您希望用于语音克隆的文本,准备开始生成语音。

5.总结

GPT-SoVITS是一款开源语音合成框架,结合了生成对抗网络和变分推理技术,能够实现高质量的文本到语音转换。该框架支持多种功能,包括模型微调、语音克隆和多语言处理,用户可以通过友好的Web界面轻松操作。GPT-SoVITS尤其适合于生成自然流畅的语音,广泛应用于游戏、影视配音和语音助手等领域。

6.结束语

这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

另外,博主出新书了《深入理解Hive》、同时已出版的《Kafka并不难学》和《Hadoop大数据挖掘从入门到进阶实战》也可以和新书配套使用,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。关注下面公众号,根据提示,可免费获取书籍的教学视频。


版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云