首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

GPT-SoVITS语音合成模型实践

编程知识
2024年09月29日 20:49

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

From:https://www.cnblogs.com/smartloli/p/18440825
本文地址: http://www.shuzixingkong.net/article/2401
0评论
提交 加载更多评论
其他文章 关于众包打造博客园精品教程品牌的建议
博客园有很多高手写博客质量很好,博客园完全可以把这些高手组织起来,根据不同的开发语言,技术方向,难易程度编写面向不同人群的教程,如.Net 开发入门教程,Java开发架构设计等。或者邀请一些高手写关于项目管理,项目经验的专题文章,不一定非得限定到技术。博客园负责设计不同的教程主题,邀请或约大家来投稿
CentOS 7.9安装ElasticSearch7.14.0、ElasticSearch-Head、Kibana、Node14.18.2
CentOS 7.9安装ElasticSearch7.14.0、ElasticSearch-Head、Kibana、Node14.18.2 1.安装文件 1. elasticsearch-7.14.0-linux-x86 64.tar.gz 2. elasticsearch-head-master.
CentOS 7.9安装ElasticSearch7.14.0、ElasticSearch-Head、Kibana、Node14.18.2 CentOS 7.9安装ElasticSearch7.14.0、ElasticSearch-Head、Kibana、Node14.18.2 CentOS 7.9安装ElasticSearch7.14.0、ElasticSearch-Head、Kibana、Node14.18.2
从0到1搭建权限管理系统系列四 .net8 中Autofac的使用(附源码)
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。 该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。 说明:OverallAuth2.0 是一个简单、易懂、功能强大的权限+可视化流程管理系统。 友情提醒:本篇文章是属于系列文章,看该
从0到1搭建权限管理系统系列四 .net8 中Autofac的使用(附源码) 从0到1搭建权限管理系统系列四 .net8 中Autofac的使用(附源码) 从0到1搭建权限管理系统系列四 .net8 中Autofac的使用(附源码)
Java如何将Object转换成指定Class对象
在Java中,将Object转换为指定类型的ClassObjectClass.class由于你提到的“将Object转换成指定Class对象”可能有些混淆,本文分别展示这两种操作的示例代码。
WPF下使用FreeRedis操作RedisStream实现简单的消息队列
Redis Stream简介 Redis Stream是随着5.0版本发布的一种新的Redis数据类型: 高效消费者组:允许多个消费者组从同一数据流的不同部分消费数据,每个消费者组都能独立地处理消息,这样可以并行处理和提高效率。 阻塞操作:消费者可以设置阻塞操作,这样它们会在流中有新数据添加时被唤醒
WPF下使用FreeRedis操作RedisStream实现简单的消息队列 WPF下使用FreeRedis操作RedisStream实现简单的消息队列 WPF下使用FreeRedis操作RedisStream实现简单的消息队列
如何安装eNSP
如何安装eNSP? eNSP是需要三个插件进行辅助的,所以先下三个插件,最后在下eNSP 首先来看看Wireshark的安装 很简单,基本上就直接下一步就行 这里直接下一步 这里要注意,这些要么安装在默认路径,要么就在想安装的存盘里重新建一个文件夹,将这些东西都下载到一个文件夹里 这里直接下一步 这
如何安装eNSP 如何安装eNSP 如何安装eNSP
Windows 笔记本 WiFi 功能消失问题解决
背景说明 许多 Windows 笔记本用户可能会遇到 WiFi 功能突然消失的问题。虽然网上有各种说法,但实际上,这个问题通常并非由病毒引起。大多数情况下,问题的根源是驱动程序丢失或笔记本静电干扰导致无线网卡无法正常工作。 临时联网 在解决 WiFi 问题期间,需要联网,可以尝试以下方法: 使用网线
SQL优化
企业业务逻辑数据的递增和用户量的递增会产生大量的数据库数据量过大的问题。数据库的默认索引表都是存在。一个数据库有索引库和data数据库。索引库里面存放着索引表,指向数据存储区。Java适配的MySQL数据库默认提供每张数据记录表的索引表机制。数据库表的数据索引默认是会查找索引表之后再去数据记录表中查