基于 i.MX RT106V 的智能语音用户界面解决方案
这款恩智浦 EdgeReady 解决方案适用于本地和在线语音控制,它采用 i.MX RT106V 跨界 MCU,并集成语音智能技术 (VIT) 语音转意图 (Speech to Intent),为非接触式应用提供自然的语音用户界面。这款超小尺寸、可立即投入生产的硬件设计配备了基于 FreeRTOS 的全集成软件,可快速进行开箱即用的评估和概念验证开发。
这款交钥匙解决方案可最大限度地缩短上市时间、降低风险并减少开发工作量,使 OEM 能够轻松地为其智能家居和智能家电产品添加语音功能。
恩智浦 EdgeReady 解决方案是 EdgeVerse? 边缘计算平台的一部分。
2024 年 10 月的软件更新支持 Wi-Fi 连接,并整合了面向物联网设备的 Matter 互操作性标准以及恩智浦专有的语音转意图 (S2I) 自然语言语音控制技术,适用于边缘计算。
通过此次升级,开发人员现在可以使用 RT106V 设计与 Matter 连接的物联网节点,并使用自然语音命令控制系统中的任何节点。
板材:定制板材
类别:语音、音频、HMI、RTOS、用户界面
外设:USB、UART、SPI、SDMMC、SDIO、SAI、PWM、I2S、GPIO、FlexIO、FLASH、DMA、时钟
工具链:MCUXpresso IDE V11.10.0 或更高版本
目录
1.软件
- MCUXpresso 11.10.0
- MCUXpresso RT1060 EVKC 2.16.0 SDK
- Cyberon Dspotter 建模工具 V2(最新测试版本为 2.2.19.1)
- 串行连接软件(Putty、Tera Term、MobaXterm等)
2.硬件
3. 设置
该项目包含恩智浦智能语音UI解决方案的全部源代码。
有关智能语音UI的更多入门和运行信息,请参阅智能语音UI入门指南。
3.1 步骤 1
下载 MCUXpresso 11.10.0
- 转到此URL:https://www.nxp.com/mcuxpresso/ide
- 点击“下载”橙色按钮
- 转到“MCUXpresso集成开发环境(IDE)”部分,然后单击“下载”
- 如果您尚未登录,系统可能会要求您登录 NXP 帐户
- 登录后,您将看到产品信息。点击“MCUXpresso IDE”链接
- 同意“软件条款和条件”,即可访问下载链接
3.2 第 2 步
下载 MIMXRT1060-EVKC v2.16.0 SDK
- 转到此 URL:https://mcuxpresso.nxp.com/
- 按下“选择开发板”
- 在“搜索硬件”中输入 RT1060 EVKC
- “MIMXRT1060-EVKC”板应出现在结果中
- 点击棋盘
- 在屏幕右侧,您应该看到“Build SDK”按钮
- SDK 版本应为 2.16.0(如果默认未选择)
- 如果尚未选择,请选择“MCUXpresso IDE”作为工具链
- 点击页面底部的“构建 SDK”按钮
- SDK 可能会显示正在构建一段时间
- 准备就绪后,即可在 MCUXpresso SDK 仪表板中下载
3.3 步骤 3
在IDE中安装SDK
- 打开 MCUXpresso IDE
- 如果是第一次打开该工具,会显示“欢迎”页面。您可以关闭它
- 您现在应该能够看到“已安装的 SDK”视图
- 要安装之前下载的 SDK,请将 zip 文件拖放到此 IDE 视图中
- 下面是安装 SDK 后视图的示例
- 系统将要求您确认 SDK 安装,请按“确定”
3.4 步骤 4(可选,仅当使用 DSMT 时)
下载 Cyberon DSpotter 建模工具 v2,版本 2.2.19.1
- 转到此网址: https://tool.cyberon.com.tw/DSMT_V2/index.php?lang= en
- 向下滚动直至到达“下载”部分
- 点击下载v2.2.19.1
3.5 步骤 5
下载 Ivaldi 工具
- 转到此 URL:https://www.nxp.com/mcu-svui并下载工具包。
使用预配置的 Ivaldi 更新到最新的二进制文件
- 在开始定制示例之前,我们需要确保我们有正确的设置并且主板正在运行最新的 NXP 软件。
使用预配置的 Ivaldi
- 预配置的 Ivaldi 是一款即用型工具,专门设计用于简化主板更新过程
- 它也可以用作制造工具
- 它在tools/Ivaldi_updater文件夹中可用
- 下载文件夹后,预配置的 Ivaldi 的内容应如下图所示:
- 在 ImageBinaries 文件夹中,您可以找到:
system)的二进制文件会自动生成并添加到文件夹中
笔记
开发板通电时请勿移动跳线。
- 将 USB Type-C 连接器插入 SLN-SVUI-IOT 板,将 USB Type-A 连接器插入计算机
- 启动上面选择的FLASHSVUIBOARD.bat脚本
- 输出应如下所示:
3.6 步骤 6(可选,仅当您想使用 MSD 进行更新时)
MSD 更新
从 axf 生成二进制文件
- 选择并构建项目。
- 右键单击生成的.axf文件
- 转到二进制实用程序 -> 创建二进制文件
- 右键单击相同的 .axf 文件,然后转到实用程序 -> 在此处打开目录浏览器
- 您现在可以使用生成的 .bin 进行 MSD 更新
进入 MSD 模式
- 要将设备置于 MSD 模式,请在电路板启动时按住开关 2 (SW2)(断开电源,按下 SW2,重新插入电源线)
- LED 应亮粉色,每隔 3 秒亮一次,然后熄灭
- 然后应该已经安装了新的驱动器
- 复制 - 粘贴或拖放生成的二进制文件,就像使用记忆棒一样
- 蓝色LED灯将开始闪烁。当该过程结束时,绿色LED灯将闪烁一次
3.7 步骤 7
串行终端设置
- 串行终端可用于
- 在演示之间切换
- 选择语言
- 查看日志(用于检测和其他事件)
- Tera Term(仅限Windows)
- 油灰
- 串行连接设置如下(COM 端口需要相应调整):
3.8 步骤 8
下载项目库
SVUI 项目中使用的所有库均可在nxp.com解决方案页面的slnsvuiiotlibs.zip文件中找到。下载后,解压库并将其添加到libs文件夹中所需项目 slnsvuiiotlocaldemo 或 slnsvuiiotaec_demo 中。
添加文件后, slnsvuiiotlocaldemo/libs或slnsvuiiotaecdemo/libs的内容应如下图所示:
3.9 步骤 9
DSMT 生产和评估库
笔记
对于 DSMT 集成,包含 2 个库:生产 libslnasr 和评估 libslnasr。
slnasrproduction lib与其余库一起位于slnsvuiiot_libs.zip文件内。
slnasrevaluation lib 需要从nxp.com上的解决方案页面单独下载。
生产库仅适用于 RT106C。
该开发套件基于 RT106V。
为了使 DSMT 项目在 RT106V 上运行,必须使用评估 libslnasr。
该库必须仅用于评估而不能投入生产,因为这将破坏重新分发条款。
为了与生产 libslnasr 链接,必须:
- 将 libslnasrproduction.a 复制到 slnsvuiiotlocaldemo/libs 文件夹中。
- 右键单击 slnsvuiiotlocaldemo MCUXpresso 项目,选择属性 -> C/C++ 构建 -> 设置 -> MCU 链接器 -> 库。
- 添加 slnasrproduction 条目。
- 构建 DSMT 项目。
当使用 libslnasrproduction.a 进行 RT106C 投入生产时,请不要忘记在 app.h 中将 USEDSMTEVALUATION_MODE 设置为 0。
为了与评估 libslnasr 链接,必须:
- 将 libslnasrevaluation.a 复制到 slnsvuiiotlocaldemo/libs 文件夹中。
- 右键单击 slnsvuiiotlocaldemo MCUXpresso 项目,选择属性 -> C/C++ 构建 -> 设置 -> MCU 链接器 -> 库。
- 添加 slnasrevaluation 条目。
- 构建 DSMT 项目 -> 现在它应该可以在智能语音开发套件上成功运行。
3.10 步骤 10
VIT 语音到意图和命令库
笔记
VIT 提供两种类型的语音检测引擎:一种用于仅检测预定义命令,另一种能够检测意图,从而提供更大的灵活性。
解决方案页面nxp.com上的slnsvuiiot_libs.zip文件中包含以下 VIT 库:
- 适用于slnsvuiiotlocaldemo的 VITCM7Productionv0603_01 ,带有语音转意图引擎
- 适用于slnsvuiiotlocaldemo的 VITCM7v040801 ,带有 VIT 引擎
- 用于slnsvuiiotaecdemo的 VITCM7v041000
笔记
slnsvuiiotlocaldemo项目中的模型最初是为 VITCM7v040801 库版本创建的。因此,我们在slnsvuiiotlocaldemo和slnsvuiiotaecdemo项目中使用了不同的库。
根据所需的演示和引擎组合,用户需要从解决方案页面下载特定的库,然后按照以下步骤操作。
为了链接语音到意图 VIT 库,必须:
- 将 VITCM7Productionv060301.a 复制到 slnsvuiiotlocal_demo/libs 文件夹中。
- 右键单击要使用语音到意图 VIT 库的项目,即slnsvuiiotlocaldemo MCUXpresso 项目,选择属性 -> C/C++ 构建 -> 设置 -> MCU 链接器 -> 库。
- 如果其他 VIT 库已存在条目,请将其替换为 VITCM7Productionv060301。否则,只需添加 VITCM7Productionv060301 条目即可。
- 在 app.h 中选择 S2I ASR 并构建项目。
为了链接命令 VIT 库,必须:
- 将 VITCM7v040801.a 复制到slnsvuiiotlocaldemo中,或将 VITCM7v041000.a复制到slnsvuiiotlocaldemo/libs 文件夹中。
- 右键单击要使用命令 VIT 库的项目,slnsvuiiotlocaldemo或slnsvuiiotaecdemo MCUXpresso 项目,选择属性 -> C/C++ 构建 -> 设置 -> MCU 链接器 -> 库。
- 如果其他 VIT 库已有条目,请将其替换为slnsvuiiotlocaldemo的 VITCM7v040801 或slnsvuiiotaecdemo**的 VITCM7v041000 。否则,只需为每个演示添加相应的条目即可。
- 在app.h中选择VIT ASR并构建项目。
笔记
我们鼓励您在生成新模型时始终使用最新的 VIT 库。
3.11 第 11 步(可选,仅当您想使用 Visual Studio Code 时)
使用 Visual Studio Code 导入、构建和调试智能语音项目
VS Code + MCUXpresso 扩展的先决条件:
完成设置后,您现在可以直接在 VS Code 中导入、构建和调试 slnsvuiiotlocaldemo 项目(或任何其他示例):
- 导入slnsvuiiotlocaldemo项目。
- 系统将要求您选择一个工作区文件夹。该扩展程序通过将项目复制到工作区来工作。
- 选择所需的工具链。
- 将 libs 文件夹添加到工作区中的项目(副本)中。
- 选择您想要的构建配置。
- 构建项目。
- 调试项目。首次调试时,J-Link 会询问设备类型,请选择 MIMXRT1062XXX6B。
- 使用 VS Code 调试器选项卡导航项目。
4.结果
本节包含不同 VIT 和 DSMT 实现的示例。
S2I
维生素
- 示例 0 - 在现有的英语演示中添加新命令
- 示例 1 - 添加新的 EN 模型
- 示例 2 - 修改应用程序层 API 以在命令检测后控制 LED
- 示例 3 - 测试和调整 VIT 模型
- 示例 4 - 添加新的音频提示
- 示例 5 - 添加新的 ES 模型
- 示例 6 - 从二进制文件播放 .WAV 提示
- 示例 7 - 从文件系统播放 .WAV 提示
DSMT
通用输入输出
5. 常见问题解答
5.1 SVUI 的 CPU 使用率是多少?
- NXP 语音转意图,3 个 I2S 麦克风
- NXP VIT,3 x 12S 麦克风
- Cyberon DSMT Level 1 型号,3 个 I2S 麦克风
- NXP 语音转意图,2 个 PDM 麦克风
- NXP 语音转意图 + AEC,2 个 I2S 麦克风
- NXP VIT + AEC,2 个 I2S 麦克风
- Cyberon DSMT 4 级型号 + AEC、2 个 I2S 麦克风
5.2 SVUI 的内存使用量是多少?
5.3 SVUI S2I + Matter 的 CPU 使用率是多少?
5.4 SVUI + Matter 的内存使用情况是多少?
5.5 SVUI 的功耗是多少?
关于我们的智能语音解决方案的功耗:
- 我们利用 Voice Seeker 的 VAD 功能,在一段时间不活动后进入低功耗状态。在我们最新的代码库中,10 秒不活动后即可进入低功耗状态。
- 在低电量期间,我们会绕过 ASR 处理。
- 我们将 I2S 实现从 528MHz 切换到 66MHz,将 PDM 实现从 528MHz 切换到 75MHz(对于 PDM 情况,我们需要更多的 MIPS,因为抽取是在软件中完成的)。
- 我们备份最新的 450 毫秒的音频,进入正常运行模式后我们首先处理这些音频。
通过这些优化,我们得到以下内容(针对整个电路板,而不仅限于 MCU):
- 正常运行模式为 320mW
- 低功耗模式为 160mW
SOC(RT106V)的功耗与常规 RT1062 相同。基于 AN12245:
在528MHz频率下,25摄氏度时的最小功耗为174mW。75MHz频率下的预计最小功耗为30-40mW。
5.6 SVUI的识别结果如何?
搭载 NXP VIT S2I:唤醒词识别:在安静、外部厨房噪音和外部音乐噪音测试中,可理解 99% 以上的唤醒词。表情识别:在安静和外部厨房噪音测试中,可识别 98% 以上的表情。在外部音乐噪音测试中,可识别 84% 以上的表情。误触发:24 小时英语新闻播放中误触发 5 次。
搭载 NXP VIT:唤醒词识别:静音状态下可理解唤醒词 97%,外部厨房噪音状态下可理解唤醒词 96.5%,外部音乐噪音状态下可理解唤醒词 96%。指令识别:静音状态下可识别唤醒词 96.5%,外部厨房噪音状态下可识别唤醒词 96%,外部音乐噪音状态下可识别唤醒词 89%。误触发:24 小时英语新闻播放中误触发 6 次,24 小时德语新闻播放中误触发 6 次,24 小时法语新闻播放中误触发 1 次,24 小时中文新闻播放中误触发 6 次。
6. 支持
如果您对此代码有任何疑问或反馈,请联系 NXP 支持或在我们的社区https://community.nxp.com/上发帖。
项目元数据
有关此示例的内容/正确性的问题可以作为此 GitHub 存储库中的问题输入。
来源:恩智浦appcodehub