找回密码
 立即注册
查看: 937|回复: 10

[硬件DIY] esp32s3+esphome语音助手外壳和配置分享

[复制链接]

18

主题

354

回帖

2320

积分

论坛DIY达人

积分
2320
金钱
1938
HASS币
40
发表于 2025-3-10 18:26:27 | 显示全部楼层 |阅读模式
本帖最后由 hugh_jie 于 2025-3-12 16:27 编辑

前言

最近小智爆火,看起来很流畅的样子,想着esphome的应该也能差不多,就攒了一套搞起来试试,没有代码能力,也不会画板子,只是组装了一下,目前感觉是能用,自己的j1900平台部署的stt,代理用的智谱清言,没搞定本地LLM,总体速度跟Miot auto的conversion接入的小爱差不多,有时候代理抽风会很费时间

代码从以下大佬的帖子凑的,感谢大佬的分享

esp32 搓语音助手,好像跟官方的assist voice模式差不多,
https://bbs.hassbian.com/thread-28627-1-1.html
(出处: 『瀚思彼岸』» 智能家居技术论坛)]:

ESP32S3语音助手
https://bbs.hassbian.com/thread-27036-1-1.html
(出处: 『瀚思彼岸』» 智能家居技术论坛)

stt和代理用的下面两位分享的,非常感谢

K2-fsa 纯本地的离线语音转文字插件【STT】
https://bbs.hassbian.com/thread-25631-1-1.html
(出处: 『瀚思彼岸』» 智能家居技术论坛)

国产ChatGPT集成 「 智谱清言 」  / 扩展HomeAssistant LLM
https://bbs.hassbian.com/thread-27075-1-1.html
(出处: 『瀚思彼岸』» 智能家居技术论坛)

分区表使用了下面帖子的,非常感谢

合宙 Esp32-S3刷 ESPHome 简要指南
https://bbs.hassbian.com/thread-19237-1-1.html
(出处: 『瀚思彼岸』» 智能家居技术论坛)


物料

序号 名称 数量 价格 运费 说明
01 ESP32-S3 N16R8 NANO开发板 1 27.07
02 INMP441麦克风 1 9.00
03 PCM5102 i2s解码板 1 9.39
04 2寸4欧15w喇叭 1 8.6
05 4按键开关模块 1 1.8 3
06 pam8610 2x15w功放板 1 10.45
07 DC母座5.5x2.1mm 1 2.99
08 ws2812b灯带 30灯1米 1 5.28
09 M3x6mm平头螺丝套装 4 2.4 这个价格是20套的
10 M3平头自攻螺丝 4 2.5 中间板子长度大于10mm更稳妥,价格是100颗10mm的,按键要用5mm以内的
11 海绵胶带1cmx2mm,5米 1 1.84 用于底部防滑
合计 84.32


接线



接线图.png
IMG_20250310_125600.jpg
IMG_20250310_125611.jpg
IMG_20250310_124824.jpg


外观


IMG_20250310_164337.jpg
IMG_20250310_164341.jpg
IMG_20250310_125452.jpg



功能

  1. 使用了4个实体按键,分别是音量减、闭麦、音量加、静音。长按-+可以持续加减音量;静音按键可以静音和恢复到之前音量;闭麦按键只是简单的使用了关闭了音量和micro_wake_word.stop,测试的时候发现闭麦的时候也有可能被触发,不知道咋回事
  2. 搞了两个唤醒词,okay_nabuhey_jarvis,没尝试加其他的,可以都加上试试效果
  3. 使用了5颗led,用于各种状态和音量指示,闭麦和静音时led常亮,加减音量时指示灯会跟随亮和灭
  4. 没有采用大家常用的MAX98357,使用了PCM5102解码板,可以用外接其他功放提供更好的音质
    led和语音演示视频在附件里

缺陷

  1. led的缓启缓灭很不流畅,不知道如何解决
  2. 有噪音,不是很大,不知道是我没理线的原因还是里面模块互相干扰了

注意

  1. 编译使用的2025.2.0版本的esphome,会报黄字,没发现实际影响:

    warning: #warning "This set of I2S APIs has been deprecated, please include 'driver/i2s_std.h', 'driver/i2s_pdm.h' or 'driver/i2s_tdm.h' instead. if you want to keep using the old APIs and ignore this warning, you can enable 'Suppress leagcy driver deprecated warning' option under 'I2S Configuration' menu in Kconfig" [-Wcpp]

  2. 外壳前网有2个版本,区别是卡扣前面的厚度,我目前使用的是薄的,有一点点松,厚点的应该能紧点,但是有可能会断卡扣,初版使用的卡扣整体是2mm,用的pla材料打印,结果弹性不够断了就改了两版出来,如果非常喜欢pla的话也建议前网用petg或abs,主体和中间板子用pla

  3. 按键也建议使用petg打印,按钮我是单色打印机,只能手动分层打印,所以画图的时候是挖空了,没有填补,如果有多色打印机的话可以自己修改把空处填补上再用双色打印,效果应该会好很多

  4. 中间板led的孔我修改过,没完全贯穿,能带点均光效果,如果使用不透明材料的话可以自己修改完全贯穿

  5. led我是直接用灯带剪断了一颗颗焊的,可以考虑买单颗带板的,需要考虑尺寸

  6. 图便宜买的这个开发板,当时一看参数挺高,但是比其他便宜,结果不能开启psram,不知道其他板子开启的话能不能更快

  7. 音量调节的led使用了非常原始的办法,一个个设置的。。尝试过用for循环,结果编译通过了缺启动不了,就删掉了,有大佬优化一下的话就更好了

  8. 所有打印零件都没有加支撑,我的打印机很便宜,加了支撑打出来效果和不加差不多,就干脆没加了,需要的话可以加

  9. 买到那个按键板按键有点长,需要修剪一下,具体操作步骤:把按键帽装上盒体后把按键板放上去,然后目测或者想办法量一下板子离螺柱的距离,就是需要修剪的长度。这个不是必须买的,有多余的按键的话(1、2块钱几十个)可以直接硬接到板子上,总共需要5根线,这个板子还需要vcc线



其他


之前打印的一个燃气红外模块TCRT5000的壳子,有需要且正好燃气表差不多的可以拿去,tb上写的pcb尺寸是31x14mm的,方便插拔我改成了4pin的端子接口,杜邦的掰一掰应该也能放进去,不行就小刀伺候吧


IMG_20250307_122243.jpg
IMG_20250307_122327.jpg
IMG_20250307_122406.jpg



更新

之前抄作业只看到有media_player和speaker两种配置,没细看区别,后面研究唤醒回复的时候发现speaker怎么弄都不行,就去media_player里面看了下,发现完全就是speaker的升级版,继续抄。主要是从官方的语音助手里面抄的:

home-assistant-voice-pe/home-assistant-voice.yaml at dev · esphome/home-assistant-voice-pe

更新功能

  1. 添加了media_player,可以当做音箱使用,播放音乐,在播放音乐时tts会压低音乐

  2. 添加了定时器,之前感觉没啥用没加上,这次加上了。定时结束会有闹钟音效,结束音效的方法:

    1. 唤醒一次(可能会很难唤醒)
    2. 按静音按键(第四个键,闹钟音效激活该按键为停止音效功能,不会静音)
    3. 3分钟后自动停止,时间可自定义
  3. 添加了唤醒回复我在,用的edge-tts生成的。

固件编译

  1. 由于加了本地音频文件,需要把default_16MB.csvim_here.wavtimer_finish.wav三个文件放入esphome目录,位置可能不一样,看看编译报错日志里面的路径,放进去就行,我在windows上编译的,位置是C:\Users\用户名\AppData\Local\Programs\Python\Python310\Lib\site-packages\esphome
  2. 没找到esphome里面的静音方法,调用了HA的action,所以如果你的配置名不是test的话就需要手动设置entityId,在substitutions里面修改即可,需要先刷一次固件,找到实体名 修改后再OTA一次
  3. 我使用的esphome版本是2025.2.0

存在的问题:

  1. 播放音乐时麦克风基本是没法唤醒的,只能贴很近才能唤醒,或者手动静音后唤醒,打印了个小罩子加上好像没啥用
  2. 播放音乐时TTS偶尔可能有点卡顿

链接: https://pan.baidu.com/s/1smCuNL22zefQ6ZWbHmpv-g?pwd=7792 提取码: 7792,如果要解压密码的话123456789

IMG_20250310_124818.jpg

评分

参与人数 1金钱 +10 收起 理由
hungheo + 10 高手,这是高手!

查看全部评分

回复

使用道具 举报

0

主题

28

回帖

271

积分

中级会员

积分
271
金钱
243
HASS币
0
发表于 2025-3-11 08:45:28 | 显示全部楼层
好创意,esphome编译很方便,就是编译下载太慢了,楼主如何解决的
回复

使用道具 举报

18

主题

354

回帖

2320

积分

论坛DIY达人

积分
2320
金钱
1938
HASS币
40
 楼主| 发表于 2025-3-11 12:08:17 | 显示全部楼层
carney 发表于 2025-3-11 08:45
好创意,esphome编译很方便,就是编译下载太慢了,楼主如何解决的

我是在电脑上编译的,搞了个watt tooltik就是之前的steam++
回复

使用道具 举报

0

主题

28

回帖

271

积分

中级会员

积分
271
金钱
243
HASS币
0
发表于 2025-3-11 21:32:02 | 显示全部楼层
hugh_jie 发表于 2025-3-11 12:08
我是在电脑上编译的,搞了个watt tooltik就是之前的steam++

这个也能加速编译啊,有机会试试看,谢谢
回复

使用道具 举报

18

主题

354

回帖

2320

积分

论坛DIY达人

积分
2320
金钱
1938
HASS币
40
 楼主| 发表于 2025-3-11 23:53:21 | 显示全部楼层
carney 发表于 2025-3-11 21:32
这个也能加速编译啊,有机会试试看,谢谢

编译是看电脑性能,这个只是让你能稳定连github
回复

使用道具 举报

22

主题

648

回帖

3018

积分

论坛元老

积分
3018
金钱
2348
HASS币
0
发表于 2025-3-13 17:24:23 | 显示全部楼层
我搞了个ReSpeaker Microphone Array V1.0   这个开发板可以吗?网上好像没啥资料可以参考
回复

使用道具 举报

3

主题

53

回帖

454

积分

中级会员

积分
454
金钱
398
HASS币
0
发表于 2025-3-14 11:20:17 | 显示全部楼层
嚯哦,您才是大佬,趋近完美了
回复

使用道具 举报

18

主题

354

回帖

2320

积分

论坛DIY达人

积分
2320
金钱
1938
HASS币
40
 楼主| 发表于 2025-3-14 15:22:01 | 显示全部楼层
a_dongde 发表于 2025-3-13 17:24
我搞了个ReSpeaker Microphone Array V1.0   这个开发板可以吗?网上好像没啥资料可以参考 ...

有钱人啊,只要有i2s应该都能接进去https://esphome.io/components/microphone/i2s_audio.html,看一下一下参数在不在esphome的范围里,但是感觉现在缺的不是硬件,是降噪算法,我这inmp441安静房间里面3 4米都能唤醒,放音乐就基本失聪,官方是2个麦克风一个唤醒用一个命令用,但是看评价好像也不是很理想
回复

使用道具 举报

18

主题

354

回帖

2320

积分

论坛DIY达人

积分
2320
金钱
1938
HASS币
40
 楼主| 发表于 2025-3-14 15:24:08 | 显示全部楼层
hehe.1536 发表于 2025-3-14 11:20
嚯哦,您才是大佬,趋近完美了

都是东拼西凑的哈哈
回复

使用道具 举报

22

主题

648

回帖

3018

积分

论坛元老

积分
3018
金钱
2348
HASS币
0
发表于 2025-3-14 16:57:38 | 显示全部楼层
hugh_jie 发表于 2025-3-14 15:22
有钱人啊,只要有i2s应该都能接进去https://esphome.io/components/microphone/i2s_audio.html,看一下一 ...

淘的二手,  一百块,,但是找不到固件和资料,,在吃灰
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-5-1 10:05 , Processed in 0.791492 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表