一起玩XVF3800麦克风阵列(二)
XVF3800是一款集成先进DSP算法的语音处理芯片,支持4个数字麦克风输入,具备声学回声消除(AEC)、波束成形、噪声抑制等功能。其采用三束波束成形技术,可360°全向拾音,支持0.3-5米工作距离。芯片提供I²S和USB双接口,采样率可选16kHz/48kHz,处理延迟最低58ms。内部集成192ms回声尾长消除能力,支持自动增益控制和双讲检测。电源系统需3.3V/1.8V/0.9V多电压供电
XVF3800概述和主要功能
XVF3800 集成了一系列先进的数字信号处理 (DSP) 算法,包括声学回声消除 (AEC)、波束成形、去混响、噪声抑制和自动增益控制。这些先进的 DSP 算法可实现高信噪比、自然流畅的语音效果,并消除声学回声,同时保持透明且低延迟的通信链路。
XVF3800解决方案的主要特点包括:
-
在会议室和客厅环境下,可实现高水平的声学回声消除和抑制。
-
先进、稳定、自然的双讲/全双工性能。
-
即使用户距离数米远,也能获得很高的语音清晰度,无需定向麦克风。
-
快速自适应波束成形,用于跟踪多个近端用户。
-
静态/动态噪声抑制。
-
自动增益控制。
主要功能模块
下图展示了该解决方案的高级示意图。
麦克风输入
XVF3800 通过四个数字麦克风采集语音信号,并将其从脉冲密度调制 (PDM) 转换为脉冲编码调制 (PCM)。它将转换后的信号以及经过数模转换器 (DAC) 和放大器后在扬声器上播放的远端信号一起传递到语音传输管道。
声学回声消除器
处理流程的第一阶段是声学回声消除器(AEC),它使用自适应滤波器从麦克风信号中消除远端信号的回声。每个麦克风信号都独立处理,AEC 的输出被送入波束形成器。
启动时,AEC 会校准自适应滤波器,以匹配扬声器和麦克风之间的声学路径。这需要一些远端音频内容来为设备提供信号。如果在运行过程中,AEC 检测到声学路径发生显著变化(例如,设备被移动),它将启动重新收敛操作。
波束形成器
波束形成器模块处理AEC信号以选择目标说话人。波束形成器包含一组自适应滤波器,可将来自四个麦克风的信号相干叠加,从而选择来自特定方向的声音。此操作可提高特定方向上的语音噪声比,同时降低点噪声源和混响的影响。
XVF3800 采用三束光束:一束自由波束用于扫描环境中的新说话者,两束聚焦波束用于跟踪单个说话者。它还支持另一种工作模式,在该模式下,两束聚焦光束可以固定在用户指定的方位角。流程的最后阶段会自动选择哪束光束作为设备的输出。
可通过 XVF3800 控制界面访问所选波束的信息。该设备提供到达方向 (DoA) 测量值,指示所选光束的方向。
后处理器
波束形成器的输出信号被送至后处理阶段,进一步降低混响并抑制漫射噪声和点噪声源。之后,信号经过可编程均衡滤波器以调节输出信号的频率响应,以及增益控制模块以确保输出电平的一致性,不受扬声器与麦克风距离的影响。最终输出信号通过限幅器,以防止过大的信号导致输出过载。该管道的输出是所需的近端语音的增强语音信号,没有回声和混响。
自动语音识别 (ASR) 输出
波束形成器的输出可用作自动语音识别 (ASR) 引擎的输入。在此模式下,XVF3800 提供可配置的固定增益,以使输入电平适应 ASR 引擎。(这里注意ASR引擎的降噪没有那么厉害,用于ASR的识别,而通话的时候降噪模式不一样,在调试的时候注意不同的应用场景使用不同的模式和配置)
输入和输出
XVF3800 支持两种音频接口,用于与主机系统之间传输音频:I²S或USB。这两种接口互斥,在构建固件映像时进行选择。
I2S音频接口
XVF3800 支持 16 kHz 或 48 kHz 的 I²S采样率。输入和输出必须使用相同的采样率。
音频管道以 16 kHz 的采样率处理数据,因此,如果使用 48 kHz 的输入,则需要在信号路径中引入一个采样率转换器模块来转换采样率。采样率在固件中设置,在设备运行期间无法更改。采样位深度固定为 32 位。
当使用 UA 模式(通过 USB 传输主机音频)时,XVF3800 具有主动式 I 2 S 主输出,可将远端信号提供给 DAC。
USB音频接口
XVF3800 在自适应模式下实现了标准的 UAC 2.0 音频类,兼容支持 USB 2.0 和 3.0 接口的 USB 主机。所有主流操作系统现在都原生支持 USB 音频类 2 (UAC 2) 设备,无需安装额外的音频驱动程序。
在 UA 配置中,XVF3800 的音频采样率可以是 16 kHz 或 48 kHz(在构建时固定),并且必须与连接到 I²S输出的 DAC 的输出采样率相同。USB 采样的位深度可以是 16 位、24 位或 32 位(在构建时固定)。
AEC参考信号
XVF3800 支持单声道音频输出,并使用单个声道为声学回声消除器 (AEC) 提供参考信号。远端 AEC 参考信号必须通过 I²S或USB 输入信号的左声道 (0) 提供。右声道的数据将被忽略。为了确保房间内播放的远端信号与 AEC 预期的远端信号一致,DAC 配置为将左声道输入信号同时输出到左右声道(XVF3800 内部只有一个 AEC 引擎,它默认系统是单声道播放的)。
关键参数
下表显示了音频处理流程的关键运行参数。
| 参数项目 | 参数值 | 说明 |
|---|---|---|
| 麦克风数量 | 4 颗 PDM 麦克风 | 如 Infineon IM69D130 |
| 麦克风一致性 | ±2 dB | 麦克风灵敏度差异 |
| 麦克风阵列结构 | 线性阵列 / 方形阵列 | 两种布局均可 |
| 工作频率范围 | 80 Hz ~ 8 kHz | 有效语音带宽 |
| 采样率 | 16 kHz | 语音处理采样率 |
| AEC 回声抵消尾长 | 192 ms | 回声滤波器可处理的尾长 |
| AEC 参考通道数量 | 1(单声道) | Echo Reference 输入 |
| 输出到 DAC | 支持 | — |
| 双讲检测 | 连续检测 | 支持持续双讲判断 |
| 参考延时补偿范围 | 0 ~ 500 ms(固定) | 主机输出到参考信号延时对齐 |
| 麦克风与参考信号对齐 | 支持 | 自动对齐参考与麦克风输入 |
| 波束数量 | 3 个 | 2 个定向波束 + 1 个扫描波束 |
| 波束扫描角度 | 360° 全向 | 支持任意角度拾音 |
| 噪声抑制能力 | 最多 25 dB | 取决于输入信噪比 |
| 推荐工作距离 | 0.3 m ~ 5 m | 最佳拾音范围 |
| 波束形成更新时间 | 16 ms | 波束方向刷新周期 |
| 输入延迟 | 最低 58 ms | 麦克风 → I2S 输出的处理延时 |
| 输出延迟 | 典型 50 ms | 若设备端进行远端处理(Far-end) |
| I2S/USB 采样率 | 16 kHz 或 48 kHz | 固件可配置 |
| I2S 输出位深 | 32 bit | 固件可选 |
| USB 输入位深 | 16 / 24 / 32 bit | 固件可选 |
| USB 输出位深 | 16 / 24 / 32 bit | 固件可选 |
| 内部 PLL 调整范围 | ±1000 ppm | 满足 USB 自适应音频要求 |
引脚配置
下图展示了 XVF3800 的引脚图,包括所有可选接口。部分引脚说明指明了这些引脚在 XMOS XK-VOICE-SQ66 开发套件 (DVK) 上的分配方式,但可以通过固件重新配置以用于其他用途。

VDDIOT、VDDIOL 和 VDDIOR 必须连接到 3.3V 电源。VDDIO18 必须连接到 1.8V 电源,所有 VDD 引脚必须连接到 0.9V 电源。所有封装引脚(61 至 65 号引脚)都必须连接。建议在每个引脚下方放置一个过孔,以便将其直接连接到 PCB 电源层。
引脚描述
下表列出了上述所有引脚的功能,并按它们在封装体上的排列顺序排列。
| Pin# | 引脚名 | 信号名 | 描述 | 备注 | 方向 | 电源域 |
|---|---|---|---|---|---|---|
| 1 | X0D05 | QSPI_D1 | QSPI 数据线 D1 / 启动模式选择 | 上电时 4.7k 上拉=SPI 从机启动;浮空=QSPI 主机启动 | I/O | IOL |
| 2 | X0D07 | QSPI_D3 | QSPI 数据线 D3 | — | I/O | IOL |
| 3 | X0D01 | QSPI_CS_N | QSPI Flash 片选 | 需外接 4.7k 上拉 | O | IOL |
| 5 | X0D10 | QSPI_CLK | QSPI 时钟 | — | O | IOL |
| 6 | X0D00 | SPI_CS_N | SPI 从机启动 / 外设 SPI 片选 | 需 4.7k 上拉 | I | IOL |
| 7 | X0D11 | SPI_MOSI | SPI 主发从收 | — | I | IOL |
| 8 | VDDIOL | VDDIOL | I/O 电源 3.3V | 所有 VDD 必须连接 | PWR | — |
| 9 | X1D00 | I2S_DATA0 | I2S 数据线 | INT-Device:参考输入;UA/Host:输出 | I/O | IOL |
| 10 | X1D01 | I2S_LRCK | I2S LR 时钟 | Master/Slave 可选 | O/I | IOL |
| 11 | X1D09 | P_BUTTON_0 | 按键输入 0 | 10k 上拉(XK-VOICE-SQ66) | I | IOL |
| 13 | X1D10 | I2S_BCLK | I2S 位时钟 | 16k/48k 可配 | O/I | IOL |
| 14 | X1D11 | MCLK_INOUT | 主时钟输入/输出 | INT-Device 可作输入 | I/O | IOL |
| 15 | XOUT | XOUT | 晶振输出 | 使用外部时钟时需悬空 | O | IOB |
| 16 | XIN | XIN | 晶振输入或外部时钟输入 | — | I | IOB |
| 17 | VDDIOB18 | VDDIOB18 | I/O 电源 1.8V | 必须连接 | PWR | — |
| 18 | TDI | TDI | JTAG 数据输入 | 内部弱上拉 | I | IOB |
| 20 | TDO | TDO | JTAG 数据输出 | — | O | IOB |
| 21 | RST_N | RST_N | 复位输入 | 低有效,内部弱上拉 | I | IOB |
| 22 | PLL_AVDD | PLL_AVDD | PLL 模拟电源 | 使用滤波的 0.9V | PWR | — |
| 23 | TMS | TMS | JTAG 模式选择 | 内部弱上拉 | I | IOB |
| 24 | TCK | TCK | JTAG 时钟 | 内部弱下拉 | I | IOB |
| 25 | NC | NC | 无连接 | 不能连任何网 | — | IOB |
| 26 | VDDIOB18 | VDDIOB18 | I/O 电源 1.8V | 必须连接 | PWR | — |
| 28 | USB_DM | USB_DM | USB D– | 无 USB 可悬空 | I/O | — |
| 29 | USB_DP | USB_DP | USB D+ | 无 USB 可悬空 | I/O | — |
| 30 | USB_VDD33A | USB_VCC33A | USB 3.3V 供电 | 无 USB 可悬空 | PWR | — |
| 31 | USB_VDD18A | USB_VCC18A | USB 1.8V 供电 | 无 USB 可悬空 | PWR | — |
| 32 | X1D13 | P_BUTTON_1 | 按键输入 1 | 10k 上拉 | I | IOR |
| 33 | X1D16 | XL_DN1 | XLINK | Debug 高级调试 | I | IOR |
| 35 | X1D17 | XL_DN0 | XLINK | Debug | I | IOR |
| 36 | X1D18 | XL_UP0 | XLINK | Debug | O | IOR |
| 37 | X1D19 | XL_UP1 | XLINK | Debug | O | IOR |
| 38 | VDDIOR | VDDIOR | I/O 电源 3.3V | 必须连接 | PWR | — |
| 39 | X1D22 | I2S_DATA1 | I2S 数据 | INT-Device:输出;INT-Host:参考输入 | I/O | IOR |
| 40 | X0D29 | CODEC_RST_N | 外部 DAC/AMP 复位信号 | — | O | IOR |
| 41 | X0D35 | MCLK | 主时钟输入 | 需连接 Pin14 | I | IOR |
| 43 | X0D36 | MIC_CLK | PDM 麦克风时钟 | 3.072MHz | O | IOR |
| 44 | X0D37 | I2C_SCL | I2C 时钟 | 控主机/控制 DAC | I/O | IOR |
| 45 | X0D38 | I2C_SDA | I2C 数据 | 控主机/控制 DAC | I/O | IOR |
| 46 | X0D40 | MIC_DATA0 | 麦克风数据 0 | SDR | I | IOT |
| 47 | X0D39 | SPI_MISO | SPI 主入从出 | SPI 控制模式使用 | O | IOT |
| 48 | X0D42 | MIC_DATA2 | 麦克风数据 2 | SDR | I | IOT |
| 50 | X0D41 | MIC_DATA1 | 麦克风数据 1 | SDR | I | IOT |
| 51 | X0D43 | MIC_DATA3 | 麦克风数据 3 | SDR | I | IOT |
| 52 | VDDIOT | VDDIOT | I/O 3.3V 电源 | 必须连接 | PWR | — |
| 53 | X1D34 | I2S_DATA2 | I2S 数据 2 | INT-Device 远端音频输出 | O | IOT |
| 54 | X0D30 | SQ_nLIN | 麦克风拓扑选择 | — | O | IOT |
| 55 | X0D31 | INT_N | 向主机发中断 | — | O | IOT |
| 56 | X0D32 | LED_R | 红色 LED | — | O | IOT |
| 58 | X0D33 | LED_G | 绿色 LED | — | O | IOT |
| 59 | X0D04 | QSPI_D0 | QSPI 数据线 D0 | — | I/O | IOL |
| 60 | X0D06 | QSPI_D2 | QSPI 数据线 D2 | — | I/O | IOL |
| 65 | GND | GND | 地 | 必须连到地平面 | GND | — |
| 61–64 | VDD | VDD | 核心电源 0.9V | 全部必须连接 | PWR | — |
| 4,12,19,27,34,42,49,57 | VDD | VDD | 核心电源 0.9V | 全部必须连接 | PWR | — |
更多推荐
所有评论(0)