Air1103 AI 语音芯片产品手册
作者:拓毅恒 | 最后修改:2026-09-28
1 产品概述
你需要一颗"自带麦克风、喇叭和 AI 语音算法,主控只用一根串口就能说话"的语音芯片吗?
Air1103 是合宙推出的串口 AI 语音芯片,广泛适用于智能家电、智能照明、玩具、穿戴、车载与两轮车等需要"听懂人说话、并能开口回答"的场景。
芯片把麦克风采集、喇叭播放、 3A 语音算法(降噪 ANS + 回声消除 AEC + 语音识别 ASR) 与串口通信集成在一起。主控(4G/CAT1 模组、MCU 等)只需一路 UART(2Mbps) 就能完成三件事:
- 拿音频 / 拿结果:接收降噪后的麦克风音频,或直接接收离线语音识别的指令文本;
- 放声音:把待播放的音频送给芯片,由芯片控制喇叭播放。
芯片不占用主控的 I2S/I2C,也无需外接 Codec、PA 及其配套电源控制,硬件设计与软件接入都更简单。
1.1 核心参数
- 主控:高性能 32 位音频处理器,支持硬件浮点运算(双核 32 位音频处理器);
- AI 能力:第五代 TDNN 离线语音识别,支持 5 米远场可靠识别,识别时间小于 100ms;环境噪声抑制大于 20dB;回声消除 20dB 以上,支持全双工工作与播放中语音打断唤醒;支持中文、英文,并持续增加亚洲、欧洲、南美洲等小语种;
- 音频规格:两路 24 位 DAC(SNR ≥ 104dB)、两路 24 位 ADC(SNR ≥ 95dB),采样率支持 8kHz / 11.025kHz / 16kHz / 22.05kHz / 24kHz / 32kHz / 44.1kHz / 48kHz,支持 MP3 / WAV 音频解码;
- 串口协议:波特率 2000000bps,串口电平 3.3V;上行 / 下行音频为 16kHz / 16 位 / 单声道 PCM;
- 麦克风与喇叭:支持 1 路模拟麦克风接入;集成功放,额定功率 3W,可直接驱动不大于 3W 的喇叭;
- USB:1 路全速 USB 2.0 OTG,用于下载和烧写固件;
- 供电与温度:3.3V~5.5V(典型 5V),工作电流 30~200mA;工作温度 -20℃~+85℃,存储温度 -50℃~+85℃;
- 最大焊接温度:260℃(IPC/JEDEC J-STD-020)。
1.2 核心功能亮点
1)离线语音识别 + 3A 算法,复杂环境也能听懂
芯片在片内完成全部语音处理,不依赖云端:
- 离线语音识别(ASR):第五代本地识别引擎,采用最新的神经网络(TDNN)算法,识别精准、误判率低;
- 语音降噪(ANS):过滤风扇、油烟机、电机、胎噪等稳态噪声,并抑制动态噪声,环境噪声抑制 >20dB;
- 回声消除(AEC):消除设备自身播放的声音(20dB 以上),喇叭外放的同时也能随时语音打断唤醒,天然适配免提通话、AI 语音对话等全双工场景。
识别结果通过串口 01 80 命令以 UTF-8 文本直接上报,主控无需做任何语音算法处理。
注意:离线语音识别功能需联系合宙任一同事沟通订制,需付费单独训练唤醒词和命令词。
2)一根串口搞定音频:16kHz PCM 上下行
串口帧格式统一为:包头(55 AA)+ 长度 + 命令 + 数据 + 和校验。音频采用 PCM+PCM 协议,上下行均为 16kHz / 16 位 / 单声道 PCM:
| 方向 | 命令 | 音频数据 |
|---|---|---|
| 上行(芯片 → 主控) | 20 80 | PCM 512 字节 / 16ms / 16kHz / 16 位单声道 |
| 下行(主控 → 芯片) | 20 81 | PCM 320 字节 / 10ms / 16kHz / 16 位单声道 |
上行每 16ms 一帧、下行每 10ms 一帧,主控只需按帧收发 16 位 PCM,不需要做任何编解码处理;降噪、回声消除、语音识别与音频播放全部由芯片在片内完成。
3)免提通话:内置 AEC,可作 4G 模组的"外置语音芯片"
芯片可将喇叭回采信号接入反馈引脚,实现通话消回声。搭配合宙 4G 模组时:
- SIP / VoLTE 通话:由芯片把 16kHz PCM 通过 UART 与主控交换,主控侧无需外置 Codec / PA / I2C;
- 本地提示音(振铃、挂断音)也可由芯片播放,避免占用通话通路。
4)LuatOS 扩展库:exaudio 一行接入
通过 exaudio 扩展库,合宙模组可把 Air1103 指定为音频模型,替代 ES8311 等外置 Codec,完成 MIC 采集、喇叭播放与本地提示音播放,详见第 8 章。
1.3 应用场景
- 智能家电、智能照明等的离线语音控制;
- 车载 / 两轮车语音交互(配合 4G/CAT1 模组接入在线大模型,支持离线+在线混合识别);
- 通话类应用(VoLTE / SIP 通话的外置免提与回声消除,解决啸叫与回声);
- AI 语音对话终端、语音助手(离线唤醒识别 + 在线大模型);
- 通话桥接:Air1103 可作为主控的"外置语音芯片"参与 SIP ↔ VoLTE(CC) 音频桥接,主控侧无需 Codec / PA / I2C;
- 需要"语音播报 + 语音控制"的工业与消费类设备。
1.4 方案优势
- 集成度高:麦克风、喇叭功放、AI 算法全部内置,主控只需一路 UART;
- 环境适应强:降噪 + 回声消除 + 远场识别,强噪声环境下依然可用,支持播放中打断唤醒;
- 接入简单:帧协议统一、命令清晰,串口音频为 16kHz PCM,主控按帧收发即可;
- 免开发算法:离线识别开箱可用,识别结果直接以文本上报;
- 合宙生态支持:提供 LuatOS 扩展库
air1103/exaudio,并有 SIP 通话、SIP ↔ VoLTE 桥接等现成示例工程可直接复用。
Air1103 不只是一颗语音芯片,更是让设备"能听会说"的一站式串口语音方案——主控只管通信与联网,语音交给它。
2 硬件说明
2.1 脚位说明
表1 Air1103 管脚定义(QFN42,与 Air8784 原理图 V2.0 中 Air1103 符号一致)
| 引脚号 | 引脚名 | 类型 | 功能说明 |
|---|---|---|---|
| 1 | GND | 地 | 电源地 |
| 2 | SW | 输入 | 开关机按键输入(接按键到地) |
| 3 | VBAT | 电源 | 主电源输入(3.3V~5.5V,典型 5V) |
| 4 | NC | — | NC(未使用,不连接) |
| 5 | IOVDD | 电源 | IO 电源(外接去耦电容) |
| 6 | DCVDD | 电源 | 数字核心电源(外接去耦电容) |
| 7 | NC | — | NC(未使用,不连接) |
| 8 | NC | — | NC(未使用,不连接) |
| 9 | NC | — | NC(未使用,不连接) |
| 10 | NC | — | NC(未使用,不连接) |
| 11 | NC | — | NC(未使用,不连接) |
| 12 | NC | — | NC(未使用,不连接) |
| 13 | XOSCI | 输入 | 24MHz 晶振输入 |
| 14 | XOSCO | 输出 | 24MHz 晶振输出 |
| 15 | UART_TX | 输出 | 串口发送(接主控 RX;3.3V~5V 耐压,可直接接 5V MCU IO) |
| 16 | NC | — | NC(未使用,不连接) |
| 17 | UART_RX | 输入 | 串口接收(接主控 TX;3.3V~5V 耐压,可直接接 5V MCU IO) |
| 18 | NC | — | NC(未使用,不连接) |
| 19 | NC | — | NC(未使用,不连接) |
| 20 | NC | — | NC(未使用,不连接) |
| 21 | NC | — | NC(未使用,不连接) |
| 22 | USBDM | I/O | USB D-(下载与烧写固件) |
| 23 | USBDP | I/O | USB D+(下载与烧写固件) |
| 24 | NC | — | NC(未使用,不连接) |
| 25 | NC | — | NC(未使用,不连接) |
| 26 | NC | — | NC(未使用,不连接) |
| 27 | NC | — | NC(未使用,不连接) |
| 28 | NC | — | NC(未使用,不连接) |
| 29 | MUTE | 输出 | 静音控制输出(接功放 MUTE / CTRL) |
| 30 | FEEDBACK_N | 输入 | 功放反馈输入(负) |
| 31 | FEEDBACK_P | 输入 | 功放反馈输入(正) |
| 32 | MICBIAS | 输出 | 麦克风偏置电压输出 |
| 33 | AGND | 地 | 模拟地 |
| 34 | VCM | 输出 | 共模电压输出(外接去耦电容到 AGND) |
| 35 | SPK | 模拟输出 | 喇叭驱动输出,可驱动 ≤3W 喇叭 |
| 36 | MIC+ | 模拟输入 | 麦克风输入正端 |
| 37 | NC | — | NC(未使用,不连接) |
| 38 | NC | — | NC(未使用,不连接) |
| 39 | NC | — | NC(未使用,不连接) |
| 40 | NC | — | NC(未使用,不连接) |
| 41 | NC | — | NC(未使用,不连接) |
| 42 | NC | — | NC(未使用,不连接) |
| 0 | GND(散热焊盘) | 地 | 散热焊盘,接 GND |
注:与串口语音协议直接相关的引脚是 UART_TX(引脚 15)、UART_RX(引脚 17)(通信)、MIC+(引脚 36)、MICBIAS(引脚 32)(麦克风)、SPK(引脚 35)(喇叭)、FEEDBACK_P / FEEDBACK_N(引脚 31 / 30)(功放反馈,回声消除参考)、VBAT(引脚 3)与 GND(引脚 1、13 等)(供电);其余标 NC 的引脚未使用,原理图中不做连接。
2.2 电平说明
Air1103 串口 IO(UART_TX、UART_RX)为 3.3V 电平,且可耐 3.3V~5V 高压,因此:
● 若主控为 3.3V IO:可直接交叉连接(TX 接 RX、RX 接 TX);
● 若主控为 5V IO:可直接连接,无需电平转换;
● 若主控为 1.8V 或其它电平:需增加电平转换电路,且因波特率达 2Mbps,转换电路的 MOS 切换速度必须足够快。
2.3 供电说明
通过 VBAT(引脚 3) 给芯片供电,输入范围为 3.3V~5.5V,典型 5V。芯片集成功放,喇叭由 SPK(引脚 35) 音频输出直接驱动(额定 3W,可驱动不大于 3W 的喇叭)。
2.4 温度
● 工作温度:-20℃ ~ +85℃;
● 存储温度:-50℃ ~ +85℃;
● 最大焊接温度:260℃(IPC/JEDEC J-STD-020)。
2.5 芯片封装
● 封装:QFN42(4mm × 5mm),含散热焊盘(引脚 0,接 GND);
3 电气参数
表2 Air1103 主要电气参数
| 参数 | 条件 | 最小值 | 典型值 | 最大值 | 单位 |
|---|---|---|---|---|---|
| 存储温度范围 | - | -50 | - | 85 | ℃ |
| 工作温度范围 | - | -20 | - | 85 | ℃ |
| 芯片供电电压(VBAT) | - | 3.3 | 5.0 | 5.5 | V |
| 工作电流 | 典型语音应用 | 30 | - | 200 | mA |
| 串口波特率 | UART_TX、UART_RX | - | 2000000 | - | bps |
| 串口电平 | UART_TX、UART_RX | - | 3.3 | 5.0(耐压) | V |
4 芯片资料
| 资料简介 | 相关链接 |
|---|---|
| 产品原理图和封装 | 持续更新中..... |
5 串口通信协议
5.1 帧格式
Air1103 与上位机之间的所有串口数据均采用统一的二进制帧格式:
表3 串口帧格式
| 字段 | 字节数 | 说明 |
|---|---|---|
| 包头 | 2 | 固定为 55 AA(0x55、0xAA) |
| 长度 | 2 | 数据区的字节数 N,大端(高字节在前) |
| 命令 | 2 | 命令字(见下表及第 6 章) |
| 数据 | N | 数据内容(N 字节) |
| 和校验 | 1 | 包头 + 长度 + 命令 + 数据 的累加和,取低 8 位 |
和校验计算: 校验字节 = (0x55 + 0xAA + 长度高字节 + 长度低字节 + 命令高字节 + 命令低字节 + Σ数据字节) & 0xFF(即所有校验字节之前字节的累加和,仅保留低 8 位)。
常用命令字一览:
| 方向 | 命令 | 名称 | 数据内容 |
|---|---|---|---|
| 上行(芯片→主控) | 20 80 | 麦克风 PCM 音频 | PCM 512 字节(16ms / 16kHz / 16 位单声道) |
| 上行(芯片→主控) | 01 80 | 语音识别结果 | 识别指令文本,N 字节 UTF-8 编码 |
| 下行(主控→芯片) | 20 81 | 播放 PCM 音频 | PCM 320 字节(10ms / 16kHz / 16 位单声道) |
| 下行(主控→芯片) | 02 01 | 停止上行发送音频 | 0 字节 |
| 下行(主控→芯片) | 02 03 | 设置播放音量 | 1 字节(0~31) |
5.2 PCM+PCM 音频协议(上行 / 下行)
芯片采用 PCM+PCM 协议:上行、下行均为 16kHz / 16 位 / 单声道原始 PCM,芯片在片内完成降噪、回声消除、识别与播放,主控按帧收发 16 位 PCM 即可,无需做任何编解码。
上行(芯片 → 主控,命令 20 80): 芯片上电初始化完成后自动开始发送降噪后的麦克风音频。
● 每帧数据 512 字节,对应 16ms / 16kHz / 16 位单声道 PCM;
● 约每 16ms 一帧(≈32KB/s);
● 完整帧:55 AA 02 00 20 80 [512 字节 PCM] [和校验]。
下行(主控 → 芯片,命令 20 81): 主控把待播放的音频送给芯片,由芯片实时经喇叭播放。
● 每帧数据 320 字节,对应 10ms / 16kHz / 16 位单声道 PCM;
● 约每 10ms 一帧(≈32KB/s);
● 完整帧:55 AA 01 40 20 81 [320 字节 PCM] [和校验]。
注:上行 512 字节 / 16ms、下行 320 字节 / 10ms 均由 16kHz×16bit×1ch = 256kbps 推导一致;两者采样率、位深、声道完全相同,仅单帧时长不同,便于主控与芯片各自的缓冲节奏。
5.3 语音识别结果上报
当本地识别到指令词时,芯片通过命令 01 80 把识别结果以 UTF-8 文本上报给主控:
● 数据 N 字节为识别指令的 UTF-8 编码(如"打开灯光" = 12 字节);
● 完整帧:55 AA [长度 N 大端] 01 80 [N 字节 UTF-8] [和校验]。
5.4 常用控制命令
● 02 01:停止芯片上行发送音频(初始化完成后芯片默认持续上行,可用此命令暂停);
● 02 03:设置播放音量(数据 1 字节,范围 0~31,对应 DAC 输出档位)。
6 命令说明
以下命令示例均以 16 进制字节流给出;每个示例第一行为发送方向(→ 为主控发往芯片,← 为芯片回复主控),第二行为字节内容,第三行为说明。
6.1 上行音频:20 80
功能说明: 芯片向上位机发送降噪后的麦克风 PCM 音频(PCM+PCM 协议,16ms / 512 字节一帧)。
完整帧结构:
| 字段 | 值 |
|---|---|
| 包头 | 55 AA |
| 长度 | 02 00(512 字节,大端) |
| 命令 | 20 80 |
| 数据 | 512 字节 PCM(16ms / 16kHz / 16bit / 单声道) |
| 和校验 | 前述字节累加和取低 8 位 |
举例:
| 方向 | 字节内容 | 说明 |
|---|---|---|
| ← | 55 AA 02 00 20 80 [512 字节 PCM] [CS] |
芯片每 16ms 主动上报一帧麦克风音频 |
注意事项: 初始化完成后芯片自动开始上行;可用 02 01 停止上行;唤醒词被识别后会恢复上行。
6.2 下行音频:20 81
功能说明: 上位机向芯片发送待播放的 PCM 音频,芯片实时经喇叭播放(PCM+PCM 协议,10ms / 320 字节一帧)。
完整帧结构:
| 字段 | 值 |
|---|---|
| 包头 | 55 AA |
| 长度 | 01 40(320 字节,大端,0x0140=320) |
| 命令 | 20 81 |
| 数据 | 320 字节 PCM(10ms / 16kHz / 16bit / 单声道) |
| 和校验 | 前述字节累加和取低 8 位 |
举例:
| 方向 | 字节内容 | 说明 |
|---|---|---|
| → | 55 AA 01 40 20 81 [320 字节 PCM] [CS] |
主控每 10ms 下发一帧播放音频 |
6.3 识别结果上报:01 80
功能说明: 芯片把离线语音识别到的指令词以 UTF-8 文本上报。
完整帧结构:
| 字段 | 值 |
|---|---|
| 包头 | 55 AA |
| 长度 | N(识别文本 UTF-8 字节数,大端) |
| 命令 | 01 80 |
| 数据 | N 字节 UTF-8 编码的识别指令 |
| 和校验 | 前述字节累加和取低 8 位 |
举例(上报"打开灯光",UTF-8 共 12 字节):
| 方向 | 字节内容 | 说明 |
|---|---|---|
| ← | 55 AA 00 0C 01 80 E6 89 93 E5 BC 80 E7 81 8C E5 85 89 [CS] |
"打开灯光" 的 UTF-8 编码(E6 89 93 E5 BC 80 = 打开,E7 81 8C E5 85 89 = 灯光) |
6.4 停止上行发送:02 01
功能说明: 上位机命令芯片停止上行发送麦克风音频。
完整帧结构:
| 字段 | 值 |
|---|---|
| 包头 | 55 AA |
| 长度 | 00 00(0 字节) |
| 命令 | 02 01 |
| 数据 | 0 字节 |
| 和校验 | 前述字节累加和取低 8 位 |
举例:
| 方向 | 字节内容 | 说明 |
|---|---|---|
| → | 55 AA 00 00 02 01 [CS] |
停止芯片上行发送音频 |
6.5 设置播放音量:02 03
功能说明: 设置芯片喇叭播放音量。
完整帧结构:
| 字段 | 值 |
|---|---|
| 包头 | 55 AA |
| 长度 | 00 01(1 字节) |
| 命令 | 02 03 |
| 数据 | 1 字节,音量值 0~31(DAC 输出档位) |
| 和校验 | 前述字节累加和取低 8 位 |
举例(设置音量为 20):
| 方向 | 字节内容 | 说明 |
|---|---|---|
| → | 55 AA 00 01 02 03 14 [CS] |
设置播放音量为 20(0x14) |
注意事项: 建议上位机上电后先自行下发一次音量设置。
7 应用说明
7.1 典型接线
| 芯片引脚 | 连接对象 | 说明 |
|---|---|---|
| UART_TX(引脚 15) | 主控 UART_RX | 芯片发送 → 主控接收 |
| UART_RX(引脚 17) | 主控 UART_TX | 芯片接收 ← 主控发送 |
| GND(引脚 1、13 等) | 主控 GND | 共地 |
| VBAT(引脚 3) | 5V(或 3.3~5.5V) | 主电源输入 |
| MIC+(引脚 36)、MICBIAS(引脚 32) | 模拟麦克风 | 单端接入麦克风,偏置由 MICBIAS 提供 |
| SPK(引脚 35) | 功放 / ≤3W 喇叭 | 音频输出,经功放驱动喇叭 |
| FEEDBACK_P(引脚 31)、FEEDBACK_N(引脚 30) | 喇叭回采(经三级滤波) | 回声消除参考输入 |
7.2 电平转换
● 芯片串口 IO 为 3.3V、可耐 5V:主控为 3.3V 或 5V 时均可直接交叉连接;
● 主控为 1.8V 或其它电平:必须加电平转换电路;
● 因串口波特率达 2Mbps,电平转换电路的 MOS 切换速度必须足够快,否则会出现丢帧。
7.3 AEC 回采(回声消除参考)
为实现播放中语音打断唤醒与全双工通话消回声,需把喇叭播放的信号回采给芯片的功放反馈引脚:
● 从喇叭输出端(SPK,引脚 35,原理图中网络名为 DACLP)经过三级滤波后,接入芯片的 FEEDBACK_P(引脚 31)/ FEEDBACK_N(引脚 30),作为回声消除(AEC)的参考信号;
7.4 音频收发时序
● 上行音频: 芯片上电初始化完成后即自动以约 16ms 周期发送 20 80 音频帧(512 字节/帧);如需暂停,主控发 02 01;唤醒词被识别后芯片恢复上行。
● 下行音频: 主控以约 10ms 周期下发 20 81 音频帧(320 字节/帧),芯片接收后实时经喇叭播放;若主控侧的语音/提示音为其它格式(如 MP3/WAV),需先解码为 16kHz/16bit/单声道 PCM 再按帧下发。
● 识别结果: 离线识别到指令词时,芯片通过 01 80 以 UTF-8 文本上报,主控解析后执行相应动作即可,无需自建语音算法。
8 LuatOS 扩展库用法
使用 LuatOS 开发,不需要自己组帧、算和校验、卡 10ms发送节奏,直接调用 exaudio 扩展库即可完成上行录音、下行播放与本地提示音播放;帧封装(55 AA + 长度 + 命令 + 数据 + 和校验)、帧间隔控制与缓冲管理全部由扩展库在底层自动完成。
扩展库文档:https://docs.openluat.com/osapi/ext/exaudio/
扩展库代码:script/libs/exaudio.lua
8.1 初始化
-- model 指定使用 Air1103;uart_id 可选(默认 1);库内部自动按 2Mbps 初始化串口并加载底层驱动
exaudio.setup({model = "air1103", audio_mode = "new", uart_id = 1})
Air1103 模式下不需要任何本地 Codec / PA / I2C 操作;初始化完成后芯片即自动开始上行(持续发送 20 80 音频帧)。
8.2 上行录音(芯片麦克风 → 主控)
调用 exaudio.record_start() 后,扩展库自动解析芯片上行的 20 80 帧并逐段回调,回调里拿到的就是可直接使用的 16kHz / 16 位 / 单声道 PCM:
exaudio.record_start({
format = exaudio.PCM_16000, -- Air1103 固定 16kHz / 16bit / 单声道
time = 0, -- 0 = 不限时录音,需自行调用 record_stop() 停止
path = function(data, len)
-- data 为 zbuff,本次有效数据 len 字节(16kHz / 16bit / 单声道 PCM)
-- 可直接 data:query(0, len) 取出后送 voip.pcmIn()、编码上传或写文件
end,
cbfnc = function(event) -- 可选:录音结束事件(如录音时间到)
-- event == exaudio.RECORD_DONE
end,
})
exaudio.record_stop() -- 停止录音(同时停止芯片上行发送)
8.3 下行播放(主控 → 芯片喇叭)
Air1103 只支持流式 PCM 播放(type = 2),把 PCM 喂进扩展库即可,库会自动按 320 字节 / 帧、10ms 一帧下发:
exaudio.play_start({type = 2, cbfnc = function(event)
-- event == exaudio.PLAY_DONE 表示缓冲已播完
end})
exaudio.play_stream_write(pcm) -- 可多次调用,每次长度任意,内部自动切帧
exaudio.play_stream_write(pcm, true) -- 最后一次带 true,表示数据喂完,播完触发 cbfnc
exaudio.is_end() -- 查询是否已播放完毕
exaudio.play_stop() -- 需要立即停止时调用
注意:下行数据必须是 16kHz / 16bit / 单声道 PCM;若音频源为 MP3 / WAV,需先解码为 PCM 再喂入。队列空时扩展库会自动补发静音帧保活,避免数据流中断产生爆音,主控不必自己控制 10ms 节奏。
8.4 本地提示音(来电振铃 / 挂断)
-- 来电:循环振铃(按键接听场景,未接通前一直响)
exaudio.play_ringback_loop()
-- 按键接听前:停止振铃(复位芯片并恢复上行 MIC,供通话使用)
exaudio.stop_ringback()
-- 对端挂断:先停振铃(不复位)、紧接着播挂断提示音,提示音播完统一复位芯片
exaudio.stop_ringback(true)
exaudio.play_hangup()
注意: 1. 提示音与通话音频共用 Air1103 下行,需在非通话期间播放; 2.
exaudio.play_ringback([callback])为单遍播放(播完回调,适合自动接听场景); 3.exaudio.stop_ringback(true)只是把复位"延后",必须紧接着调用exaudio.play_hangup()这类会收尾复位的提示音;若只传true而不播提示音,芯片不会复位、上行 MIC 不会恢复,挂断后主动呼出将没有声音。
8.5 底层驱动接口(air1103)
air1103.lua是exaudio的内部驱动模块(库文件头已注明"业务代码请勿直接 require")。以下接口用于理解串口协议、注册识别结果回调或单独调试串口,正常业务直接用 exaudio 即可。
| 接口 | 说明 |
|---|---|
air1103.init(id, baud) |
初始化串口(默认 UART1 / 2Mbps,exaudio.setup 已自动调用) |
air1103.on_audio_data(cb) |
注册上行 MIC 数据回调(512 字节 / 帧,16kHz / 16bit / 单声道) |
air1103.on_identify(cb) |
注册离线识别结果回调(UTF-8 文本) |
air1103.play_stream_start(vol) |
启动下行流式播放(音量 0~31) |
air1103.play_stream_write(pcm) |
喂入下行 PCM(内部按 320 字节 / 帧切分) |
air1103.play_stream_stop() |
结束流式播放(播完缓冲剩余数据后停止) |
air1103.set_volume(vol) |
设置播放音量(0~31) |
air1103.stop_audio() |
停止上行发送(命令 02 01) |
air1103.reset() |
程序复位(命令 02 05,复位后自动恢复 MIC 上行) |
air1103.play_busy(on_done) / air1103.play_busy_loop() |
播放 / 循环播放接通提示音 |
air1103.stop_tones(skip_reset) |
停止循环提示音 |
air1103.play_hangup(on_done) |
播放挂断提示音 |
获取离线识别结果示例:
local air1103 = require "air1103" -- 与 exaudio 内部为同一个模块实例,无需重复初始化
air1103.on_identify(function(text)
log.info("air1103", "识别结果", text) -- 如"打开灯光"
end)
8.6 参考示例工程
- SIP 通话示例(Air8784):module/Air8784/SIP
- SIP ↔ VoLTE(CC) 桥接示例(Air8784):module/Air8784/sip_cc_demo
说明:SIP / VoLTE 通话场景下,上行 PCM 需送
voip.pcmIn()、下行 PCM 从voip.pcmOut()取出后经exaudio.play_stream_write()下发,通话桥接逻辑可直接参考上述示例工程。