P3610-2MIC 硬件使用
概要

P3610-2MIC是XMOS推出的双麦克风开发板,适合用户直接使用和项目评估,所用的主控芯片型号为XVF3610。
P3610-2MIC为2麦阵列设备,作为前端信号处理,实现语音增强,可同时输出两路前端处理后的声音信号,且其分别为用于语音识别(ASR,Automatic Speech Recognition )和用于会议电话(Comms, communication and conferencing)。使用USB Audio Class 1.0协议(UAC1.0)传输音频 ,支持所有流行的操作系统(Windows , MAC, Linux和Android),允许作为USB声卡设备枚举接入操作系统中。
P3610-2MIC内置了立体声回音消除(AEC) , 点噪消除(IC),噪声抑制(NS)和自动增益(AGC)算法,能够有效地实现在远距离和嘈杂环境提高语音识别率和通话质量。同时设备通过USB 接口接入各种操作系统,并配套提供了多套固件,非常适用用户迅速接入语音 产品中。
版本
产品版本 | 修改 | 发布时间 |
---|---|---|
P3610-2MIC V1 | 初次发布 | 2022年8月24日 |
特点
-
远距离拾音
-
支持USB Audio Class 1.0 (UAC 1.0)
-
支持USB HID 调试
-
2路麦克风阵列
-
DSP 算法和特点
· Voice Activity Detection(VAD)
· Full duplex, stereo, Acoustic Echo Cancellation(AEC)
· The Automatic Delay Estimation Control (ADEC)
· Interference Cancellation (IC)
· Noise Suppression (NS)
· Automatic Gain Control (AGC)
规格
XMOS XVF3610 主控,内置2麦阵列算法
-
2路PDM 数字麦克风:3SM222KMB1HA-022
· Sensitivity: -26 dBFS (Omnidirectional)
· Acoustic overload point: 120 dBSPL
· SNR: 64 dBA
-
供电:USB 5V
-
尺寸:90mmx18mm
-
音频传输:
-
USB UAC 1.0 输入输出
-
IIS 输入输出
-
采样率:16KHz/48KHz(默认)
-
-
功耗: 5V, 75mA (Max)
硬件概述
- XMOS DSP :XVF3610 主控,集成了UAC1.0和2MIC阵列算法,包含了立体声回音消除(AEC) , 点噪消除(IC),噪声抑制(NS)和自动增益(AGC)算法
- Type-C USB : 提供5V电源,并且传输音频和固件更新,调试
- USB为AEC参考信号时,通过USB传输参考信号给XVF3610
- Flash UC25HQ16:存储XVF3610的固件及数据分区
- IIS 测试点:预留,接收IIS时钟与参考信号
- 3.5mm输出:输出通过USB/I2S传输到板子的音频信号,可通过软件改变输出的音频来源
系统框图
应用场合
-
导航机器人(ASR)
-
医疗设备(ASR)
-
健身设备(ASR)
-
大屏广告机(ASR)
-
授课直播(Comms)
-
摄像头麦克风(Comms)
-
智能音箱(ASR)
-
会议宝(comms)
开始
第一个Demo
通常情况下,用户拿到P3610-2MIC PCBA板后,建 议先在Windows系统做初步认证。使用Micro USB 数据线来连接P3610-2MIC和Windows系统电脑,需要做初步设置和确认。
声卡设备设置
确认Windows设备管理器已经成功枚举了P3610-2MIC,并且打开声音控制面板进行设置


在声音界面进行设置和确认
-
在播放栏项,设置XVF3610 Voice Processor为默认设备
-
在录制栏项,设置XVF3610 Voice Processor为默认设备
-
同时确认播放和录制栏项的音频格式设置为一致,如16bit ,16000KHz或者16bit 48000KHz
Demo 和录音
使用Audacity第三方开源录音软件在Windows系统进行录音设置,运行Audacity进行录音。
如图所示,P3610-2MIC配套默认固件USB 输出为2ch 立体声的 48KHz采样率声音信号,其中:
ch0为ASR输出,属于前端减噪和语音增强的音频输出,提供给语音识别云端引擎进行识别使用;
ch1为Comms输出,属于前端减噪和语音增强的音频 输出,为用户进行会议语音通话使用;
通常windows操作系统中会默认使用ch0声音信号作为系统麦克风声卡,用于ASR语音识别引擎,类似微软的小娜。并且用于P3610-2MIC的ASR声音信号处理需保留极高的人声频谱,以确保语音识别的高识别率。
固件和升级
如果P3610-2MIC的出厂默认固件满足不了用户的配置需求,可以在Firmware固件列表中选择其他配套的固件,使用配套提供的dfu_usb工具(Device Firmware Update)进行更新固件。
安装驱动
Linux系统:不需要安装XMOS Contorl驱动
Mac 系统:不需要安装XMOS Contorl驱动
在Windows系统:
P3610-2MIC在操作系统中都能免安装驱动并且识别成XVF3610 (UAC1.0) Adaptive作为UAC1.0声卡输入输出,即P3610-2MIC使用USB传输音频时,是不需要安装任何声卡驱动的。如图所示的音频输入和输出->XVF3610 (UAC1.0) Adaptive的设备枚举。
如果需要对P3610-2MIC进行DSP参数调整和固件更新时,Windows系统中的设备管理器显示的XMOS Control需要安装 驱动,才能使用的dfu_usb工具进行更新P3610-2MIC固件和使用vfcrtl_usb工具进行DSP 参数控制。推荐使用工具zadig(点击下载)对XMOS Control进行USB驱动安装。运行zadig,按照以下步骤进行:
- 在Options中选定 List All Devices
- 在下拉列表中选择 XMOS Control (Interface 3)
- 在Driver的第二项,选择libusb-win2(v1.2.6.0)
- 单击 Install Driver进行确认安装
固件列表
P3610-2MIC配套提供了4个固件,主要是AEC的参考信号提供方式和USB输出音频采样率作为区别,参考下表。
如配套的固件仍未满足使用,用户可以自行自制固件进行更新。
ID | Firmware | 采样率 | Description |
---|---|---|---|
1 | data_xvf3610_usb_aec_ref_48K_v5_7_2.dfu | 48000Hz | 出厂默认固件,使用USB输入输出,同时使用USB提供AEC参考信号,音频格式为48KHz PCM,3.5mm jack可输出通过USB传入P3610-2MIC的声音 |
2 | data_xvf3610_I2S_aec_ref_48K_v5_7_2.dfu | 48000Hz | 使用IIS测试点接入参考信号,音频格式为48KHz PCM |
3 | data_xvf3610_usb_aec_ref_16K_v5_7_2.dfu | 16000Hz | 使用USB输入输出,同时使用USB提供AEC参考信号,音频格式为16KHz PCM,3.5mm jack可输出通过USB传入P3610-2MIC的声音 |
4 | data_xvf3610_I2S_aec_ref_16K_v5_7_2.dfu | 16000Hz | 使用IIS测试点接入参考信号,音频格式为16KHz PCM,3.5mm jack可输出通过USB传入P3610-2MIC的声音 |
DFU升级
使用配套的dfu_usb工具进行固件更新,在Windows系统打开cmd命令行终端工具,cd进入p3610/firmware的绝对路径,键入升级指令且加入所需的data_xxx.dfu固件运行升级,如下:
dfu_usb --vendor-id 0x20B1 --product-id 0x0016 write_upgrade boot.dfu data_xvf3610_usb_aec_ref_16K_v5_7_2.dfu
执行完之后,打印出以下信息代表固件DFU升级成功
poll timeout 0 msec
HAL: read command: GETSTATE (134), 4 bytes
write upgrade successful
HAL: reboot
HAL: write command: REBOOT (5), 0 bytes
深入使用
在现有的固件仍不能满足用户的现有的需求,可以尝试使用在P3610-2MIC配套提供基于XMOS官方的原始文件夹修改后的文件(XVF3610-UA-PP-v5.x.x.zip,v5.x.x中x代表对应的版本号),进行在线调试和生成用户自定义的DFU配置固件(data_xxx.dfu),而这些用户新的需求一般可以列为如下几个分类
- 修改USB枚举信息,如USB 字符串,和USB的VID和PID
- 修改DSP算法参数,如AGC增益,以更加吻合用户的使用环境,以达到更高的识别率和更远的距离
- 修改USB输入输出的通道映射,如ch0和ch1都输出ASR信号,AEC的参考信号的提供方式
- 修改输出音频采样率参数,如修改为16KHz/16bit的音频输出格式
在进行这一部分操作,用户需要认真阅读XMOS的文档资料[XVF3610 用户手册] ,才能了解XVF3610的寄存器的参数,以便在线调试和生成DFU配置固件,并且下文描述内容跟XMOS提供的文档一致。
以下内容已经假设用户对麦克风阵列的DSP算法,已经有一定的了解,或者根据文档自行了解熟悉,并且了解其DSP参数和数值。或者另外参考我司文档P3610-2MIC_调试笔记 , 加深理解
Acoustic Echo Cancellation (AEC)
Automatic Delay Estimation & Control (ADEC)
Interference Cancellation (IC)
Voice Activity Detection (VAD)
Noise Suppression (NS)
Automatic Gain Control (AGC)
在线调试
确保P3610-2MIC的XMOS Control驱动已经安装(仅windows系统需要)
在windows系统,运行cmd,并且cd进入XVF3610-UA-PP-v5.x.x/host/Win32/bin的绝对路径,键入类似指令,便可进行在线调试。
键入以下命令,可以设置ch1音频输出为的AGC自动增益为自适应方式。其中vfctrl_usb工具通过USB接口实时对P3610-2MIC进行读写,用户根据自身再需要键入其他具体的命令。
vfctrl_usb SET_ADAPT_CH1_AGC 1
验证调试是否实时有效改变,可通过以下命令
vfctrl_usb GET_ADAPT_CH1_AGC
打印输出的信息如下:
GET_ADAPT_CH1_AGC: 1
更多的在线调试参数用户自行详细查看XMOS的文档资料[XVF3610 用户手册]
其他操作系统则运行Terminal终端,cd进入对应路径的bin文件夹,并且执行同样的指令便可
注意
在线调试的参数仅存在XVF3610 RAM内存中, 断电即复位为默认值,如确实需要保存已调试的参数到flash中,需要生成DFU配置固件。
生成DFU自制固件
为了每次断电保存已调试的P3610-2MIC参数,用户需要生成自制的dfu配置固件才能生效。以下描述指引用户如何自制dfu固件。
安装python 3
生成DFU配置固件需要用到python 3工具(需要Python3.7 以上版本,Python 下载连接 http://python.org/downloads.
如上图在Python安装界面
-
选择环境变量自动配置
-
点击Install Now进行安装
-
重启Windows系统
在Windows系统上运行cmd且键入python已确认是否python已经配置了环境变量。如果没有类似如下打印,在windows系统的,编辑系统环境变量->高级->环境变量->在系统变量栏中找到Path后双击打开->新建->填入Python安装根目录(例如C:\Python39\
)->保存确定。
python
Python 3.9.6 (tags/v3.9.6:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Python的安装根目录中往往含有python.exe
设置环境变量后,往往需要重启计算机系统后生效
生成固件并DFU烧录
使用Windows平台时,用户往往希望根据其自行调试的参数修改P3610-2MIC的固件。为了简化用户操作,我们梳理了简易的固件生成与DFU烧录流程。
-
将P3610-2MIC连接到电脑,并确认已安装调试驱动
-
通过双击编辑user_define.bat文件将在线调试中已确定的XVF3610 DSP参数写入
user_define_xvf3610.txt
中,这里点击根目录下的编辑user_define.bat
即可修改XVF3610-UA-PP-v5.x.x/data-partition/input/user_define_xvf3610.txt
-
保存
user_define_xvf3610.txt
后,您需要双击运行根目录下的P3610-2MIC_user_define_dfu_upgrade_cmd.bat
便可直接使用USB成功升级固件。
执行.bat
脚本时,脚本会根据用户自定义的参数值生成固件,并通过USB烧录至连接到电脑的P3610-2MIC。设备下次通电时,会默认使用用户自定义的参数。
执行脚本后,在XVF3610-UA-PP-v5.x.x/bin/1_firmware_Customize
路径中也会自动生成一个用户自制的固件,其名称为data_upgade_ua_define_xvf3610_v5_7_2.dfu
※自制固件批处理过程解析
上一步中,我们提到的固件生成流程主要基于Windows平台,当用户需要在Linux环境下建立批处理文件时,下述指南则能够用作参考。
如您仅在Windows平台操作,可跳过本节。
在本节中,主要涉及到两个文件的说明:
- 批处理文件
P3610-2MIC_user_define_dfu_upgrade_cmd.bat
- 用户自定义参数文件
user_define_xvf3610.json
P3610-2MIC_user_define_dfu_upgrade_cmd.bat
批处理文件P3610-2MIC_user_define_dfu_upgrade_cmd.bat
主要用于自动化生成固件并烧录至P3610-2MIC中。
其内容如下:
cd data-partition
python xvf361x_data_partition_generator.py user_define_xvf3610.json
cd ../host/Win32/bin
dfu_suffix_generator.exe 0x20B1 0x0016 ../../../bin/app_xvf3610_ua_qspi_boot_dfu.bin boot.dfu
dfu_suffix_generator.exe 0x20B1 0x0016 ../../../data-partition/output/data_partition_user_define_xvf3610_upgrade_v5_7_2.bin data_upgade_ua_define_xvf3610_v5_7_2.dfu
copy data_upgade_ua_define_xvf3610_v5_7_2.dfu ..\..\..\bin\1_firmware_Customize
dfu_usb.exe --vendor-id 0x20B1 --product-id 0x0016 write_upgrade boot.dfu data_upgade_ua_define_xvf3610_v5_7_2.dfu
pause
以下是P3610-2MIC_user_define_dfu_upgrade_cmd.bat
执行步骤解析说明:
-
Line1:进入
data-partition
-
Line3:执行
xvf361x_data_partition_generator.py
并使用user_define_xvf3610.json
作为参数,并在/output
文件夹下生成bin文件data_partition_user_define_xvf3610_upgrade_v5_7_2.bin
-
Line5:进入根目录下的
/host/Win32/bin
-
Line7:生成
boot.dfu
,该文件用于DFU升级 -
Line9:使用工具
dfu_suffix_generator.exe
结合Line3中生成的bin文件进一步生成data_upgade_ua_define_xvf3610_v5_7_2.dfu
该文件与boot.dfu
配合使用,用于DFU升级 -
Line11:将生成的固件复制到
/host/Win32/bin
目录下 -
Line13:利用上述生成的两个固件, 通过dfu_usb工具进行DFU升级
boot.dfu
data_upgade_ua_define_xvf3610_v5_7_2.dfu
dfu_suffix_generator工具用于对用户固件和设定的USB的VID和PID信息进行交叉校验
其简化(路径)的执行的指令如下,其中 0x20B1 0x0016分别为USB VID和PID。
dfu_usb.exe --vendor-id 0x20B1 --product-id 0x0016 write_upgrade boot.dfu data_upgade_ua_define_xvf3610_v5_7_2.dfu
user_define_xvf3610.json
用户自定义参数文件XVF3610-UA-PP-v5.x.x/data-partition/user_define_xvf3610.json
定义了一系列的DFU参数信息,以及使用到的用户配置
其内容如下:
{
"comment": "",
"spispec_path": "64mbit_12.5mhz_sector_4kb.spispec",
"regular_sector_size": "4096",
"hardware_build": "0xFFFFFFFF",
"item_files": [
{ "path": "input/user_define_xvf3610.txt", "comment": "" }
]
}
在json中,其描述了
- "comment":注释
- "spispec_path":用于配置Flash的spec文件位置
- "regular_sector_size":分区页大小
- "hardware_build":硬件参数
- "item_files":配置文件组的路径,此处可填写多个配置文件,格式参考如下:
此处我们仅用到一个配置文件:user_define_xvf3610.txt
,用户在文件中填写在线调试已确认的XVF3610参数或者需要修改的USB描述信息,如在线调试中描述的。其中每行包含一条参数,修改后请保存txt。
其示例格式如下:
SET_DEVICE_TO_USB_RATE 16000
SET_IO_MAP 5 10
SET_IO_MAP 4 9
资源
P3610-2MIC的全部资料。
支持和商务
P3610-2MIC支持PCBA定制服 务,提供批量PCBA和芯片供应服务。
任何的技术支持和商务合作,可以直接邮箱联系我们:mic@pawpaw.cn,或者访问www.pawpaw.cn了解更多。
FAQ
Q1: boot.dfu和data_xxx.dfu的区别?
boot.dfu是XVF3610的基础固件,内含DSP算法和控制等基础程序,data_xxx.dfu为配置固件,修改boot.dfu里面的参数。所以在DFU的时候,两个固件都需要添加进去
Q2: DFU更新完之后,在windows操作系统下使用audacity录制出错的原因
出现该问题仅是在Windows系统,其他操作系统Mac和Linux并不会存在这个情况。由于windows系统对声卡有记忆功能,DFU固件了后,可能改变了与之前声卡的记忆,导致了使用第三方软件如audacity无法录制音频,这时需要使用usbdeview进行删除Windows的对声卡的记忆。
USB连上P3610-2MIC和windows PC,运行usbdeview,点击Connected栏项以列出XVF3610相关枚举情况;逐一选择XVF3610的枚举,右击后出现新的界面;选择Uninstall Selected Devices进行删除Windows的声卡的记忆;重新上电即可。
Q3: dfu_usb和vfctrl_usb显示could not find device和无法使用的原因?
确保USB连接了P3610-2MIC和PC,并且确保已经使用了zadig进行安装了XMOS Control的驱动。如果问题仍出现,尝试确认一下XMOS Control是否已经枚举,亦或者卸载XMOS Control驱动,并且使用zadig重新按照。
Q3: 有提供例程连接语音识别平台吗?
抱歉 ,这方面我们没有提供例程,类似Alexa和Aliyun等语音识别API,我们没有办法提供相关例程。
Q4: 把P3610-2MIC装上产品的结构外壳上,有哪些声学方面需要注意的吗?
我们建议使用裸板进行使用,这样的性能效果是最佳的,如果确实需要组装到产品结构上,我们建议在麦克风上(顶部拾音)加入密封胶套,以确保声音不进入到结构里面进行不断的反射形成混响。同时我们会在下个硬件版本配套提供密封胶套