跳转至

库与框架

本章介绍 CI13XX_SDK_LLM_AIoT(离在线大模型对话 SDK)的软件框架组成,包括 SDK 顶层目录结构、用户代码区域、预编译算法库与开发工具链,帮助开发者快速建立对整个 SDK 的全局认识。

注释

  • 本章内容基于 CI13XX_SDK_LLM_AIoT_V3.0.19,目录名称与实际 SDK 包内的 CI13XX_SDK_LLM_AIoT_V3.0.19 保持一致;
  • 若您使用的 SDK 版本不同,请以实际包内结构与源码为准。

章节内容

  • SDK软件结构 —— SDK 软件结构图、SDK 目录结构、用户代码说明、添加代码示例与代码逻辑分析

SDK 顶层目录组成

SDK 包根目录(CI13XX_SDK_LLM_AIoT_V3.0.19)由以下内容组成:

目录/文件 描述
.vscode 编译器配置文件(指定 ci-tool.activated_project 等)
components 功能组件:语音识别、前处理算法、双核通信、NPU 寄存器定义、TVAD、协议、播放器、OTA,以及 BNPU 核算法工程 bnpu_core_alg_pro(V3.0.19 起由 projects 移入)等
driver 驱动:boards(板级)、ci130x_chip_driver(芯片内部驱动)、third_device_driver(外部器件驱动)
external 扩展参考:model(算法模型,V3.0.19 起仅保留 NN 降噪模型 nn_denoise/[60003]ANS1-061.bin)与 ota_reference(各串口 ota_code 及 OTA V4.1.X 使用说明文档,V3.0.19 起由 ota参考 更名)
libs 预编译算法库(.a),并附 linux 子目录供 Linux 工具链使用
projects 应用示例工程(hpout / iis / uart 三种离在线大模型对话模板工程)
startup 启动代码(ci130x_init.c、ci130x_startup.S、ci130x_vtable.S)
system 系统与平台配置(sdk_default_config.h、platform_config.c、platform_config_bnpu.c、user_alg_config.mk、FreeRTOSConfig.h 等)
tools 固件构建与升级工具(PACK_UPDATE_TOOL.exe、code_program.exe、ci-tool-kit、build-tools、ci-tool-1.1.2.vsix、lame 等)
utils 构建脚本与调试辅助(common_*.mk、common.lds、common_temp.lds、common_tail_mcu.mk、common_tail_bnpu.mk、firmware_pack.sh、generate_makefile.lua 等)
对接协议 离在线应用对接说明文档(启英泰伦离在线应用对接说明-V2.4.pdf)

注意

  • 工程编译时通过 utils/common_head.mk 中的 LIBS_PATH 变量选择库目录:Windows/GCC 环境使用 libs,Linux 环境使用 libs/linux;
  • V3.0.19 起,SDK 保持 BNPU + MCU 双核架构,BNPU 核算法以**源码工程**形式随包提供:算法侧由独立工程 components/bnpu_core_alg_pro 编译为 libs/ci130x_asr_alg_bnpu.a;应用运行在 MCU 核,链接脚本为 projects\<工程名>\lds\ci130x_asr_alg_mcu.lds;
  • V3.0.19 起支持自动联动构建:MCU 核工程 makefile 编译前会调用 utils/parse_user_alg_config_mk.lua 比对 system/user_alg_config.mk 与 BNPU 工程宏快照 components/bnpu_core_alg_pro/project_file/config.a,宏有差异或 BNPU 库缺失/陈旧时自动重建 BNPU 核工程,无需再手动先编 BNPU 工程。

预编译算法库(libs)

SDK 随包提供以下预编译算法库(下表以 Windows/GCC 目录 libs 为准),具体链接哪些库由各工程 project_file/makefile 中的 USE_xxx 算法开关以及公共配置 system/user_alg_config.mk 自动选择,用户无需手动指定:

分类 库文件 说明
BNPU 核固件 ci130x_asr_alg_bnpu.a 双核架构下 BNPU 核运行体(由 components/bnpu_core_alg_pro 编译产生,打包为 [1]code.bin)
语音识别 libasr_host_dis_deepse_v2.a、libasr_host_use_deepse_v2.a MCU(host)侧 ASR 识别库,深度分离关闭/开启两种版本
libasr_bnpu_dis_deepse_v2.a、libasr_bnpu_use_deepse_v2.a BNPU 侧 ASR 识别库,深度分离关闭/开启两种版本
关键词检测 libcikd_pro_cwsl_dis_frm.a、libcikd_pro_cwsl_use_frm.a 关键词检测(CIKD Pro)算法库,use_frm 版本带帧长统计(多意图/DOA/PWK 需要)
自学习 libcwsl_v2.a 离线命令词自学习算法库(V2)
NN 降噪 libnn_denoise_v1.a、libnn_denoise_v2.a、libnn_denoise_v3.a NN 深度降噪算法库(三代模型)
传统降噪 libtra_denoise.a 传统降噪算法库
声音事件检测 libnn_sed.a SED 声音事件检测(哭声/鼾声)算法库
声源定位(DOA) libgcc_doa.a、libnn_doa.a GCC DOA(当前默认支持)与 NN DOA 算法库
VAD libtvad.a TVAD(对外称 NN VAD)语音活性检测算法库
声纹 libnn_vpr.a、libnn_wman_vpr.a 声纹识别与性别(男女声)识别算法库
就近唤醒 libpwk.a 就近唤醒(PWK)算法库
前处理算法 libaec.a、libbf.a、libalc_auto_switch.a、libderverb.a、libagc.a、libfft.a 回声消除(AEC)、波束成形(BF)、自动电平控制(ALC)、去混响、自动增益(AGC)、FFT
音频编解码 libopus.a、libspeex.a、libaac.a OPUS / SPEEX / AAC 音频编解码(G722 由 components/cias_g722 提供)
自然语言处理 libnlp.a NLP(多意图)处理
系统与移植 libdsu.a、libfreertos_port.a、libnewlib_port.a、libnewlib_port_bnpu.a、libbnpu_math.a、libbnpu_mem_manage.a DSU 单元、FreeRTOS 移植层、newlib 移植层(含 BNPU 版本)、BNPU 数学库与内存管理库
算法公共库 libci_common.a 算法公共接口(线性插值升采样、低通滤波降采样等)。示例工程亦可通过源码 components/ci_common/ci_alg_common_api.c 直接参与编译
安全 libaes.a、libflash_encrypt.a AES 加解密、FLASH 加密

相关章节