自制超迷你语音助手--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
分享到:
收藏 (16)
电子硬件助手小程序 电子硬件助手小程序

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

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

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

(版权归彭志辉所有)

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

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

换一批 more>>

大家都在看:

继续阅读

  • 【双11整点0元秒杀活动】嵌入式Linux应用开发完全手册

    11月15日下午15点整!点!秒!杀!!!更多优惠活动:http://www.cirmall.com/bbs/forum.php?mod=viewthread&tid=160955?circuit本书全面介绍了嵌入式Linux系统开发过程中,从底层系统支持到上层GUI应用的方方面面,内容涵盖Linux操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、Makefile语法、ARM汇编指令等),硬件部件的使用及编程(囊括了常见硬件,?热鏤ART、I*IC、LCD等),U-Boot、Linux内核的分析、配置和移植,根文件系统的构造(包括移植busybox、glibc、制作映象文件等),内核调试技术(比如添加kgdb补丁、栈回溯等),驱动程序编写及移植(LED、按键、扩展串口、网卡、硬盘、SD卡、LCD和USB等),GUI系统的移植(包含两个G UI系统:基于Qtopia和基于X),应用程序调试技术。 本书从最简单的点亮一个LED开始,由浅入深地讲解,使读者最终可以配置、移植、裁剪内核,编写驱动程序,移植GUI系统,掌握整个嵌入式Linux系统的开发方法。 本书由浅入深,循序渐进,适合刚接触嵌入式Linux的初学者学习,也可作为大、中专院校嵌入式相关专业本科生、研究生的教材。
    来自:其他时间:2019-11-08 嵌入式 linux
  • Allegro16.6版本,PCBlayout高速练习板

    想进阶高速板的可以参考练习,Allegro16.6版本,RK3288挂四片DDR3T型拓扑,1片EMMC,各种通信接口,六层练习板,PCBlayout高速练习板,cadence原理图与PCB源文件关联allegro16.6高速练习板,一直在寻找都没找到,要不太贵要不坑人,自己花费了很大的时间才完成!供大家一起学习提高!!!!!
    来自:智能家居时间:2019-11-01 原理图 智能家居 pcb
  • 低功耗 电池密码门禁 无需联网实现远程动态验证码开锁 算法

    适合用在对功耗要求极低,且需要开启权限的场所,本方案可以不用联网即可实现动态验证码开锁的功能,不用联网,降低成本,降低功耗,且提高安全性。验证码为动态的,有效时间10分钟。技术咨询可QQ或者微信搜索 363530137,添加好友。
    来自:智能家居时间:2019-11-05 单片机 智能家居
  • 基于NB-IOT的带语音识别控制智能家居系统二代-基于RT-Thread系统构建

    基于RT-Thread操作系统构建,带有NB-IOT远程微信小程序控制及离线语音识别控制。演示视频:二代延续了一代的基本功能: 微信小程序远程控制2.语音控制并增添了新的功能1.显示屏显示时间、日期、温湿度等信息。2.板子设计更加优化,增加了12V电磁铁驱动电路,集成了马达驱动,温湿度计,LED驱动电路等。使用micro-usb接口供电3.使用RT-Thread操作系统重构了整个程序,稳定性得到了提高4.时间的秒会动态显示5.增加了播报当前时间的语音控制命令。6.语音识别更加准确。具体信息可加QQ:1215310745详谈,相关资料及实物均有。
    来自:智能家居时间:2019-11-02 智能家居 nb-iot 微信小程序
  • 带有云台伺服和备用电池的网络摄像头

    在Pi Zero上扩展motionEyeOS以支持云台伺服,备用电池和屏幕状态显示。硬件组件: Raspberry Pi Zero Wireless × 1个 Raspberry Pi摄像头模块× 1个 Adafruit Raspberry Pi Zero W Camera Cable× 1个 8 GB MicroSD闪存卡× 1个 Pimoroni Pan-Tilt HAT× 1个 Solar Pi Platter× 1个 2500 mA 3.7V锂电池× 1个 5.25V 3A USB电源适配器× 1个 3针2.54mm间距直角接头× 2 4-40 6.35毫米尼龙公母对接× 8 软件应用程序和在线服务: 适用于Pi Zero的Motioneyeos DistroPi Platter的通讯实用程序Calin Crisan出色的motionEyeOS 是完整的Linux发行版,将Raspberry Pi Zero变成了功能强大的无线网络摄像头。他提供了详细的安装和配置说明。这里引用了一些。这些说明说明了如何使用我设计的带有Pi Zero W 的Solar Pi Platter 小工具通过备用电池,云台伺服器和状态信息显示来扩展motionEyeOS的功能。使用motionEyeOS发行版中内置的扩展功能,安装很简单。旋转/倾斜控制以及状态显示可在Web界面中显示电池和充电状态。构建此网络摄像头包括本自述文件中描述的以下步骤。 获取必要的硬件组装相机将motionEyeOS发行版加载到Micro SD卡上为您的wifi配置motionEyeOS并开始运行从我的github存储库添加文件以启用新功能享受您的新摄像头电路城原创内容,未经同意,不得转载!
    来自:安防与监控时间:2019-10-29 树莓派 摄像头 伺服系统
  • 使用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密钥并发送请求!然后,使用该数据创建显示,更改计算机状态,甚至控制其他设备。电路城原创内容,未经同意,不得转载!
  • 桌面智能机器人

    该作品定位是一款智能化的桌面机器人,它有四个基本功能:运动功能、语音识别功能、二自由度网络摄像功能、面部表情功能,我们将这四个功能有机的结合起来,使其可以帮助用户解决很多问题。例如: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 智能家居 远程控制 sim800c qt
  • 基于树莓派设计的便携式夜视摄像机

    使用Raspberry Pi Zero W,Pimoroni HyperPixel和红外摄像头构建的自制夜视摄像机。硬件组件: Raspberry Pi Zero× 1 Raspberry Pi Pi NoIR Camera V2× 1 Pimoroni HyperPixel 4.0× 1 软件应用程序和在线服务: Raspberry Pi Ras Raspbian童年的时候,我花了很多时间玩“Splinter Cell”。我从不喜欢经典的“射击游戏”风格游戏,但是SC非常完美。隐形游戏,重点是在阴影中徘徊,光线和声音被用作完成或阻碍各种任务的工具。游戏中的标志性图像是Sam Fisher穿的夜视镜。我一直能在黑暗中看到一切事物的想法着迷,这构成了我构建便携式手持夜视设备的想法的基础。构建夜视设备我完成的夜视仪结合了红外摄像机(红外线,可让您在黑暗中拍摄照片和视频)Pimoroni HyperPixel4触摸屏和Raspberry Pi Zero W.我从购买了一个旧的手持相机闪光灯50p硬件的外壳。Pi Zero是一个完美的尺寸,因为它即使位于闪光灯外壳内,仍有足够的空间支持HyperPixel屏幕和闪光灯的原始部分。闪光灯还有一个倾斜手柄,这意味着您可以调整夜视角度并且便于携带。电路城原创内容,未经同意,不得转载!
    来自:DIY创意产品时间:2019-08-14 树莓派 夜视仪 红外摄像头
销量
4
查看
1152
参数名 参数值
发布于 2019 年 07 月 22日
更新于 2019 年 09 月 04日
Moore8直播课堂

tracer