借助 DEEPCRAFT™ 语音助手和 PSOC™ Edge E84 AI 开发套件,实现设备端的语音控制
语音交互正成为与嵌入式系统互动的越来越流行的方式。通过 DEEPCRAFT™ 语音助手和 PSOC™ Edge E84 AI 开发套件,您可以创建自定义语音指令,这些指令完全在设备上运行,并触发您应用程序中的操作。
本指南将详细介绍完整的开发流程:创建语音助手模型、配置唤醒词和意图、将生成的模型部署到 PSOC™ Edge E84 AI 开发套件中,最后在 MicroPython 中使用该模型。
在 DEEPCRAFT™ 语音助手中创建模型
首先,访问网站并点击“立即开始”,以创建语音助手。登录后,您将进入主页面。接着点击“设计新项目”以开始创建新的语音助手项目。
随后,为您的项目命名并点击“下一步”。
之后会看到一个空白页面。
数字1显示了您可以在草图中“拖放”的节点,您可以将这些节点连接起来。
唤醒词
当您点击某个节点时,右侧将弹出以下窗口。您选择一个感叹词和唤醒词,例如“Hi Infineon”。
唤醒词必须位于您的指令开头。
文本
在“Wakeword”之后,你可以添加用户可以或必须输入的文本。如图所示,你可以选择是否需要此功能。
我这里选择了“设置定时器为”。
变量
你提供的变量应包含别名、数据类型、取值范围和单位。我这里选择了别名为“time”,数据类型为“Integer”,取值范围为“0 到 9”,单位为“分钟”。
意图
最后一个节点必须是“意图”(Intent)。你需要为你的意图命名,我选择了“timer”。
数字2显示了你项目的属性。
唤醒词检测(WWD Settings)
控制唤醒词被识别的难易程度。
•数值越低(10%)= 更严格,系统仅对非常清晰的唤醒词发音作出响应 → 假阳性较少,但偶尔错过唤醒词的风险更高。
•数值越高 = 更灵敏,唤醒词更容易被识别,但也可能更频繁地误触发(例如由于背景噪音或发音相似的词语)。
唤醒词检测最大非语音时间
定义在唤醒词检测过程中,系统允许的最大静止/沉默时间,超过该时间后系统将中止或重新开始检测。如果暂停时间超过此值,系统将不再将其视为连续的语音表达。
自然语言理解敏感度(NLU Sensitivity)
决定系统在将语音文本与预设意图匹配时的“严格程度”。
•数值越低 = 识别意图需要更严格的匹配条件
•数值越高 = 系统可接受更不精确或更多样化的表达方式作为意图匹配
自然语言理解最大非语音时间(NLU Max Non-Speech Time)NLU 最大非语音时间是指系统在识别命令时,允许最长的语音暂停时间,之后系统认为语音输入已结束。
NLU 最大持续时间因子用于定义语音命令的最长持续时间。如果您的应用使用较长的命令,请增加此值;对于较短的命令,通常较低的值就足够了。较高的值还允许用户说话更慢,从而产生更长的语音表达,而较低的值则期望较短且说话更快的命令。
数字3 为您提供了文档、支持、使用条款和隐私政策的链接。
以下是两个示例项目,以便您了解其结构方式。
一个命令通常以唤醒词开始,接着是文本和/或变量,最后映射到一个意图,该意图决定了所需的操作。
当您认为项目已完成时,请点击右上角的“生成”。
几分钟后,您的项目即可准备就绪并可下载。
将模型部署到 PSOC™ Edge E84 AI 开发板
只需一条命令,部署工具即可完成所有操作:安装模型资源、编译 CM55 固件,并将其刷入开发板。
步骤1 — 下载部署工具:
步骤2 — 运行部署命令
只需将 test_gpio_control 替换为您的模型文件夹路径(或导出的 .zip 文件),即可部署自定义模型。
步骤3 — 安装 MicroPython 固件
如果您尚未在 PSOC™ Edge 上安装 MicroPython 软件,现在正是时候进行安装。
您可以按照本指南在您的 PSOC™ Edge AI 设备上刷入 MicroPython。
使用 MicroPython 的语音助手
现在,让我们来解析这段 MicroPython 代码中的核心语音助手逻辑。
意图映射 — 将语音指令与操作关联
这个字典是应用程序逻辑的核心。它将语音助手模型返回的意图索引映射到相应的函数。我这里选择了一个触发定时器的函数,但你可以根据需要选择任意函数。
设置与 CM55 的 IPC 连接
该脚本运行在 CM33 核心(即“主机”),而实际的语音处理,如唤醒词检测和意图识别,则由 CM55 核心完成。语音助手模型类封装了传输层,并提供了语音助手事件接口,使两个核心通过 IPC 进行通信。
启动并运行语音助手
•enable_target() 会开启并启动 CM55 核心——即运行实际 DEEPCRAFT™ 模型的处理器。
•短暂的延迟可确保核心有足够时间完全启动。
•model.start() 发送启动命令(DEEPCRAFT_CMD_START),之后语音助手将激活并开始监听。
事件回调 — 语音交互的核心
此函数是语音助手的核心事件处理程序。每当CM55核心通过IPC报告新事件时,它都会被自动调用。下面我们逐一分析各个分支:
VA_EVENT_READY:在DEEPCRAFT™模型于CM55上完成加载并开始监听唤醒词后立即触发一次。代码会在控制台中确认这一状态,并显示滚动的“KITCHEN TIMER”消息,以视觉方式提示用户:“我已准备就绪——请说出唤醒词。”
VA_EVENT_WAKEWORD_DETECTED:当用户成功说出“Hi Infineon”时立即触发。屏幕将清空并显示“...”,作为系统正在等待后续指令的视觉提示。
VA_EVENT_INTENT:这是最重要的分支,语音实际被转化为具体操作:
•value包含识别出的意图索引(例如,若用户说“三分钟”,则为3),为便于理解,将其重新赋值给intent_idx。
•该索引通过.get()方法在INTENT_ACTIONS字典中查找,如果索引不存在,则会安全地返回None,而非抛出错误。
•一旦找到匹配的函数,便会立即执行——这正是start_timer(3)真正运行的时刻。
•否则,程序不会崩溃,而是打印错误信息。
VA_EVENT_TIMEOUT:当唤醒词后在允许的时间窗口内未说出有效指令时触发。系统将直接返回到空闲的“等待”显示状态,并提示用户重试。
VA_EVENT_STOPPED:当语音助手完全关闭时触发——此时仅记录一条消息,因为程序在此处已结束。
VA_EVENT_ERROR:当CM55语音处理过程中发生错误时触发。在显示屏上显示清晰的“ERR”提示,以便立即发现问题。
else(回退)——安全网:捕获上述未明确处理的任何事件类型,将其记录下来,而不是静默忽略或导致程序崩溃。
主循环
只要模型尚未返回IDLE状态,程序就会一直保持在此循环中。在此期间,所有语音事件(如唤醒词检测、意图识别、超时等)均通过回调函数进行响应。
示例
以下示例演示了如何将语音助手用作厨房计时器。
可以通过如下命令启动计时器:
“嗨 Infineon,设置5分钟计时。”
应用程序启动时,屏幕会以“Hello :)”向用户打招呼。
当语音助手听到“Hi Infineon,将计时器设置为5分钟”后,便会识别指令并开始倒计时。为了演示目的,此示例中的计时器运行速度是实际应用中10倍。
倒计时结束后,屏幕会显示“Done”。
第一步:拆卸LED矩阵
首先,需要将左右两侧的LED矩阵从电路板上拆下。矩阵的具体位置在附图中清晰可见。此步骤需格外小心——LED矩阵的引脚非常敏感,容易弯曲。因此,请缓慢、均匀地操作,切勿倾斜。
第二步:连接线缆
拆下LED矩阵后,接下来需要连接线缆。此步骤必须在安装新LED矩阵前完成,否则之后将无法使用连接器。连接线缆的位置和方式请参考附图。在继续下一步之前,请确保所有线缆均已牢固且正确连接。
第三步:安装并拧紧LED矩阵
正确插入LED矩阵(带线缆的引脚朝左),然后用角落的孔位将其拧紧。使用四颗M3×5螺丝固定,以确保矩阵稳固不松动。当运输箱体或平放时,螺丝可防止矩阵脱落。
第四步:重新安装之前移除的LED矩阵
现在,可以将第一步中移除的两个LED矩阵重新插入到其原始位置。再次操作时请小心谨慎,确保引脚正确对齐后再将矩阵压入到位。
第五步:插入并连接PSOC Edge E84 AI套件
在最后一步,将PSOC™插入指定位置,并用相应的线缆进行连接。如何插入PSOC™以及需要连接哪些线缆,请参考附带的图片。请确保所有连接牢固且正确接好。
第六步:关闭盖子完成组装
最后一步是像下图所示,关闭盖子。
使用0.2毫米厚的前面板盖和0.4毫米厚的后面板盖。
第七步:在设备上刷写代码
您可以从附件中复制粘贴代码,并将其刷写到您的PSOC™ Edge E84 AI套件上。
此外,还需按照本文开头所述的方法,在您的设备上刷写模型。我使用PowerShell执行了该命令。
再见
这涵盖了从设计语音模型,到将其部署到 PSOC™ Edge E84 AI 开发板,再到使用 MicroPython 处理唤醒词和意图的完整工作流程。这种基于事件的架构几乎可以用于任何语音控制应用,无论是切换 GPIO、控制电机,还是在你的开发板上触发更复杂的逻辑。希望这个小技巧能为你用 PSOC™ Edge 构建自己的语音助手项目提供一个坚实的基础。
本文编译自hackster.io





