首页 > 应用与分享 > GPT语音对话猫猫(ChatMeow)
  • GPT语音对话猫猫(ChatMeow)

  • 2023-10-16 16:49:17 阅读量:2599

本文作者:立创开源硬件平台 OSHWHub @KJ禁止商用,未经许可禁止转载点击看原文章


01、工程描述 图片

我做了一个智能AI音箱,主要就是将音箱连接ChatGPT,与之对话,充当语音助手还能借助ChatGPT函数调用功能控制实体设备


  


02、版本说明 图片

智能AI音箱做了两个版本,以下是版本对比:


Linux版:功能上限高,独立性更强。

ESP32版:小巧,成本低。

  


第一版可以通过软件升级达到第二版的所有效果。如何实现“智能对话”效果?下滑即可学习~两种版本都有教程!


03、Linux版


硬件部分

  

音频原理图


  
接口原理图


  
电源原理图


  
PCB图



PCB由一个基本的linux派和语言扩展模版组成。  荔枝派Zero的扩展版,理论上,通过修改PCB,可以支持绝大多数的派。 选择荔枝派主要是因为其尺寸迷你,价格性能也不错。 扩展模块提供了基本的麦克风输入和功放,同时提供锂电池充放电系统,达到便携的目的。



代码仓库
Linux版代码用的是免费的百度智能云语音api。

代码仓库入口

  


  




第一步: 克隆本项目到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


第二步:获取百度和openai的key
获取百度云KEY,需要有短文字识别,语音合成权限。

百度官方文档地址:

01语音识别:http://ai.baidu.com/docs#/ASR-API/top

02语音合成:http://ai.baidu.com/docs#/TTS-API/top

openai apikey 查看链接:https://platform.openai.com/account/api-keys

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

  



第三步:运行
在根目录下使用自己的python环境

python3 mian.py


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

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


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



修改WebUI(可选)


Linux版代码目前带了一个网页UI可以调整一些参数,也能动态显示GPT返回的参数。

UI编译好了,已经放在Flask服务器中,如果要修改UI的话可以这样做:


第一步:环境准备


  



安装NodeJS,最新稳定版即可。
使用pnmp作为包管理器。

使用Vue3框架简单快速构建了一下页面。


第二步:克隆代码仓库

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


第三步:安装依赖
pnpm install
编译并启动支持热重载的测试服务器:

pnpm run serve


第四步:编译为生产准备的文件
pnpm run build
编译好得到dist目录里面的文件。

放入chat-mewo/meow/web,其中:

01、html文件放入templates文件夹中

02、js/css文件放入static文件夹中对应的js/css目录中



04、ESP32版



硬件部分



  


ESP32原理图



  

 POWER原理图



  

 CODEC原理图



  

ADC原理图



  

 MIC_PA原理图



  

 Others原理图



  

PCB图击进入嘉创EDA编辑器打开)



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



  

PCB实物图&彩色丝印3D预览图



  
ESP32版结构流程图


这个版本由于ESP32性能不足,需要一个服务端处理语音数据。故分为两个部分:


一个是服务端,一个是边缘设备(ESP32)。


服务端需要完成计算量较大的语言语音转文字和语言合成工序,同时也要和ChatGPT进行通讯。

边缘设备(ESP32)需要做的事情很简单,捕捉语音传给服务端,同时从服务端下载合成好的语音再输出。

目前PCB基本兼容ESP32-LyraT-Mini开发版,代码使用ADF库的话只需修改按钮定义。

未来会设计更加迷你的PCB板子。




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



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

仓库入口


  


  



值得一提的是,pyopenjtalk库似乎只能在Python3.10上安装成功,此库只影响日语生成。


第一步:环境安装



克隆本项目:
git clone https://github.com/ChatMeow/chat-meow-vits.git cd chat-mewo-vits
安装环境(推荐使用虚拟环境):

pip install -r requirements.txt
如果不存在配置文件的话,第一次运行会生成配置文件:

python server.py

第二步:配置参数
需要先配置OpenAI登录信息,在文件openai.ini中。

配置access_token:

01、这是实际用于身份验证的内容喵,可以在https://chat.openai.com/api/auth/session找到

02、2周后失效

03、推荐的身份验证方法

04、如果您登录到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中填入对应的文件名称。


第三步:启动测试服务器


python main.py

第四步:开始测试服务器


01、开始运行后,将启动默认端口8000的服务器

02、/upload接口支持POST方法,和ESP32配置项目Server URL to send data对应

03、完成tts,vits后在static目录生成out.wav文件,和ESP32配置项目Server FILE URL to play voice对应


即将支持


01、一个网页界面来配置参数

02、支持RockChinQ大佬的free-one-api接口

ESP32端代码仓库(ESP-IDF)

仓库入口

  


  




第一步:环境安装



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

01、参考ESP-IDF编程指南安装ESP-IDF环境

02、参考乐鑫音频应用开发指南安装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


   
第二步:配置参数


需要先配置 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

第三步:编译和下载


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

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


第四步:开始


01、开始运行后,将主动连接 Wi-Fi 热点

02、检测是否按下REC(ESP32-LyraT-Mini)按键,如果使用喵板则需要修改按键参数

03、从麦克风读取语音上传到服务器

04、从服务器播放服务器生成好的语言

05、循环-->>>>



即将支持


01、静默状态识别自动识别是否讲话,读取语音开始循环

02、通过ChatGPT函数调用功能返回参数,接口对外输出信息,控制其他实体设备


03、更多具体的软件说明可参考代码仓库里的README内容


05、关于Vits

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



更多详情及附件,可从原工程查看。

本文作者:立创开源硬件平台 OSHWHub 用户@KJ禁止商用,未经许可禁止转载


热门物料
型号
价格
HC32F460JEUA-QFN48TR/单片机(MCU/MPU/SOC) 4.8
S5D50.000000B20F30T/有源晶振 1.82
S3D25.000000B20F30T/有源晶振 1.38
S5D25.000000B20F30T/有源晶振 1.67
PT2041AT6/触摸芯片 0.127202
S5D8.000000B20F30T/有源晶振 1.7
S3D50.000000B20F30T/有源晶振 1.49
S7D25.000000B20F30T/有源晶振 1.77
ADM3251EARWZ-REEL/隔离式RS-232收发器 11.99
ADA4530-1ARZ/运算放大器 98.23
您的浏览器版本过低(IE8及IE8以下的浏览器或者其他浏览器的兼容模式),存在严重安全漏洞,请切换浏览器为极速模式或者将IE浏览器升级到更高版本。 【查看详情】
推荐您下载并使用 立创商城APP 或者最新版 谷歌浏览器火狐浏览器360浏览器搜狗浏览器QQ浏览器 的极(高)速模式进行访问。
© 2022 深圳市立创电子商务有限公司 版权所有

提示

您确定删除此收货地址吗?

提示

您确定删除此收货地址吗?

成功提示

content

失败提示

content

微信咨询

关注公众号咨询客服

咨询客服
  • 在线客服热线

    0755-83865666

  • 服务时间

    工作日  8:30~20:30

    节假日  8:30~18:00

  • 服务投诉

QQ咨询
优惠券
芯媒体

立创商城旗下芯媒体

微信号:icsight

建议反馈
填问卷 立创用户体验问卷调查 立即参与
活动规则
活动规则
展开客服