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

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

3天内不再提示

使用ESP32制作您自己的Alexa

CDCNKA 来源:CDCNKA 作者:CDCNKA 2022-07-26 10:19 次阅读

人机界面技术 (HMI) 在过去 10 到 15 年取得了长足的进步:直到 2000 年代初,嵌入式设备(最早的手持电话,然后被智能手机取代)上的彩色屏幕和触摸屏绝对不是那么-负担得起的加。随着处理性能的提高、成本的降低以及新的通信技术的出现,能够将用户想要的内容转换为命令的设备已经出现。

直到几年前,能够连接到云并允许通过使用语音命令(如亚马逊的 Alexa)远程控制物联网设备的设备都是纯粹的科幻小说。迄今为止,智能传感器和智能音频设备使您可以轻松地为您的语音控制个人助理创建硬件

本文将指导您选择最佳组件来设计您独特的“Alexa”版本

语音助手:系统概览

数字语音辅助系统是一种能够执行以下步骤的电子设备:

  • 捕捉语音信息
  • 将语音消息转换为音频
  • 通过复杂的算法处理音频流,将其解释为一个独特的命令
  • 将命令与动作相关联
  • 播放音频反馈消息

这一切的背后,是一整套的软硬件技术。

图 1 显示了语音助手的框图。

pYYBAGLeDZ2AK_L1AACIcO8cR1M418.png

图1:语音助手框图(来源:作者)

与任何其他通信通道一样,该通道也涉及源信号、采集和转换系统、编码系统、处理系统、解码系统和输出信号发射系统。

在语音辅助系统的情况下,源信号是语音信息,它是通过我们的声带调制并作为振动在空气(通信方式)中传播的机械波。振动由充当信号传感器的麦克风获取。然后,对信号进行调节和编码以进行处理。此时,编码的音频流可以在本地(通过微控制器微处理器)进行操作,也可以通过语音识别算法和云端 AI 以更有效的方式远程发送以进行处理。因此,处理输出将是提供给致动系统的命令。

至于音频反馈,路径类似但相反:将流解码并发送到放大器,放大器将通过扬声器再现音频。

系统组件

从头开始设计语音辅助系统是一项复杂的任务。直到几十年前,只有拥有出色音频设计技能的工程师团队才可行。如今,我们很幸运能够利用一系列硬件和软件组件,这无疑使任务变得更简单。

该项目最关键的部分之一是音频采集和再现部分,这需要应用领域的出色知识以及模拟电子技能。为了简化任务,我们可以使用数字传感器,它集成了必要的模拟组件并传输已经数字编码的数据。

至于输入部分,我们可以使用全向麦克风INMP441,它采用MEMS技术(Micro Electro-Mechanical Systems)进行转换,实现了I2S数字接口进行数据交换。这样就避免了有关信号调节的问题,并且与处理单元的接口不受噪声影响。此外,要处理的信号已经是数字格式。

至于音频输出级,我们可以使用 MAX98357A,它是一个 2 通道 3W D 类放大器,也配备了一个 I2S 接口。与输入级类似,硬件设计极为简化:放大器通过 I2S 接口在输入端接收数字信号,解码音频样本并将其再现为芯片 L 和 R 端的电压,只需简单连接给扬声器。

此时,您需要选择的最后一个设备是微控制器,它必须能够处理(或发送到云端)来自麦克风的音频流,并发送音频流以供放大器再现。最适合这个用途的 MCU 当然是乐鑫的ESP32模块(最好是 WROVER 模块,配备 8MB 的 RAM,以及高达 16MB 的闪存)。由于其高连接性(BLE 和 WiFi)和高性能以及极低的价格,该模块是智能家居应用的正确选择。它还具有两个独立的 I2S 接口,非常适合该项目的目的。

图 2 显示了该项目中使用的三个主要组件。

poYBAGLeDaqAIRG-AABuLws9GzY817.jpg

图 2:MAX98357A(左)、ESP32-WROVER(中)、INMP441(右)(来源:网络

I2S 通信总线

I2S 接口协议是该项目的关键点,因为它使硬件和软件都变得简单,使设计人员和开发人员从与模拟采集和再现相关的一系列问题中解脱出来。

I2S 代表 Inter-IC Sound,它是为连接数字音频设备而创建的串行接口的电气标准。它在音频应用中用于在集成电路之间传输 PCM 音频样本,如我们的例子(MCU 和麦克风/放大器)。I2S 创建于 1986 年,是飞利浦半导体(现为 NXP 半导体)的产品

I2S 总线是同步的,因为它从数据线提供不同的时钟信号,这比异步设备更容易接收,在异步设备中,通信系统直接从数据流中获取时钟。它还在同一条数据线上提供最多两个多路复用通道(右通道和左通道)。

I2S至少包括以下三行:

  • 时钟线(BCLK):用于标记位时间并允许连接设备之间的同步
  • 字选择(WS)或左右时钟(LRCLK)线:用于复用左声道(WS低)和右声道(WS高)。因此,它呈现为占空比为 50% 的方波
  • 数据线:用于PCM样本的传输,根据WS的状态复用;数据以 2 的补码编码

时钟切换频率(f ck)不能任意选择,而是根据输入信号的采样频率(f s)、通道数(n ch)和单个采样的位数(n bit ),其中 f ck结果是

f ck = f s *n*n ch

例如,要传输 2 个 8kHz 采样数据流,每个采样有 12 位,我们需要设置

f ck = 8000 * 12 * 2 = 192000 次/秒。

图 3 显示了总线线路的时序图示例。

pYYBAGLeDbWAKYZpAAB3B2hVs3k050.png

图3:I2S总线时序图(来源:hackaday.com)

电气连接和软件片段

图 4 显示了系统三个主要组件之间的连接。这些连接非常容易理解,因为它足以连接麦克风/放大器和 MCU 之间的时钟信号、字同步和数据线。所有模拟调节、滤波和放大都集成到数字设备中。

pYYBAGLeDcGAIUMCAAGJQKHnldE847.png

图 4:连接数字组件(来源:作者)

最后,图 5 显示了在 ESP32 的 ESP-IDF 环境中正确使用 I2S 总线的结构配置。该配置是指输入信号以 8kHz 采样,每个单通道采样 16 位,作为输入和输出(因为有一个麦克风,并且有一个单声道输出)。

poYBAGLeDc2AJnEoAAC-mG6trTo939.png

图 5:I2S 总线配置示例(来源:作者)

一个项目,千种可能

该项目是任何需要音频输入、放大输出以及处理和通信系统的设备的起点:类似的平台可以在大量应用中实现,例如智能家居助手、音频播放器、环境警报系统,婴儿监视器和许多其他。

您将使用该平台用于什么类型的应用程序?

审核编辑:汤梓红

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

    关注

    2

    文章

    196

    浏览量

    23270
  • ESP32
    +关注

    关注

    17

    文章

    953

    浏览量

    17032
收藏 人收藏

    评论

    相关推荐

    带有Alexa App和手动开关的ESP32智能家居系统设计方案

    在此物联网项目中,我展示了如何使用Amazon AlexaESP32来控制8个家用电器,从而使基于物联网的智能家居自动化。 硬件部件: ·  ESP32 DEVKIT V1×    1个
    的头像 发表于 01-18 18:03 4927次阅读

    制作 NodeMCU ESP32 自定义固件

    最近尝试在 Mac 下制作 nodemcu ESP32 的自定义固件。本文就来介绍nodemcu ESP32 自定义固件的编译、烧写、测试的全部过程。准备固件源码包从nodemcu-firmware
    发表于 10-28 09:40 22次下载
    <b class='flag-5'>制作</b> NodeMCU <b class='flag-5'>ESP32</b> 自定义固件

    如何利用ESP32和Arduino制作BLE检测器

    在本文中,我将向展示如何在ESP32 和 Arduino 的帮助 下制作一个简单的BLE 存在检测器,最后,我们将在我的智能手机和智能手表上使用 BLE 测试这些设备。
    的头像 发表于 08-09 17:15 6212次阅读
    如何利用<b class='flag-5'>ESP32</b>和Arduino<b class='flag-5'>制作</b>BLE检测器

    ESP8266/ESP32自动下载原理

    前一段时间需要自己制作一片ESP32单板,成本和封装考虑,计划选择CH340E作为USB转串口芯片,ESP8266/ESP32的单板一般都有
    的头像 发表于 10-10 15:06 4495次阅读

    使用ESP32制作ESP RainMaker IoT项目

    电子发烧友网站提供《使用ESP32制作ESP RainMaker IoT项目.zip》资料免费下载
    发表于 10-24 10:54 9次下载
    使用<b class='flag-5'>ESP32</b><b class='flag-5'>制作</b><b class='flag-5'>ESP</b> RainMaker IoT项目

    使用Websockets创建自己ESP32机器人汽车

    电子发烧友网站提供《使用Websockets创建自己ESP32机器人汽车.zip》资料免费下载
    发表于 11-04 09:40 0次下载
    使用Websockets创建<b class='flag-5'>自己</b>的<b class='flag-5'>ESP32</b>机器人汽车

    的Magicbit(ESP32)连接到thingsboard

    电子发烧友网站提供《将的Magicbit(ESP32)连接到thingsboard.zip》资料免费下载
    发表于 11-15 11:46 0次下载
    将<b class='flag-5'>您</b>的Magicbit(<b class='flag-5'>ESP32</b>)连接到thingsboard

    使用ESP32和IR Remote的Alexa家庭自动化

    电子发烧友网站提供《使用ESP32和IR Remote的Alexa家庭自动化.zip》资料免费下载
    发表于 11-15 09:43 2次下载
    使用<b class='flag-5'>ESP32</b>和IR Remote的<b class='flag-5'>Alexa</b>家庭自动化

    ESP32上传输的音频

    电子发烧友网站提供《在ESP32上传输的音频.zip》资料免费下载
    发表于 12-09 10:13 1次下载
    在<b class='flag-5'>ESP32</b>上传输<b class='flag-5'>您</b>的音频

    使用ESP8266或ESP32通过Alexa控制家用电器

    电子发烧友网站提供《使用ESP8266或ESP32通过Alexa控制家用电器.zip》资料免费下载
    发表于 12-15 07:52 2次下载
    使用<b class='flag-5'>ESP</b>8266或<b class='flag-5'>ESP32</b>通过<b class='flag-5'>Alexa</b>控制家用电器

    创建自己Alexa

    电子发烧友网站提供《创建自己Alexa.zip》资料免费下载
    发表于 12-19 11:31 0次下载
    创建<b class='flag-5'>您</b><b class='flag-5'>自己</b>的<b class='flag-5'>Alexa</b>

    如何使用AlexaESP32控制

    电子发烧友网站提供《如何使用AlexaESP32控制.zip》资料免费下载
    发表于 06-07 11:02 0次下载
    如何使用<b class='flag-5'>Alexa</b>和<b class='flag-5'>ESP32</b>控制

    智能家居:带Alexa和Amazon Echo的ESP8266/ESP32

    电子发烧友网站提供《智能家居:带Alexa和Amazon Echo的ESP8266/ESP32.zip》资料免费下载
    发表于 06-19 10:46 0次下载
    智能家居:带<b class='flag-5'>Alexa</b>和Amazon Echo的<b class='flag-5'>ESP</b>8266/<b class='flag-5'>ESP32</b>

    Arduino IoT Cloud ESP32 Alexa Control智能家居

    电子发烧友网站提供《Arduino IoT Cloud ESP32 Alexa Control智能家居.zip》资料免费下载
    发表于 06-26 14:49 0次下载
    Arduino IoT Cloud <b class='flag-5'>ESP32</b> <b class='flag-5'>Alexa</b> Control智能家居

    如何制作ESP32 CAM板监控机器人汽车

    电子发烧友网站提供《如何制作ESP32 CAM板监控机器人汽车.zip》资料免费下载
    发表于 06-29 10:24 6次下载
    如何<b class='flag-5'>制作</b><b class='flag-5'>ESP32</b> CAM板监控机器人汽车