当前位置: 首页 > 文档资料 > GX8008 开发文档 >

GX8008B UAC 开发板用户指南

优质
小牛编辑
132浏览
2023-12-01

文档详细介绍了GX8008B UAC方案,包括USB相关协议、方案设计、固件烧写和UAC的使用流程等。

概述

GX8008B USB Audio Class(简称UAC)是面向语音前端处理应用而设计的方案,运行离线的demo程序后可进行基本的本地语音交互。UAC平台具备如下特点:

  • 2路模拟MEMS麦克风

  • 1 个 BOOT 功能按键

  • 1 个 RGB 3 色 LED

  • USB 2.0 Device接口

  • 1个UART调试端口

  • 1 路 Audio out

  • I2C、UART、I2S 等多个功能预留 IO 口

方案设计简介

电源

主设备USB接口供电或者5V适配器供电

存储器

SPI NOR Flash:单颗8MByte ~ 16MByte(64Mbit ~ 128Mbit)

音频

输入音频:UAC采用2路模拟MEMS麦克风输入

数据通道

USB:一路USB Device接口(可用于传输数据、时钟同步和下载程序等)

MIC阵列

UAC平台使用2路模拟MIC输入,单端模式。两个麦克风的距离为30mm。GX8008B最多支持4路MIC。

调试接口

串口:2 路 MCU UART,1 路 DSP UART_TX

LED阵列

GX8008B 支持多种型号的 LED Driver IC,通过 I2C 接口控制 LED 阵列。 UAC 平台配有 1 颗 RGB LED,通过 IO 口控制。若采用 LED 阵列方案,可以通过 I2C 接 LED IC,最多 12 颗 RGB LED。GX8008B 有两路 I2C

Audio out

UAC V1.0 配有一路 Audio out 方便开发。如果只做 UAC 功能,这部分可 不用

UAC平台实物图

电源接法

在图2中,通过USB线将UAC的USB口接到USB HOST即可上电。

串口接法

将图3黑色接线口凸起朝上与图2的UART连接(红色线靠右),上电后即可在主机的/dev目录下看到串口设备节点。

软件方案

概述

GX8008B UAC是一个通过USB连接主机的语音前端处理模块,能实现AEC、BeamForming 和 Wakeup 功能。启动 UAC 板,运行 demo 程序,可进行基本的唤醒识别。

VSP(语音前处理系统)运行在 MCU、DSP 和 NPU 上。主要完成语音信号处理,比如降噪、去混响、回声消除、波束合成、特征提取、激活词识别等。实现了原始语音数据采集、系统的启动和初始化、系统状态检测、系统功耗控制、LED 效果等功能。VSP 在设计之初就兼顾考虑了语音信号处理的运算特点、硬件模块的特点、NPU 和 DSP 处理器的特点,并在很大程度上对算法实现的便利性、内存使用效率、处理器性能和系统功耗进行了充分的优化。

当前方案支持以下功能:

  • 支持 USB 即插即用
  • 最多支持录制 6 路麦克风数据
  • 通过唤醒词触发唤醒状态
  • 支持 HID 和 USB 串口
  • 通过按键进入静音状态

协议介绍

USB-UAC

UAC(USB Audio Class)一种通用数据接口,可以有很多种实现数字音频数据传输的方式。不同的开发者可以根据自己的喜好和需求,定义任意的控制方式,传输模 式,音频格式等等参数。

USB 非常适合作为以 PC 为平台的音频(包括语音和音乐等)传输协议,USB 接口拥有远远高于音频需求的带宽,可以传输高品质(高采样率、多声道)的音频数据。因此,例如录音和音乐播放等音频功能都可以很容易在 USB 接口实现。

音频流被打包成 USB 数据包(USB packets)在 USB 总线上传送。每个数据包只能包含整数个音频流数据。 USB 支持的四种传输机制: 控制传输,中断传输,块传输,同步传输(等时输), 如图 4。

UAC 方案采用等时传输,该类型有要求数据的及时性、传输大量数据和速率恒定等 特点,故适合用于音频系统。

USB-HID

HID(Human Interface Device)属于人机交互操作的设备,是 USB 设备中常用的设备类型。例如 USB 键盘、USB 鼠标与游戏杆等。

当插入 USB 设备后,主机会向设备请求各种描述符来识别设备。为了把一个设备识 别为 HID 类,设备在定义描述符的时候必须遵守 HID 规范。HID 设备的描述符除了五个 USB 的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符)外,还包括三个 HID 设备类特定描述符:HID 描述符、报告描述符、物理描述符。所有的 HID 设备通过 USB 的控制管道和中断管道与主机通信。

描述符之间有一定的关系,一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。USB 的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。

PLC 方案

PLC(Programmable Logic Controller)可编程逻辑控制器,以这个词命名我们的方案是因为它可以根据DSP处理语音信号输出的KWS值和输出算法语音做一些可编程的逻辑控制,来满足不同的产品方案的需求。

PLC 方案支持以下功能:

  • 1)UAC 录音功能;

  • 2)向主机发送 HID 键值功能。PLC 方案兼容 UAC 方案的一些功能,包括 HID 键值发送和声卡录音功能,去除了声卡的输出功能;

  • 3)支持低功耗模式。PLC 方案还支持低功耗,可以应用于语音前处理控制模块对功耗有要求的产品方案。

  • 4)主激活词二次唤醒功能。

  • 5)本地语音播报功能。本地语音播报功能包括主动播报和被动播报。主动 播报是 MCU 收到 DSP 处理完的数据,如果有唤醒事件,MCU 会主动播报唤醒 事件对应的播报语音。被动播报一般应用于从设备模块,8008C 与上位机通过串 口交互,串口通信协议可以使用我们的公用协议也可以自定义。一般处理流程是 DSP 处理完数据后,会发送给 MCU,MCU 判断是否有唤醒事件发生,如果有 唤醒事件发生,会通过串口发送消息数据给上位机,8008C 等待上位机返回的串 口数据,解析后播放相应的语音数据。目前支持 MP3 格式和 16K、8K,单通道,16Bit 的 WAV 数据。

  • 6)串口、I2S 发送音频数据;

有些方案需要 8008C 芯片 DSP 做语音前处理后的音频数据,PLC 方案支持 将 DSP 经过语音算法处理后的数据或者经过 OPUS、Speex 编码后的数据通过串 口和 I2S 发送给上位机做二次语音处理,比如 ASR,来实现一些语音前处理模块 的产品方案。

我们会提供一个带本地语音播报的 demo 给用户演示体验。固件和烧写在固 件烧写部分介绍。

CODEC 方案

CODEC 方案中把 GX8008C 充当音频解码芯片,在该方案中音频数据传输 方式有以下几种:

  • 通过 ADC 从 HOST 接受音频数据,经过 DSP 处理过后,然后通过 DAC 播 出。

  • 将 DSP 算法处理过的音频数据以及 VAD、KWS 信号通过 I2S 接口或 UART 发送到 HOST 端。

  • 支持从麦克风采集环境音频,经过芯片 DSP 语音算法前端处理,产生处理 后的语音信号,并通过音频接口输出到其他设备。

方案设计

  • 从 USB HOST 输出两路音频,其中一路输出给喇叭,另外一路输出给 UAC,用于算法处理。

  • 前处理系统内将 MIC 的数据和 USB HOST 送过来的 REF 数据整合为多 个 CONTEXT 的形式,分帧送往 DSP 进行算法处理。

  • 前处理系统通过USB将DSP处理后的音频送往USB HOST,并根据DSP 分析出的 VAD 和 KWS,向 HOST 发送不同的 HID 键值。

  • UAC 板上带有 RGB LED,颜色会根据声卡当前的工作状态进行切换。

  • USB HOST 可以通过 USB 对 UAC 板的灯光进行控制。

  • 支持 16K/48K 采样率

SDK

GX8008 UAC SDK 开发套件包含以下软件组件:

  • mcu_nor.bin
  • dsp.fw
  • bootx

以上开发套件包含了 MCU 固件、DSP 固件和串口烧录工具。

固件烧写

通过MCU端串口来进行固件的烧写,烧写的工具为bootx,烧写命令在Linux shell 下执行,每次烧写都需要板子 reset 或重新上电,具体的烧写命令如下:

1 download mcu_nor.bin

./bootx -m leo -t u -c download 0x0 mcu_nor.bin

2 download dsp.fw

./bootx -m leo -t u -c download 0x100000 dsp.fw

成功烧写后,重新启动系统,能在 MCU 端串口看到 MCU 的启动信息,如 图 6

使用流程

  • 使用 USB 线连接 UAC 板和 USB HOST,启动过程中灯光会有颜色变化。
    大约 1~2s 左右 LED 颜色变为蓝色的时候即表示系统启动完毕。

  • 如果有识别到唤醒词,LED 会闪烁一次红色。同时,系统会根据 VAD 和 KWS 发送与之对应的 HID 键值到 USB HOST。