GPT-SoVITS是一款开源的语音合成模型,结合了深度学习和声学技术,能够实现高质量的语音生成。其独特之处在于支持使用参考音频进行零样本语音合成,即使没有直接的训练数据,模型仍能生成相似风格的语音。用户可以通过微调模型,进一步提升其性能,以适应特定的应用需求。
这个开源的文本到语音(TTS)项目可以在Linux、MacOS和Windows系统上运行,具有极高的灵活性和兼容性。用户只需提供一段长达1分钟的音频文件,即可轻松克隆特定的声音。该项目支持将汉语、英语和日语的文本转换为克隆的语音,为多语言环境中的应用提供了便利。
VITS是一种用于端到端文本到语音(TTS)的模型,结合了对抗学习和条件变分自动编码器,旨在生成高质量的语音效果。近年来,虽然已经提出了多种单阶段训练和并行采样的TTS模型,但它们的样本质量往往无法与传统的两阶段系统相媲美。为了解决这个问题,VITS采用了一种并行的端到端方法,能够生成更自然、更真实的声音。
该模型通过标准化流和对抗训练过程增强的变分推理,显著提升了生成建模的表达能力。此外,VITS引入了随机持续时间预测器,能够从输入文本中合成出节奏各异的语音。这种设计允许模型捕捉潜在变量的不确定性,形成了一种自然的一对多关系,使得同一段文本可以以不同的音高和节奏进行多样化的表达。这种灵活性和高质量的输出使VITS在语音合成领域中具备了广泛的应用潜力。
Whisper是OpenAI开发的先进自动语音识别(ASR)系统,经过训练的语料库包含68万小时的多语言(涵盖98种语言)和多任务监督数据。OpenAI认为,这种庞大且多样化的数据集显著提升了系统对各种口音、背景噪音和专业术语的识别能力,使其在实际应用中表现出色。
除了语音识别功能,Whisper还支持多种语言的转录和翻译,能够将非英语语言直接翻译成英语。这种多功能性使得Whisper不仅适用于语音转文字的任务,还能在国际交流、内容创建和教育等领域发挥重要作用。凭借其出色的准确性和灵活性,Whisper为用户提供了一个强大的工具,有助于打破语言障碍,促进沟通与理解。
Whisper的基本原理基于一种Transformer序列到序列模型,旨在处理多种语音任务,包括多语言语音识别、语音翻译、口语语言识别以及语音活动检测。通过将这些任务统一表示为一个需要解码器预测的符号序列,Whisper能够有效地替代传统语音处理管道中的多个阶段,简化了处理流程。
该模型采用多任务训练的格式,使用一系列特殊符号作为任务指示符或分类目标。这种设计不仅提升了模型的灵活性,还使其在处理不同类型的语音输入时表现出色。例如,当面对多种语言或不同口音时,Whisper能够利用其训练数据中的丰富信息,快速适应并提高识别准确性。通过这种创新的方法,Whisper在语音处理领域展示了强大的能力,能够满足多样化的用户需求。
Whisper系统提供了五种不同的模型尺寸,以平衡速度和准确性。每种模型的设计旨在满足不同应用场景的需求,用户可以根据自己的具体要求选择合适的模型。以下是可用模型的名称、对应的大致内存需求和相对速度:
通过这些不同尺寸的模型,用户可以根据自己的硬件资源和应用需求,灵活选择最合适的选项,以实现最佳的语音识别效果。
通过这些配置要求,用户可以确保系统能够高效地进行训练和推理,以实现最佳的性能表现。
测试通过的 Python 和 PyTorch 版本:
可以通过如下命令检测是否已安装。
conda info
可以通过如下命令检测是否已安装以及版本要大于等于6.1
# 安装 brew install ffmpeg # 检查环境 ffmpeg -version
如果没有安装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
从 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
先关闭终端,再打开终端输入
conda create -n GPTSoVits python=3.9
conda activate GPTSoVits
遇到y/n的就一直点y回车
如果遇到:connot find conda,那是因为conda没装好,输入
conda -v
查看有没有装好。可以试试重新打开终端。
终端输入
cd ~/desktop/GPT-SoVITS
conda activate GPTSoVits
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
conda activate GPTSoVits cd ~/desktop/GPT-SoVITS python webui.py zh_CN
GPT-SoVITS WebUI提供了全面的功能,包括数据集制作、模型微调训练和语音克隆推理。如果您只是想体验效果,可以直接使用官方分享的语音模型。这种设计使用户能够迅速上手,无需复杂的设置或深入的技术知识。
如果原音频足够干净,比如从游戏中提取的干声,可以跳过这一步。接着,点击开启Open UVR5-WebUI,稍等片刻后,打开浏览器访问 http://localhost:9873。
在切割音频之前,建议将所有音频文件导入音频软件(如剪映)进行音量调整,将最大音量设置为-9dB到-6dB,过高的音量应予以删除。
打开WebUI后,首先输入原音频的文件夹路径。接下来,可以调整以下建议参数:
点击“开启语音切割”,切割过程将立即完成,默认输出路径为 output/slicer_opt。这样,您就能快速获得处理后的音频片段。
打开切分文件夹,将时长超过“显存数”秒的音频手动切分至该时长以下。例如,如果显卡显存为10GB,建议将超过10秒的音频切分至10秒以下,或者直接删除(稍微超出一点的可以不处理)。过长的音频可能会导致显存爆满。
如果经过语音切割后仍然是一个文件,说明音频过于密集,可以尝试调低min_interval参数以获得更好的切割效果。这样可以确保音频文件在处理时不会超出显存限制。
如果原音频足够干净,比如从游戏中提取的干声,可以跳过这一步。输入刚才切割完成音频的文件夹路径,默认为 output/slicer_opt,然后点击“开启语音降噪”。处理完成后,降噪后的音频将默认输出到 output/denoise_opt 目录。这样,您就可以轻松获得清晰的音频文件。
只需输入刚才的切分文件夹路径,如果音频经过降噪处理,默认输出路径为 output/denoise_opt;如果没有降噪,则为 output/slicer_opt。
接下来,选择达摩ASR或Fast Whisper,然后点击“开启离线批量ASR”。默认输出路径为 output/asr_opt。请注意,这一步可能需要等待一段时间,因为系统需要下载相应的模型。
需要注意的是,由于识别出的文本可能不够准确,建议进行人工校对标注(这一步较耗时间,如果不追求极致效果可以选择跳过)。这里我只是为了演示流程,所以此步骤可以略过。
在1-GPT-SOVITS-TTS选项卡中,填写以下信息:
确保所有路径和文件名正确无误,以便顺利进行后续操作。
填写完成后,您可以选择逐个点击下面的三个按钮,等待每个操作执行结束后再点击下一个。如果遇到报错,请查看后台日志,有些报错只需重试即可解决。
另外,您也可以直接使用“开启一键三连”按钮,一键完成这三步操作,节省时间和精力。
选择 1B-微调训练 子选项卡,配置 batch_size 等参数。然后依次点击 开启 SoVITS 训练 和 开启 GPT 训练。请注意,这两个训练任务不能同时进行(除非您有两张显卡)。如果训练过程中中断,您可以直接再点击开始训练,系统会从最近的保存点继续。
对于 SoVITS 训练,建议将 batch_size 设置为显存的一半以下。过高的设置可能导致显存爆满,并不是越高就越快。您需要根据数据集的大小进行调整,而不是严格按照显存的一半来设置。如果出现显存不足的情况,请适当降低 batch_size。以下是针对切片长度为10秒时,不同显存下 SoVITS 训练的最大 batch_size 的实测值供您参考;如果切片更长或数据集更大,则需要适当减少。
接下来,设置训练轮数。SoVITS 模型的轮数可以设置得高一些,因为训练速度较快。而对于 GPT 模型,通常建议设置轮数为10,不要超过20,以确保训练效率和模型性能的平衡。
选择 1C-推理 子选项卡,配置模型路径(如果模型没有显示出来,可以点击右侧的按钮进行刷新)。然后,点击 开启 TTS 推理 WEBUI 按钮以打开推理页面。在推理页面中,您可以输入文本并生成语音,体验模型的效果。
稍等片刻后,打开浏览器访问 http://localhost:9872。
在推理页面中,第一步选择所需的模型。第二步上传参考语音和文本(建议时长在5秒到10秒之间,参考音频非常重要,它会影响模型学习语速和语气,请认真选择)。第三步输入您希望用于语音克隆的文本,准备开始生成语音。
GPT-SoVITS是一款开源语音合成框架,结合了生成对抗网络和变分推理技术,能够实现高质量的文本到语音转换。该框架支持多种功能,包括模型微调、语音克隆和多语言处理,用户可以通过友好的Web界面轻松操作。GPT-SoVITS尤其适合于生成自然流畅的语音,广泛应用于游戏、影视配音和语音助手等领域。
这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!
另外,博主出新书了《深入理解Hive》、同时已出版的《Kafka并不难学》和《Hadoop大数据挖掘从入门到进阶实战》也可以和新书配套使用,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。关注下面公众号,根据提示,可免费获取书籍的教学视频。