我分别在涂鸦3.12.14和3.12.25的SDK上使用240296分辨率的驱动,然后就导致了对话和语音唤醒的识别时间被大大延长,但是按键唤醒或打断不被影响,有测试到如果把屏换成160160的则延迟大大降低,后面经过多次修改测试,得出结论是CPU1运行UI被占满时导致语音识别过慢,请问这个情况如何解决
。现在是没办法降低屏幕分辨率,是否可以用图片切片轮询显示GIF图效果
LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
-
FRD13245278382
- Posts: 6
LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
- Attachments
-
-
liujt@tuya.com
- Posts: 72
Re: LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
你好,请问现在的应用是gif图片播放占满全屏还是占屏幕一部分?
-
FRD13245278382
- Posts: 6
Re: LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
liujt@tuya.com 2025年 Nov 18日 08:59你好,请问现在的应用是gif图片播放占满全屏还是占屏幕一部分?
你好,我现在是播放占了屏幕的一部分,在屏幕中间开了个240240的容器播放,之前开了个160160的功能正常,现在240的会出现对话延迟高
- Attachments
-
-
-
liujt@tuya.com
- Posts: 72
Re: LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
你好,可以把lvgl的优先级调整一下再试试,T5/t5_os/projects/tuya_app/config/bk7258_cp1/config中的CONFIG_LVGL_TASK_PRIORITY=5改成CONFIG_LVGL_TASK_PRIORITY=4
-
FRD13245278382
- Posts: 6
Re: LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
liujt@tuya.com 2025年 Nov 18日 11:05你好,可以把lvgl的优先级调整一下再试试,T5/t5_os/projects/tuya_app/config/bk7258_cp1/config中的CONFIG_LVGL_TASK_PRIORITY=5改成CONFIG_LVGL_TASK_PRIORITY=4
刚刚这样改动测试了,现在AI对话唤醒和回复是没有延迟了,但是语音输出有严重卡顿,包括提示词播报和AI语音回复都有严重卡顿,显示屏UI无卡顿
-
liujt@tuya.com
- Posts: 72
Re: LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
你好,请问现在gif的加载方式是如何操作的?直接从文件加载,还是将文件加载到内存,然后每次从内存加载的。
-
FRD13245278382
- Posts: 6
-
liujt@tuya.com
- Posts: 72
Re: LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
这个静态数组是从代码空间加载的,可以试着把gif文件导入到内存加载,速度上应该会快一些。
-
FRD13245278382
- Posts: 6
Re: LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
请问这个要怎么操作,有没有示例文档给我看看
-
liujt@tuya.com
- Posts: 72
Re: LCD屏使用GIF驱动240*296时会导致语音对话超高延迟问题
请参考如下gif从文件加载方式("/fs/3.gif":你当前的实际文件及路径为主):
Code: Select all
/*
gif文件加载
*/
OPERATE_RET gif_img_load(char *filename, lv_img_dsc_t *img_dst)
{
OPERATE_RET ret = OPRT_COM_ERROR;
lv_fs_file_t file;
lv_fs_res_t res;
res = lv_fs_open(&file, filename, LV_FS_MODE_RD);
if (res != LV_FS_RES_OK) {
LV_LOG_ERROR("Failed to open file: %s\n", filename);
return ret;
}
// 读取文件大小
lv_fs_seek(&file, 0, LV_FS_SEEK_END); // 移动到文件末尾
uint32_t file_size;
lv_fs_tell(&file, &file_size); // 获取文件大小
lv_fs_seek(&file, 0, LV_FS_SEEK_SET); // 移动回文件开头
// 分配内存以存储文件内容
uint8_t *buffer = tkl_system_psram_malloc(file_size);
if (buffer == NULL) {
LV_LOG_ERROR("Memory allocation failed\n");
lv_fs_close(&file);
return ret;
}
uint32_t bytes_read;
res = lv_fs_read(&file, buffer, file_size, &bytes_read);
if (res != LV_FS_RES_OK || bytes_read != file_size) {
LV_LOG_ERROR("Failed to read file: %s\n", filename);
tkl_system_psram_free(buffer); // 释放内存
}
else {
LV_LOG_WARN("------------------------gif file '%s' load successful !\r\n", filename);
img_dst->data = buffer;
img_dst->data_size = file_size;
ret = OPRT_OK;
}
lv_fs_close(&file);
return ret;
}
void gif_load_test(void)
{
static lv_img_dsc_t ui_img_gif = {0};
if (gif_img_load(("/fs/3.gif"), &ui_img_gif) == 0) { //"/fs/3.gif":你当前的实际文件及路径
lv_obj_t * gif_obj = lv_gif_create(switch_screen); //switch_screen:你当前的屏幕对象
lv_obj_align_to(gif_obj, switch_screen, LV_ALIGN_TOP_LEFT, 10, 30); //放置屏幕左上角
lv_gif_set_src(gif_obj, (const void *)&ui_img_gif);
lv_gif_restart(gif_obj);
}