参数选项与协议命令关联表
参数类别 | 参数选项 | 配置值/说明 | 关联的命令 (cmd_type) | 命令说明/参数 |
---|---|---|---|---|
识别参数 | 识别灵敏度 | 中 | SET_VAD_SENSITIVITY (0x010A) |
设置VAD灵敏度 |
算法参数 | AEC打断类型 | 唤醒词和命令打断 | (协议层面默认行为) | 由芯片逻辑实现,协议无直接对应命令 |
硬件参数 | 内核1.1V供电 | 内部 | (无) | 硬件设计,协议无关 |
晶振源 | 外部晶振 | (无) | 硬件设计,协议无关 | |
麦克数量 | 单麦 | (无) | 硬件设计,协议无关 | |
功能参数 | 双网络切换 | 双网络 | (协议层面支持) | 由芯片逻辑实现,协议无直接对应命令 |
唤醒时长 | 15s | SET_WAKE_UP_CONTINUE_TIME (0x0113) |
设置持续唤醒时间,带参数(2字节) | |
播报音量 | 5 | SET_AUDIO_VOLUME (0x0117) |
设置语音芯片音量,带参数1字节(1-7) | |
单多轮对话 | 多轮 | SET_INTERACTION_NULTI_ROUND_ENABLE (0x0115) |
设置单/多轮,带参数1字节(0-单轮, 1-多轮) | |
播放时支持音频上传开关 | 开 | UPLOAD_PLAY_FULL_DUPLEX_EANBLE (0x0116) |
设置播放时是否上传录音,带参数1字节(0-不上传, 1-上传) | |
VAD开始后停止播放开关 | 开 | VAD_START_STOP_PLAY (0x0216) |
设置VAD开始后是否停止播放,带参数1字节(1-停止, 0-不停止) | |
降噪音频上传开关 | 开 | PCM_DENOISE_ENABLE (0x010E) |
上传音频是否带降噪,带参数1字节(1-带降噪, 0-不带) | |
云端响应超时时间 | 11s | SET_CLOUD_ANS_TIMEOUT_EXIT (0x011C) |
设置退出云端响应超时 | |
音频能量阈值 | 50 | (无直接命令) | 可能通过SET_VAD_SENSITIVITY 或其他内部机制实现 |
|
强制结束录音的时间 | 5s | SET_VAD_START_MAX_TIMEOUT (0x0111) |
设置VAD开始最大超时时间,带参数2字节(单位秒) | |
音频上传压缩格式 | speex | SET_AUDIO_COMPRESS_TYPE (0x0118) |
压缩类型(文档注明暂不支持,预留) | |
云端下发播报格式 | mp3 | (通过fill_data 域区分) |
fill_data 为 RECV_MP3_PLAY (0x12345688) |
|
请求单帧播放数据大小 | 1K | PLAY_AUDIO_SIZE (0x0213) |
播放音频数据长度 | |
OTA配置 | 开 | CIAS_OTA_START (0x0501) 等 |
OTA相关命令组 | |
串口配置 | 打印串口配置 | UART0 | (无) | 系统底层配置,协议无关 |
通讯串口配置 | 开 / UART1 / 9600 | (协议基础) | 所有命令均通过UART通信,此配置是通信前提 | |
云端通信串口 | UART2 / 921600 | (协议基础) | 可能用于与云端的数据传输,是协议承载的物理通道 | |
功放配置 | 功放使能控制引脚 | (已配置) | LOCAL_AUDIO_PLAY_START (0x0217) / STOP (0x0218) |
控制本地音频播放的开始与停止,间接控制功放 |
关键发现与说明
-
核心控制命令:大部分重要的功能开关和参数设置(如音量、多轮对话、全双工、降噪、唤醒时长等)都有明确的协议命令(
cmd_type
)与之对应,可以通过主机发送相应指令进行动态配置。 -
数据格式标识:播放的音频格式(如MP3)通过协议头中的
fill_data
域来标识,而不是cmd_type
。 -
硬件与底层配置:硬件相关参数(如供电、晶振、麦克风数量)和部分底层串口配置(如哪个UART用于打印)与网络应用层协议无关,通常在固件中静态配置或通过其他方式设置。
-
协议通信基础:串口通信的开启、端口及波特率配置是整个协议能够正常工作的物理基础和前提。
-
静音控制:
SET_VOLUME_MUTE_STATE (0x0119)
命令虽未在参数列表中明确设置,但与音量控制相关,可供使用。
这个关联表清晰地展示了如何通过定义的UART协议,对语音芯片的各项功能和行为进行精确的控制和配置。
附:ci_network_protocol.h
/********************************************************************************* @文件 cias_network_msg_protocol.h* @版本 V1.0.0* @日期 2019-5-9* @概要 uart network protocol******************************************************************************* 主要包括网络协议的结构体定义* —————其中最重要的成员:命令类型(cmd_type)、填充数据类型(fill_data)* * 这两个成员的宏定义也包含在此文件中。* 举例:* 命令类型(cmd_type):诸如下行的开始播放,上行的录音数据结束* 填充数据类型(fill_data):诸如 MP3/MAV 格式等等。*******************************************************************************/#ifndef _CI_NETWORK_PROTOCOL_H
#define _CI_NETWORK_PROTOCOL_H#include <cstdint>// 标准协议结构体
#pragma pack(push, 1) //确保在不同编译器下结构体布局一致
typedef struct ci_uart_standard_head
{uint32_t magic; /*帧头 定义为0x5a5aa5a5*/uint16_t checksum; /*校验和*/uint16_t cmd_type; /*命令类型*/uint16_t data_len; /*数据有效长度*/uint16_t version; /*版本信息*/uint32_t fill_data; /*填充数据,可以添加私有信息*/
}cias_standard_head_t;
#pragma pack(pop)#define CIAS_STANDARD_MAGIC 0x5a5aa5a5 //0x1a2aa3a4 //以下为成员 cmd_type 的宏定义
typedef enum{//语音识别相关LOCAL_ASR_RESULT_NOTIFY = 0x0101, /*本地语音识别通知*/WAKE_UP = 0x0102, /*唤醒*/VAD_END = 0x0103, /* 云端VAD END */SKIP_INVAILD_SPEAK = 0x0104, /* 跳过无效语音 */PCM_MIDDLE = 0x0105, /*PCM数据中间包*/PCM_FINISH = 0x0106, /*PCM数据结束包*/PCM_IDLE = 0x0107, /*PCM数据空闲 */VAD_START = 0x0108, /*vad start*/ EXIT_WAKE_UP = 0x0109, /*退出唤醒*/SET_VAD_SENSITIVITY = 0x010A, /*设置VAD灵敏度*/VAD_START_BY_KEY = 0x010B, /*手动按键触发vad start*/VAD_END_BY_KEY = 0x010C, /*手动触发vad end*/SET_AUDIO_EXIT_WAKE_UP = 0x010D, /*设置语音退出唤醒,带参数1字节1-带退出提示音(默认) 0-不带退出唤醒提示音*/PCM_DENOISE_ENABLE = 0x010E, /*上传音频是否带功能降噪,带参数1字节 1-带降噪(默认) 0-不带降噪*/SET_VAD_FILTER_FRAME = 0x010F, /*过滤vad start和end之间帧数(16ms一帧),小于该设定值被判断为无效语音,语音芯片不上传, 带参数2字节*/SET_VAD_SENSITIVITY_ACTIVATE_LENTH = 0x0110, /*多长时间的静音产生vad end,带参数1字节*/SET_VAD_START_MAX_TIMEOUT = 0x0111, /*设置vad start 最大时间,超过设置时间则强制结束上传语音,单位秒,默认5S,带参数2字节*/ SET_PLAY_VOICE_ID = 0x0112, /*设置离线播放音频,带参数4字节(id号)*/ SET_WAKE_UP_CONTINUE_TIME = 0x0113, /*设置持续唤醒时间,超过设置时间,语音芯片强制退出唤醒,带参数2字节(默认15S)*/SET_ENTER_WAKE_UP = 0x0114, /*通过指令让语音芯片进入唤醒状态,不用等待唤醒词唤醒*/SET_INTERACTION_NULTI_ROUND_ENABLE = 0x0115, /*设置单轮还是多轮,带参数1字节,0-单轮 1-多轮(默认)*/UPLOAD_PLAY_FULL_DUPLEX_EANBLE = 0x0116, /*设置播放音频时是否上传录音,带参数1字节 0-不上传(默认) 1-上传*/SET_AUDIO_VOLUME = 0x0117, /*设置语音芯片音量,带参数1字节,范围(1-7), 默认7*/SET_AUDIO_COMPRESS_TYPE = 0x0118, /*压缩类型,默认只支持speex压缩,预留,暂时不做支持*/SET_VOLUME_MUTE_STATE = 0X0119, /*设置mute状态1-mute 0-非mute*/SET_AUDIO_START_RECORD = 0x011A, /*通过指令开始录音*/SET_AUDIO_STOP_RECORD = 0x011B, /*通过指令结束录音(和SET_AUDIO_START_RECORD必须配对使用)*/SET_CLOUD_ANS_TIMEOUT_EXIT = 0x011C, /*设置退出云端响应超时*///网络播放相关NET_PLAY_START = 0x0201, /*开始播放 */NET_PLAY_PAUSE = 0x0202, /*播放暂停 */NET_PLAY_RESUME = 0x0203, /*恢复播放 */NET_PLAY_STOP = 0x0204, /*停止播放 */NET_PLAY_RESTART = 0x0205, /*重播*/NET_PLAY_NEXT = 0x0206, /*播放下一首 */NET_PLAY_LOCAL_TTS = 0x0207, /*播放本地TTS */NET_PLAY_END = 0x0208, /*播放结束*/NET_PLAY_RECONECT_URL = 0x0209, /*重新获取连接 */PLAY_DATA_GET = 0x020a, /*获取后续播放数据 */PLAY_DATA_RECV = 0x020b, /*接收播放数据 */PLAY_DATA_END = 0x020c, /*播放数据接收完*/PLAY_TTS_END = 0x020d, /*播放tts结束*/PLAY_EMPTY = 0x020e, /*播放空指令 */PLAY_NEXT = 0x020f, /*播放完上一首,主动播放下一首*/PLAYING_TTS = 0x0210, /*当前正在播放TTS音频*/PLAY_RESUME_ERRO = 0x0211, /*重播失败*/PLAY_LAST = 0x0212, /*播放上一首*/PLAY_AUDIO_SIZE = 0x0213, /*播放音频数据长度*/ PLAY_AUDIO_TYPE = 0x0214, /*播放数据类型*/SET_AUDIO_PLAY_MODE = 0x0215, /*设置播放模式,带参数1字节,1-打断当前播报 0-不打断当前播报,顺序播放默认)*/VAD_START_STOP_PLAY = 0x0216, /*设置全双工模式下,vad start是否停止当前播放,带参数1字节,1-停止播放 0-不停止播放)*/LOCAL_AUDIO_PLAY_START = 0x0217, /*本地播放音频开始*/LOCAL_AUDIO_PLAY_STOP = 0x0218, /*本地播放音频开始*///IOT自定义协议QCLOUD_IOT_CMD = 0x0301, /*云端IOT指令 */NET_VOLUME = 0x0302, /*云端音量 */LOCAL_VOLUME = 0x0303, /*本地音量 */VOLUME_INC = 0x0304, /*增大音量 */VOLUME_DEC = 0x0305, /*减小音量 */VOLUME_MAXI = 0x0306, /*最大音量 */VOLUME_MINI = 0x0307, /*最小音量 */CIAS_CJSON_DATA = 0x0308, //云端iot的json格式数据IOT_VOLUME_MUTE = 0x0309, // 云端音量静音IOT_VOLUME_UNMUTE = 0x030a, // 云端音量取消静音IOT_QUITE_WAKE_UP_MODE = 0x030b, // 退出唤醒模式//网络相关ENTER_NET_CONFIG = 0x0401, //进入配网模式NET_CONFIGING = 0x0402, //配网中EXIT_NET_CONFIG = 0x0403, //退出配网模式INIT_SMARTCONFIG = 0x0404, //初始密码状态 出厂配置状态WIFI_DISCONNECTED = 0x0405, //网络断开WIFI_CONNECTED = 0x0406, //网络连接成功GET_PROFILE = 0x0407, //已获取鉴权文件NEED_PROFILE = 0x0408, //需要鉴权文件,add by royCLOUD_CONNECTED = 0x0409, //云端已连接CLOUD_DISCONNECTED = 0x040a, //云端已断开NET_CONFIG_SUCCESS = 0x040b, //配网成功NET_CONFIG_FAIL = 0x040c, //配网失败//and by yjd CIAS_OTA_START = 0x0501, //开始otaCIAS_OTA_DATA = 0x0502, //ota 数据CIAS_OTA_SUCESS = 0x0503, // OTA升级成功CIAS_FACTORY_START = 0x0504, //生产测试CIAS_FACTORY_OK = 0x0505, //生产测试成功CIAS_FACTORY_FAIL = 0x0506, //生产测试失败CIAS_FACTORY_SELF_TEST_START = 0x0507, //自测试CIAS_IR_DATA = 0x0508, //红外数据发送CIAS_IR_LOADING_DATA = 0x0509, //红外码库下载中CIAS_IR_LOAD_DATA_OVER = 0x050a, //红外码库下载完成CIAS_IR_LOAD_DATA_START = 0x050b, //红外下载码库开始CIAS_FACTORY_TEST_ENG_THR_SET = 0x050c, //音频通路设置检测播报音能量阈值设置,范围(0-100db)CIAS_FACTORY_TEST_ENG_GET = 0x050d, //生产测试结果返回CIAS_FACTORY_TEST_REAL_VAL_GET = 0x050e, //生产通路测试过程中实时值上传//语音系统相关CIAS_AUDIO_SYS_READY = 0x0601, //语音系统readyCIAS_AUDIO_SYS_ERR = 0x0602, //语音系统异常 CIAS_AUDIO_RST = 0x0603, //复位语音芯片//自学习相关CWSL_UART_REGISTRATION_WAKE = 0x0701, /*串口进入学习唤醒词*/CWSL_UART_REGISTRATION_WAKE_ING = 0x0702, /*正在学习唤醒词状态中*/CWSL_UART_REGISTRATION_WAKE_END_SUCCESSFUL = 0x0703, /*学习唤醒词成功*/CWSL_UART_REGISTRATION_WAKE_END_FAILED = 0x0704, /*学习唤醒词失败*/CWSL_UART_EXIT_REGISTRATION = 0x0705, /*退出学习*/CWSL_UART_DELETE_WAKE = 0x0706, /*删除唤醒词*///指令执行状态相关CIAS_CMD_EXEC_STATE = 0x0801, /*指令执行状态,返回数据部分3字节 前两字节表示语音芯片接收到指令的类型, 第3字节表示指令执行结果(0x01-执行成功 0x02-执行失败)*///===注意用户使用地址请从0x4xxx开始,避免和系统指令冲突
}wifi_communicate_cmd_t;//以下为 fill_data 域的成员
#define INVAILD_SPEAK (0x12345666)
#define RECV_TTS_PLAY (0x12345677)
#define RECV_MP3_PLAY (0x12345688) //MP3格式
#define RECV_M4A_PLAY (0x123456aa)
#define IDLE_STATUS_RECV_M4A_PLAY (0x123456ab)
#define RECV_WAV_PLAY (0x123456bb)
#define DEF_FILL (0x12345678) //命令默认填充
#define WAKEUP_FILL_DATA (0x12345678) //唤醒命令
#define NO_WAKEUP_FILL_DATA (0x0)#endif