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大数据挖掘从入门到进阶实战》也可以和新书配套使用,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。关注下面公众号,根据提示,可免费获取书籍的教学视频。

GPT-SoVITS语音合成模型实践的更多相关文章

  1. SNF快速开发平台2019-用户安全控制-权限管理模型实践-权限都在这里

    1.1    是否保存密码 勾选记住密码后,再次开启程序用户密码不需要再次输入,直接显示在密码输入框内,方便快捷. 图 4.1‑1 记住密码的登录页面框 1.2    是否自动登录 勾选自动登录后,再 ...

  2. SNF快速开发平台2019-权限管理模型实践-权限都在这里

    其它权限实践系列文章: 1.角色.权限.账户的概念理解-非常全的理论讲解权限控制 https://www.cnblogs.com/spring_wang/p/10954370.html 2.权限管理模 ...

  3. Blinn-Phong反射模型实践(web实现)

    Blinn-Phong反射模型实践(web实现) games101 第四次作业 最终完成带贴图的 Blinn-Phong 模型,产生光照效果 完成了 不带贴图的 Blinn-Phone 反射模型 带贴 ...

  4. PyTorch学习笔记之CBOW模型实践

    import torch from torch import nn, optim from torch.autograd import Variable import torch.nn.functio ...

  5. SNF快速开发平台2019-权限管理模型-记录级-字段级权限实践

    1.1.1  字段级权限 字段级权限适用于对不同人的能否查看或录入不同表不同字段的权限控制. 是否启用字段级权限配置 不启用字段级权限后,[用户权限管理]程序[字段级权限]按钮会隐藏,导致无法给管理其 ...

  6. NLP实践!文本语法纠错模型实战,搭建你的贴身语法修改小助手 ⛵

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...

  7. Generative Pre-trained Transformer(GPT)模型技术初探

    一.Transformer模型 2017年,Google在论文 Attention is All you need 中提出了 Transformer 模型,其使用 Self-Attention 结构取 ...

  8. NLP突破性成果 BERT 模型详细解读 bert参数微调

    https://zhuanlan.zhihu.com/p/46997268 NLP突破性成果 BERT 模型详细解读 章鱼小丸子 不懂算法的产品经理不是好的程序员 ​关注她 82 人赞了该文章 Goo ...

  9. 语音合成论文翻译:2019_MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis

    论文地址:MelGAN:条件波形合成的生成对抗网络 代码地址:https://github.com/descriptinc/melgan-neurips 音频实例:https://melgan-neu ...

  10. ML平台_微博深度学习平台架构和实践

    ( 转载至: http://www.36dsj.com/archives/98977)  随着人工神经网络算法的成熟.GPU计算能力的提升,深度学习在众多领域都取得了重大突破.本文介绍了微博引入深度学 ...

随机推荐

  1. DASCTF 2023六月挑战赛|二进制专项 PWN (下)

    DASCTF 2023六月挑战赛|二进制专项 PWN (下) 1.can_you_find_me 检查保护 意料之中 64位ida逆向 只有add,和del功能不能show 先看add吧 最多申请10 ...

  2. 面试题-python 什么是装饰器(decorator )?

    前言 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象.很多python初学者学到面向对象类和方法是一道大坎,那么py ...

  3. “智能体风”吹进体育圈 粉丝手搓上百个智能体为中国健儿应援 太有AI了!粉丝手搓上百个智能体为中国健儿打CALL

    智能体的风吹进了体育竞技圈.近日,在百度文心智能体平台,出现了上百个充满"AI"的运动明星粉丝应援智能体,比如支持中国女子乒乓球运动员孙颖莎的"孙颖莎的小迷妹" ...

  4. holiday week3

    本周开始进行小学期实验报告B 上周LOL打的rank分又掉了回去 星际争霸打到了铂金段位 JAVA预备在小学期完成之后开始正式学习 现已了解雏形 本周发布了一个视频https://www.bilibi ...

  5. 关于mybatisplus与mybatis的自动填充混用问题

    public class MybatisPlusAutoFillHandler implements MetaObjectHandler { //插入时的填充策略 @Override public v ...

  6. 【Scala】08 模式匹配 Match Case

    由Scala封装的一套match case处理,功能比原Java的更为强大 package cn import scala.collection.immutable.IndexedSeqDefault ...

  7. 【Server - 运维】更改腾讯云数据库参数设置

    购买的MySQL实例是一个屏蔽了后台设置的服务器: 默认大小写设置是使用严格区分的: 要设置忽略大小写,就要在my.cnf中更改配置参数 https://cloud.tencent.com/devel ...

  8. 【Lodop】02 C-Lodop手册阅读上手

    版本:4.0.6.2 一.概述 C-Lodop云打印是一款精巧快捷的云打印服务产品,以Lodop功能语句为基础,JS语句实现远程打印 移动设备+Wifi+普通打印机+集中打印 C-Lodop对客户端浏 ...

  9. AI的技术发展:记忆与想象力 —— 【人工智能】记忆、想象与AI | 查兰·兰加纳特 | 心理学与神经科学家 | 人脑如何记忆 | 内部模型 | 稳定可塑性难题 | 想象力的由来 | AI内容传播 | 脑机接口BCI

    原文地址: https://www.youtube.com/watch?v=cHYKbVP1GTQ 加利福尼亚大学戴维斯分校教授.心理学家兼神经科学家查兰·兰加纳特Charan Ranganath,最 ...

  10. 如何在python同一应用下的多模块中共享变量

    最近在考虑编码风格的问题,突然想到如何在一个python应用下的多个模块中共享一个变量.最早接触python还是在python2.5版本左右,那个时候由于python的import规则设定的问题导致本 ...