【聆思CSK6语音大模型AI开发套件试用】增加对语音控制电梯功能的显示

优化CSK6AI开发套件的电梯界面:LVGL控件与系统字体应用
本文介绍如何在聆思CSK6的AI开发板上使用LVGL库创建图形用户界面,包括添加控件如楼层显示标签,以及利用系统字体显示电梯层号。还提供了完整代码下载链接和演示效果。

任务简介

上一篇博文中,我们介绍了在聆思CSK6语音大模型AI开发套件的开发板实现对云平台返回的结果进行处理,我们已经通过日志文件看到了数据的正确接收和解析。今天对程序的用户界面进行优化,这样可以通过屏幕看到电梯的显示。

图形界面功能的实现

界面显示部分运行在一个独立的线程中,这部分代码是基于LVGL库实现的。

图形界面相关的代码在src\app_ui\demo_ui目录下。其中ui.c是核心代码。

添加LVGL控件

我们先定义一个全局变量:

lv_obj_t *ui_demo_layer_label = NULL;

然后在ui_demo_screen_init函数中添加如下代码:

        ui_demo_layer_label = lv_label_create(ui_demo_screen);
        lv_obj_set_width( ui_demo_layer_label, LV_SIZE_CONTENT);  /// 1
        lv_obj_set_height( ui_demo_layer_label, LV_SIZE_CONTENT);   /// 1
        lv_obj_set_x( ui_demo_layer_label, 10 );
        lv_obj_set_y( ui_demo_layer_label, 100 );
        lv_obj_set_align( ui_demo_layer_label, LV_ALIGN_TOP_LEFT );
        lv_label_set_text(ui_demo_layer_label, "Current Layer: 1");
        lv_obj_set_style_text_color(ui_demo_layer_label, lv_color_hex(0xFFFFFF), LV_PART_MAIN | LV_STATE_DEFAULT );
        lv_obj_set_style_text_opa(ui_demo_layer_label, 255, LV_PART_MAIN| LV_STATE_DEFAULT);

添加显示楼层的函数

在ui.c中我们增加了ui_set_layer函数,该函数将解析到的电梯楼层数显示在layer_label上。

void ui_set_layer(int32_t id)
{
    char layer_text[50];
    snprintf(layer_text, sizeof(layer_text), "Current Layer: %d", id);
	k_mutex_lock(&lvgl_ui_mutex, K_FOREVER);
    lv_label_set_text(ui_demo_layer_label, layer_text);
	k_mutex_unlock(&lvgl_ui_mutex);
}

我们在consumer_thread线程中调用ui_set_layer函数即可完成显示更新。

系统字体的使用

在官方的例子中,所有的中文显示都是使用LVGL的字体生成工具转换生成得到的。保存在src\app_ui\demo_ui\fonts\screen_word.c中。不过该文件中并没有我们显示电梯层数所需要的文字。
我们采用一个简单的办法,就是利用系统字体输出"Current Layer字样"。要使用系统字体,需要修改prj.conf文件中修改如下:

CONFIG_LV_FONT_MONTSERRAT_32=y

完整代码下载

完整的代码参见:https://download.youkuaiyun.com/download/bit_mike/88959552

演示效果

下面是程序运行的演示效果图。
演示效果
下面是完整的演示视频。

【聆思CSK6语音大模型AI开发套件试用】语音控制电梯

聆思CSK6语音模块是一款专为语音交互场景设计的高性能开发模块,支持自然语言处理语音识别与合成、意图识别等功能。它能够广泛应用于智能家居、工业控制、语音助手等场景,提供端到端的语音交互解决方案。 ### 功能特性 - **语音识别(ASR)**:支持高质量的语音转文字功能,能够准确识别用户的语音输入。 - **语音合成(TTS)**:将文本信息转换为自然流畅的语音输出,用于语音播报或交互反馈。 - **自然语言理解(NLU)**:能够理解用户的自然语言指令,提取意图和关键信息。 - **意图模板匹配**:根据解析结果构建意图模板,实现对特定指令的精准识别与响应。 - **端侧处理能力**:具备本地化处理能力,可在设备端完成部分语音识别与控制任务,降低云端依赖。 - **支持联网搜索与第三方模型接入**:通过聆思大模型平台(LSPlatform),可对接第三方大模型(如DeepSeek)进行更复杂的语言处理任务[^2]。 ### 使用说明 1. **硬件连接**:将CSK6模块接入开发板或目标设备,确保电源、音频输入输出、通信接口(如UART、I2C等)连接正常。 2. **开发环境搭建**:安装配套的开发工具链,包括SDK、调试工具和示例代码。 3. **语音识别配置**:通过配置语音识别引擎参数,设定唤醒词、识别语言模型等。 4. **意图识别与执行**:定义意图模板并加载至系统,当用户语音指令匹配模板时,触发相应的控制动作,如开关灯、调节音量等[^1]。 5. **联网功能启用**:如需接入云端大模型服务,需配置网络连接并设置相应的API密钥或访问令牌[^2]。 ### 开发支持 - **SDK与API**:提供丰富的软件开发工具包,支持C/C++、Python等编程语言,便于快速集成语音功能。 - **示例工程**:配套提供多个典型应用场景的示例代码,如语音控制灯、联网搜索、RAG知识库接入等[^3]。 - **文档与社区支持**:包括详细的用户手册、开发指南、FAQ文档以及活跃的开发者社区。 - **平台集成能力**:可通过聆思大模型平台进行应用策略编排,灵活切换本地处理与云端处理模式,支持多模型接入与协同工作[^2]。 ### 代码示例(语音控制灯) 以下是一个简单的Python代码片段,用于演示如何通过聆思CSK6模块实现语音控制灯的开关: ```python import serial import time # 初始化串口连接 ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1) def send_command(cmd): ser.write((cmd + '\n').encode()) time.sleep(0.1) response = ser.readline().decode().strip() return response def handle_intent(intent): if intent == "turn_on_light": print("正在打开灯光") send_command("LIGHT_ON") elif intent == "turn_off_light": print("正在关闭灯光") send_command("LIGHT_OFF") else: print("未识别的指令") # 模拟意图识别结果 intent_result = "turn_on_light" handle_intent(intent_result) ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神一样的老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值