
开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
项目说明 ❤️
这是“会说话的猫猫”系列项目
第一版演示介绍视频blibili
第二版演示介绍视频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理论可以支持绝大多数的派,选择香橙派主要是因为其尺寸迷你,价格性能也不错。未来会设计树莓派和其他水果派的扩展板。
扩展模块提供了一个基本的麦克风输入和一个功放,同时提供锂电池充放电系统,达到便携的目的。
这个版本电路非常简单,制作难度很小。
API版本
逆向库版本(测试)
ESP32版
这个版本由于ESP32性能不足,需要一个服务端处理语音数据。故分为两个部分,一个是服务端,一个是边缘设备(ESP32)。服务端需要完成计算量较大的语言语音转文字和语言合成工序,同时也要和ChatGPT进行通讯。边缘设备(ESP32)需要做的事情很简单,捕捉语音传给服务端,同时从服务端下载合成好的语音在输出。
目前PCB基本兼容ESP32-LyraT-Mini开发版,代码使用ADF库的话只需修改按钮定义。
未来会设计更加迷你的PCB板子。
ESP32版结构流程图
关于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系统为例),并安装依赖
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. 环境准备
NodeJS | Latest |
---|---|
pnmp | Latest |
Vue | v3 |
安装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
Python | v3.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
- 这是实际用于身份验证的内容喵,可以在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.启动测试服务器
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 编程指南 安装ESP-IDF环境
- 参考 乐鑫音频应用开发指南 安装ESP-ADF环境(如果已配置好VSCode+ESP-IDF插件环境,在vscode
命令面板 -> ESP-IDF:安装ESP-ADF
可以直接安装ESP-ADF)
克隆代码仓库
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
。
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去判断该怎么控制终端设备,这样可以实现一些非常复杂且人性化的家居自动化。(下一个项目?)
其他
注
- 所有的代码都在Github组织https://github.com/ChatMeow里面
演示视频:Linux版及其制作视频:https://www.bilibili.com/video/BV1cD4y1P7by/?share_source=copy_web&vd_source=f1cb6a2ddd4b8a00dcafce0abbcc5195
ESP32版:仍在制作
视频标题排序
电器猫猫模拟-门禁猫猫模拟-Linux版演示-原代码包
设计图

BOM


评论