厌倦了小爱同学的迟钝和封闭,Siri 配置繁琐,我打算直接做一个原生可以支持我所有设备(包括我自己 DIY 那些)的语音助手。而 Home Assistant,已经搭好了这样的框架。

可以从图中看见这里的 Voice Assistants 选项,这里面就是所有关于语音助手需要配置的内容

1 处为当前的语音助手列表。是的,在 Home Assistant 里面可以创建多个不同的语音助手。每一个语音助手都可以有自己不同的音色、不同的语音转文本和文本转语音引擎,甚至是不同的性格(也就是注入的提示词不一样),所使用的 AI 后端等也可以不一样。
2 处为当前已经暴露给语音助手的设备列表。有时候,Home Assistant 里面会包含很多我们不需要 AI 或者语音助手知道的内容。比如说一个台灯的实时功率,有的设备做得比较细,把这些数据都写进去了,但我们很明显不需要。
我们可以通过这个地方设置,不把这些信息暴露给 AI。原因有两个:
- 节省我们的 token
- 防止 AI 的上下文混乱
要是都写进去,不仅 AI 会被很多集成莫名其妙的命名搞乱,还有可能会像 AI 碰到一些本来不应该让他碰到的东西,比如说什么加热的家具的开关。到时候 AI 可以轻松把你的房子烧烂,就跟传送门里面的 GLaDOS 一样。
添加第一个智能助理

这个表单其实没什么好说的,按照自己的需要填写就行。我接下来将会讲解怎么去创建这个可选的 Speech to Text, Text to Speech 的选项
以 Deepseek 为例,准备好 API KEY 后,在 HACS 中安装 DeepSeek Conversation
安装完毕后添加对应集成,填入 API KEY 即可获得这样的设备:

创建好之后这里就先可以不用管了,接着我们回到刚刚的表单里面。

这里选择 DeepSeek,点击旁边的小齿轮. 现在只需要在里面填入自己的提示词,即可关闭

接下来对于 STT 或者 TTS,我们采用最简单的方式。在 Home Assistant 的 Apps 里面,它的应用里面,在官方的存储库里面有一个叫做 Piper 或者 Wisp 还有 Whisper 的 App。我们下载这两个 App 之后可以发现,第一个是用于 TTS,也就是把机器输出的文本翻译成我们能直接听懂的语音的;另外一个是把我们听的语音变成文本的。我们两个都直接安装,按照默认配置完成之后,可以在设备与集成中直接看到新多出来的这两样设备。
新增完毕之后,可以直接在刚刚的表单里面选择它们了。选择后添加即可。

设置好自己心仪的 TTS 之后,可以直接点一下 Try Voice 来进行视听,看一下自己选的音色是否满意。
创建完成后,一定要在你创建的这个语音助手旁边点击进行测试。

进入对话之后,你想象已经有了这个 Voice Satellite,直接跟他说话,看他是不是能够翻译成文本,然后理解你的话,操作设备,最后变回语音。
当这一步能顺利完成之后,我们就可以成功地进入下一步了。
电路板设计
前面配置的是 Home Assistant 里的语音助手。要让它在房间里听见我说话,还需要一个负责拾音、联网的终端。我做的这个设备叫 Voice Satellite:它用 ESP32-S3 采集声音,把语音交给 Home Assistant 处理,再根据配置播放回复。

板子的核心是 ESP32-S3-WROOM-1-N16R8,带有 16 MB Flash 和 8 MB PSRAM。拾音部分用了两颗顶部进音的 MEMS 麦克风,共用 I²S 时钟,按双声道采集。它能提供两路音频输入,但双麦本身不代表已经实现了波束成形或回声消除。
板子外圈排了 12 颗可寻址 RGB 灯珠,用来显示待机、拾音、处理中等状态;另有一颗日常触发按键,以及用于烧录和复位的按键。灯珠通过电平转换后接入 ESP32-S3,避免 3.3 V 与 5 V 信号电平不匹配。
供电从 USB-C 输入 5 V。考虑到主控、麦克风和功放的负载不同,我把 3.3 V 分成两路:一路供主控和麦克风,另一路单独供 NS4168 功放;灯环仍由 5 V 供电。功放连接器可以接一只 28 mm、8 Ω 的小喇叭。不过我目前的默认配置仍让 Home Assistant 通过其他音箱回复,装上本地喇叭后才启用本地播放。
USB-C 直接连接 ESP32-S3 的原生 USB,省去了 USB 转串口芯片。A5 版本没有安装 USB 数据线的 ESD 保护器件,因此不能把 USB 能正常工作等同于通过静电测试;差分走线的阻抗也还需要板厂按实际板材叠层复核。
这是一块直径 84 mm、厚 1.6 mm 的双层圆形 PCB,装进约 92 mm 的圆形外壳。布板时,麦克风、灯珠、按键和 USB-C 插座都要与外壳上的声孔、透光环、按键位置和开口对齐。全板 55 颗贴装器件都在正面,方便后续用钢网和热板进行试制。
目前原理图、电气规则和 PCB 连通性检查都已完成;这些结果只能说明设计文件通过了 CAD 检查,板子还没有实物打样。LDO 温升、供电瞬态、USB 表现、拾音效果和外壳配合情况,都还需要等首板出来后实测。

焊接电路板
打样完成到手后,能看见立创的新封装工艺还是相当美丽的,就是听说会很难焊接,因为一下子就氧化了

全部到货,进行一个铁板烧

最后初步就长这样了:

后面检查 EN 的电阻没焊满,电平转换芯片其实不需要,后面就飞线干掉了。TypeC 用错了封装,过了几天后也成功安排上了

上传程序
请关注我的 Github:Kgym-Hina
我将会在后期整理好后上传相关资料

全部配置完毕后,使用 ESPHome 自动上传程序。
我在这里遇到个小问题,就是由于使用了 wakeword,编译机自己开的小容器内存不足。好在最新的 ESPHome 支持外置编译服务器。我就在宿主机中开了个新容器用于编译。
至此已经全部完成
发表回复