更新readme
心有灵犀一点通——懂你的话,更懂你的心和你身边的声音。
灵犀是基于全志 R528 + OpenVela(NuttX) 的端侧情感智能伙伴系统:以 AI Agent 框架为核心, 集成 LVGL 图形界面、火山引擎 ASR/TTS、通义千问 LLM,提供 6 个桌面应用,形成”听得懂(语音对话)、 看得见(表情联动)、感受得到(心情专家)、听得见环境(声音检测)”的完整情感交互闭环—— 含小小怪科技风 AI 少女语音伙伴、自训练 CNN 声音检测。
本项目提供预编译镜像,无需编译环境即可体验全部功能:
image/v112.img
需要修改功能或替换 API Key,请看下文《从源码编译》。
灵犀-项目源代码/ ├── image/ # 烧录镜像 │ └── v112.img # v112 最终版 (32MB, NAND Flash,仅保留此一个) ├── src/ # 应用层源码 │ ├── lv_100ask_xz_ai_main.c # LVGL 桌面主界面 (6个app入口) │ ├── xiaoguai.c / .h # 小小怪应用 (科技风AI少女+8心情×4状态表情系统) │ ├── voice_chat.c / .h # 语音对话模块 (ASR->LLM->TTS, 小小怪复用) │ ├── voice_periph.c # 语音控制应用 (LLM function calling) │ ├── mood_expert.c / .h # 心情专家应用 (动态skill加载+双persona机制) │ ├── simple_chat.c / .h # LLM HTTP 通信基础库 │ ├── mood_default.md # 心情专家默认skill(自助式积极心理学) │ ├── aed_sound_detector/ # 声音检测模块 (自训练CNN, 咳嗽/敲击识别) │ │ ├── aed_audio.c/h # 音频采集 (48kHz -> 16kHz抽取) │ │ ├── aed_pipeline.c/h # 滑动窗口信号管线 │ │ ├── aed_features.c/h # 12维特征提取 │ │ ├── aed_model.c/h # 分类器 (训练管线导出参数) │ │ ├── aed_tflm.h # TFLite Micro INT8 推理接口 │ │ ├── aed_tflm_stub.c # TFLM关闭时的降级stub │ │ ├── aed_postprocess.c/h # 状态机后处理(误报抑制) │ │ ├── aed_alert.c/h # 告警与冷却控制 │ │ └── aed_ui.c/h # LVGL检测结果界面 │ ├── audio_capture.c # 音频采集驱动 │ └── audio_playback.c # 音频播放驱动 ├── ai_agent/ # ai_agent 框架 (packages_ai_agent-dev) │ └── packages_ai_agent-dev/ # 完整框架源码 │ ├── include/ # 头文件 (agent_config.h 含API配置) │ ├── src/ # 框架源码 │ │ ├── core/ # agent_loop, context_builder, memory_store │ │ ├── llm/ # llm_proxy, llm_router, llm_parse │ │ ├── voice/ # volc_asr, volc_tts, audio_capture/playback │ │ ├── tools/ # tool_registry, mcp_client, skill_loader │ │ ├── channels/ # cmd_channel, feishu_bot, ws_server │ │ ├── infra/ # vela_tls, config_store, network_manager │ │ └── ui/ # lvgl_ui_channel, qrcode_display │ ├── agent_skills/ # Skill .md 文件集 (可插拔技能) │ └── docs/ # 架构文档 ├── build/ # 构建相关 │ ├── build_and_pack.sh # 一键编译打包脚本 │ ├── add_license_headers.py # 源文件协议头批量添加脚本 │ └── agent_config.h # API密钥与服务端点配置 ├── docs/ # 开发文档 │ ├── 开发经验总结.md # 踩坑记录与解决方案 │ ├── aiagent_guide.md # ai_agent 框架使用指南 │ └── r528_build_experience.md # R528 编译打包经验 ├── LICENSE # Apache 2.0 开源协议 └── README.md # 本文档
科技风 AI 少女语音伙伴,复用心情专家的 ASR/LLM/TTS 能力,以纯语音交互:
mood_expert_set_persona()
8种心情状态:快乐、伤心、愤怒、急躁、抱怨、平静、抑郁、严重抑郁(危险)
/data/mood_skills/*.md
/data/mood_state.json
当前版本只检测”敲击”和”咳嗽”两类事件——这是有意为之的高难度选题:两者都是短促的 宽频瞬态冲击信号,时域包络和频谱形态高度相似,简单的能量/频率阈值完全无法区分,必须 依靠模型学习细微的时频差异。
本应用为初代版本,规划路线:
nsh>
烧录失败排查:① 设备未识别 → 重新按 FEL 插拔,确认驱动已装; ② 烧录中断 → 换 USB 线/接口,不要经过 HUB。
tool_calls
update_mood
注意:镜像内置的云服务 API Key 为开发测试配额,如失效请按下文 《从源码编译》替换为自己的 Key 后重新编译。
~/vela-opensource
build/build_and_pack.sh
prebuilts/gcc/linux-x86_64/arm-none-eabi
# ① 应用层源码 → lvgldemo(含桌面/小小怪/心情专家/声音检测等全部应用) cp -r src/* ~/vela-opensource/apps/examples/lvgldemo/ # ② ai_agent 框架 → packages cp -r ai_agent/packages_ai_agent-dev ~/vela-opensource/packages/ai_agent # ③ API 配置(先改成你自己的 Key,见下文"API 配置") cp build/agent_config.h ~/vela-opensource/packages/ai_agent/include/ # ④ 构建脚本 cp build/build_and_pack.sh ~/vela-opensource/
cd ~/vela-opensource bash build_and_pack.sh
脚本自动完成四步(缺一不可,都已写在脚本里):
./build.sh .../configs/nsh -e -Wno-error -j4
nuttx/nuttx
.ARM.attributes
nsh_small.bin
.../velaevb1_nand/configs/nsh.fex
source envsetup.sh && lunch_nuttx && p
Dragon execute image.cfg SUCCESS !
产物镜像:
vendor/allwinnertech/lichee/out/r528s3/velaevb1_nand/rtos_nuttx_r528s3-velaevb1_uart0_256Mnand.img
取回 Windows 后按上文《安装烧录》烧入即可。
增量编译(只改了源码):cd ~/vela-opensource/nuttx && make -j4,然后从脚本 第 2 步继续。更多坑(.o 缓存不刷新、p 命令退出码怪癖等)见 docs/r528_build_experience.md,每次构建前建议先读。
cd ~/vela-opensource/nuttx && make -j4
docs/r528_build_experience.md
编辑 build/agent_config.h(部署前改好再拷入):
build/agent_config.h
volc.bigasr.sauc.duration
seed-tts-2.0
zh_female_xiaohe_uranus_bigtts
voice_chat.c
force_config()
安全提醒:agent_config.h 中的 Key 不要提交到公开仓库。
agent_config.h
本项目的通用修复和 AI Agent 能力改进按照 openvela 常规社区贡献流程提交,目标均为官方仓库的 dev 分支。比赛作品代码继续保留在本仓库,社区 PR 只包含可独立审核、可复用的最小改动。
dev
open-vela/nuttx:dev
open-vela/packages_ai_agent:dev
X-Api-*
0e394af
git diff --check
fe9514b
两项 PR 均于 2026-07-30 提交,并已通过 openvela CLA 复检。当前等待官方维护者审核及剩余 CI;PR 实际合入前,本节不会标记为“已合入”。
仓库仅保留最终版镜像 image/v112.img;以下为版本演进记录。
本项目整体采用 Apache License 2.0 开源协议:
LICENSE
src/
SPDX-License-Identifier: Apache-2.0
ai_agent/packages_ai_agent-dev/
python build/add_license_headers.py
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
灵犀 - OpenVela R528 端侧情感智能伙伴 (最终版)
项目概述
灵犀是基于全志 R528 + OpenVela(NuttX) 的端侧情感智能伙伴系统:以 AI Agent 框架为核心, 集成 LVGL 图形界面、火山引擎 ASR/TTS、通义千问 LLM,提供 6 个桌面应用,形成”听得懂(语音对话)、 看得见(表情联动)、感受得到(心情专家)、听得见环境(声音检测)”的完整情感交互闭环—— 含小小怪科技风 AI 少女语音伙伴、自训练 CNN 声音检测。
🚀 快速开始(下载后三步上手)
本项目提供预编译镜像,无需编译环境即可体验全部功能:
image/v112.img烧入 R528 开发板 → 见下文《安装烧录》需要修改功能或替换 API Key,请看下文《从源码编译》。
目录结构
桌面应用一览
核心技术栈
小小怪应用 (v112 全新设计)
科技风 AI 少女语音伙伴,复用心情专家的 ASR/LLM/TTS 能力,以纯语音交互:
mood_expert_set_persona()切换, 切换时清空对话历史防止”串戏”心情专家应用
8种心情状态:快乐、伤心、愤怒、急躁、抱怨、平静、抑郁、严重抑郁(危险)
/data/mood_skills/*.md加载心理学规则,支持即插即用/data/mood_state.json(NAND寿命保护)声音检测应用 (初代: 自训练小卷积模型)
当前版本只检测”敲击”和”咳嗽”两类事件——这是有意为之的高难度选题:两者都是短促的 宽频瞬态冲击信号,时域包络和频谱形态高度相似,简单的能量/频率阈值完全无法区分,必须 依靠模型学习细微的时频差异。
我们的检测过程(自己训练模型)
实测成绩
演进路线
本应用为初代版本,规划路线:
语音控制工具
安装烧录(预编译镜像,推荐)
1. 准备
image/v112.img(约 32MB)2. 烧录步骤(FEL 模式)
image/v112.imgnsh>提示符3. 首次使用
tool_calls日志、update_mood心情判别等全部过程从源码编译(需要修改功能时)
1. 环境准备
~/vela-opensource(若不同,需同步修改build/build_and_pack.sh首行 cd 路径)prebuilts/gcc/linux-x86_64/arm-none-eabi,无需另装2. 部署本项目源码
3. 一键编译打包
脚本自动完成四步(缺一不可,都已写在脚本里):
./build.sh .../configs/nsh -e -Wno-error -j4nuttx/nuttx(约 40MB ELF).ARM.attributes等段生成精简二进制nsh_small.bin为 4~8MB(如是 1GB 即失败,这是最常见坑).../velaevb1_nand/configs/nsh.fexsource envsetup.sh && lunch_nuttx && pDragon execute image.cfg SUCCESS !产物镜像:
取回 Windows 后按上文《安装烧录》烧入即可。
4. API 配置(替换为自己的 Key)
编辑
build/agent_config.h(部署前改好再拷入):volc.bigasr.sauc.duration(大模型版)seed-tts-2.0,speaker =zh_female_xiaohe_uranus_bigtts(小何2.0)voice_chat.c的force_config()在启动时写入 config_store,无需板上手动配置openvela 社区贡献
本项目的通用修复和 AI Agent 能力改进按照 openvela 常规社区贡献流程提交,目标均为官方仓库的
dev分支。比赛作品代码继续保留在本仓库,社区 PR 只包含可独立审核、可复用的最小改动。open-vela/nuttx:devopen-vela/packages_ai_agent:devX-Api-*鉴权、V3 请求及响应解析,同时保留现有 V2 配置兼容性FT5x06 修复依据
0e394af)git diff --check通过,并与 Apache 上游补丁逐项核对ASR V3 上游化范围
fe9514b)git diff --check和 WSL GCC 语法检查,并复核短帧、超长帧、错误帧及 V2/V3 响应兼容性版本历史
开源协议
本项目整体采用 Apache License 2.0 开源协议:
LICENSE为协议全文,适用于仓库内全部自研代码src/下所有自研源文件均已添加SPDX-License-Identifier: Apache-2.0协议头 (Copyright (C) 2026 Lingxi Team)ai_agent/packages_ai_agent-dev/为 openvela 上游框架,本身即 Apache 2.0 (附带其自有 LICENSE),我们的改动同样以 Apache 2.0 发布,协议上与上游完全兼容python build/add_license_headers.py自动补齐协议头