嘉立创产业服务站群
发作品签到
专业版

GPT语音对话猫猫(ChatMeow)

工程标签

2.1w
0
0
52

简介

这个是ChatGPT的语音对话猫猫

简介:这个是ChatGPT的语音对话猫猫
星火计划2023

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2023-08-14 04:12:27更新时间:2024-06-03 03:31:33

描述

项目说明 ❤️

这是“会说话的猫猫”系列项目

820ce07f8264948a015394d67b895967c9b59024.jpg

第一版演示介绍视频blibili

我做了一个ChatGPT的语音对话猫猫

第二版演示介绍视频bilibli
未制作...

第一版第二版
终端设备香橙派(Linux)ESP32
语音识别百度语音API--付费PySpeechRecognition
语音合成百度语音API--付费Vits
ChatGPT接口API版--付费ChatGPT网页逆向库
电量消耗
尺寸被linux系统限制通过改进pcb,可以做的很小
性能够用
外观两个pcb+电池 需要大盒子足够塞入毛绒玩具中
使用可单独使用需要一个电脑或者服务器

>第一版可以通过软件升级达到第二版的所有效果,故接下来按照硬件的不同分为Linux版和ESP32版

Linux版:功能上限高,独立性更强
ESP32版: 小巧,成本低

发现 🔍

> 这一栏用来介绍项目的最近的活跃度

2024.5

  • GPT逆向库好像不更新了,Linux版本代码使用one-api驱动,可以对接各种的LLM
  • 修复了OLED屏幕反着的bug(怎么现在才修?),屏幕应该能用,但是还没有适配代码
  • orangePiZero更新换代快,最新的Zero3不仅性能更好,而且价格更便宜,但是尺寸完全不同。所以我打算放弃orangePi系列,使用立创泰山派。板子已经画好了,包括了除了麦克风和扬声器,电池供电,还使加入显示屏(终于加入显示屏了),但是今年(2024)年因为备考的缘故,基本上没时间去做测试(等下,是不是还有个orangePi2W的超迷你款还没测试)
  • ESP32版等我的大更新,语音唤醒,显示屏等功能都会安排上的

2023.10.13

  • 添加Linux版流程图

2023.11.1

  • 添加ESP32版流程图

项目相关功能 🎈

  • 扮演可爱猫猫和你对话或者充当博学的语音助手
  • 借助ChatGPT函数调用功能,使其可以控制实体设备

设计原理 🧩

Linux版

这个版本由一个基本的linux派和语言扩展模版组成。 PCB中提供的是香橙派Zero的扩展版,通过修改PCB理论可以支持绝大多数的派,选择香橙派主要是因为其尺寸迷你,价格性能也不错。未来会设计树莓派和其他水果派的扩展板。
扩展模块提供了一个基本的麦克风输入和一个功放,同时提供锂电池充放电系统,达到便携的目的。
这个版本电路非常简单,制作难度很小。
香橙派扩展版.png

API版本

API版本.png

逆向库版本(测试)

逆向库版本.png

ESP32版

这个版本由于ESP32性能不足,需要一个服务端处理语音数据。故分为两个部分,一个是服务端,一个是边缘设备(ESP32)。服务端需要完成计算量较大的语言语音转文字和语言合成工序,同时也要和ChatGPT进行通讯。边缘设备(ESP32)需要做的事情很简单,捕捉语音传给服务端,同时从服务端下载合成好的语音在输出。
目前PCB基本兼容ESP32-LyraT-Mini开发版,代码使用ADF库的话只需修改按钮定义。
未来会设计更加迷你的PCB板子。

ESP32版结构流程图

ESP32.png

关于Vits

借助vits可以合成你喜欢角色的语音模型,测试模型使用原神纳西妲语音训练,仅供测试使用。

软件说明

Linux版代码

Linux版代码目前适配的是第一版,使用免费体验的百度智能云语音api。未来的更新计划会让其适配第二版,脱离百度语音api。

代码仓库

ChatMeow/chat-meow-vits: 这是有vits的🐱 (github.com)

https://github.com/ChatMeow/chat-meow-vits

Pythonv3
Dockerkjqaq/chatmeow

1.克隆本项目到OrangePi (使用Unbuntu20.04系统为例),并安装依赖

git clone https://github.com/meowkj/chat-meow.git && cd chat-meow

安装必备依赖

apt-get update -y && RUN apt-get install -y python3-dev portaudio19-dev python3-pyaudio
pip install Flask openai PyAudio PyYAML requests

或者使用准备好的Docker镜像(测试)

docker pull kjqaq/chatmeow

2.获取百度和openai的key

百度

获取百度云KEY,需要有短文字识别,语音合成权限
百度官方文档地址

  • 语音识别:
  • 语音合成:

openai

openai apikey 查看链接

根目录下创建key.yml文件,按照如下格式填入

BAIDU_KEY:
  - "4E1BG9lTnlSeIf1NQFlrxxxx"           # 填写网页上申请的appkey
  - "544ca4657ba8002e3dea3ac2f5fxxxxx"   # 填写网页上申请的APP SECRET
  - "123456PYTHON"                       # 填写一个CUID 只是用来区分不同应用 随意填写

OPENAI_API_KEY: "sk-xxxxxxxxxxxxxxxxxxxxx" # openai的apikey

3.运行

在根目录下
使用自己的python环境

python3 mian.py

使用docker提供的环境(测试)

docker run --itd -v .:/chat --privileged -itd kjqaq/chatmeow

可能的问题

荔枝派Zero的音频可能默认不会打开,需要像电脑调音量一样打开音量

修改WebUI(可选)

Linux版代码目前带了一个网页UI可以调整一些参数,也能动态显示GPT返回的参数。
UI编译好已经放在Flask服务器中,如果要修改UI的话

1. 环境准备

NodeJSLatest
pnmpLatest
Vuev3
安装NodeJS,最新稳定版即可
使用pnmp作为包管理器
使用Vue3框架简单快速构建了一下页面

2.克隆代码仓库

git clone https://github.com/ChatMeow/chat-meow-ui.git
cd chat-meow-ui

3.安装依赖

pnpm install

3.5编译并启动支持热重载的测试服务器

pnpm run serve

4.编译为生产准备的文件

pnpm run build

编译好得到dist目录里面的文件,放入chat-mewo/meow/web,其中html文件放入templates文件夹中,js/css文件放入static文件夹中对应的js/css目录中

ESP32版

>代码仓库有两个,一个服务端的代码由Python驱动,一个是ESP32端由ESP-ADF驱动

ESP32版服务端代码仓库(Python)

ChatMeow/chat-meow-vits: 这是有vits的🐱 (github.com)

https://github.com/ChatMeow/chat-meow-vits

Pythonv3.10
逆向库revchatgpt

> pyopenjtalk库似乎只能在Python3.10上安装成功,此库只影响日语生成

1.环境安装

克隆本项目

git clone https://github.com/ChatMeow/chat-meow-vits.git
cd chat-mewo-vits

安装环境(推荐使用虚拟环境)

pip install -r requirements.txt 

如果不存在配置文件的话,第一次运行会生成配置文件

python server.py

2.配置参数

需要先配置OpenAI登录信息,在文件openai.ini

配置access_token

或者配置email(邮箱) password(密码)字段
> 只需配置access_token(推荐)或者是email&password, 如果都配置了,优先使用access_token

你需要准备一个Vits模型文件,测试用模型可以在Release处下载,仅供参考
模型文件(*.pth config.json)放入根目录model(可改)文件夹里面,同时需要在config.ini中填入对应的文件名称

3.启动测试服务器

python main.py

4.开始测试服务器

  • 开始运行后,将启动默认端口8000的服务器
  • /upload接口支持POST方法,和ESP32配置项目Server URL to send data对应
  • 完成tts,vits后在static目录生成out.wav文件,和ESP32配置项目Server FILE URL to play voice对应

即将支持

  • 一个网页界面来配置参数
  • 支持RockChinQ大佬的free-one-api接口

ESP32端代码仓库(ESP-IDF)

MeowKJ/chat-meow-esp32 (github.com)

https://github.com/ChatMeow/chat-meow-esp32

ESP-IDFv4.4.5
ESP-ADFESP-ADF Master
ESP32 BoardESP32-LyraT-Mini or MeowBoard (ESP32 WROVER)

1.环境安装

使用的是 ESP-IDF v4.4 理论上支持ESP-IDF v5

克隆代码仓库

git clone https://github.com/ChatMeow/chat-meow-esp32.git
cd chat-meow-esp32

2.配置参数

需要先配置 Wi-Fi 连接信息,通过运行 menuconfig > Example Configuration 填写 Wi-Fi SSIDWi-Fi Password

menuconfig > Example Configuration > (myssid) WiFi SSID > (myssid) WiFi Password

其次需要选择服务器地址, ,默认情况下192.168.8.5:8000需要修改为自己的服务器地址

menuconfig > Example Configuration > Server URL to send data > Server FILE URL to play voice

3.编译和下载

请先编译版本并烧录到开发板上,然后运行 monitor 工具来查看串口输出(替换 PORT 为端口名称):

idf.py build
idf.py -p PORT flash monitor

4.开始

  • 开始运行后,将主动连接 Wi-Fi 热点
  • 检测是否按下REC(ESP32-LyraT-Mini)按键,如果使用喵板则需要修改按键参数
  • 从麦克风读取语音上传到服务器
  • 从服务器播放服务器生成好的语言
  • 循环-->>>>

即将支持

  • 静默状态识别自动识别是否讲话,读取语音开始循环
  • 通过ChatGPT函数调用功能返回参数,接口对外输出信息,控制其他实体设备

更多具体的软件说明可参考Github上的README内容

实物展示🍔

可爱的茶会猫猫,最初的设想是塞到这个铁罐子里面去


荔枝派的拓展版,结果正反反了,屏幕在夹层里面,屏幕暂时就不能使用了


第二版ESP32语音板子图片,使用嘉立创SMT工艺,比我自己焊接的好太多了,可惜没用上彩色丝印


未完待续...

设计注意事项⚠️

Linux版

  • OLED屏幕位置搞反了,暂时不能用,不影响其他

ESP32版

  • 目前设计的PCB存在不能自动下载程序的现象
  • ESP32版麦克风声音有点小,还需要更换不同麦克风测试

其他

  • 本项目由于代码仓库众多,涉及到软硬件,但是非常简单,所以推荐理解原理以后再复刻。

项目属性 🦴

本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。

关于这个项目 🔍

不知道大家有没有玩过一个Gal-ATRI-My Dear Moments-,讲述了一个机器少女寻找"心"的过程,这是这个项目的灵感来源。 AI的发展正在逐渐加速,那个世界也许离我们已经不再遥远。

在V1版本完成后,这个版本缺陷比较大,主要百度语音API免费用一个星期然后就得付费了,不是很适合个人,提到了V2版本,自己做语音识别和语音合成,但一时半并没有做V2的想法,按照正常进度估计得鸽到明年。

但是碰巧尝试了这个星火计划,投了一个PCB,感谢嘉立创以及工作人员创提供的大力支持,这下不得不先完成这个项目了。

主要之前也怎么没有接触过ESP32,特别是ESP-IDF一点都搞不明白,这算是是用ESP32完成的第一个项目,有所不足还请多多指教。

目前ESP32代码还不是很充分,但是只需要后续跟进代码即可,保留了串口输出可以和其他设备通讯,GPT的Function Calling能力带来了无限可能,GPT可以在理解了文字意义后去主动用相关参数“调用”函数,基本的例子就是GPT本身不能联网搜索,但是我们给定一个联网搜索函数,参数是一个url,当GPT觉得她需要搜索时,她就不会回答我不能搜索,而是可以去给出一个要搜索的url,告诉程序要调用联网搜索函数,程序完成网络GET操作后将返回内容给GPT,这样GPT在分析返回内容就实现了GPT联网。

借助这个GPT功能也许可以实现一种更加智能的家居模型,通过各种传感器给GPT参数,由事先告诉GPT的自然语言(吩咐),或者直接和GPT对话,GPT去判断该怎么控制终端设备,这样可以实现一些非常复杂且人性化的家居自动化。(下一个项目?)

其他

演示视频:Linux版及其制作视频:https://www.bilibili.com/video/BV1cD4y1P7by/?share_source=copy_web&vd_source=f1cb6a2ddd4b8a00dcafce0abbcc5195

ESP32版:仍在制作

视频标题排序

电器猫猫模拟-门禁猫猫模拟-Linux版演示-原代码包

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
README.md
120
2
控制电器的猫猫模拟_x264.mp4
53
3
门禁猫猫模拟测试_x264.mp4
68
4
Linux版演示_x264.mp4
112
5
ChatMeow原代码包.zip
181
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航