自制超迷你语音助手--Pico

  • 自制超迷你语音助手--Pico
  • 自制超迷你语音助手--Pico
  • 自制超迷你语音助手--Pico
  • 自制超迷你语音助手--Pico
  • 自制超迷你语音助手--Pico

自制超迷你语音助手--Pico

自制超迷你语音助手--Pico

自制超迷你语音助手--Pico

自制超迷你语音助手--Pico

自制超迷你语音助手--Pico


项目简介:

一个解决个人使用智能音箱痛点的迷你语音助手小机器人。

由于个人希望有一个可以从硬件开始定制的语音助手,且需要在语音助手上接入并控制我自己的设备(自有协议),可扩展性还要好,方便后续升级(不论是硬件还是软件),同时还希望设备能很迷你...

所以就耗时5个月设计了Pico。

Pico主要有以下特点:

  • 自主设计的电路硬件,可以方便地增减需要的硬件模块,比如添加多麦模块、手势识别模块,删去不必要的蓝牙音箱功能等等
  • 从最底层实现语音功能,所有代码都可以开放成SDK
  • 使用最常用的Mqtt协议实现自定义硬件接入,将语音识别结果用来控制任何东西(后期加入语义理解的话效果更佳)
  • 带一个OLED显示屏
  • 极致小巧,仅仅比口香糖大一点

结构设计说明:

Pico的结构设计草图↑

对于Pico的ID设计之前想过好几种方案:

  1. 使用铝合金CNC加工,做成类似魔方的正方体外壳样式
  2. 使用DLP树脂3D打印,设计成类似天猫精灵的迷你版圆柱体外壳,以光固化打印的精度也能达到不错的质感
  3. 使用透明亚克力切割成形,设计为三明治夹层式的堆叠设计,这也是我最终采用的方案

最终选择亚克力作为外壳结构有几个原因:

  • 其一是该方案的“视觉极客感”最强,由于直接使用透明盖板将PCB电路展现出来,个人觉得颜值方面化繁为简,符合个人审美哲学
  • 其次是对于CNC加工和3D打印在之前的作品中都已经有所使用,而亚克力设计方式还是第一次接触,尝试未知技术是很重要的一个考量因素
  • 其三是由于整体体积非常紧凑小巧,因而如果使用封闭式设计的话散热就变成需要考量的因素了,而夹层式的开放设计则在这方面完全无需担心
  • 最后一个原因是,亚克力便宜

如上面草图所示,结构主要为三层:亚克力前盖、PCB电路板、亚克力后盖,使用M2的滚花轴铜柱进行组合连接,其中前板采用热弯折的方式弯折10度左右形成底座,后方走USB线。

机械结构的设计使用Rhinoceros软件完成↓

亚克力厚度使用的2mm, 找了个小伙伴操作机床雕刻成型, 然后用电烙铁加热弯折。值得注意的是亚克力的熔点是300度左右,但100度左右的时候就会变软了,因此这里将烙铁温度设定为100度,不带调温功能的烙铁是不能直接拿来操作的。

使用机床雕刻的亚克力外壳

使用电烙铁进行热弯↑

电路设计说明:

硬件电路方面使用自己设计的超迷你ARM-Linux核心板MiniPi↓

MiniPi作为核心板,运行Linux系统,使用mini-PCIE的金手指封装引出了需要的IO。

这里Pico主要使用到两个USB接口(一个接USB声卡,一个接无线网卡),串口(用于调试和控制台输出),几个GPIO(用于驱动按键和LED),I2C接口(保留,后期可能会用于和板载的Arduino通信,Arduino用于驱动一些外围交互模块如红外感应、手势识别等),此外OLED也是使用I2C接口驱动的。

由于底板的功能比较简单,主要就是作接口扩展,因此底板的PCB采用2层Layout。板载的IC主要有:

  • OLED12864,驱动IC为SSD1306,这个应该属于很常用了
  • PCM2912A,TI出的USB接口声卡(很贵,30多一片,价格快赶上用的CPU了),音质还是不错的
  • CP2102,USB转串口芯片,也很常用,通过USB线把Pico连接电脑之后,就可以直接用串口控制台使用Linux了
  • LM4871,功放IC,用于音频放大然后扬声器输出
  • USB-Type C母座,USB接口当然是使用我最爱的Type C

Pico底板原理图↑

PCB的设计当然使用Altium Designer↓

底板的设计没有太多可讲的,两层板走线很随意,也没有高速器件,USB那边做好差分走线就行,最好再加上ESD(本版属于功能验证性质就没加了)。声卡方面经过试验耦合电容的选择对声音效果还是有一些影响的。

这次的Pico上用的MiniPi核心板做了微调,之前一共做过三版:第一版由于是初次设计高速多层板,虽然功能没问题,但是有不少小缺陷,比如电源电路BUG、没有加板载的关机按键、音频电路没有做数字地和模拟地的隔离等等;第二版则是做了一些IO调整;第三版是比较稳定了,但是考虑到把SD卡设计在核心板上可能会在一些项目中不太方便更换(被夹在核心板和地板中间了),因而在金手指上添加了外置SD卡的接口。

MiniPi核心板的CPU和DDR部分的电路如下,滤波电容非常多,CPU这样极高频率的器件对电源的纯净度要求很高,要尽量保证每个电源脚都有一个滤波电容↓

CPU部分外围电路↑

PCB投板回来之后就是蓝翔技能施展阶段了,主要用到的工具有:热风枪、烙铁、镊子、锡浆、吸锡带、助焊剂等。这里科普一下贴片元件的焊接方法:与直插元件不同,贴片的器件由于焊盘太小(我用的0402阻容),器件分布太密集,是基本不可能用烙铁一个一个去焊接的,手工焊接采用的方法主要是回流焊。

所谓回流焊,其实就是利用液体的张力,让融化之后的液态锡把器件拉到焊盘中央完成焊接,不太理解的可以百度搜索一下“回流焊”。进行回流焊的第一步是制作钢网,也就是器件焊盘的掩模,这个在设计好PCB之后把相关的加工文件发给厂家就可以进行激光切割制作了,价格也不贵一般50左右。

PCB钢网掩膜↑

把空PCB对准钢网掩模之后就可以刮上锡浆了,这样就完成了一次性对所有的焊盘上锡。然后把元件都按设计摆放上到PCB上,这一步不需要讲位置摆的非常准确因为再下一步回流的时候器件会由于液态锡的张力自动归位的。

上好锡膏的PCB板子↑

上一步贴片完成之后就需要用风枪进行吹焊回流了,相对于一般的器件来说BGA的吹焊难度要大很多因而将其放在最后焊接。吹焊温度大概控制在250-300度,风枪的吹嘴去掉以增大风口便于均匀加热,这一步对焊接经验要求较高,只能多练习尝试掌握技巧了。

底板的焊接相对简单,就不多罗嗦了,焊接完毕之后首先用万用表测电源是否短路,没问题的话上电检测电压,没有BUG的话就可以进行功能测试了。

焊接完的成品↑

软件开发说明:

硬件搞定之后就开始移植软件啦,MiniPi核心板运行的是Debian系的Ubuntu系统,完全兼容树莓派的各种软件,所以可以利用上很多优秀的开源资源。

软件的实现上也参考了另外一个基于树莓派的智能音箱项目叫做叮当,主页在这里:叮当主页

整个软件框架借鉴了Jasper项目。

软件主要分为以下几个模块:

  • ASR模块(Automatic Speech Recognition,语音识别),用于获取用户的指令,其中包括语音唤醒功能
  • TTS模块(Text-To-Speech,语音合成),用于给出语音应答
  • NLP模块(Natural Language Processing,自然语言处理),用于理解指令的语义,以便采取相应的动作,包括对话功能
  • MQTT模块,用于实现智能家居联网控制功能

智能音箱正常工作要解决的第一个问题就是如何接收指令,这里主要涉及两个问题:

  1. 被动唤醒(Passive Listening),即“什么时候开始听”。这个阶段只监听唤醒词,当听到唤醒词时,进入主动聆听。
  2. 主动聆听(Active Listening),即“什么时候结束听”。这个阶段主动聆听用户的任何语音指令,然后对听到的内容进行分析处理。

被动唤醒阶段的基本策略是:以1s的时间窗口通过麦克风进行滑窗采集语音,计算每一帧的波形强度,超过设定的阈值的话就把语音送到ASR模型中判断是否是唤醒词(“你好Pico”),判断为真的话,进入下一个阶段进行主动聆听。

主动聆听的策略与被动唤醒基本相似,以1s的时间窗口通过麦克风进行滑窗采集语音,计算每一帧的波形强度,超过设定的阈值的话,就认为用户已说完了指令。

唤醒关键词的识别使用的是一个开源引擎叫snowboy(另外还有一个库叫PocketSphinx也很好用), 这两个引擎都是离线工作的,不需要连接云端,识别率经测试还是比较高的,当然实际效果跟关键词的选取有关。

snowboy个人使用是免费的↓

SnowBoy的主页

前端的唤醒和指令获取工作完成之后,剩下的功能都由讯飞SDK实现,具体的API介绍和使用说明可以参考官方的Reference文档:

在线语音合成 Linux SDK 文档

当然讯飞作为中文语音技术的扛把子,SDK开放的功能是非常丰富的,只要不是商业使用,很多功能基本也是免费的:

对于智能家居的控制功能,这个就很有意思了,因为我之前用Android平台做过一个机器人项目,也实现了几乎一样的需求,所以智能家居控制的大部分的功能可以直接移植过来使用,包括自制的物联网网关硬件。但是跟上面那个娱乐向的手机器人不一样的是,这次要做的是一个正儿八经的语音助手设备,如果最后只能控制几个LED的话显然无法满足我的无理要求。

所以我做出了一个大胆的决定,让Pico向【小爱同学】伸出魔爪,进行“语音接口对接”,具体效果可以看后面的演示视频。

演示效果:

电路项目的主要芯片及数据手册

电路相关文件

源代码
pico-py.zip
描述:参考Python源码,根据叮当项目修改
其他文件
Allwinner_H3_Datasheet.pdf
描述:全志H3 Datasheet
电路图文件
电路图.zip
描述:核心板原理图&底座原理图PCB
分享到:
收藏 (10)
电子硬件助手小程序 电子硬件助手小程序

电路城电路折扣劵获取途径:

电路城7~10折折扣劵(全场通用):对本电路进行评分获取;

电路城6折折扣劵(限购≤100元电路):申请成为卖家,上传电路,审核成功后获取。

(版权归彭志辉所有)

版权声明:电路城所有电路均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。对本电路进行投诉建议,点击投诉本电路反馈给电路城。

使用说明:直接使用附件资料或需要对资料PCB板进行打样的买家,请先核对资料的完整性,如果出现问题,电路城不承担任何经济损失!

换一批 more>>

大家都在看:

继续阅读

  • 老年人智能守护系统

    我们设计了门户安全警报、药物提醒、厨房安全、摔倒报警四个主要功能模块,控制系统分为人体便携模块、屋内检测与报警模块、屋外终端和上位机控制界面。相对一般的智能家居老年人智能家居考虑到老年人对新事物接纳能力落后,学习能力下降,在操作的设计上更加简便,更容易让老年人接受。同时也可以作为敬老院护理辅助智能家居,护理人员每天的工作量很大,可能也会遗忘一些事情,另外部分敬老院老人比较“调皮”,老年人智能家居就可以协助护理人员的工作,降低护理人员及敬老院的负担。
    来自:智能家居时间:2019-09-12 智能家居
  • 使用Raspberry Pi和Python GUI控制伺服电机

    本教程中,我们将介绍如何使用Raspberry Pi和Python TK GUI精确控制伺服。硬件组件:Raspberry Pi 3型号B.× 1 Adafruit伺服HiTEC HS-322HD× 1 面包板(通用)× 1 跳线(通用)× 1 伺服电机,或伺服,是具有输出轴的小型装置。通过向伺服机构发送编码信号,可以将该轴定位到特定的角度位置。只要编码信号存在于输入线上,伺服将保持轴的角位置。随着编码信号的改变,轴的角位置改变。电路城原创内容,未经同意,不得转载!
    来自:基础电路时间:2019-08-30 树莓派 伺服电机 python gui
  • 基于Raspberry Pi 4B实现实时天气查看

    使用openweathermap API和新的Raspberry Pi 4查看当前天气数据。硬件组件: Raspberry Pi 4型号B.× 1 软件应用程序和在线服务: OpenweathermapMicrosoft VS Code收集对项目有很多细节的实时天气数据可能很困难。存在多个Web API,但许多需要使用付款,或者设置起来很复杂。值得庆幸的是,openweathermap.org为个人提供了一个既自由又简单的惊人API。只需选择服务,生成API密钥并发送请求!然后,使用该数据创建显示,更改计算机状态,甚至控制其他设备。电路城原创内容,未经同意,不得转载!
    来自:基础电路时间:2019-08-26 物联网 数据采集 家庭自动化
  • 桌面智能机器人

    该作品定位是一款智能化的桌面机器人,它有四个基本功能:运动功能、语音识别功能、二自由度网络摄像功能、面部表情功能,我们将这四个功能有机的结合起来,使其可以帮助用户解决很多问题。例如:1、用户可该产品上备注留言,机器人将会自动识别提醒时间,到时提醒。2、用户可通过该产品的面部表情判断该产品的当前“心情”,这样用户可以与该产品有更好的交互。3、用户还可将运动功能和网络摄像功能结合起来,可实现家庭全方位监控、特别是在家里有小孩、老人独自在家的情况下,可以提供良好的监护能力。
    来自:Hackaday Prize 2019时间:2019-08-20 智能家居 stm32f4
  • 基于QT与stm32智能家居控制系统

    ==========================================注意:sim800c模块购自淘宝,这里只提供示意图连接。不提供电路图==========================================1.主控芯片stm32f103rct62.gprs模块为sim800c3.操作系统为rt-thread4.上位机程序:QT5.11.3写的TCP服务器实现的功能:1.stm32f103rct6 + sim800c 扮演TCP客户端,去连接外网的服务器(QT编写的TCP服务器)。2.因为sim800c联网模块,只能连接公网的ip;所以我们需要把本地的ip映射到外网上。3.连上服务器后,可以在服务器端查看和服务器连接的客户端,可以指定客户端发送命令。目前支持三个家居的远程控制。4.客户端代码支持断线重连。=========================================测试步骤:请参考内外网映射教程与板子测试:1.连接好硬件,插好sim卡(目前仅测试了移动卡),更改stm32代码中的服务器ip和端口,然后烧录程序2.重新上电,等待连接上服务即可。3.命令下发。
    来自:智能家居时间:2019-08-16 stm32 智能家居 远程控制
  • 开源智能音箱

    现在市面上智能音箱在某种程度上是从厂商的角度设计的,存在两个问题:一是音箱作为一个一直录音的黑盒子让人有隐私顾虑,另一是设备不开放所造成的功能受限问题。那么我们就自己从头设计一个开源的智能音箱吧,我们已经有各种语音方面的资源(见Make a smart speaker),已经足够用来打造一个完全开源的智能音箱,就以一个开源项目的方式开始尝试,项目英文名就叫Smart Speaker from Scratch(类似 Linux From Scratch)。有三个目标: 开源(Open Source)平价(Affordable)可日常使用(Daily Use)开源,即项目所用到的软硬件尽可能开放,当然也不排斥没开源的资源,希望有一套完全开源方案,最终希望是有开源的方案和各种其它方案可供用户选择(是的,有选择很重要)。平价,意味着这不应该是很昂贵的玩物,虽然不能做到市面上智能音箱补贴后的价格,但会在硬件和结构的选择和设计上充分考虑成本,让成本尽可能的低。比如结构上可以选择低成本的纸壳(纸壳设计的门槛很低,可以让更多的人参与到DIY中)。可日常使用,意思是可靠性足够好,不能停留在prototype阶段,不能只是demo的程度,需要可以像市面上的智能音箱那样,可以日常听歌,可以控制家里的电器。设计方案:方案采用友善之臂的Nanopi Neo Air和新设计的4麦克风线性阵列。功能:1. 声音配网。设备没有连上WiFi时,可以打开网页应用https://voice-engine.github.io/hey-wifi/,把WiFi信息通过声音发送给设备,然后设备连接WiFi。2. 回声消除。音箱在播放音乐的时候要听清楚人说话的声音,就需要在音乐和人声混合当中消除(削弱)音乐,这种场景就用到回声消除(Echo Cancellation),此功能的实现在https://github.com/voice-engine/ec3. 支持各种语音助手,包括Google Assistant、Amazon Alexa、Snips、Mycroft、百度的DuerOS和出门问问等。项目的Logs见https://hackaday.io/project/164221-smart-speaker-from-scratchGithub仓库见https://github.com/voice-engine知乎专栏见https://zhuanlan.zhihu.com/voice-engine
    来自:Hackaday Prize 2019时间:2019-03-26 开源 智能家居 智能音箱
  • 一体化超声波测距

    是采用收发一体封闭式探头,探头具备一定的防尘防水等级,适用于潮湿、恶劣的测量场合。是一款操作简单的高性能、高可靠性商用级功能性模块,实测距离0.25至5米。
    来自:安防与监控时间:2019-07-24 51单片机 智能家居
  • 基于模糊算法的智能家庭光线调节系统

    比赛所做的产品主要根据无线智能调光器和无线智能窗帘的设计思想,设计出了一个智能调光系统,结合 Zigbee 无线传感器网络技术、模糊控制技术、单片机电子技术等。该系统不仅具有手动调光、全开全关、定时关闭等基本功能,而且具有分区照明,场景模式切换,让用户随时随地可以操控家中的照明系统,包括开关以及亮度的调节等,节能环保,操作方便,在窗帘的设计上,无线智能窗帘系统拥有更人性化的设计,根据外界环境,人的身体状态来实现智能的自动升降,而且在满足接入家中路由器的条件下,利用处在同一局域网下的智能设备实现更加高级的功能。因此这种两种智能控制系统的结合无疑会给用户带来深刻的印象,更加优越的生活质量以及便捷的生活方式。
    来自:Hackaday Prize 2019时间:2019-07-09 stm32 智能家居
  • 基于BK2535无线芯片开发的无线插座

    基于BK2535无线芯片开发的无线插座原理图与源代码,已经小批量生产,传输距离可以达到10m
    来自:智能家居时间:2019-07-15 智能家居 无线遥控器
  • AIR720 4G模块

    调试已经成功,电路图稳定可靠。
    来自:智能家居时间:2019-07-20 智能家居 4g模块
销量
4
查看
692
参数名 参数值
发布于 2019 年 07 月 22日
更新于 2019 年 09 月 04日
Moore8直播课堂

tracer