0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用ESP32,做了个siri?!开源了!

合宙LuatOS 2024-06-29 08:04 次阅读

工程名称:ESP32直接对话大语言模型人工智能语音助手

前言

用ESP32做了一个语言模型,就像一个基础版“siri”~

352c95aa-35ab-11ef-a655-92fbcf53809c.gif

一、项目功能/亮点

1.支持对话(语言识别与合成),响应速度几乎在3s以内。

2.支持触碰交互

3.通过修改代码,可以设置AI的对话方式和回答风格

35d93f30-35ab-11ef-a655-92fbcf53809c.png

4.支持用于拓展设计,例如:智能MP3、简易版siri/小爱同学、实时翻译工具…

想实现这些功能,软硬件如何设计?会不会很难?

其实,可能比你以为的更简单!

二、硬件设计

35e7e3dc-35ab-11ef-a655-92fbcf53809c.png

原理图

362f710c-35ab-11ef-a655-92fbcf53809c.png

PCB

3659b624-35ab-11ef-a655-92fbcf53809c.png

实物图

元器件选型说明

1.选用:ESP32S3-WROOM-1-N16R8

2.INMP441 与MAX98357A 使用的都是模块

3.电池插头是1.25间距正接头,仅支持单节3.7v锂电池,typec接口有充电功能,可以给锂电池充电

4.喇叭:MAX98357A可以推动3w喇叭

5.串口模块是CH340C,后面有C!

6.显示屏幕是3.2寸带触摸屏幕

搞定了电路设计,那又要如何实现主要的“对话”功能?

三、训练语言模型?用现成的!

关键词:讯飞、火山引擎

想实现对话功能,起码得让它“听懂”。这得通过STT(语言转文字)和TTS(语音合成)实现!STT和TTS使用的是讯飞API。PS:注册讯飞账号有试用礼包。

3677c93e-35ab-11ef-a655-92fbcf53809c.png

光“听懂”不行啊,得聊起来呀!这就需要大语言模型了。大语言模型不仅能够生成自然语言文本,还能够深入理解文本含义,处理各种自然语言任务,如文本摘要、问答、翻译等。

大语言模型使用的是火山引擎的豆包同款引擎。PS:一样,注册账号可以领取免费试用。

3681a788-35ab-11ef-a655-92fbcf53809c.png

作者亲测,就算是试用,也够玩一阵子了~~

如何连接API?

上面三个API,是从各自官网控制台获取到KEY后,修改代码中相关的字段,才可以正常连接到API。

代码中还需要修改WiFi的连接信息

368bef68-35ab-11ef-a655-92fbcf53809c.png

一些说明

讯飞的服务使用webscoket连接API,TTS使用了流式处理,一边接收一边播放音频。有时数据处理不严谨会发生错误,这个暂时还没解决,请自行排查修改;STT没有用流式处理(懒),说短句子没有什么影响,发送长句子的话,有一部分时间也是浪费在这里了。

火山引擎使用HTTP连接API(因为火山的webscoket确实没有调通,才疏学浅见笑了),没有做到流式处理,反应时间部分浪费再了这里。

webscoket响应时间短,通信更流畅。

HTTP也够用,是比较传统的方式。

作者OS:我是软件方面的“新手”,目前算是用“用尽方法”实现了想要的功能,代码可供同道新人参考,高手一笑了之。如各位有意复刻此项目,请务必先下载源码进行编译测试,可编译通过再进行复刻尝试,如若不能还请三思。

四、编译环境如下

编译软件:ArduinoIDE 2.3.2

SDK: ESP32 SDK 2.0.13(开发板管理中下载)

使用主要库:TFT_eSPI 2.5.43 (库管理中下载)

U8g2_for_TFT_eSPI下载地址:

https://github.com/Bodmer/U8g2_for_TFT_eSPI

开发板设置

36a27698-35ab-11ef-a655-92fbcf53809c.png

文章的最后,总结一下工作原理

ESP32S3使用INMP441接收声音

将pcm音频数据发送至讯飞STT语音识别服务转换为文字

再将文字发送至大语言模型API提问

最后将回答的文字发送至TTS语音合成服务

并通过MAX98357A播放音频

过程中用TFT触摸显示屏进行交互显示。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1781

    文章

    45057

    浏览量

    232452
  • 语言模型
    +关注

    关注

    0

    文章

    467

    浏览量

    10171
  • ESP32
    +关注

    关注

    13

    文章

    906

    浏览量

    16264
收藏 人收藏

    评论

    相关推荐

    esp32做了Provisioner,如何备份?

    esp32做了Provisioner,如何备份?要有需要时,我可以另一
    发表于 06-21 08:12

    ESP32设备偶尔会出现PC端TCP已经回应数据,但ESP32端不能立刻收到,为什么?

    我们使用ESP32的一设备,最近测试中发现一问题,偶尔会出现PC端TCP已经回应数据,但ESP32端不能立刻收到,需要延迟一段时间才能
    发表于 06-19 06:12

    开源DIY! ESP32 制造迷你复古小电视

    。 趣无尽 这个项目是基于我之前的《 ESP32 搭建一台视频播放器》基础上加以改进的,更多的搭建的基础细节可以点击链接查看!https://www.instructables.com
    发表于 05-27 11:01

    ESP32-C2在小魔方遥控器的应用

    我们经常提起的ESP32-C3和ESP32-S3,ESP32-C2感觉话题度没有那么多,但其应用上不可小觑。今天小启就跟大家讲讲ESP32-C2在小魔方遥控器的应用。1射频性能拉满,成
    的头像 发表于 01-13 08:03 453次阅读
    <b class='flag-5'>ESP32</b>-C2在小魔方遥控器的应用

    esp32外置flash的大小

    ESP32是一款功能强大的微控制器,广泛应用于物联网和嵌入式设备领域。虽然ESP32内置了一定的闪存空间,但有时候我们可能需要更大的储存空间来存储更多的数据或者程序。因此,一些厂商推出了外置
    的头像 发表于 01-09 11:24 2327次阅读

    开源 | 小而美!【aDataFlow】多功能串口工具,数据监听+USB转串口+ESP32烧录器…

    …… 【aDataFlow】多功能串口数据查看器 -  开源分享 - aDataFlow是一款好看又好用的多功能串口数据查看/记录器,它的核心为ESP32-S3模块,且外置了程序烧录口,可作为常规
    的头像 发表于 12-15 16:35 2370次阅读
    <b class='flag-5'>开源</b> | 小而美!【aDataFlow】多功能串口工具,数据监听+USB转串口+<b class='flag-5'>ESP32</b>烧录器…

    ESP32-PICO系列技术规格书

    ESP32-PICO 系列是基于 ESP32 芯片 的系统级封装 (SiP) 产品。ESP32-PICO 系列产品包括 ESP32-PICO-D4、
    发表于 12-12 16:56 0次下载
    <b class='flag-5'>ESP32</b>-PICO系列技术规格书

    esp32s3使用多串口

    esp32s3使用多串口 我按照别人博客中设置串口2,串口打印有问题,因为没有看到esp32s3 多串口,就总结了一下自己的经验 下图为esp32的引脚图 下图为esp32s3的引脚
    的头像 发表于 11-06 11:29 2295次阅读
    <b class='flag-5'>esp32</b>s3使用多串口

    Banana Pi 开源硬件基于ESP32-S3开发的物联网开发板系列

    Banana Pi 开源硬件基于ESP32-S3开发的物联网开发板系列
    的头像 发表于 09-28 16:21 791次阅读
    Banana Pi <b class='flag-5'>开源</b>硬件基于<b class='flag-5'>ESP32</b>-S3开发的物联网开发板系列

    开源资料】使用ESP32C3超简单制作迷你四足机器人

    esp8266做过小四足机器人,这次esp32C3重制,主要的原因是C3有蓝牙可以蓝牙遥
    发表于 09-21 11:15

    ESP32-C2 ESP8684芯片AT固件使用

    ESP32-C2 ESP8684芯片AT固件使用
    的头像 发表于 07-27 13:48 2614次阅读
    <b class='flag-5'>ESP32</b>-C2 <b class='flag-5'>ESP</b>8684芯片AT固件使用

    ESP32学习笔记:WiFi

    今天我们来说说ESP32 的WiFi。
    的头像 发表于 07-15 16:20 2816次阅读
    <b class='flag-5'>ESP32</b>学习笔记:WiFi

    ESP32学习笔记:双核

    今天我们来说说ESP32 for Arduino 的双核。
    的头像 发表于 07-15 16:16 3645次阅读
    <b class='flag-5'>ESP32</b>学习笔记:双核

    ESP32开源项目

    电子发烧友网站提供《ESP32开源项目.zip》资料免费下载
    发表于 07-13 10:47 3次下载
    <b class='flag-5'>ESP32</b><b class='flag-5'>开源</b>项目

    ESP32-C2 ESP8684模组AT固件示例

    ESP32-C2 ESP8684模组AT固件示例
    的头像 发表于 07-10 13:39 738次阅读
    <b class='flag-5'>ESP32</b>-C2 <b class='flag-5'>ESP</b>8684模组AT固件示例