Fay数字人如何使用GPT-SOVITS进行TTS转换以及遇到的一些问题

一、GPT-SoVITS 简介

GPT-SoVITS 是一款开源的语音合成(TTS)工具,结合了 GPT 模型的文本理解能力与 SoVITS(Sound of Voice In Text-to-Speech)的声纹模拟技术,能够实现高自然度、个性化的语音合成。它支持通过少量音频样本克隆特定音色,同时具备多语言合成、情感调节等功能,广泛应用于语音助手、有声内容创作等场景。用户可通过网页界面或 API 接口输入文本,生成对应语音文件(如 WAV、MP3 等格式)。

二、使用 GPT-SoVITS 进行 TTS 转换的流程

  1. 环境部署:下载项目源码,安装 Python 及相关依赖(如 PyTorch、FastAPI 等),部分版本需配置模型文件(如预训练 GPT 模型、SoVITS 模型)。这里建议使用整合包,推荐使用V2版本的整合包。可参考https://blog.csdn.net/ergdfhgerty/article/details/149021178文章的内容。GPT-SoVITS 学习和v2版本下载地址为https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/dkxgpiy9zb96hob4#KTvnO
  2. 启动服务:项目中的启动脚本为api_v2.py,启动本地服务(通常默认端口为 9880)。项目启动的方法:复制go-webui.bat文件,重命名为api_v2.bat,将代码修改为如下:
    set "SCRIPT_DIR=%~dp0"
    set "SCRIPT_DIR=%SCRIPT_DIR:~0,-1%"
    cd /d "%SCRIPT_DIR%"
    set "PATH=%SCRIPT_DIR%\runtime;%PATH%"
    runtime\python.exe -I api_v2.py 

    启动方式为双击api_v2.bat文件,但是一定要注意这里面不能传入参数zh_CN,否则运行不通过,要在api_v2.py文件中指定text_lang和prompt_text的具体类型,如下所示:

    @APP.get("/tts")
    async def tts_get_endpoint(text: str = None,text_lang: str = "zh-CN",ref_audio_path: str = None,aux_ref_audio_paths: list = None,prompt_lang: str = "zh-CN",prompt_text: str = "",top_k: int = 5,top_p: float = 1,temperature: float = 1,text_split_method: str = "cut0",batch_size: int = 1,batch_threshold: float = 0.75,split_bucket: bool = True,speed_factor: float = 1.0,fragment_interval: float = 0.3,seed: int = -1,media_type: str = "wav",streaming_mode: bool = False,parallel_infer: bool = True,repetition_penalty: float = 1.35,sample_steps: int = 32,super_sampling: bool = False,
    ):
  3. API 调用:若通过代码调用,可使用 FastAPI 提供的接口http://127.0.0.1:9880/tts,传入文本、语音参数等,获取合成的音频数据。
  4. Fay数字人在调用时的设置:首先要在gptsovits_v3.py文件中指定参考音频,和音频的文本,注意要修改成正确的音频路径,音频和音频的文本要对应,同时音频不能超过10秒,音频使用格式为Windows PCM的wav如下所示:
    def to_sample(self, text, style) :    url = "http://127.0.0.1:9880/tts"data = {"text": text,                   # str.(required) text to be synthesized"text_lang": "zh",              # str.(required) language of the text to be synthesized"ref_audio_path": "D:/GPT-SoVITS-v2pro-20250604/111.wav",         # str.(required) reference audio path."prompt_text": "迅捷音频转换器是一款专业级软件,集音频格式转换、视频提取音频、音频剪辑",            # str.(optional) prompt text for the reference audio"prompt_lang": "zh",            # str.(required) language of the prompt text for the reference audio"top_k": 5,                   # int.(optional) top k sampling"top_p": 1,                   # float.(optional) top p sampling"temperature": 1,             # float.(optional) temperature for sampling"text_split_method": "cut5",  # str.(optional) text split method, see text_segmentation_method.py for details."batch_size": 1,              # int.(optional) batch size for inference"batch_threshold": 0.75,      # float.(optional) threshold for batch splitting."split_bucket": True,         # bool.(optional) whether to split the batch into multiple buckets."speed_factor":1.0,           # float.(optional) control the speed of the synthesized audio."fragment_interval":0.3,      # float.(optional) to control the interval of the audio fragment."seed": -1,                   # int.(optional) random seed for reproducibility."media_type": "wav",          # str.(optional) media type of the output audio, support "wav", "raw", "ogg", "aac"."streaming_mode": False,      # bool.(optional) whether to return a streaming response."parallel_infer": True,       # bool.(optional) whether to use parallel inference."repetition_penalty": 1.35    # float.(optional) repetition penalty for T2S model.}
  5. 这里音频处理软件可使用cool edit pro软件,这是一款专业的音乐编辑软件,软件拥有非常强大的功能,帮助用户进行各种各样的音频编辑绘制,玩法多种多样带给用户非常舒适的体验,下载链接:https://www.365xiazai.com/soft/12050.html。

相关参考视频:

GPT-SoVITS教程6-新增自动选取参考音频和保存音频历史功能

三、API 调用 GPT-SoVITS 相关内容总结

1. 参考教程

B 站教程地址:GPT-SoVITS 教程 5 - 如何调用 API

2. API 调用核心步骤与参数说明
(1)api.py 文件参数解析

文件顶部明确了运行脚本时可传入的执行参数,主要包括:

  • 模型路径:-s(SoVITS 模型路径)、-g(GPT 模型路径),可在 config.py 中预设;
  • 默认参考音频参数(调用请求缺少参考音频时使用):
    • -dr:默认参考音频路径;
    • -dt:默认参考音频文本;
    • -dl:默认参考音频语种(支持 “中文”“英文”“日文” 及缩写 “zh”“en”“ja”);
  • 运行配置:
    • -d:推理设备(“cuda” 或 “cpu”);
    • -a:绑定地址(默认 “127.0.0.1”);
    • -p:绑定端口(默认 9880,可在 config.py 中指定);
    • -fp/-hp:覆盖 config.py 使用全精度 / 半精度推理;
  • 输出与文本处理:
    • -sm:流式返回模式(默认不启用,可选 “close”“normal”“keepalive” 及缩写 “c”“n”“k”);
    • -mt:音频编码格式(流式默认 ogg,非流式默认 wav,支持 “wav”“ogg”“aac”);
    • -cp:文本切分符号(默认空,需以 “,.,。” 字符串形式传入);
  • 模型组件路径:-hb(cnhubert 路径)、-b(bert 路径)。
(2)启动 API 服务
  • 运行脚本:在终端中执行 python api.py 或 runtime\python.exe api.py,可直接运行(后续推理时指定参数),或启动时传入参数(如指定默认参考音频、设备等)。
  • 验证启动:出现网址即代表接口开启(默认如http://127.0.0.1:9880)。
(3)内网共享设置
  • 获取本机 IPv4 地址:打开新终端输入ipconfig,找到 “无线局域网适配器 WLAN” 项下的 IPv4 地址;
  • 替换地址:用 IPv4 地址替换默认网址中的 “0.0.0.0”,同一内网设备可通过该地址调用接口(例如http://10.10.9.169:9880)。
(4)查看 API 文档

在启动的网址后添加/docs,即可查看 FastAPI 自动生成的接口文档(包含请求格式、参数说明等)。

3. 请求格式(GET 与 POST)
(1)使用预设参考音频
  • GET 请求:
    http://127.0.0.1:9880?text=待合成文本&text_language=语种
    (示例:http://127.0.0.1:9880?text=先帝创业未半而中道崩殂...&text_language=zh
  • POST 请求(JSON 格式):
    {  "text": "待合成文本",  "text_language": "语种"  
    }  
    
(2)使用预设参考音频并指定分割符号
  • GET 请求:
    http://127.0.0.1:9880?text=待合成文本&text_language=语种&cut_punc=切分符号
    (示例:http://127.0.0.1:9880?text=先帝创业未半...&text_language=zh&cut_punc=,。
  • POST 请求(JSON 格式):
    {  "text": "待合成文本",  "text_language": "语种",  "cut_punc": "切分符号"  
    }  
    
(3)手动指定当次推理的参考音频
  • GET 请求:
    http://127.0.0.1:9880?refer_wav_path=音频路径&prompt_text=参考文本&prompt_language=参考语种&text=待合成文本&text_language=文本语种
    (示例:http://127.0.0.1:9880?refer_wav_path=123.wav&prompt_text=一二三。&prompt_language=zh&text=先帝创业未半...&text_language=zh
  • POST 请求(JSON 格式):
    {  "refer_wav_path": "音频路径",  "prompt_text": "参考文本",  "prompt_language": "参考语种",  "text": "待合成文本",  "text_language": "文本语种"  
    }  
    
(4)更换默认参考音频(endpoint:/change_refer
  • GET 请求:
    http://127.0.0.1:9880/change_refer?refer_wav_path=新音频路径&prompt_text=新参考文本&prompt_language=新语种
  • POST 请求(JSON 格式)
    {  "refer_wav_path": "新音频路径",  "prompt_text": "新参考文本",  "prompt_language": "新语种"  
    }  
    

4. 响应说明
  • 成功:
    • 合成请求:直接返回音频流(http code 200);
    • 更换参考音频请求:返回 JSON(http code 200)。
  • 失败:返回包含错误信息的 JSON(http code 400)。
5. 拓展与改良方案
  • 原生 API 功能不足时,可参考改良版接口:
    • CSDN 博客:《GPT-SoVITS 项目的 API 改良与使用》;
    • 支持动态切换模型和情绪的改良代码:《针对 GPT-SoVITS 项目的 API 接口改进》(可直接覆盖原 api.py,新增切换模型、情绪的接口,支持 GET/POST)。

相关参考文章:https://blog.csdn.net/ergdfhgerty/article/details/149021178https://blog.csdn.net/Polo_fang/article/details/140521946

四、常见问题及解决方法(针对 FastAPI 页面空白问题)

问题:访问 FastAPI 页面(如 docs 文档页)时显示空白,链接正确但无内容

核心原因:页面依赖的 CSS 和 JavaScript 资源(通常来自国外 CDN)加载失败,导致界面无法渲染。

解决方法:
  1. 方法一:使用网络加速工具

    • 若有 “魔法” 工具(网络加速工具),开启后重新访问页面,通常可解决 CDN 资源加载问题。
  2. 方法二:安装 fastapi_cdn_host 库替换 CDN

    • 步骤 1:安装库
      打开终端(CMD 或 PowerShell),进入项目的 runtime\Lib\site-packages 目录(或项目虚拟环境目录),执行命令:

      pip install fastapi_cdn_host  
      
       

      (注:若项目使用独立 runtime 环境,需确保库安装到该环境的 site-packages 中,而非系统全局 Python 环境。 如果安装在全局Python环境中,需要把fastapi_cdn_host库复制到runtime\Lib\sitepackages里,一共有两个文件夹的内容fastapi_cdn_host和fastapi_cdn_host-0.9.2.dist-info,可以根据文件生成时间确定哪些是需要复制的文件夹,整合包bat运行的环境库不是主机的,而是runtime里的。

    • 步骤 2:修改代码
      打开项目中的 api_v2.py 文件,在代码中添加以下内容:

      • 在文件顶部(约 123 行后)添加导入语句:
        import fastapi_cdn_host  
        

      • 在 FastAPI 实例化后(约 147 行后,通常是 APP = FastAPI(...) 之后)添加:
        fastapi_cdn_host.patch_docs(APP)  
        
    • 步骤 3:重启服务
      保存文件后,重新运行启动脚本(双击api_v2.bat),再次访问页面即可。

  3. 方法三:使用 Steam++ 等工具加速

    • 下载并安装 Steam++ 工具,启动后选择 “加速 Steam 社区” 等模式,利用其网络加速功能间接解决 CDN 资源加载问题。
  4. 注意事项

    • 若安装库后仍无效,需确认 fastapi_cdn_host 已正确放置在项目 runtime 的 site-packages 目录中(部分整合包的环境独立,需手动复制或在该目录下执行安装命令)。
    • 若上述方法均失败,可尝试更换网络环境(如手机热点),或检查防火墙 / 安全软件是否拦截了资源加载。

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

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

相关文章

HTML 颜色值

HTML 颜色值 引言 在网页设计和开发中,颜色是一个重要的元素,它能够帮助用户更好地理解内容,提升视觉效果。HTML 颜色值是用于指定网页中元素颜色的一种标准表示方法。本文将详细介绍 HTML 颜色值的种类、表示方法以及在实际应用中的使用技巧。 HTML 颜色值种类 HTML 颜…

关于记录一下“bug”,在做图片上传的时候出现的小问题

项目场景:之前的话写过csdn,最近出现了一些小事情,所以耽误了好久没有更新,最近把以前的项目拿出来然后改了下环境就出现了一些问题,该项目使用SpringBoot3.5 SpringMVC Mybatis-Plus3.5.0,然后权限控制采…

数据结构:基础知识和链表①

一、概念程序数据结构算法1.描述数据存储和操作的结构 2.操作数据对象的方法二、衡量代码的质量和效率 无论代码操作数据量多大,希望程序代码的运行时间保持恒定 随着数据的增长,程序运行时间缓慢增长随着数据的增长,程序运…

进阶向:自动化天气查询工具(API调用)

自动化天气查询工具(API调用)完全指南天气数据是日常生活中经常需要查询的信息之一。本教程将介绍如何使用Python编写一个自动化天气查询工具,通过调用开放的天气API获取实时天气数据。这个工具适合完全不懂编程的新手学习,将从最…

【ROS2】常用命令

1、目录结构在 ROS 2 包中,launch、urdf、rviz(通常指 RViz 配置文件)、config 等文件夹应直接放在包的根目录下(与 robot_arm/ Python 模块目录同级)。这是 ROS 2 社区的通用约定,便于工具(如 …

基础组件(三):mysql连接池

文章目录一、MySQL连接池设计1. 连接池解决了什么问题?连接池的作用 (好处)为什么不创建多条连接而用连接池2. 同步和异步连接池的区别同步连接池(场景局限,应用服务器启动时初始化资源)异步连接池&#xf…

FI文件包含漏洞

本地文件包含(LFI)文件包含开发人员将可重复使用的内容写到单个文件中,使用时直接调用此文件,无需再次编写,这种调用文件的过程一般被称为文件包含。这样编写代码能减少代码冗余,降低代码后期维护难度&…

rapidocr_web v1.0.0发布了

建立RapidOCRWeb独立仓库 终于将web这块代码移了出来,成立了独立仓库RapidOCRWeb (https://github.com/RapidAI/RapidOCRWeb )。这样以来,RapidOCR仓库下的各个衍生项目均有自己的独立仓库,可以单独控制发版和维护。这也算是为RapidOCR减负了…

Arduino IDE离线安装ESP8266板管理工具

文章目录概要官网地址开发板管理地址安装ESP8266开发板支持离线安装额外记录NODE启动服务概要 Arduino IDE离线安装ESP8266板管理工具&#xff0c;在线安装因为网络或者https的问题不能安装 官网地址 Adruino&#xff1a;https://www.arduino.cc/ ESP8266项目&#xff1a;<…

两款免费数据恢复软件介绍,Win/Mac均可用

数据已成为我们生活与工作中不可或缺的重要组成部分。无论是珍贵的家庭照片、关键的工作文档&#xff0c;还是重要的学习资料&#xff0c;都以数据的形式存储在各类设备中。然而&#xff0c;数据丢失的情况却时常发生&#xff0c;可能是误操作删除&#xff0c;可能是设备意外损…

Java开发中敏感信息加密存储全解析:筑牢数据安全防线

Java开发中敏感信息加密存储全解析&#xff1a;筑牢数据安全防线 一、引言 1.1 敏感信息存储的现状与挑战 在数字化时代&#xff0c;数据已然成为企业和组织的核心资产之一&#xff0c;而敏感信息的存储更是重中之重。从日常的用户登录密码、身份证号码&#xff0c;到金融领域…

list的使用和模拟

(一)list的了解 (1)简单了解 list的文档介绍 list是基于双向链表的序列式容器&#xff0c;支持双向迭代和任意位置的常数时间插入删除&#xff0c;相比 array、vector 等容器在这类操作上更高效&#xff0c;但不支持随机访问&#xff08;访问需线性遍历&#xff09;且因额外…

Docker 初学者需要了解的几个知识点 (五):建容器需要进一步了解的概念

之前在《Docker 初学者需要了解的几个知识点》几篇文章里&#xff0c;我们梳理了 Docker 的核心概念&#xff08;如镜像、容器、网络等&#xff09;&#xff0c;但在实际搭建 ThinkPHP 容器环境时&#xff0c;又遇到了一些更具体的术语和配置场景。这些内容和实操结合紧密&…

【数据结构】栈的顺序存储(整型栈、字符栈)

【数据结构】栈的顺序存储&#xff08;整型栈、字符栈&#xff09;一、栈的结构定义二、字符栈的初始化、入栈、出栈、判断是否栈为空、获取栈顶元素、获取栈的当前元素个数等操作三、整型栈的初始化、入栈、出栈、判断是否栈为空、获取栈顶元素、获取栈的当前元素个数等操作一…

【大模型实战】向量数据库实战 - Chroma Milvus

在 RAG&#xff08;检索增强生成&#xff09;场景中&#xff0c;非结构化数据&#xff08;文本、图像等&#xff09;的高效检索是核心需求。传统关系型数据库难以胜任&#xff0c;而向量数据库通过将数据转化为向量、基于相似度快速匹配&#xff0c;成为 RAG 的关键支撑。本文聚…

pytorch程序语句固定开销分析

深入探索PyTorch与Python的性能微观世界&#xff1a;量化基础操作的固定开销 在深度学习的性能优化工作中&#xff0c;开发者通常将目光聚焦于模型结构、算法效率和并行计算策略。然而&#xff0c;在这些宏观优化的背后&#xff0c;构成我们代码的每一条基础语句——无论是PyTo…

ABP VNext + CloudEvents:事件驱动微服务互操作性

ABP VNext CloudEvents&#xff1a;事件驱动微服务互操作性 &#x1f680; &#x1f4da; 目录ABP VNext CloudEvents&#xff1a;事件驱动微服务互操作性 &#x1f680;一、引言 ✨☁️ TL;DR&#x1f4da; 背景与动机&#x1f3d7;️ 整体架构图二、环境准备与依赖安装 &am…

软件测试测评公司关于HTTP安全头配置与测试?

浏览器和服务器之间那几行看不见的HTTP安全头配置&#xff0c;往往是抵御网络攻击的关键防线。作为软件测试测评公司&#xff0c;我们发现超过六成的高危漏洞源于安全头缺失或误配。别小看这些响应头&#xff0c;它们能直接掐断跨站脚本、点击劫持、数据嗅探的攻击路径。五条命…

Mysql集成技术

目录 mysql的编译安装与部署 1.编译安装mysql 2.部署mysql mysql主从复制 什么是mysql主从复制&#xff1f; 1.配置master 2.配置slave 3.存在数据时添加slave2 4.GTID模式 什么是GTID模式&#xff1f; 配置GTID 5.延迟复制 6.慢查询日志 核心作用 开启慢查询日志…

《MySQL进阶核心技术剖析(一): 存储引擎》

目录 一、存储引擎 1.1 MySQL体系结构 1.2 存储引擎介绍 1). 建表时指定存储引擎 2). 查询当前数据库支持的存储引擎 1.3 存储引擎特点 1.3.1 InnoDB 1.3.2 MyISAM 1.3.3 Memory 1.3.4 区别及特点 1.4 存储引擎选择 一、存储引擎 1.1 MySQL体系结构 1). 连接层 最上…