文字转语音工具:GPT-SoVITS

news2025/2/7 15:04:25

诸神缄默不语-个人CSDN博文目录

OpenAI官方的TTS模型我在这篇博文中给出了使用教程:ChatGPT 3.5 API的调用不全指南(持续更新ing…) - 知乎

但是OpenAI的TTS对中文支持不好,有一种老外说中文的美,所以本文介绍另一个工具GPT-SoVITS。
主要功能是提供声音示例进行微调或者直接少样本生成。

GitHub仓库:https://github.com/RVC-Boss/GPT-SoVITS
中文文档:https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/cn/README.md
详细的官方教程:GPT-SoVITS指南

目前本博文仅更新了在AutoDL云服务器上直接用WebUI实现数据预处理、微调和测试,以及获得模型权重后如何调用API进行推理(仅更新了使用官方提供的api.py服务的方案)的简洁教程,更多细节请静待后续更新!

文章目录

  • 1. 直接用WebUI:AutoDL版
    • 1. 处理数据集
    • 2. 微调训练
      • 1. 训练集格式化工具
      • 2. 微调训练
    • 3. 网页推理
  • 2. 训练好模型后调用API推理
    • 2.1 官方API服务挂起
    • 2.2 其他用户提供的服务
  • 3. 本文撰写过程中参考的其他网络资料

1. 直接用WebUI:AutoDL版

这一部分主要参考官方教程中的:AutoDL教程(只要几块钱,方便)

官方提供了一个搭好的社区环境,可以在AutoDL上租个云服务器直接用。直接用这个环境创建实例即可:https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official

打开AutoPanel绑定百度网盘(或者阿里云盘)
下载微调数据(我在这里上传了一个mp4文件)
AutoDL公网网盘帮助文档:https://www.autodl.com/docs/netdisk/

AutoPanel也可以在后续工作流程中检测服务器的内存啊之类的用

打开JupyterLab运行如下代码打开WebUI:echo {}> ~/GPT-SoVITS/i18n/locale/en_US.json && source activate GPTSoVits && cd ~/GPT-SoVITS/ && python webui.py
打开public URL

1. 处理数据集

在这里插入图片描述

开启UVR5-WebUI实现人声分离:
在这里插入图片描述
这一步我没做是因为我的训练数据很干净。所以我跳过了这一步。如果以后要用到这一步我再补充本博文内容。
处理完记得把UVR5关了。

输入上传音频的路径:/root/autodl-tmp/test_tts.mp4
输出前面也要加/root/(也就是说得用绝对路径):/root/output/slicer_opt

开启语音切割

这一步后得到了一堆wav文件,每个文件是切出的小片音频。

ASR(语音转文字)自动打标:
输入文件夹就是那个输出文件夹。输出文件夹依然要加/root/
开启批量ASR

这一步后得到一个list文件,是每个音频对应的自动识别的文字

还有一步是校对,就是打开自动标注结果在标注工具中进行校对。这里因为我懒得搞了所以暂时省略,下次可能会补。

2. 微调训练

1. 训练集格式化工具

在这里插入图片描述
不能使用中文

文本标注文件,使用处理后的结果:/root/output/asr_opt/slicer_opt.list
训练集音频文件目录,使用处理后的结果:/root/output/slicer_opt
直接开启一键三连就可以
结束时会显示一键三连进程结束
在这里插入图片描述

2. 微调训练

开启SoVITS训练(这个比较快啦,我1小时的视频切出647个音频文件,训练1个epoch不到1分钟)
输出SoVITS训练完成结束

在这里插入图片描述

(GPT训练也差不多,但是GPT训练会慢一些)

3. 网页推理

开启TTS推理WebUI
在这里插入图片描述

在终端中打开新的网页

上传参考音频(建议使用训练集中的音频)
填写需要合成的文本
切分随便选
点击“合成语音”

在这里插入图片描述

2. 训练好模型后调用API推理

2.1 官方API服务挂起

如果在AutoDL上需要先激活环境:conda activate GPTSoVits
cd GPT-SoVITS

部署服务:
python api.py -dr "/root/autodl-tmp/output/slicer_opt/test_tts.mp4_0000070720_0000172160.wav" -dt "喂?喂?哦可以,开始" -dl "zh"

https://github.com/RVC-Boss/GPT-SoVITS/issues/938

用requests模拟本地的GET调用(在4090上计时约3秒):

import requests
import time

# 设置请求的URL和参数
url = "http://127.0.0.1:9880"
params = {
    'text': '先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。',
    'text_language': 'zh'
}

# 记录开始时间
start_time = time.time()

# 发送GET请求
response = requests.get(url, params=params)

# 检查请求是否成功
if response.status_code == 200:
    # 打开一个文件用于写入
    with open('output.wav', 'wb') as file:
        file.write(response.content)
    print("文件已下载到本地")
else:
    print(f"请求失败,错误代码:{response.status_code}")

# 记录结束时间并计算运行时长
end_time = time.time()
elapsed_time = end_time - start_time
print(f"总运行时长:0.0597秒")

2.2 其他用户提供的服务

  1. ben0oil1/GPT-SoVITS-Server: 【脱离复杂的环境配置和整合包,极简配置推理服务】从GPT-SoVITS项目里面提取出来的,纯粹的推理服务方案。
  2. GPT-soVITS-Inference

3. 本文撰写过程中参考的其他网络资料

  1. 官方视频教程:耗时两个月自主研发的低成本AI音色克隆软件,免费送给大家!【GPT-SoVITS】_哔哩哔哩_bilibili
    有教程和效果展示,还有简单的原理讲解,讲了一下SoVITS模型,GPT-SoVITS是用CotentVec替代了SoftVC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1598356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024软考中项考哪个版本?应该该如何备考?

2024年1月,备受瞩目的软考中级系统集成项目管理工程师官方教程终于迎来了久违的大改版。为确保广大考生能够有充足的准备时间,软考中项的考试时间被顺延至同年11月,届时,这也将成为软考中项首次依据第3版考纲进行的考试。 新教材核…

数图智慧零售解决方案,赋能零售行业空间资源价值最大化

数图智慧零售解决方案 赋能零售行业空间资源价值最大 在激烈的市场竞争中,如何更好地提升空间资源价值,提高销售额,成为行业关注的焦点。近日,NIQ发布的《2024年中国饮料行业趋势与展望》称,“在传统零售业态店内&…

CSS特效---跳动的文字

1、演示 2、一切尽在代码中 <!--* Author: your name* Date: 2023-10-03 14:42:44* LastEditTime: 2023-10-03 14:56:26* LastEditors: DESKTOP-536UVPC* Description: In User Settings Edit* FilePath: \css-special-effects\跳动的文字.html --> <!DOCTYPE html>…

ARM看门狗定时器

作用 在S3C2440A中&#xff0c;看门狗定时器的作用是当由于噪声和系统错误引起的故障干扰时恢复控制器的工作。 也就是说&#xff0c;系统内部的看门狗定时器需要在指定时间内向一个特殊的寄存器内写入一个数值&#xff0c;俗称喂狗。 如果喂狗的时间过了&#xff0c;那么看门…

行式存储VS列式存储对比

行式存储&#xff1a; 一行代表一个记录的所有字段。 可以快速读取和写入单条记录。 如果要检索一条数据&#xff0c;数据库会读取or写入整条记录&#xff0c;包含所有相关字段。 列式存储&#xff1a; 表中每一列的数据连续存放。这种方式在需要对某一列进行大量运算或分析时…

AI预测福彩3D第37弹【2024年4月16日预测--第8套算法开始计算第5次测试】

今天咱们继续测试第8套算法和模型&#xff0c;今天是第5次测试&#xff0c;目前的测试只是为了记录和验证&#xff0c;不建议大家盲目跟买。。我的目标仍旧是10次命中3-4次!~废话不多说了&#xff0c;直接上结果&#xff01; 2024年4月16日3D的七码预测结果如下 第一套…

数字乡村创新实践探索农业现代化路径:科技赋能农业产业升级、提升乡村治理效能与农民幸福感

随着信息技术的快速发展和数字化时代的到来&#xff0c;数字乡村建设正成为推动农业现代化、提升农业产业竞争力、优化乡村治理以及提高农民幸福感的重要途径。本文将围绕数字乡村创新实践&#xff0c;探讨其在农业现代化路径中的积极作用&#xff0c;以及如何通过科技赋能实现…

C语言中的数据结构- -链表(1)

前言 前几节我们学习了C语言中的数据结构--顺序表&#xff0c;该数据结构类型相较于普通的数组而言有很多的优势&#xff0c;但是它还是在一定层面上存在着一些缺陷&#xff0c;可以归纳为以下三点&#xff1a; 1. 中间/头部的插⼊删除&#xff0c;时间复杂度为O(N)【数组的遍…

每日一VUE——组件基础

文章目录 认识组件如何使用注册方式 组件间传递数据propsprops的验证 组件事件组件事件的验证v-model与自定义事件结合使用 组件插槽动态组件 认识组件 组件由template&#xff0c;script&#xff0c;style三部分组成。 如何使用 定义组件注册组件调用组件 注册方式 全局注…

在STM32中给固定的地址写入一个值,并通过memory窗口进行查看

首先对STM32中存储数据的地方有一个了解 一个是FLASH,一个是RAM RAM是易失存储器&#xff0c;FLASH是非易失存储器&#xff0c;这是最直观的解释。 主要记住以下几点&#xff1a; RAM&#xff08;随机存储器&#xff09;&#xff1a;既可以从中读取数据&#xff0c;也可以写…

面试八股——数据库——分库分表

垂直策略 垂直分库 垂直分表 水平策略 水平分库 水平分表&#xff08;和水平分库差不多&#xff0c;区别是但这些表可以在同一个库内&#xff09;

spring-cloud微服务gateway

核心部分&#xff1a;routes(路由)&#xff0c; predicates(断言)&#xff0c;filters(过滤器) id&#xff1a;可以理解为是这组配置的一个id值&#xff0c;请保证他的唯一的&#xff0c;可以设置为和服务名一致 uri&#xff1a;可以理解为是通过条件匹配之后需要路由到&…

Oauth2.1第三方授权前后端分离实现

前言 Spring Cloud 整合 Spring Security Oauth2 请看我上一篇文章 在当今的数字化时代&#xff0c;随着微服务架构的流行和前后端分离技术的广泛应用&#xff0c;如何实现安全、高效的用户认证与授权成为了开发者们面临的重要挑战。Spring Cloud与Spring Security OAuth2作为J…

小程序商城和微商城的区别

移动互联网电商发展迅速&#xff0c;各种商城系统的类型越来越多&#xff0c;人们选择要从多方面考量再进行评估&#xff0c;选择过程变得困难了很多&#xff0c;比如现在火热的微商城和小程序商城&#xff0c;很多人都不太能分清楚。今天&#xff0c;我们就一起来看看这两种商…

BCLinux8U6系统部署oceanbase分布式数据库社区版之三、分布式数据库部署

本文是在完成步骤一、准备 OBD 中控机&#xff0c;步骤二3台数据库服务器准备后&#xff0c;正式开始oceanbase分布式数据库安装。 前序步骤&#xff1a;BCLinux8U6系统部署oceanbase分布式数据库社区版之一、准备 OBD 中控机 BCLinux8U6系统部署oceanbase分布式数据库社区版…

请求头包含“boundary=----WebKitFormBoundary”的request抓包

对于请求头包含“boundary----WebKitFormBoundary”&#xff0c;不能直接使用request.post请求&#xff0c;这类请求是文件上传请求。 s common_login(name, password) # 获取浏览器对象url archive_url /XXX# 这里先定义一个fields参数&#xff0c;格式为你可能需要一个包…

Linux yum搭建Keepalived,2 台机器都有虚拟 IP 问题

文章目录 Keepalived 搭建一、安装二、keepalived配置1、配置文件详解global_defs模块参数vrrp_instance模块参数vrrp_script模块参数 2、修改配置文件3、启动服务 Tips:1️⃣问题&#xff1a;两台机器上面都有VIP的情况2️⃣完整配置文件 Keepalived 搭建 服务IP服务器Keepal…

微信小程序wx.getLocation 真机调试不出现隐私弹窗

在小程序的开发过程中&#xff0c;首页中包含要获取用户地理位置的功能&#xff0c;所以在这里的onLoad&#xff08;&#xff09;中调用了wx.getLocation()&#xff0c;模拟调试时一切正常&#xff0c;但到了真机环境中就隐私框就不再弹出&#xff0c;并且出现了报错&#xff0…

ubuntu16.04安装Eclipse C/C++

1.安装 JDK 官网源码安装 首先打开JDK官网&#xff0c;JDK1.8的下载网址为&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/#java8-windows&#xff0c;进入到网址如下图所示&#xff1a; 向下滑动到 JDK1.8的下载界面&#xff0c;如下图所示&#xff1a…

【软考】UML中的图之用例图

目录 1. 说明2. 建模2.1 说明2.2 语境建模2.3 需求建模 3. 图示4. 组成部分 1. 说明 1.用例图&#xff08;Use Case Diagram&#xff09;。2.展现了一组用例、参与者&#xff08;Actor&#xff09;以及它们之间的关系。3.用例图通常包括以下的内容&#xff1a;用例、参与者、用…