CSK UART标准串口通信协议
Version | 最后更新时间 | 适用固件版本 |
---|---|---|
1.3 | 2020.03.15 | 4002-3.1.4及以上 |
1.4 | 2021.09.30 | 4002-4.3.0及以上 |
#
变更记录版本 | 变更内容 | 变更人 | 审核人 | 日期 |
---|---|---|---|---|
1.0 | 首版发布 | 朱昊 | 黄凯仪 | 2020-01-08 |
1.1 | 更改系统配置描述 | 朱昊 | 黄凯仪 | 2020-02-21 |
1.2 | 1. 固定标记修改:命令帧为0xFF 0x00,响应帧(from CSK)为0xF0 0x00。 2. 弃用原有0x03版本查询命令帧,新增0x19查询所有版本号命令帧。 3. 新增0x05系统休眠命令帧。 4. 新增0x16设置ADC增益命令帧。 5. 新增0x17设置命令词识别启停命令帧。 6. 新增0x18设置UAC通道命令帧。 7. 新增0xFF心跳命令帧。 8. 弃用原有0x02固件版本反馈响应帧,新增0x04版本查询反馈响应帧。 9. 优化0x10识别结果反馈命令数据参数。 | 刘钟蔚 | 朱元恒 | 2020-12-20 |
1.3 | 1. 修复0x10 命令帧的数据帧校验 2. 修改0x11命令帧的描述 3. 修改0x17 命令帧的参数描述 | 朱元恒 | 郝飞虎 | 2021-03-15 |
1.4 | 1. 增加0x40命令帧(自定义命令词) 2. 增加0x40响应桢(自定义命令词结果反馈) | 朱元恒 | 郝飞虎 | 2021-09-30 |
#
1 概述CSK作为协处理器时,通过串口通信,为外围模块提供封装的AI能力。此处串口协议我们通过两层协议,来提供完整可靠的CSK API。这两层协议分别为:传输协议、业务协议。传输协议主要负责UART底层的数据进行可靠性保障,而业务协议主要是对CSK能力进行定义,提供可扩展的API。
#
2 传输协议传输协议,是以接收到的UART原始数据为基础,定义CSK数据帧格式,对流式的二进制数据,进行分帧工作,解析出对应的帧信息,向上传递到业务协议层。传输协议的数据帧格式如下:
帧头 | 帧数据 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
固定标记 | 帧长度 | 帧编号 | 帧头校验 | 类型 | 地址 | 命令字 | 命令数据 | 帧数据校验 | ||
FTAGL | FTAGH | FLENL | FLENH | FUID | LCHK | TYPE | REG | CMD | DATA | DCHK |
#
2.1 帧头说明名称 | 长度(byte) | 说明 |
---|---|---|
固定标记 | 2 | 固定为FTAGL = 0x58,FTAGH = 0x46。 |
帧长度 | 2 | 由两个字节组成,低字节在前,高字节在后;表示整个命令帧的长度。 |
帧序号 | 1 | 表示命令帧的序号,确保短时唯一。 |
帧头校验 | 1 | 采用按字节累加和校验; 即: (FTAGL + FTAGH + FLENL + FLENH + FUID + LCHK)% 256 = 0 |
#
2.2 帧数据说明名称 | 长度(byte) | 说明 |
---|---|---|
类型 | 1 | 命令帧为0xF0,响应帧(from CSK)为0xFF。 |
地址 | 1 | 预留,固定为0x00。 |
命令字 | 1 | 表示命令帧/响应帧的命令字。 |
命令数据 | X | 不同命令类型,有不同的命令数据结构,具体见:业务协议。 |
帧数据校验 | 1 | 采用按字节累加和校验;即:(TYPE + REG + CMD + DATA + DCHK)% 256 = 0 |
#
3 业务协议数据帧,对于CSK而言,分为命令帧、响应帧,通过帧数据的固定标记,进行区分。
#
3.1 CSK命令帧外围芯片,可通过“命令帧”来操作CSK,帧数据标记为:0xF0 0x00
#
0x01系统设置名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x01 | 1字节 | 系统设置。 包括:系统音量设置、就绪信号电平设置、系统闲置休眠时间、识别命令词上传格式等设置。 |
命令数据 | VOL | 1字节 | 设置系统音量,仅需开机初始化一次: 【0x00~0x0A】有效值; 【0xFE】默认值:0x08; 【0xFF】历史值; 【其它】无效值,系统将反馈参数错误信息 |
READY | 1字节 | 设置 RDY 电平触发方式,仅需开机初始化一次: 【0x00】低电平; 【0xAA】高电平; 【0xFE】默认值:低电平; 【0xFF】历史值; 【其它】无效值,系统将反馈参数错误信息 | |
SLEEP_TIME | 1字节 | 遵循默认值即可。 【0x00】默认值:0x00; 【0x01~0xF0】有效值; 【0xFE】默认值:0x06; 【0xFF】历史值; 【其它】无效值,系统将反馈参数错误信息 | |
OUT_FORMAT | 1字节 | 设置识别结果上传内容。启动识别模式,根据输入音频有识别结果后,会根据此参数的不同,上报给上位机不同的格式的识别结果: 【0x00】上报命令词KEYID及唤醒得分和命令词文本,默认值; 【0x01】仅上报命令词KEYID; 【0x02】仅上报命令词文本; 【其它】无效值,系统将反馈参数错误信息 |
使用示例
命令帧:设置播音音量为 7 级,RDY 高电平:
58 46 0E 00 00 54 F0 00 01 07 AA 0A 00 54
响应帧:命令帧正确反馈
58 46 0B 00 08 4F FF 00 01 10 F0
#
0x02串口设置设置串口波特率。串口波特率设置完成后,当前帧的状态反馈,如收到正确命令帧等仍是使用之前的波特率发送的(用户可以在接收到正确命令帧之后,更换所需波特率)。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x02 | 1字节 | |
命令数据 | RATE | 1字节 | 配置波特率(单位:bps): 【0x00】9600; 【0x01】19200; 【0x02】57600; 【0x03】115200默认值; 【0x04】345600; 【其它】无效值,系统将反馈参数错误信息; 需要注意的是,不同版本的默认通信波特率值不一样,详见版本查询命令中相关说明,但打印功能串口的波特率固定为115200。 |
使用示例
命令帧:设置波特率为 115200
58 46 0B 00 00 57 F0 00 02 03 0B
响应帧:命令帧正确反馈
58 46 0B 00 02 55 FF 00 01 10 F0
#
0x03版本查询(已弃用)已弃用。
#
0x04状态查询查询当前系统工作运行状态。模块在收到该命令后,将反馈系统状态数据包,详见响应帧部分说明。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x04 | 1字节 |
使用示例
命令帧: 状态查询 58 46 0A 00 00 58 F0 00 04 0C
响应帧:
命令帧正确反馈:
58 46 0B 00 04 53 FF 00 01 10 F0
运行状态反馈:
58 46 0B 00 05 52 FF 00 03 10 EE
#
0x05系统休眠(已弃用)已弃用。
#
0x10停止所有模块停止当前正在工作的功能模块。包括:语音播放、语音识别、语音唤醒等,停止后进入空闲状态。需要注意的是,通过该指令强制系统结束当前运行的功能模块后,是不会收到当前模块运行结束状态反馈的,例如当前正在播音,发送该命令后,模块不会再发送播音停止状态反馈(正常播音结束后会有该状态反馈)。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x10 | 1字节 |
使用示例
#
0x11启动识别模式启动语音识别命令。执行该命令后,系统将根据设置的参数进行语音识别,包括:前置播音、识别模式、识别超时时间等。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x11 | 1字节 | |
命令数据 | VID | 2字节 | 由两个字节组成,低字节在前,高字节在后;可以且仅支持在启动识别前播放一条提示音,录音播放完成后,将自动启动识别,录音 ID 详见播音命令中的说明。 |
MODE | 4 bit | 用来指定识别模式,和BEAM、LOOP共同组成一个字节,MODE占第0-3位。 【0x00】wakeup模式。该模式仅支持唤醒,唤醒成功后,返回唤醒结果;注意:唤醒是永久等待的,直到唤醒成功; 【0x01】ASR模式。该模式仅支持识别,识别成功后,返回识别结果;该模式必须指定BEAM。此模式的RT参数可选; 【0x02】oneshot:即一次唤醒,一次识别;唤醒和识别成功都会返回结果;此模式的RT参数可选; 【0x03】多轮交互模式:即一次唤醒后,可以进行多次识别;唤醒和识别成功都会返回结果;此模式会一直进行直到识别超时或者接收到其它需要切换状态的指令才会退出识别; 【其它】无效值,系统将反馈参数错误信息; | |
BEAM | 3 bit | 指定识别模式的拾音波束,仅在MODE = 0x01时有效。和MODE、LOOP共同组成一个字节,BEAM占第4-6位。 【0x00】主要拾音mic1方向音频(0°- 60°); 【0x01】主要拾音中间方向音频(60°- 120°); 【0x02】主要拾音mic2方向音频(120°- 180°); 【其它】无效值,系统将反馈参数错误信息 | |
LOOP | 1 bit | 指定识别模式是否循环,和MODE、BEAM共同组成一个字节,LOOP占第7位。 【0x00】单次。该模式下,识别出结果后,进入空闲状态; 【0x01】循环。该模式下,识别出结果后,再次启动识别,循环直到接收到其它需要切换状态的指令才会退出识别; | |
RT | 1字节 | 1 字节,仅用来指定命令词的识别超时,超时后会返回识别超时信息,单位:秒。注意:模块在等待唤醒时会永久等待,因此RT只在识别时起作用。 【0x00】默认值,即永久等待,不会超时; 【0x01~0xFF】有效值; |
使用示例
命令帧:
命令帧结构 | |||||||||||||||
字段 | 类型 | 地址 | 命令字 | 提示音ID | 拾音波束 | 识别模式 | 超时时间 | 累加和校验 | |||||||
ID | TYPE | ADDR | CMD | VID | LOOP | BEAM | MODE | RT | DCHK | ||||||
数据位长度 | 1 BYTE | 1 BYTE | 1 BYTE | 1 BYTE | 1 BYTE | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | 1 BYTE | 1 BYTE |
二进制 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | |||||||
示例帧数据(十六进制) | 0xF0 | 0x00 | 0x11 | 0x00 | 0x01 | 0x93 | 0x14 | 0x57 |
58 46 0E 00 00 54 F0 00 11 01 00 93 14 57
响应帧: 命令帧正确反馈
58 46 0B 00 08 4F FF 00 01 10 F0
超时后会返回识别超时的响应帧
#
0x12播放音频语音播放命令,可以播放一个语音序列,最多连续4个。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x12 | 1字节 | |
命令数据 | VID_1 | 2字节 | 有效值:从 1 到 MAX(其中 MAX 取决于实际存储的音频个数,最大取值0xFE); 0x00 作为忽略值及默认值。 特殊说明:从第1条开始,如果第N(1<=N<=4)条语音 ID 为 0x00,则该语音之后的 4-N 条语音都将被忽略。 由两个字节组成,低字节在前,高字节在后; |
VID_2 | 2字节 | ||
VID_3 | 2字节 | ||
VID_4 | 2字节 |
使用示例
命令帧:播放两条提示音,第 1 条为 0x01,第 2 条为 0x02,其余的两条为无效值。
58 46 12 00 00 50 F0 00 12 01 00 02 00 00 00 00 00 FB
响应帧:命令帧正确反馈
58 46 0B 00 08 4F FF 00 01 10 F0
响应帧:播音结束反馈
58 46 0A 00 0D 4B FF 00 20 E1
#
0x15设置I2S输出通道I2S输出通道选择命令,模块支持输出四个通道信号的输出,即可以同时输出四路音频信号,每个通道为16bit数据,并且支持和7路物理音频声道(静音声道,左、右麦克风声道,左、右参考信号声道,左、右降噪后音频声道)的随意映射,实现自由组合输出,满足不同的上位机需求。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x15 | 1字节 | |
命令数据 | CHANNEL | 4字节 | 输出通道配置,共4个字节其中: 1字节:W表示映射到输出通道1的物理声道编号; 1字节:X表示映射到输出通道2的物理声道编号; 1字节:Y表示映射到输出通道3的物理声道编号; 1字节:Z表示映射到输出通道4的物理声道编号; 这里:W、X、Y、Z取值的有效范围均为0-6,对应的物理声道编号参见物理声道列表。 |
通道号说明:
通道号 | 通道描述 | 说明 |
0 | 静音通道 | 该声道将输出纯零静音数据,一般情况下座位占位或屏蔽通道使用。 |
1 | MIC 1 信号 | 麦克风1的原始信号。 |
2 | MIC 2 信号 | 麦克风2的原始信号(如有)。 |
3 | 参考信号 1 | 参考信号1的原始数据。 |
4 | 参考信号 2 | 参考信号2的原始数据(如有)。 |
6 | 降噪音频 1 | 前端算法后的第一路音频,主要用于识别处理。 |
6 | 降噪音频 2 | 前端算法后的第二路音频,主要用于识别处理。 |
7 | 测试通道 | 测试通道数据,主要用于验证是否存在数据丢失等 |
8 | 云端识别信号 | 前端算法后的第三路音频,主要用于云端识别。 |
使用示例
命令帧:播放两条提示音,设置音频物理声道 1、2、3、4 设置为对应通道配置 58 46 0E 00 00 54 F0 00 15 01 02 03 04 F1
响应帧:正确命令帧反馈
58 46 0B 00 08 4F FF 00 01 10 F0
#
0x16设置ADC增益动态修改ADC的增益,分别对就MIC1、MIC2、REF1、REF2的增益。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x16 | 1字节 | |
命令数据 | MIC_1 | 1字节 | MIC信号增益,分为10级. |
MIC_2 | 1字节 | ||
REF_1 | 1字节 | 回采信号增益,分为10级. | |
REF_2 | 1字节 |
使用示例
命令帧:设置 ADC 增益为 10 级(2 路 mic 增益 8,2 路回采增益为1)
58 46 0E 00 00 54 F0 00 16 08 08 01 01 E8
响应帧:命令帧正确反馈
58 46 0B 00 08 4F FF 00 01 10 F0
#
0x17设置命令词识别的启停控制系统是否进入识别模式,即跳过唤醒,直接进入命令词的识别。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x17 | 1字节 | |
命令数据 | MODE_CTRL | 1字节 | 控制命令词识别的进入、退出。 注:只有在命令词识别状态下,才会有CAE第三路音频输出; 【0x00】进入命令词识别状态; 【0x01】退出命令词识别状态; 其他值无效; |
DEF | 1字节 | 保留字段,固定为 0x00 | |
DEF | 1字节 | ||
DEF | 1字节 |
使用示例
命令帧:进入命令词识别状态
58 46 0E 00 00 54 F0 00 17 00 00 00 00 F9
响应帧:命令帧正确反馈
58 46 0B 00 08 4F FF 00 01 10 F0
#
0x18设置UAC通道当固件设置为通过UAC输出音频时,该命令可用来设置UAC输出的音频通道号。UAC仅输出一个通道音频。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x18 | 1字节 | |
命令数据 | CHANNEL | 1字节 | 【0x00】静音输出,即输出数据为0; 【0x01】降噪后第一路音频; 【0x02】降噪后第二路音频; 【0x03】降噪后第三路音频(用于云端识别); 【0x04】测试用的音频(用于测试UAC传输的完整性); |
使用示例
命令帧:输出第三路音频,用于云端识别
58 46 0B 00 00 57 F0 00 18 03 F5
响应帧:命令帧正确反馈
58 46 0B 00 08 4F FF 00 01 10 F0
#
0x19查询所有版本号查询固件、算法、资源等版本号,需要查询哪些版本号,可通过参数配置。各版本号分开响应帧分开输出。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x19 | 1字节 | |
命令数据 | MODUL | 1字节 | 需要查询版本号的模块; 【0x00】查询所有模块的版本号,各模块的版本号分开响应; 【0x01】查询固件版本号; 【0x02】查询CAE的版本号; 【0x03】查询miniESR的版本号; |
使用示例
命令帧:查询固件 CAE 版本号
58 46 0B 00 00 57 F0 00 19 02 F5
响应帧:命令帧正确反馈
58 46 0B 00 08 4F FF 00 01 10 F0
响应帧:版本查询的反馈
58 46 4B 00 24 F3 FF 00 04 xxxx
#
0x40自定义命令词增加、删除、修改命令词,也可恢复到出厂命令词设置。
注意:此命令仅能在public模式下使用;此命令仅适用于3期算法,暂不支持4期算法;
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x40 | 1字节 | |
命令数据 | keyword_type | 1字节 | 命令词类型; 【0x00】唤醒词; 【0x01】命令词; |
keyword_operation | 1字节 | 命令词操作; 【0x00】增加; 【0x01】替换/修改; 【0x02】删除; 【0x03】恢复出厂命令词(注意此操作会重启CSK); | |
data | 285/36/0字节 | 增加和修改格式一样,字节数为285字节;删除操作,字节数为36字节;恢复出厂操作,则为0字节; |
如果keyword_operation为增加或修改时,data字节数为285,data的格式如下:
名称 | 发送数据 | 字节数量 | 说明 |
data | STATE | 200字节 | 命令词配置字符串(字符串以'\n'结尾),由聆思提供,如字符串长度不满200字节,则后续补0x00; |
TXT | 36字节 | 命令词文本(中文),如“小优小优”;注意:编码格式为UTF-8,不足36字节,则后续补0x00; | |
kid | 2字节 | 用户自定义id,注意不要与命令词列表id重合; | |
PLAY[2] | 4字节 | 播音ID, 即CSK的音频资源索引ID, 从1开始,0表示不播放;每个VID为2个字节 | |
PLAY_CNT | 1字节 | 即PLAY[2]中的播音个数,范围为[0,2] | |
CMD[20] | 20字节 | 识别到命令词后外发的命令 | |
CMD_CNT | 1字节 | 即CMD[20]的个数,范围为[0,20] | |
INFRARED[20] | 20字节 | 识别到命令词后外发的红外码 | |
INFRARED_CNT | 1字节 | 即INFRARED[20]的个数,范围为[0,20] |
注意:在public模式下,上述PLAY、PLAY_CNT、CMD、CMD_CNT、INFRARED、INFRARED_CNT字段实际无法使用,建议全部设置为0
如果keyword_operation为删除时,data字节数为36,data的格式如下:
名称 | 发送数据 | 字节数量 | 说明 |
data | KEYWORD | 36字节 | 命令词文本(英文),如“xiao3 you1 xiao3 you1”;注意:编码格式为UTF-8,不足36字节,则后续补0x00; |
如果keyword_operation为恢复出厂时,data字节数为0
使用示例
命令帧:增加唤醒词:小优小优
58 46 29 01 00 38 F0 00 40 00 00 2d 31 20 32 38 36 30 20 31 34 32 37 20 2d 31 20 38 34 20 31 36 38 34 20 2d 31 20 32 38 37 34 20 31 34 32 37 20 2d 31 20 38 34 20 31 36 38 35 20 2c 31 35 33 39 2c 30 20 2d 31 30 30 30 30 2c 31 30 30 30 30 2c 78 69 61 6f 33 20 79 6f 75 31 20 78 69 61 6f 33 20 79 6f 75 31 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e5 b0 8f e4 bc 98 e5 b0 8f e4 bc 98 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f6 01 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 38
命令帧:增加命令词:五十二度
58 46 29 01 00 38 F0 00 40 01 00 2d 31 20 31 31 38 20 32 34 32 38 20 2d 31 20 32 33 31 33 20 31 35 35 30 20 2d 31 20 31 37 20 39 35 32 20 2d 31 20 36 34 38 20 32 34 36 33 20 2c 31 34 31 39 2c 30 20 2d 31 30 30 30 30 20 2c 31 30 30 30 30 2c 77 75 33 20 73 68 69 32 20 65 72 34 20 64 75 34 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e4 ba 94 e5 8d 81 e4 ba 8c e5 ba a6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 01 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 24
命令帧:替换命令词:五十二度
58 46 29 01 00 38 F0 00 40 01 01 2d 31 20 31 31 38 20 32 34 32 38 20 2d 31 20 32 33 31 33 20 31 35 35 30 20 2d 31 20 31 37 20 39 35 32 20 2d 31 20 36 34 38 20 32 34 36 33 20 2c 31 34 31 39 2c 30 20 2d 31 30 30 30 30 20 2c 31 30 30 30 30 2c 77 75 33 20 73 68 69 32 20 65 72 34 20 64 75 34 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e4 ba 94 e5 8d 81 e4 ba 8c e5 ba a6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 01 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 23
命令帧:删除命令词:五十二度
58 46 30 00 00 32 F0 00 40 01 02 77 75 33 20 73 68 69 32 20 65 72 34 20 64 75 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C0
命令帧:删除命令词:十六度
58 46 30 00 00 32 F0 00 40 01 02 73 68 69 32 20 6c 69 75 34 20 64 75 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8C
命令帧:恢复到出厂命令词
58 46 0C 00 00 56 F0 00 40 00 03 CD
#
0xFF心跳CSK接收的心跳指令后,返回一个心跳“响应帧”,表示工作正常。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0xFF | 1字节 | |
命令数据 | DEF | 1字节 | 保留字段,固定为 0x00 |
使用示例
#
3.2 CSK响应帧CSK通过响应帧,向外围模块发送CSK的相关信息;帧数据标记为:0xFF 0x00。
#
0x01命令帧反馈系统正常启动、接收到命令帧后,CSK会发送本响应;
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x01 | 1字节 | |
命令数据 | STATE | 1字节 | 【0x00】系统初始化成功(系统正常启动后,会主动发送该响应) 【0x10】收到正确的命令 【0x11】数据帧格式错误 【0x12】数据帧参数错误 |
#
0x02固件版本(已弃用)已弃用。
#
0x03运行状态反馈系统运行状态命令帧的反馈。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x03 | 1字节 | |
命令数据 | STATE | 1字节 | 【0x00】空闲和就绪状态 【0x10】语音识别状态 【0x11】语音播放状态 【0x12】语音合成状态 【0x13】系统休眠(低功耗)状态 |
#
0x04版本查询的反馈针对版本查询命令帧(0x19)的响应,如果查询的是所有模块的版本,那么会分多次反馈各个模块的版本。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x04 | 1字节 | |
命令数据 | TYPE | 1字节 | 【0x01】固件版本号; 【0x02】CAE的版本号; 【0x03】miniESR的版本号; |
VER_1 | 32字节 | 基础固件/算法版本号 | |
VER_2 | 32字节 | 固件构建号/资源版本号(暂时全部为0x00) |
#
0x10识别结果反馈语音识别系统处理结束,将识别结果回传上位机,根据系统设置命令的【OUT_FORMAT】 段设置,输出不同格式的结果。
OUT_FORMAT = 0时:
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x10 | 1字节 | |
命令数据 | ID | 2字节 | 识别结果编号,取值范围:0~65535,该值代表对应的识别结果的编号,可通过该值获知是哪个命令被触发了。 |
SCORE | 2字节 | 命令词分数 | |
TEXT | N字节,不超过200 | 识别结果名称,最大不超过200个字节(100个字),该值表示识别结果对应的文本。注意:此文本编码固定为UTF-8格式。 |
OUT_FORMAT = 1时:
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x10 | 1字节 | |
命令数据 | ID | 2字节 | 识别结果编号,取值范围:0~65535,该值代表对应的识别结果的编号,可通过该值获知是哪个命令被触发了。 |
OUT_FORMAT = 2 时:
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x10 | 1字节 | |
命令数据 | TEXT | N字节,不超过200 | 识别结果名称,最大不超过200个字节(100个字),该值表示识别结果对应的文本。注意:此文本编码固定为UTF-8格式。 |
#
0x11识别异常反馈识别异常状态反馈,包括:超时、拒识、错误等信息。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x11 | 1字节 | |
命令数据 | ERROR | 1字节 | 【0x01】识别超时:用户在一段时间内未说话,出现反应超时;用户说话的时间超过设定的时间,出现识别超时; 【0x10】引擎错误:引擎内部出现错误,通常用户是接收不到此状态的,如果确实接收到了,请复位模块; |
#
0x20播音结束反馈播音结束后(注意,仅对播音指令有效,并且只有正常播放结束,才会有该状态信息反馈。识别或唤醒等前置提示音播放,或者播音强制结束的都不会有该状态反馈)。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x20 | 1字节 |
#
0x40自定义命令词结果反馈自定义命令词的结果反馈。
名称 | 发送数据 | 字节数量 | 说明 |
命令类型 | 0x40 | 1字节 | |
命令数据 | ret | 1字节 | 【0x00】操作正常:表示自定义命令词操作正常; 【0x01】删除的命令词不存在:表示不存在此命令词; 【0x02】增加同名命令词:此时不做任何处理,如果想修改同名命令词,请使用替换操作; 【0x12】参数错误:命令参数错误,请检查keyword_type和keyword_operation; |