PXVF3800-KIT DSP描述
阅读前确认
用户需要确认一下内容,以方便阅读下文
- 已拥有了PXVF3800-KIT
- 已获取到PXVF3800-KIT的资料包
- 已能够进行使用dfu-util和xvf_host工具,
- 已详细了解XMOS 的XVF3800-DSP-Databrief文档
- 已详细了XVF3800 内置的前端算法AEC , BF , NS, AGC等
下文将不再对XVF3800-DSP-Databrief里的专业术语进行解释,重点是描述DSP参数的意义和数值的方向
安装驱动
Windows系统:
PXVF3800-KIT在操作系统中都能识别成XVF3800 Voice Procseeor-PAWPAW作为声卡输入输出,而Windows系统中的设备管理器显示的XMOS Control需要安装USB驱动,才能使用XMOS提供的dfu工具进行升级和使用xvf_host工具进行DSP 参数控制。推荐使用第三方工具zadig进行安装XMOS Control的USB驱 动。
运行zadig,
- 在列表中选择 XMOS Control (Interface 3)
- 然后选择 libusb-win32
- 点击 Reinstall Driver
- 安装完成了后,则会出现类似如下图片显示
PXVF3800-KIT DSP 初始参数
PXVF3800-KIT 可以通过查阅文档和使用xvf_host 可以读取PXVF3800-KIT的DSP参数。且PXVF3800-KIT每次重新上电,所有DSP 参数都重置为初始值
cmd 进入算法调优工具xvf_host所在目录,敲入下述指令:
xvf_host.exe AEC_HPFONOFF
其重 新上电后首次打印输出的内容为初始值,
AEC_HPFONOFF:2
其他参数使用vfctrl_usb工具读取方式同理
当想要批量读取所有参数,敲入下述指令,界面会返回所有参数名称以及参数值
xvf_host.exe -d
查阅文档XVF3800-DSP-Databrief的参数描述中可以获取初始参数
DSP 参数写入和读取认证
使用xvf_host工具进行写入DSP 参数,如键入指令:
xvf_host.exe AEC_HPFONOFF 1
PXVF3800-KIT可以实时更改AEC_HPFONOFF参数为1,可进行参数读取,如键入指令
xvf_host.exe AEC_HPFONOFF
会返回当前读取参数的实际数值:
AEC_HPFONOFF 1
键入指令时需要注意空格的输入,同时查阅XVF3800-DSP-Databrief里AEC_HPFONOFF描述的的范围为[0..4] ,其值的类型为INT型(整数型)。 确认写入完成了后,可以使用audaciy或者其他录音软件实时查看vfctril_usb工具修改DSP参数的效果。同时建议使用系统声卡监听功能进行实时侦听修改效果。使用3.5mm耳机插入PC电脑的耳机孔后,参考下图,进行如下操作,
- 在录音栏项,右键XVF3800 Voice Procseeor-PAWPAW -> 点击属性
- 选中侦听此设备
- 在通过此设备中播放下拉栏中->选择PC电脑内置的播放声卡
- 必须使用耳机插入PC的3.5mm耳机口进行侦听,否正会产生啸叫
DSP 参数简单介绍
HP 高通滤波
XVF3800-DSP-Databrief文档描述的高通滤波器仅有一组参数HPFONOFF,其最高值为是180Hz,如将PXVF3800-KIT作为会议设备使用,建议设置HPFONOFF为4。如作为语音识别(ASR),该值可以使用初始值
xvf_host.exe AEC_HPFONOFF 4
AEC 回音消除
PC电脑将 XVF3800 Voice Procseeor-PAWPAW 作为播放设备时,电脑声音播放则通过PXVF3800-KIT Line-out接口(3.5mm耳机孔)播放输出,后级需要接一个有源音箱,并且有源音箱是必须是线性放大,不能存在EQ处理。 PXVF3800-KIT的AEC ref参考信号则由USB播放时,经过XVF3800就已经拷贝AEC参考信号提供给XVF3800 的AEC 算法模块。
SHF_BYPASS
查看到SHF_BYPASS的初始值为0,系统语音是经过DSP算法,进行AEC处理后的信号,当设置SHF_BYPASS 为1 的时候,信号将跳过AEC,这将导致得到的语音信号会存在回声。
PP_ECHOONOFF
PP_ECHOONOFF是Echo suppression的开关,也就是设置是否经营回声抑制,默认打开。
AEC_FAR_EXTGAIN
AEC_FAR_EXTGAIN是对 far-end reference signals进行设置额外的dBz的增 益或衰减,用于进行声耦合配置(acoustical coupling)
AEC_AECCONVERGED
AEC_AECCONVERGED为只读命令参数,当AEC存在较大回声的时候,应读取该命令,查看AEC是否收敛,收敛会返回1,返回0说明AEC收敛存在问题,应该从MIC /reference/acoustical coupling 等方面进行校验。
ACE 其他
其他参数需要结合产品接口调整,如作为简单测试,则兼容PXVF3800-KIT无需调整其他参数 需要了解XVF3800的AEC性能最高为50dB抑制,确保喇叭的声压到达PXVF3800-KIT的尽量小于100dBA, 如超过该值,则大概会有50dB以上的回音残余在输出的信号中,50dB以上残余回音 较为容易被人耳辨识出来。
AGC 自动增益
PP_AGCONOFF为AGC的总开关,初始值为1。使用vfctrl_usb工具能够实时读出AGC的增益值PP_AGCGAIN,同时能够修改实时写入修改PP_AGCGAIN的值。
xvf_host.exe PP_AGCONOFF
xvf_host.exe PP_AGCGAIN 100
AGCGAIN的值为实时变化,其主要是围绕着PP_AGCDESIREDLEVEL这个参数。
PP_AGCDESIREDLEVEL
AGC重点的调试DSP参数为PP_AGCDESIREDLEVEL,该参数的值决定了MIC语音数据的整体水平大小,值的选取同时也决定了拾音距离。
设置PP_AGCDESIREDLEVEL的值为整体语音的信噪比不变,即输出的人声和噪声比例保持线性不变,同时增大,所以建议PP_AGCDESIREDLEVEL不能设置太大,避免引入过大的噪声。 使用PP_AGCMAXGAIN作为AGC的阈值能够限制AGC无限增大,避免经过MIC的语音信息的过大,出现截幅和失真。
PP_LIMITONOFF、PP_LIMITPLIMIT
PP_LIMITONOFF、PP_LIMITPLIMIT分别是对AGC算法限制的开关以及设置算法输出限制值,当出现语音过载截幅,这两个参数则到限制作用。
PP_AGCTIME、PP_AGCFASTTIME
PP_AGCTIME为AGC语音上升/下降的时间常数, 取值范围(秒)[0.5 .. 4.0],当AGC响应过慢的时候,可以将其值设置降低。
PP_AGCFASTTIME为语音从峰顶下降的时间。
噪声抑制
PP_MIN_NN、PP_MIN_NS
PP_MIN_NS和PP_MIN_NN 可以理解为需要把的环境噪声抑制到一个目标底噪,取值范围为[0.0 .. 1.0],其值越小,则算法后语音的底噪越小。
通常建议参数PP_MIN_NS和PP_MIN_NN的值不能设置太小,过度的噪声抑制,往往会使得输出的声音过于失真,扭曲过大。
音频管理器
XVF3800有一个可配置的音频管理器,用户在测试阶段可以通过xvf_host自定义对上行数据进行选择,下面是音频管理器的描述:
Category | Sources |
---|---|
0: Silence | 0: Silence |
1: Raw microphone data - before amplification | 0,1,2,3: Specific microphones accessed by index |
2: Unpacked microphone data | 0,1,2,3: Unpacked microphone signals. If using packed input, the packed microphone data is accessed though here. This will be undefined when not using packed input |
3: Microphone data - after amplification and delay | 0,1,2,3: specific microphones accessed by index after amplification. This is the microphone signal passed to the SHF task for processing. Source 2 is the default setting for the right channel output |
4: Far end | 0: Far end (reference) data received over I2S, post sample rate conversion to 16 kHz if required |
5: Far end with system delay | 0: Far end (reference) data received over I2S, post sample rate conversion to 16 kHz if required, and with system delay applied |
6: Processed data | 0,1: Slow-moving post-processed beamformed outputs, 2: Fast-moving post-processed beamformed output, 3: The “auto-select” beam; chooses the best of the previous three beams as an output. This is the recommended option for selecting the beamformed outputs |
7: AEC residuals | 0,1,2,3: AEC residuals for the specified beam |
8: User chosen channels | 0,1: These currently copy the auto-select beam (category 6, source 3) and are the default setting for the left channel output. |
9: Post SHF DSP channels | 0,1,2,3: All output channels from user post SHF DSP |
10: Far end at native rate | 0,1,2,3,4,5: Output from I2S task which is the far end reference signal with the custom pre-processing DSP applied. Always at native I2S rate. |
11: Amplified microphone data after delay | 0,1,2,3: Raw microphones after applying the delay. This is the reference signal which is passed to the SHF task for processing |
12: Far end with amplification and delay | 0: Far end signal with configurable fixed gain applied. This is the signal which is passed to the SHF task for processing. Note that this is after system delay has been applied |
通过上述描述,我们可以将默认的原有两通道usb上行算法处理后的数据,调整自己期望的管道数据;
例如:上行第一个通道为算法处理后的数据,第二通道为mic 0的数据,这就可以对比算法与原始mic 的处理信号,在调试中对比效果
在文件资料里面提供了一些修改音频管道的一些参考(已建立批处理文件,双击执行),可按照需求进行调用。