P3610-2MIC 调试笔记
概要
本文档主要是指引用户在使用P3610-2MIC配套提供的固件不能满足需求时,如何自行配置P3610-2MIC的参数(寄存器),如何自行更新自制的固件。
P3610-2MIC预留了较多的控制和DSP算法参数供用户进行配置,以满足用户需求。这些可供调试的参数均体现在XMOS的官方文档XVF3610用户手册中。本篇文章基于官方文档,根据木瓜科技内部技术工程师以及其他的用户的真实案例整理,提供给读者作为参考借鉴。
前提
- 用户需拥有P3610-2MIC评估板,并且根据查阅P3610-2MIC的硬件使用文档能够实现使用Audacity进行录音
- 用户在windows系统上已经安装了XMOS Control的驱动,XMOS Control设备枚举主要是用来对P3610-2MIC进行指令控制,包含了DSP算法参数调整和XVF3610的固件更新
- 用户已经获取了P3610-2MIC评估板的资料包,并且已经自行下载安装python 3。生成自制的XVF3610固件需要有python的环境支持。
- 用户需要明确需求,使用P3610-2MIC评估板是作为语音识别(ASR,Automatic Speech Recognition )还是会议通话(Comms, communication and conferencing)测试使用,还是两者都需要。
DSP
AEC(Acoustic Echo Cancellation, 回音消除),回音消除的作用主要是消除本设备(类似P3610-2MIC)麦克风拾取到来自远端的声音在本设备扬声器(喇叭)播放出来的声音,即形同于扬声器播放的声音不要再被麦克风设备重新采集。AEC算法过程中需要远端音频声源作为参考信号给到P3610-2MIC设备,才能消除扬声器播放的回声声音,形象理解为需要消除哪些声音,就提供对应声音信号作为参考信号给P3610-2MIC设备。
IC(Interference Cancellation,干扰源消除),干扰源消除的作用主要是消除环境中固定的位置点发出的干扰声音信号,该信号视为为干扰信号被P3610-2MIC消除。IC算法不需要接入参考信号,但会存在一个收敛时间过程,在干扰源信号的位置和P3610-2MIC的位置相对固定,并且有VAD人声检测后即可实现收敛消除。
VAD(Voice Activity Detection,语音活动检测)。控制IC和AGC的适应性,以优化近端语音的输出。
NS (Noise Suppression, 噪声抑制),噪声抑制的作用主要是抑制抑制来自其频率特性不会随时间瞬时变化的噪声源。其中包括散射的背景噪声和固定噪声源,类似于稳态噪声和非稳态噪声。
AGC(Automatic Gain Control,自动增益控制),自动增益的作用主要是可以动态调整音频增益,或设定固定增益,使声音 保持所需的输出电平。
工具
vfctrl_usb工具用于写入或读取P3610-2MIC的DSP参数(寄存器)或者其他控制参数,如XVF3610内置的立体声回音消除(AEC) , 点噪消除(IC),噪声抑制(NS)和自动增益(AGC)算法参数数值,或者设定具体的功能与参数,最终达到所需要的音频处理效果。
dfu_usb工具用于对P3610-2MIC进行固件DFU更新(Device Firmware Update ),例如更新P3610-2MIC的配套固件和用户自制的固件。
在windows系统上,以上两个工具的使用前提都需要安装XMOS Control的驱动,依托windows系统的cmd工具运行。快捷键WIN+R ,输入cmd ,确认打开cmd界面,使用cd指令进入到vfcrtl_usb工具的存放路径,类似键入指令如下后,进行使用vfctrol_usb工具
cd /d E:XVF3610-UA-PP-v5.x.x\host\Win32\bin
DSP算法及声音流框图
参考XMOS官方文档XVF3610用户手册可以得到其DSP和声源流框图如下:
上图所示,PDM MIC,AEC,IC,NS, AGC都是可以通过使用vfctrol_usb工具进行调整其对应的DSP参数的,并且整体XVF3610的DSP算法音频流程如下:
- 两路PDM麦克风音频信号进行输入XVF3610
- 对采集到的信号传输给回音消除(AEC)来消除扬声器的回声
- 再经过干扰源消除(IC)对干扰源噪声(如洗衣机,收音机的噪声)进行消除
- 经过噪声抑制(NS)抑制环境稳态噪声(例如空调声)
- 通过自动增益(AGC)实现远距离拾音,或者调整声音大小
- 最终输出两种音频效果,分别为语音识别(ASR)和会议通话(Comms),可选其一。
需要注意的是,在默认的固件下,我们是使用USB立体声音轨中的ch0音轨输出ASR音频效果,使用ch1音轨输出Comms音频效果。在下文的算法调整中,ch0的相关参数代表与ASR输出有关,ch1的相关参数代表与Comms输出有关。如下图
AGC 算法参数调整示例
P3610-2MIC评估板的AGC对应参数数值的设置直接影响了拾音距离,也是用户较关注的算法板块。其中AGC算法参数说明如下表,初步看评估板可以调整的参数如下:
SET_GAIN_CH1_AGC
SET_ADAPT_CH1_AGC
SET_LC_ENABLED_CH1_AGC
SET_MAX_GAIN_CH1_AGC
SET_UPPER_THRESHOLD_CH1_AGC
SET_LOWER_THRESHOLD_CH1_AGC
SET_INCREMENT_GAIN_STEPSIZE_CH1_AGC
SET_DECREMENT_GAIN_STEPSIZE_CH1_AGC
注意
P3610-2MIC USB输出的立体声中,其中在ch0输出ASR音频效果,在ch1输出Comms音频效果。在下文的算法调整中,ch0的相关参数代表与ASR输出有关,ch1的相关参数代表与Comms输出有关。
这里以ch1为例,所以调整所列的参数与Comms输出有关。在设定每个AGC参数值前,都是可以使用GET 来代替SET来读出当时的状态值。如想要设定配置AGC最大增益值(SET_MAX_GAIN_CH1_AGC)前,先看下当前状态(GET_MAX_GAIN_CH1_AGC),键入指令如下和打印出获取结果如下。
vfctrl_usb GET_MAX_GAIN_CH1_AGC
GET_MAX_GAIN_CH1_AGC: 999.9847
通过下面分类讲解来阐述上述的列出的8个参数的相互关联关系。