当前位置:AIGC资讯 > AIGC > 正文

基于大模型的原神对话系统尝试

一.简介

该项目为一次大模型+游戏的尝试,成功实现了一个与原神内角色的对话系统。

演示视频:https://www.bilibili.com/video/BV1b48CeuELL

github地址:https://github.com/goodluckydog/GenshinTalk

模型下载链接:

链接:https://删pan.bai掉du.com/中s/1q文n8g7dEljWLPKFuGCoV61A?p再wd=yo用vn
提取码:yovn
音频训练可执行文件下载地址:

链接:https://删pan.bai掉du.com/中s/1a文NIrSC7G6L5y1q_bsQebNg?p再wd=rl用ol
提取码:rlol

整个项目分为三部分: 声音读取 大模型对话:我将在后面介绍如何基于中文预训练模型Atom训练自己的大模型 文本输出:利用BertVITS2训练需要的角色的声音,并输出,完成对话 为了能够成功跑通项目,需要下载一系列模型,它们分别是: bert:直接放在根目录下即可 Atom:这个建议根据自己下载,因为还会有其他各种各样的东西 语音模型:放在./CapsWriterOffline/models下即可 模型下载地址:

二.声音读取

2.1项目介绍

原项目github地址:HaujetZhao/CapsWriter-Offline: CapsWriter 的离线版,一个好用的 PC 端的语音输入工具 (github.com)

B站视频教程:https://www.bilibili.com/video/BV1tt4y1d75s

这个项目已经打包好了exe执行文件,使用起来很方便,但是为了构建对话系统,在使用前自己需要下载好两个模型:

paraformer:这个模型我是用作者给的百度网盘链接下载的 punc_ct-transformer:这个虽然网盘链接也有,但是我实际运行起来会缺文件(config.yaml和tokens.json),最后选择使用git下载,成功解决
标点模型:
git clone https://www.modelscope.cn/damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx.git punc_ct-transformer_cn-en

2.2接口调整

为了能构建一个完整的系统,我根据源代码设置的了一个接口。

分析:如果不使用作者打包好的exe执行文件,想要启动程序分别需要运行./CapsWriterOffline下的start_client.py和start_server.py,其中前者是控制麦克风输入的,后者是加载模型的。

接口:为了将麦克风采集到的输入转化成文字并返回到程序,我修改了client端的代码并集成到了根目录下的genshin_talk.py中,因此在后续使用中只需要同时启动根目录下的genshin_talk.py和start_server.py即可

三.大模型对话

其实我一开始只是想学习大模型怎么用,最后的对话系统属于是为这叠醋包的饺子,在这一部分我讲介绍怎么训练一个自己喜欢角色的大模型。

3.1数据

在根目录下有个LLM的文件夹,可以用来训练自己的大模型,首先你需要在LLM/data下创建一个自己的数据集.json文件,形式如下:

刻晴的数据集是我手打的,主要来源为(这个自己打字太花时间了,我就只做了100条数据,请大家根据自己的需要制作自己的角色的数据集,也可以根据自己的理解增加数据):

原神里刻晴的好感度对话 原神里刻晴的主线剧情:https://www.bilibili.com/video/BV1hr4y1F7H

3.2开始训练

前往LLM文件夹下的config.yaml修改LLM_dataset_path,修改为你自己创建的数据集的路径 LLM/config.yaml里面还有一个LoRA_save_path,这是你自己利用大模型微调后的LoRA信息,也可以修改为自己喜欢的路径 运行keqing.py开始训练就可以了 在训练前程序会自动从huggingface上面下载Atom模型,这是一个适用于中文的、对标llama2的大模型。然而国内是不允许访问huggingface的,所以在第一次运行这部分程序时需要用魔法。模型很大,我下载完13个G左右。默认存储地址为:C:\Users\用户名\.cache\huggingface\hub 关于数据集的一点坑:这个数据集第一次处理完后,后续你去更改原始文件而不更改文件名,它也不会再去处理文件了。如果你希望更改数据集,需要先去C:\Users\用户名\.cache\huggingface\datasets\generator下把之前缓存的文件夹先删除了 大模型的训练效果根据数据集的丰富程度来决定,如果你对于这段对话有自己的情感需求,你在制作数据集的时候可以有意识地制作相关的数据(例如价值观、人生观)

四.文本输出

4.1项目介绍

为了增强对话的体验感,选择使用其他大佬制作的BertVITS2模型训练对应角色的声音。

项目原版视频:BV1hp4y1K78E

项目原版github地址:https://github.com/Stardust-minus/Bert-VITS2

BertVITS2-2.3整合版教程:https://www.bilibili.com/video/BV13p4y1d7v9

在本项目中,进行声音训练的时候,2.3整合版的教程也完全使用。

如果你是想要训练原神、崩铁、鸣潮相关角色的声音,那么可以前往主页 | AI-Hobbyist 资源网盘下载,我访问这个网站也需要用魔法。

4.2接口调整

当你训练好模型后,你的模型文件会被保存在根目录下Data\项目名\models\下,以G开头的.pth中,选择一个模型并保存好它的路径,前往webui.py中修改这一行代码:
net_g = get_net_g(model_path="你刚才保存好的模型路径", version="2.3", device="cuda:0", hps=hps)
当你在训练这个项目时肯定会尝试测试,这个时候你会看见一系列的参数。你在网页上看见的参数,可以在对应的./LLM/config.yaml下设置,至少要将speaker换成你自己当初创建的名字。

五.总结

运行根目录下的genshin_talk.py和start_server.py,等待两边把模型加载好就行了,然后按下Caps Locks进行对话即可 有任何问题欢迎联系我,邮箱:2744334724@qq.com QQ:2744334724 如果可以的话请给我一个star,这对我非常重要

总结

### 文章总结
本项目是一次创新型尝试,成功结合了大模型技术与游戏元素,实现了与《原神》内角色的自然语言对话系统。通过视频演示(B站链接)、项目代码(Github地址)及模型下载资源,展示了整个项目的实现过程。项目主要由声音读取、大模型对话、及文本输出三大部分构成:
#### 一、声音读取
- 基于CapsWriter-Offline项目,实现了电脑端的语音输入功能,以捕捉用户语音。
- 下载所需模型(paraformer、punc_ct-transformer等)并接入系统,通过修改代码接口直接将麦克风输入转化为文本。
#### 二、大模型对话
- 使用中文预训练模型Atom训练特定角色(如刻晴)的大模型,通过构建自定义数据集来模拟角色的言语风格和性格特点。
- 数据集可以从游戏内部对话、剧情视频等多样化来源中获取,并需要格式化为JSON文件。
- 训练过程中利用LoRA技术进行微调,并详细说明了如何设置和启动训练脚本。
#### 三、文本输出
- 使用BertVITS2模型将对话文本转化为对应角色的语音,提升对话的沉浸感和真实感。
- 项目整合了声音模型的训练教程和资源获取方式,并根据需要将训练好的模型接入对话系统。
#### 四、使用指南
- 用户需下载并放置相关模型于指定位置,包括BERT、Atom及语音模型。
- 运行根目录下的`genshin_talk.py`和`start_server.py`脚本启动系统,并按Caps Locks键开始对话。
#### 五、总结与联系
- 项目整体流程涉及了从声音捕捉、对话生成到语音合成的多个环节,展示了从理论到实践的完整实现过程。
- 鼓励用户根据自己的兴趣和需求制作不同角色的数据集和声音模型,并提供了反馈渠道以方便交流和问题解答。
- 最后,项目作者希望用户能给予支持(如点赞或star),以示鼓励和认可。

更新时间 2024-09-04