【多模态大模型示例】借助星火大模型用语音控制电梯功能

💡 原文中文,约9700字,阅读约需24分钟。
📝

内容提要

LLM_control是开发套件出厂自带的综合示例,用于实现语音控制电梯的功能。用户可以通过语音控制电梯所到的楼层。开发板负责语音的采集、上传、接收云平台的处理结果,并播放语音和显示结果。代码修改主要在AIUI_ZBUS_NLP部分,提取并解析value字段的值。界面显示部分使用LVGL库实现,显示当前楼层。

🔎

延伸解读

云端编排与端侧处理的协作要点

文章将语音控制电梯的实现拆分为云端在线编排和端侧代码修改两部分。云端负责语音识别、意图分类和楼层提取,端侧则解析返回的JSON数据并驱动硬件。这种分工意味着开发者需要同时关注云端流程的准确性和端侧解析的健壮性,任何一端出错都会导致功能异常。

提示词设计对功能实现的影响

文章强调提示词设计的关键性,分类提示词用于区分电梯控制、画画等意图,电梯控制提示词则从自然语言中提取楼层数值。通过角色设定、任务描述和示例引导,大模型能更准确地输出结构化结果。若提示词设计不当,可能导致分类错误或楼层提取失败,进而影响后续处理。

端侧代码修改的聚焦点

端侧修改主要集中在consumer_thread线程的AIUI_ZBUS_NLP事件处理中。开发者只需在原有服务分支基础上增加对service字段为floor的判断,并解析value字段获取楼层数值。其他语音识别和播放代码可保持不变,这降低了修改复杂度,但也要求开发者准确理解数据模板结构。

界面显示的实现与字体配置

为了直观显示电梯楼层,文章使用LVGL库创建标签控件,并在独立线程中更新显示。由于官方字库不包含所需文字,作者采用系统字体输出英文提示,需在prj.conf中启用相应字体配置。这提示开发者在界面开发时需注意字体资源的可用性,避免显示异常。

❓

Q&A

如何通过语音控制电梯到达指定楼层?

用户可以通过语音指令,例如“到4层”,来控制电梯到达指定楼层,开发板负责语音采集和结果显示。

LLM_control示例的主要功能是什么?

LLM_control是一个开发套件自带的示例,用于实现语音控制电梯的功能。

电梯控制的提示词设计有什么重要性?

提示词设计能帮助大模型更好地理解用户的语音命令,从而提高分类和识别的准确性。

如何修改代码以实现电梯控制功能?

需要在AIUI_ZBUS_NLP部分修改代码,添加前置和后置处理代码,以确保电梯控制功能正常运行。

设备端如何处理云平台返回的结果?

设备端通过consumer_thread线程解析云端返回的数据,提取并处理value字段的值。

如何在界面上显示当前电梯楼层?

通过LVGL库实现界面显示,使用ui_set_layer函数更新显示的楼层信息。

🏷️

标签

➡️

继续阅读