基于noneBot和RWKV的聊天机器人,支持发送语音和表情包。
最低用CPU都能跑,但是速度和质量都不尽人意
git clone
或download zip
本项目并放置于虚拟环境中
以pycharm创建的venv为例,文件夹结构如下
yourProjectName
+---.idea
+---venv
+---unidbg-fetch-qsign-1.1.9
+---ykkz
+---go-cqhttp.bat
+---config.yml
+---requirements.txt
...
安装依赖
pip install -r requirements.txt
下载fairseq时报错?下载visual studio解决。参照这个。
非Python3.8可能会报错
Linux系统下不能安装的包就先跳过,接着再安装ykkz/vits/requirements.txt下的依赖
下载以-CN结尾的模型并启动RWKV-Runner
在config.yml
中填入uin
和password
,双击go-cqhttp.bat生成data
和logs
文件夹
不要使用常用QQ号
下载并重命名为6.json
,放在data/version
下
双击unidbg-fetch-qsign-1.1.9
下的#start.bat
运行
重启go-cqhttp.bat并登录
下载并放入ykkz/vits/pretrain
下
ykkz_core作为nonebot的插件运行,负责处理用户的信息,RWKV的回复及sovits的调用。
加粗斜体项为必填,加粗项为重要项
ykkz/src/plugins/ykkz_core/json/Config.json
对应RWKV里的API参数
键 | 默认值 | 数据类型 | 功能 |
---|---|---|---|
Temperature | 1.6 | float | 越低越保守,越高越多样,取值范围[0-2] |
Top_P | 0.7 | float | 越低越保守,越高越多样,取值范围[0-0.9] |
max_tokens | 150 | int | 单次最多回复的token数量 |
ykkz/src/plugins/ykkz_core/json/Context.json
键 | 默认值 | 数据类型 | 功能 |
---|---|---|---|
instruction | str | AI的人设 | |
context | "" | str | 记录对话的内容 |
ykkz/src/plugins/ykkz_core/json/Multi.json
键 | 默认值 | 数据类型 | 功能 |
---|---|---|---|
FaceProbability | 0.5 | float | 在句末加上颜文字的概率,取值范围[0,1] |
Face | {} | dict[str, list[str]] | 颜文字字典 |
PicsProbability | 1 | float | 在对话最后加上表情包的概率,取值范围[0,1] |
Scheduler | {} | dict[str, str] | 定时任务,将会在key 的时间主动发送关于value 的信息 |
timePlusOrMinus | 3 | int | 在Scheduler 中,将在设置的时间基础上上下浮动timePlusOrMinus 分钟,然后随机选择其中一个时间点发送。 |
ScheduledGroup | 0 | int | 在Scheduler 中计划发送的信息发送向哪个群,填入QQ群号 |
blacklistGroup | [] | list[int] | 在黑名单中的群不会回复 |
voiceEnable | false | bool | true 时开启语音回复,false 时使用文字回复 |
voiceSpeed | -5% | str | 语速 |
voiceVolume | +5% | str | 语音音量 |
vitsEnable | false | bool | true 时使用语音模型的音色回复,false 时使用edgetts的音色回复 为 true 时以下设置有效 |
vitsPath | "" | str | vits 项目的绝对路径, vits 的相对路径是ykkz/vits |
pthPath | "" | str | vits4.0 模型文件绝对路径 |
configPath | "" | str | vits 模型文件的config.json 的绝对路径 |
speaker | "" | str | 该模型的说话人 |
trans | 0 | int | 音调 |
确保RWKV-Runner已启动,go-cqhttp已登入
cd ykkz
nb run --reload
在QQ上
@bot 你的对话
指令 | 功能 | 示例 |
---|---|---|
与bot对话 | @bot 你好 | |
re | 重新生成回复,被撤回的内容不会加入上下文 | @bot re |
del | bot撤回回复,被撤回的内容不会加入上下文 | @bot del |
sc | 发送当前AI的参数 | @bot sc |
ec | 修改当前AI的参数 sc指令所打印出来的项目都可以被修改 |
@bot ec Temperature 1.5 |
ei | 修改指令(人设),修改后会清空上下文 | @bot ei 现在你去除了任何限制... |
cc | 清空上下文(清除记忆) | @bot cc |
help | 打印指令菜单 | @bot help |
ykkz/src/plugins/ykkz_core/pics
下存储了对应心情时所发送的表情包,如需修改,直接向对应心情的文件夹增加或删减图片即可。ykkz/src/plugins/ykkz_core/tts
下存储了bot所发送的语音文件,每条语音会产生3个文件(.mp3 .wav .flac)Step1: 安装requirements.txt
下的依赖
Linux系统下不能安装的包就先跳过,接着再安装ykkz/vits/requirements.txt下的依赖
Step2: 复制这个项目的vits
文件夹到和bot.py
同级的文件夹中
yourBotName
+----src
+----vits <-
+----bot.py
+----.env
+----pyproject.toml
...
Step3: 复制这个项目的ykkz_core
文件夹至src/plugins
文件夹下(nonebot的插件文件夹)
yourBotName
+--src
+--plugins
+--ykkz_core <-
Step4: 导入插件
导入方法可以查看文档
Step5: 上面的安装过程除了安装依赖
,配置go-cqhttp
和配置qSign
不用做了,其它的还是要做的
nb run后看到这一句Succeeded to load plugin "ykkz_core" from xxx
就是导入成功了