配置选项参考¶
本章汇总 CI13XX_SDK_LLM_AIoT_V2.2.7 示例工程中的主要可配置宏选项,便于开发者按应用场景裁剪功能。
配置位置
- 板级、串口、OTA、离在线音频上传/播放、云端交互、VAD、语音识别、播放器、自学习等功能宏,统一位于各示例工程下的:
projects\<工程名>\app\app_main\user_config.h; - 算法功能组合(
CI_ALG_TYPE)、AIOT_AUDIO_COMPRESS_TYPE、SYS_HEAP_SIZE等编译参数位于projects\<工程名>\project_file\makefile; - 各示例工程的默认值不同(如 hpout 工程默认使用
CI-D06GT01D开发板),请以实际工程文件为准。
1. 板级与芯片配置¶
| 宏定义 | 说明 |
|---|---|
USE_CI_xxx_BOARD |
板级选择开关(如 USE_CI_D06GT01D_BOARD、USE_CI_D06GT01J_BOARD),同一时刻只置 1 个 |
CI_CHIP_TYPE |
芯片型号(1302/1306/1312/2306 等),随板级选择自动定义 |
BOARD_PORT_FILE |
板级驱动文件(如 "CI-D06GT01D.c"),随板级选择自动定义;文件位于 driver/boards |
HOST_MIC_USE_NUMBER |
MIC 数量(1 单麦 / 2 双麦) |
MIC_DIFF_SINGLE |
MIC 电路模式:1 单端、0 差分(通用模块为差分,省成本模块单端时置 1) |
USE_IIS1_OUT_PRE_RSLT_AUDIO |
IIS 采音开关:1 开启(占用 PA2~PA6,多消耗约 20KB SYS 内存)、0 关闭 |
2. 串口与通讯配置¶
| 宏定义 | 说明 |
|---|---|
CONFIG_CI_LOG_UART |
LOG 输出串口(默认 HAL_UART0_BASE,勿与协议串口共用) |
UART0/1/2_PAD_OPENDRAIN_MODE_EN |
通讯串口开漏模式使能(对接 5V 电平 IO 时开启) |
USE_EXTERNAL_CRYSTAL_OSC |
时钟源:1 外部晶振、0 内部 RC(离在线应用必须为 1) |
UART_BAUDRATE_CALIBRATE |
波特率自适应使能(使用内部 RC 时建议开启) |
MSG_COM_USE_UART_EN |
语音模块通讯协议开关(离在线应用默认关闭) |
UART_PROTOCOL_NUMBER / UART_PROTOCOL_BAUDRATE / UART_PROTOCOL_VER |
语音模块协议串口 / 波特率 / 协议版本(1 一代、2 二代、255 平台生成) |
CLOUD_UART_PROTOCOL_EN |
云端协议使能(仅启英开发者平台做固件配协议时可用,与 MSG_COM_USE_UART_EN 互斥) |
3. OTA 配置¶
| 宏定义 | 说明 |
|---|---|
CI_OTA_ENABLE |
OTA 使能:1 使能、0 不使能(默认 0) |
说明
V2.2.7 起,OTA 功能统一由 components/ota 组件承载,各工程不再包含 app/app_ota 目录;OTA 版本为 V4.1.12,打包固件时需将 firmware/config.ini 中 firmware_version 设为 FW_V4。详见 ☞《语音芯片OTA V4.1.X使用和说明》。
4. 离在线音频上传 / 播放配置(全局宏开关)¶
V2.2.7 重点
V2.2.7 起,UART、IIS、HPOUT 三个工程统一使用下列**全局宏开关**控制上下行、串口通信、本地播报与云端播报,可灵活配置各通路。
| 宏定义 | 说明 |
|---|---|
AUDIO_DATA_UPLOAD_BY_UART |
通过串口上传录音(uart 工程;压缩上传会消耗更多内存) |
AUDIO_DATA_PLAY_BY_UART |
通过串口接收音频数据并播放(uart 工程) |
AUDIO_DATA_UPLOAD_BY_IIS |
通过 IIS 上传录音(iis 工程) |
AUDIO_DATA_PLAY_BY_IIS |
通过 IIS 接收音频数据播放(iis 工程) |
AUDIO_DATA_UPLOAD_BY_HPOUT |
通过 HPOUT 上传录音(hpout 工程,不支持压缩) |
WIFI_CMD_BY_UART |
上下行均关闭时,仅通过串口与 WIFI 交互指令 |
CIAS_AIOT_DEMO_ENABLE |
离在线 AIOT demo 功能总开关 |
AUDIO_VAD_CHECK_ENABLE |
VAD 检测功能使能(不可修改) |
AUDIO_SEND_WITH_PROTOCOL_HEADER |
上传数据是否带协议头:1 带(默认)、0 裸数据(调试用) |
UART_NUM_SEND_PLAY_AUDIO_NUMBER / UART_NUM_SEND_PLAY_AUDIO_BAUDRATE |
与网络端(WIFI)交互的串口 / 波特率 |
IIS_UPLOAD_IS_WAKEUP |
IIS 工程:1 唤醒后(或收到开始录音指令后)开始录音、0 上电后开始录音 |
IIS_DOWNLOAD_BY_CMD |
IIS 工程:1 收到指令后开始 IIS 播报、0 上电后开始 IIS 播报(V2.2.7 新增) |
HPOUT_UPLOAD_IS_WAKEUP |
HPOUT 工程:1 唤醒后开始录音、0 上电后开始录音(V2.2.7 新增) |
4.1 压缩算法选择(三选一)¶
| 宏定义 | 说明 |
|---|---|
AUDIO_COMPRESS_RECORD_DISABLE |
PCM 上传,不做压缩 |
AUDIO_COMPRESS_SPEEX_ENABLE |
SPEEX 压缩上传 |
AUDIO_COMPRESS_OPUS_ENABLE |
OPUS 压缩上传(比 SPEEX 多消耗约 31KB 内存;V2.2.7 起节约 10K 内存) |
AUDIO_COMPRESS_G722_ENABLE |
G722 压缩上传(20ms 压缩一次,4:1 压缩率) |
4.2 云端播放格式选择(三选一)¶
| 宏定义 | 说明 |
|---|---|
NET_AUDIO_PLAY_BY_MP3 |
云端播放 MP3 格式 |
NET_AUDIO_PLAY_BY_PCM |
云端播放 PCM 格式 |
NET_AUDIO_PLAY_BY_G722 |
云端播放 G722 格式(必须使用精简播放器) |
NET_PLAY_PCM_OR_G722_ENABLE_LOCAL_PLAY |
云端播放 PCM/G722 时同时开启本地播报 |
USE_HP_OUT_NET_AUDIO |
使用 HPOUT 直接输出云端音频 |
5. 云端交互配置¶
| 宏定义 | 说明 |
|---|---|
CUR_INTERACTION_MULTI_ROUND_ENABLE |
1 多轮对话、0 单轮 |
UPLOAD_PLAY_FULL_DUPLEX_ENABLE |
全双工处理:播放音频的同时支持 VAD 检测音频上传 |
VAD_START_STOP_PLAY_ENABLE |
全双工模式下 VAD 起来是否立刻停止播放:1 停止、0 不停止 |
CLOUD_ANS_TIME_OUT_ENEABLE |
云端响应超时功能使能 |
CLOUD_ANS_TIME_OUT_VALUE |
云端响应超时时间(秒,需 > 0) |
AUDIO_PLAY_MODE |
1 支持打断当前播放、0 顺序播放(暂不用) |
UPLOAD_NNDENOISE_AUDIO_DATA_ENABLE |
1 上传降噪后的音频、0 上传非降噪音频 |
CHECK_NET_WORK_STATE_ENABLE |
检测网络状态后再上传音频 |
PCM_MSG_STREAM_NUM |
原始数据 stream buf 大小 |
PCM_ALG_ROOLBACK_FRAME_LEN |
前端回退帧数(默认 25 帧 ≈ 400ms) |
PCM_ALG_FRAME_LEN |
前端原始音频帧长(16K 采样,每帧 256 点共 512 字节) |
6. VAD 配置¶
| 宏定义 | 说明 |
|---|---|
LOCAL_REC_VAD_END_ENABLE |
本地识别后立即停止 VAD(V2.2.7 新增);若不停止,在半双工且本地词条有播报时,播报会丢录音 |
WEAK_VAD_ENABLE |
1 唤醒后开始检测 VAD、0 一直检测 VAD(IIS / HPOUT 工程,V2.2.7 新增) |
VAD_ON_MIN_NUM |
VAD 起来判断有效的最短帧数(10ms 一帧,最大 40) |
VAD_TIMEOUT_CHECK |
VAD 算法内部是否进行超时检测(不可修改) |
VAD_FORCE_OVER_NUM_TIME |
强制结束录音时间(秒) |
7. 语音识别与播放器配置¶
| 宏定义 | 说明 |
|---|---|
USE_SEPARATE_WAKEUP_EN |
是否使用独立的唤醒词模型 |
DEFAULT_MODEL_GROUP_ID |
上电默认进入的语言模型(0 命令词模型、1 唤醒词模型) |
PLAY_WELCOME_EN / PLAY_ENTER_WAKEUP_EN / PLAY_EXIT_WAKEUP_EN / PLAY_OTHER_CMD_EN |
开机 / 唤醒 / 退出唤醒 / 识别到命令词时是否播放提示音 |
EXIT_WAKEUP_TIME |
退出唤醒超时时间(毫秒) |
AUDIO_PLAYER_ENABLE |
是否启用音频播放器 |
PLAYER_CONTROL_PA |
播放器是否控制音频功放开关 |
VOLUME_MAX / VOLUME_MIN / VOLUME_DEFAULT |
音量上限 / 下限 / 默认值 |
MP3_NO_CONSTANT_BITRATE |
开启非恒定比特率(VBR、ABR)适配(V2.2.7 支持) |
8. 算法相关配置¶
| 宏定义 | 说明 |
|---|---|
AEC_INTERRUPT_TYPE |
AEC 打断类型:2 命令词与唤醒词都可打断、1 仅命令词、0 仅唤醒词 |
BF_DEEPSE_MODE |
深度分离模式:1 全深度分离(更耗内存)、0 半深度分离 |
AI_DOA_OUT_TYPE |
DOA 输出类型:1 唤醒词输出角度、2 命令词输出角度、3 两者都输出 |
USE_DUAL_MIC_ANY |
任意 MIC 均可识别(双麦无 BF/DOA/去混响时) |
DEREVERB_FREQ_RANGE_INDEX |
去混响起效频率范围索引 |
9. 自学习(CWSL)配置¶
| 宏定义 | 说明 |
|---|---|
CWSL_WAKEUP_NUMBER |
可学习的唤醒词数量(最大 2) |
WAKE_UP_ID |
学习的唤醒词对应的命令词 ID |
CWSL_REG_TIMES |
学习时每个词需说几遍(1、2 遍;FOR_REG_2TIMES_FLOW_V2=1 时最多 3 遍) |
CWSL_WAKEUP_THRESHOLD / CWSL_CMD_THRESHOLD |
学习的唤醒词 / 命令词阈值门限(越小越灵敏) |
CWSL_REG_VAD_LEVEL |
学习过程灵敏度:0 低(抗噪)、1 高 |
CICWSL_TOTAL_TEMPLATE |
可存储模板数量 |
注意
在线 SDK 只支持唤醒词学习。为避免指令词被学习成模板,请确保 cmd_info 表格中词条的语义 ID、命令词 ID 与需学习的词条语义 ID、命令词 ID 不重复。
10. 编译期互斥约束(部分)¶
SDK 在 user_config.h 中通过 #error 对非法组合做了强制校验,常见约束包括:
- 压缩算法 SPEEX / OPUS / G722 只能三选一;云端播放 MP3 / PCM / OPUS / G722 只能择一;
USE_AI_DOA && USE_AEC_MODULE时必须外挂 codec 做 AEC 信号回采(推荐 7243e,需使用USE_CI_D06GT01J_BOARD);USE_PWK与动态 ALC、深度降噪、自学习、声音事件检测等算法不能同时使用;- 双麦算法(BF/DOA/去混响/任意MIC)与
USE_CI_D12GS01J_BOARD(131x)不能同时使用; MSG_COM_USE_UART_EN与CLOUD_UART_PROTOCOL_EN不能同时使用;- 离在线应用必须
USE_EXTERNAL_CRYSTAL_OSC = 1。
关于内存
音频上传/播放与压缩算法会显著消耗内存,SYS_HEAP_SIZE 需按所选组合配置(如 PCM 上传推荐 1024*130、SPEEX/MP3 推荐 1024*110)。具体组合请参考 ☞《CI13XX离在线大模型对话SDK开发流程》。