GPT语音对话猫猫(ChatMeow) - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 GPT语音对话猫猫(ChatMeow)

简介:这个是ChatGPT的语音对话猫猫

开源协议: GPL 3.0

(未经作者授权,禁止转载)

已参加:星火计划2023

创建时间: 2023-08-14 12:12:27
更新时间: 2024-04-12 10:53:09
描述
# 项目说明 ❤️ 这是“会说话的猫猫”系列项目 ![820ce07f8264948a015394d67b895967c9b59024.jpg](//image.lceda.cn/pullimage/G6mmAvPwLQuwTdozMsSGdNb040TNPofXyIaX6MLB.jpeg) 第一版演示介绍视频blibili [我做了一个ChatGPT的语音对话猫猫](https://www.bilibili.com/video/BV1cD4y1P7by/?share_source=copy_web&vd_source=f1cb6a2ddd4b8a00dcafce0abbcc5195) 第二版演示介绍视频bilibli 未制作... | | 第一版 | 第二版 | |-----------|-------|--------------------| | 终端设备 | 香橙派(Linux) | ESP32 | | 语音识别 | 百度语音API--付费 | PySpeechRecognition | | 语音合成 | 百度语音API--付费 | Vits| | ChatGPT接口 | API版--付费 | ChatGPT网页逆向库| |电量消耗|快|慢| |尺寸|被linux系统限制 | 通过改进pcb,可以做的很小| |性能|好| 够用| |外观|两个pcb+电池 需要大盒子| 足够塞入毛绒玩具中| |使用|可单独使用|需要一个电脑或者服务器| >第一版可以通过软件升级达到第二版的所有效果,故接下来按照硬件的不同分为Linux版和ESP32版 Linux版:功能上限高,独立性更强 ESP32版: 小巧,成本低 # 发现 🔍 > 这一栏用来介绍项目的最近的活跃度 ### 2023.10.11 - 添加两个模拟视频,分别是电器猫猫和门禁猫猫,用于测试给猫猫分配工作,让猫猫也能实现更多的价值。该功能预计先上线Linux版本。 - 更改项目进度,给Linux版实现ESP32全部功能为下一个进度,由于学业和其他事务影响,预计在11月中旬之前完成,争取先完成一个全功能使用版本 ### 2023.10.13 - 添加Linux版流程图 ### 2023.11.1 - 添加ESP32版流程图 # 项目相关功能 🎈 - 扮演可爱猫猫和你对话或者充当博学的语音助手 - 借助ChatGPT函数调用功能,使其可以控制实体设备 # 项目进度 ⏱️ - 想法出现 2023/1 - 制作Linux版本,PCB设计,打样,3D模型设计 2023/2 - 完成语音转文字,文字转语音,chatgpt的电脑端代码 2023/8 - 完成ESP32 PCB的设计 2023/8 - PCB打样+SMT 2023/8 - PCB测试 2023/9 - 与电脑端对接,实现基础功能 2023/9 - 给Linux版实现ESP32全部功能 [由于一些事情,项目已延期] - 设计好看的外壳 - 升级ESP32代码 - 制作视频 # 设计原理 🧩 ## Linux版 这个版本由一个基本的linux派和语言扩展模版组成。 PCB中提供的是香橙派Zero的扩展版,通过修改PCB理论可以支持绝大多数的派,选择香橙派主要是因为其尺寸迷你,价格性能也不错。未来会设计树莓派和其他水果派的扩展板。 扩展模块提供了一个基本的麦克风输入和一个功放,同时提供锂电池充放电系统,达到便携的目的。 这个版本电路非常简单,制作难度很小。 ![香橙派扩展版.png](//image.lceda.cn/pullimage/rDrv3KvlTQMNTfF2o3EbVdgBPz76KjmANdSNjdeC.png) ### API版本 ![API版本.png](//image.lceda.cn/pullimage/RaujhsRwcJm6Oz8cfOAzq6ump6LyM4oNXNtk7uJL.png) ### 逆向库版本(测试) ![逆向库版本.png](//image.lceda.cn/pullimage/A6TvwkHqyCDZimQirJD7zzriNHBLvEyHk3XqPEkF.png) ## ESP32版 这个版本由于ESP32性能不足,需要一个服务端处理语音数据。故分为两个部分,一个是服务端,一个是边缘设备(ESP32)。服务端需要完成计算量较大的语言语音转文字和语言合成工序,同时也要和ChatGPT进行通讯。边缘设备(ESP32)需要做的事情很简单,捕捉语音传给服务端,同时从服务端下载合成好的语音在输出。 目前PCB基本兼容ESP32-LyraT-Mini开发版,代码使用ADF库的话只需修改按钮定义。 未来会设计更加迷你的PCB板子。 ### ESP32版结构流程图 ![ESP32.png](//image.lceda.cn/pullimage/WioByFRm7kHdkAb8UI0hmeyGumKZon7TpYDrf1Sa.png) ## 关于Vits 借助vits可以合成你喜欢角色的语音模型,测试模型使用原神纳西妲语音训练,仅供测试使用。 # 软件说明 ## Linux版代码 Linux版代码目前适配的是第一版,使用免费体验的百度智能云语音api。未来的更新计划会让其适配第二版,脱离百度语音api。 ### 代码仓库 ChatMeow/chat-meow-vits: 这是有vits的🐱 (github.com) https://github.com/ChatMeow/chat-meow-vits | Python |v3| |-|-| |Docker|kjqaq/chatmeow| ### 1.克隆本项目到OrangePi (使用Unbuntu20.04系统为例),并安装依赖 ```commandline git clone https://github.com/meowkj/chat-meow.git && cd chat-meow ``` 安装必备依赖 ```commandline apt-get update -y && RUN apt-get install -y python3-dev portaudio19-dev python3-pyaudio pip install Flask openai PyAudio PyYAML requests ``` 或者使用准备好的Docker镜像(测试) ```commandline docker pull kjqaq/chatmeow ``` ### 2.获取百度和openai的key #### 百度 获取百度云KEY,需要有短文字识别,语音合成权限 百度官方文档地址 - 语音识别:<http://ai.baidu.com/docs#/ASR-API/top> - 语音合成:<http://ai.baidu.com/docs#/TTS-API/top> #### openai openai apikey 查看链接 <https://platform.openai.com/account/api-keys> 根目录下创建**key.yml**文件,按照如下格式填入 ```yaml BAIDU_KEY: - "4E1BG9lTnlSeIf1NQFlrxxxx" # 填写网页上申请的appkey - "544ca4657ba8002e3dea3ac2f5fxxxxx" # 填写网页上申请的APP SECRET - "123456PYTHON" # 填写一个CUID 只是用来区分不同应用 随意填写 OPENAI_API_KEY: "sk-xxxxxxxxxxxxxxxxxxxxx" # openai的apikey ``` ### 3.运行 在根目录下 使用自己的python环境 ```commandline python3 mian.py ``` 使用docker提供的环境(测试) ```commandline docker run --itd -v .:/chat --privileged -itd kjqaq/chatmeow ``` ### 可能的问题 荔枝派Zero的音频可能默认不会打开,需要像电脑调音量一样打开音量 ### 修改WebUI(可选) Linux版代码目前带了一个网页UI可以调整一些参数,也能动态显示GPT返回的参数。 UI编译好已经放在Flask服务器中,如果要修改UI的话 #### 1. 环境准备 | NodeJS |Latest| |-|-| |pnmp|Latest| |Vue|v3| 安装NodeJS,最新稳定版即可 使用pnmp作为包管理器 使用Vue3框架简单快速构建了一下页面 #### 2.克隆代码仓库 ```commandline git clone https://github.com/ChatMeow/chat-meow-ui.git cd chat-meow-ui ``` #### 3.安装依赖 ```commandline pnpm install ``` #### 3.5编译并启动支持热重载的测试服务器 ```commandline pnpm run serve ``` #### 4.编译为生产准备的文件 ```commandline 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 | Python | v3.10 | |--------|----------------------------------------------------| | 逆向库 | [revchatgpt](https://github.com/acheong08/ChatGPT) | > pyopenjtalk库似乎只能在Python3.10上安装成功,此库只影响日语生成 #### 1.环境安装 克隆本项目 ```commandline git clone https://github.com/ChatMeow/chat-meow-vits.git cd chat-mewo-vits ``` 安装环境(推荐使用虚拟环境) ```commandline pip install -r requirements.txt ``` 如果不存在配置文件的话,第一次运行会生成配置文件 ```commandline python server.py ``` #### 2.配置参数 需要先配置OpenAI登录信息,在文件`openai.ini`中 配置access_token - 这是实际用于身份验证的内容喵,可以在https://chat.openai.com/api/auth/session找到 - 2周后失效 - 推荐的身份验证方法 - 如果您登录到https://chat.openai.com/,然后转到https://chat.openai.com/api/auth/session,就可以找到 或者配置email(邮箱) password(密码)字段 > 只需配置access_token(推荐)或者是email&password, 如果都配置了,优先使用access_token 你需要准备一个Vits模型文件,测试用模型可以在Release处下载,仅供参考 模型文件(*.pth config.json)放入根目录model(可改)文件夹里面,同时需要在config.ini中填入对应的文件名称 #### 3.启动测试服务器 ```commandline 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-IDF | v4.4.5 | | ---- | ---- | | ESP-ADF | ESP-ADF Master | | ESP32 Board | ESP32-LyraT-Mini or MeowBoard (ESP32 WROVER)| #### 1.环境安装 使用的是 ESP-IDF v4.4 理论上支持ESP-IDF v5 - 参考 [ESP-IDF 编程指南](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html) 安装ESP-IDF环境 - 参考 [乐鑫音频应用开发指南](https://docs.espressif.com/projects/esp-adf/zh_CN/latest/get-started/index.html) 安装ESP-ADF环境(如果已配置好VSCode+ESP-IDF插件环境,在vscode`命令面板 -> ESP-IDF:安装ESP-ADF` 可以直接安装ESP-ADF) 克隆代码仓库 ```commandline git clone https://github.com/ChatMeow/chat-meow-esp32.git cd chat-meow-esp32 ``` #### 2.配置参数 需要先配置 Wi-Fi 连接信息,通过运行 `menuconfig > Example Configuration` 填写 `Wi-Fi SSID` 和 `Wi-Fi Password`。 ```commandline menuconfig > Example Configuration > (myssid) WiFi SSID > (myssid) WiFi Password ``` 其次需要选择服务器地址, ,默认情况下`192.168.8.5:8000`需要修改为自己的服务器地址 ```commandline menuconfig > Example Configuration > Server URL to send data > Server FILE URL to play voice ``` #### 3.编译和下载 请先编译版本并烧录到开发板上,然后运行 monitor 工具来查看串口输出(替换 PORT 为端口名称): ```commandline idf.py build idf.py -p PORT flash monitor ``` #### 4.开始 - 开始运行后,将主动连接 Wi-Fi 热点 - 检测是否按下REC(ESP32-LyraT-Mini)按键,如果使用喵板则需要修改按键参数 - 从麦克风读取语音上传到服务器 - 从服务器播放服务器生成好的语言 - 循环-->>>> #### 即将支持 - 静默状态识别自动识别是否讲话,读取语音开始循环 - 通过`ChatGPT函数调用`功能返回参数,接口对外输出信息,控制其他实体设备 更多具体的软件说明可参考Github上的README内容 # 实物展示🍔 可爱的茶会猫猫,最初的设想是塞到这个铁罐子里面去 --- 荔枝派的拓展版,结果正反反了,屏幕在夹层里面,屏幕暂时就不能使用了 ![](//image.lceda.cn/pullimage/R5RFoQmbev36PEftAdXz8dNn5f5iWZEOSfucc44Z.jpeg) --- 第二版ESP32语音板子图片,使用嘉立创SMT工艺,比我自己焊接的好太多了,可惜没用上彩色丝印 ![](//image.lceda.cn/pullimage/ipqPaOtQcqOnaj6mMMGf3s4OqI3Czwww8IF8cTni.jpeg) --- 未完待续... # 设计注意事项⚠️ ## 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去判断该怎么控制终端设备,这样可以实现一些非常复杂且人性化的家居自动化。(下一个项目?) # 其他 ## 注 - 所有的代码都在Github组织https://github.com/ChatMeow里面 演示视频:Linux版及其制作视频:https://www.bilibili.com/video/BV1cD4y1P7by/?share_source=copy_web&vd_source=f1cb6a2ddd4b8a00dcafce0abbcc5195 ESP32版:仍在制作 # 视频标题排序 ## 电器猫猫模拟-门禁猫猫模拟-Linux版演示-原代码包
设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP