Skip to main content

P3610-2MIC 硬件使用

概要

P3610-2MIC_product

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)

硬件概述

image-20220824170239246

  • 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传输到板子的音频信号,可通过软件改变输出的音频来源

系统框图

image-20220516160111831

应用场合

  • 导航机器人(ASR)

  • 医疗设备(ASR)

  • 健身设备(ASR)

  • 大屏广告机(ASR)

  • 授课直播(Comms)

  • 摄像头麦克风(Comms)

  • 智能音箱(ASR)

  • 会议宝(comms)

开始

第一个Demo

通常情况下,用户拿到P3610-2MIC PCBA板后,建议先在Windows系统做初步认证。使用Micro USB 数据线来连接P3610-2MIC和Windows系统电脑,需要做初步设置和确认。

声卡设备设置

确认Windows设备管理器已经成功枚举了P3610-2MIC,并且打开声音控制面板进行设置

setting instructionsound_instruction

在声音界面进行设置和确认

  1. 在播放栏项,设置XVF3610 Voice Processor为默认设备

  2. 在录制栏项,设置XVF3610 Voice Processor为默认设备

  3. 同时确认播放和录制栏项的音频格式设置为一致,如16bit ,16000KHz或者16bit 48000KHz

Demo 和录音

使用Audacity第三方开源录音软件在Windows系统进行录音设置,运行Audacity进行录音。

image-20220516161404843

img

如图所示,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,按照以下步骤进行:

  1. 在Options中选定 List All Devices
  2. 在下拉列表中选择 XMOS Control (Interface 3)
  3. 在Driver的第二项,选择libusb-win2(v1.2.6.0)
  4. 单击 Install Driver进行确认安装

image-20221105171832833

固件列表

P3610-2MIC配套提供了4个固件,主要是AEC的参考信号提供方式和USB输出音频采样率作为区别,参考下表。

如配套的固件仍未满足使用,用户可以自行自制固件进行更新。

IDFirmware采样率Description
1data_xvf3610_usb_aec_ref_48K_v5_7_1.dfu48000Hz出厂默认固件,使用USB输入输出,同时使用USB提供AEC参考信号,音频格式为48KHz PCM,3.5mm jack可输出通过USB传入P3610-2MIC的声音
2data_xvf3610_I2S_aec_ref_48K_v5_7_1.dfu48000Hz使用IIS测试点接入参考信号,音频格式为48KHz PCM
3data_xvf3610_usb_aec_ref_16K_v5_7_1.dfu16000Hz使用USB输入输出,同时使用USB提供AEC参考信号,音频格式为16KHz PCM,3.5mm jack可输出通过USB传入P3610-2MIC的声音
4data_xvf3610_I2S_aec_ref_16K_v5_7_1.dfu16000Hz使用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_1.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文件夹,并且执行同样的指令便可

image-20221105172814003

注意

在线调试的参数仅存在XVF3610 RAM内存中, 断电即复位为默认值,如确实需要保存已调试的参数到flash中,需要生成DFU配置固件。

生成DFU自制固件

为了每次断电保存已调试的P3610-2MIC参数,用户需要生成自制的dfu配置固件才能生效。以下描述指引用户如何自制dfu固件。

安装python 3

生成DFU配置固件需要用到python 3工具(需要Python3.7 以上版本,Python 下载连接 http://python.org/downloads.

image-20220820163358166

如上图在Python安装界面

  1. 选择环境变量自动配置

  2. 点击Install Now进行安装

  3. 重启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烧录流程。

  1. 将P3610-2MIC连接到电脑,并确认已安装调试驱动

  2. 通过双击编辑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

    image-20220820164747136

  3. 保存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_1.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.jsoncd ../host/Win32/bindfu_suffix_generator.exe 0x20B1 0x0016 ../../../bin/app_xvf3610_ua_qspi_boot_dfu.bin boot.dfudfu_suffix_generator.exe 0x20B1 0x0016 ../../../data-partition/output/data_partition_user_define_xvf3610_upgrade_v5_7_1.bin data_upgade_ua_define_xvf3610_v5_7_1.dfu    copy data_upgade_ua_define_xvf3610_v5_7_1.dfu ..\..\..\bin\1_firmware_Customizedfu_usb.exe --vendor-id 0x20B1 --product-id 0x0016 write_upgrade boot.dfu data_upgade_ua_define_xvf3610_v5_7_1.dfupause

以下是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_1.bin

  • Line5:进入根目录下的/host/Win32/bin

  • Line7:生成boot.dfu,该文件用于DFU升级

  • Line9:使用工具dfu_suffix_generator.exe结合Line3中生成的bin文件进一步生成data_upgade_ua_define_xvf3610_v5_7_1.dfu该文件与boot.dfu配合使用,用于DFU升级

  • Line11:将生成的固件复制到/host/Win32/bin目录下

  • Line13:利用上述生成的两个固件, 通过dfu_usb工具进行DFU升级

    • boot.dfu
    • data_upgade_ua_define_xvf3610_v5_7_1.dfu
Hint

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_1.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的声卡的记忆;重新上电即可。

image-20221105171001965

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装上产品的结构外壳上,有哪些声学方面需要注意的吗?

我们建议使用裸板进行使用,这样的性能效果是最佳的,如果确实需要组装到产品结构上,我们建议在麦克风上(顶部拾音)加入密封胶套,以确保声音不进入到结构里面进行不断的反射形成混响。同时我们会在下个硬件版本配套提供密封胶套