GPT-SoVITS教程,接入酒馆AI,SillyTavern-1.11.5,让AI女友声若幽兰

在这里插入图片描述

本次分享一下如何将GPT-SoVITS接入SillyTavern-1.11.5项目,让让AI女友声若幽兰,首先明确一下,SillyTavern-1.11.5只是一个前端项目,它没有任何大模型文本生成能力,所以后端必须有一个api服务来流式生成对话文本,这里选择koboldcpp。

首先看一下简单的项目运行架构图:

这里SillyTavern作为前端负责向后端的Koboldcpp发起请求,Koboldcpp流式返回文本,SillyTavern接受聊天文本进行展示,当文本接受完毕后,SillyTavern再次向后端的GPT-SoVITS发起请求,将全量文本传递给后端GPT-SoVITS,GPT-SoVITS根据文字来生成语音,并将语音的二进制文件返回给SillyTavern,最后SillyTavern播放音频,至此,一个完整的流程就走完了。

部署SillyTavern

首先克隆SillyTavern的官方项目:

git clone https://github.com/SillyTavern/SillyTavern.git

直接运行启动脚本即可:

shell start.sh

如果是windows平台,运行bat:

start.bat

由于SillyTavern没有预留GPT-SoVITS的位置,所有将原本的XTTS改为GPT-SoVITS:

async fetchTtsGeneration(inputText, voiceId) {  console.info(`Generating new TTS for voice_id ${voiceId}`);  if (this.settings.streaming) {  const params = new URLSearchParams();  params.append('text', inputText);  params.append('speaker_wav', voiceId);  params.append('language', this.settings.language);  return `${this.settings.provider_endpoint}/tts_stream/?${params.toString()}`;  }  const response = await doExtrasFetch(  `${this.settings.provider_endpoint}/tts_to_audio/`,  {  method: 'POST',  headers: {  'Content-Type': 'application/json',  'Cache-Control': 'no-cache',  // Added this line to disable caching of file so new files are always played - Rolyat 7/7/23  },  body: JSON.stringify({  'text': inputText,  'speaker_wav': voiceId,  'language': this.settings.language,  }),  },  );  if (!response.ok) {  toastr.error(response.statusText, 'TTS Generation Failed');  throw new Error(`HTTP ${response.status}: ${await response.text()}`);  }  return response;  }

部署Koboldcpp

随后部署后端的大模型api:

git clone https://github.com/LostRuins/koboldcpp.git

输入编译命令

windows平台:

make

Mac平台:

make LLAMA_METAL=1

安装依赖:

pip install -r requirements.txt

启动服务:

Python3 koboldcpp.py --model /Users/liuyue/Downloads/causallm_7b-dpo-alpha.Q5_K_M.gguf  --gpulayers 40 --highpriority --threads 300

此时接口运行在http://localhost:5001

部署GPT-SoVITS

最后,部署GPT-SoVITS项目:

git clone https://github.com/RVC-Boss/GPT-SoVITS.git

安装依赖:

pip3 install -r requirements.txt

修改一下api接口逻辑:

@app.post("/")  
async def tts_endpoint(request: Request):  json_post_raw = await request.json()  return handle(  json_post_raw.get("refer_wav_path"),  json_post_raw.get("prompt_text"),  json_post_raw.get("prompt_language"),  json_post_raw.get("text"),  json_post_raw.get("text_language"),  json_post_raw.get("sweight"),  json_post_raw.get("gweight"),  )  @app.get("/")  
async def tts_endpoint(  refer_wav_path: str = None,  prompt_text: str = None,  prompt_language: str = None,  text: str = None,  text_language: str = None,  sweight: str = None,  gweight: str = None,  
):  return handle(refer_wav_path, prompt_text, prompt_language, text, text_language,sweight,gweight)  def speaker_handle():  return JSONResponse(["female_calm","female","male"], status_code=200)  @app.get("/speakers_list")  
async def speakerlist_endpoint():  return speaker_handle()  def tts_to_audio_handle(text):  return handle(llama_audio,llama_text,llama_lang,text,"中英混合")  @app.post("/tts_to_audio/")  
async def tts_to_audio(request: Request):  json_post_raw = await request.json()  return tts_to_audio_handle(json_post_raw.get("text"))  if __name__ == "__main__":  uvicorn.run(app, host="0.0.0.0", port=port, workers=1)

这里添加新的基于get方法的speakers_list,是为了配合xtts接口的格式,同时基于post方法的tts_to_audio方法用来生成语音,它只接受一个参数text,也就是需要转为语音的文本。

至此,三个服务就都配置好了,最后奉上视频教程:

https://www.bilibili.com/video/BV1uJ4m1a7L4/

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

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

相关文章

10.测试教程-性能测试loadrunner1

文章目录 1.LoadRunner的安装2.Loadrunner的基本概念3.开发测试脚本3.1录制基本的用户脚本3.2插入事务3.3插入集合点3.4参数化输入3.5插入函数3.6插入检查点3.7运行时设置3.8单机运行测试脚本 4.玩转三个测试工具4.1Virtual User Generator(此处讲解和3.1是一致的)4.2Controlle…

(已解决)vue运行时出现Moudle Bulid error: this.getoptios is not a function at........

1.首先查看你的less-loader版本 点击package.json 即可查看less-loader版本,我之前的版本是12.0,太高了,出现了不兼容的问题 2、卸载less-loader ctrlshift~ 打开项目终端 ,输入: npm uninstall less-loader 3.重…

漏洞分析 | 经典的Shiro反序列化

0x01、前言 相信大家总是面试会问到java反序列化,或者会问到标志性的漏洞,比如shiro反序列化,或者weblogic反序列化漏洞。 那我就这篇文章为大家讲解一下,不懂的哥哥直接背一下,理解一下就好了。 至于为什么要选择sh…

企业微信应用结合Cpolar内网穿透实现固定域名验证回调本地接口服务

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段,应用服务通常是部署在开发环境,在有数据回调的开发场…

智能合约 之 ERC-721

ERC-721(Non-Fungible Token,NFT)标准 ERC-721是以太坊区块链上的一种代币标准,它定义了一种非同质化代币(Non-Fungible Token,NFT)的标准。NFT是一种加密数字资产,每个代币都具有独…

npm安装了高版本如何降低npm版本

npm版本降级 因项目依赖原因把node升级到了20,npm自动安装了10.0,后又把node降级到了v16。但npm版本未降级,手动降级 1、输入以下命令,其中后面改为自己想要安装版本 npm install npm6.4.1 -g 2、输入以下命令,查看n…

C++细节

背景知识: 面向对象的编程中,类(Class)是创建对象的蓝图或模板,它包含了数据(通常称为属性或变量)和行为(通常称为方法或函数)。将数据封装为私有(private&am…

clickhouse快速入门(入门篇必看必会)

1. 启动clickhouse-client clickhouse-client --user xx --password xx 2. 再外部连接clickhouse客户端 并导出表中数据到本地 # 连接clickhouse客户端并导出db库中的test表 带表头的导出到指令目录下 ## >> 是追加, > 是覆盖 cickhouse-client --password -d …

2024年大模型面试准备(三):聊一聊大模型的幻觉问题

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…

AI论文速读 | 具有时间动态的路网语义增强表示学习

论文标题: Semantic-Enhanced Representation Learning for Road Networks with Temporal Dynamics 作者: Yile Chen(陈亦乐) ; Xiucheng Li(李修成); Gao Cong(丛高) ; Zhifeng Ba…

SpringBoot3.2.0+knife4j-openapi3

1.引入项目依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.5.0</version> </dependency> 2.新增配置文件 import io.swagger…

【双指针】Leetcode 202.快乐数

题目解析 Leetcode 202.快乐数 看完题目描述相信大家已经知晓题目的含义&#xff0c;我们通过一张图再剖析一下题目含义 快乐数或者非快乐数都是可以成环的&#xff0c;这个是数学上已经证明了的。所以这道题的最后含义就是分辨出环中全部是1或者全部没有1的 双指针 成环问…