一、可视化调试波束
上一章我们大概了解了下四个波束,这里官方给我们写了一个脚本,直观的展示了几个波束的运行可视化。
python3 xvf_tools.py doa_plot /home/raspberry/host_xvf_control/build/xvf_host --protocol i2c

运行如下,可以清楚看到每一束波形的方向(目前我就是在90度方向说话,输出处理过的波束刚好与beam1重合!):

二、音频输出的路径选择
这里我们继续跟着官方的文档走:
左声道:XVF3800的AEC和波束成形后的输出。
右声道:默认静音。
xvf_host --use i2c AUDIO_MGR_OP_L
xvf_host --use i2c AUDIO_MGR_OP_R

如下列表列出了一共12个通道对应不同的子通道选择:
| 类别 | 源 | 描述 |
|---|---|---|
| 0 | 没有声音 | 这是右声道输出的默认设置。 |
| 1 | 原始麦克风数据 - 放大前 | 0,1,2,3: 特定麦克风通过索引访问,未应用系统延迟。 |
| 2 | 解包麦克风数据 | 0,1,2,3: 解包的麦克风信号。如果使用打包输入,通过此类别访问打包的麦克风数据。如果没有使用打包输入,这些数据是未定义的。 |
| 3 | 带系统延迟的放大麦克风数据 | 0,1,2,3: 通过索引访问特定麦克风。此类别提供传递给SHF逻辑核心进行处理的麦克风信号。 |
| 4 | 远端(参考)数据 | 0: 通过I2S接收的远端数据,若需要,经过采样率转换为16 kHz。 |
| 5 | 带系统延迟的远端(参考)数据 | 0: 通过I2S接收的远端数据,若需要,经过采样率转换为16 kHz,并应用系统延迟。 |
| 6 | 处理后的数据 | 0,1: 慢速移动的后处理波束输出,2: 快速移动的后处理波束输出,3: "自动选择"波束;选择前面三个波束中最好的输出,推荐选项用于选择波束形成的输出。 |
| 7 | AEC残留/ASR数据 | 0,1,2,3: 指定麦克风的AEC残留,或者指定波束的ASR输出。 |
| 8 | 用户选择的通道 | 0,1: 目前这些通道复制自动选择波束(类别6,源3),是左声道输出的默认设置。 |
| 9 | SHF DSP后的通道 | 0,1,2,3: 用户SHF DSP后的所有输出通道。 |
| 10 | 远端原始数据 | 0,1,2,3,4,5: 从I2S逻辑核心传递到音频管理逻辑核心的数据。如果外部接口速率为48 kHz,所有源都携带有效数据。如果外部接口速率为16 kHz,仅源0和源1携带有效数据。有关这两个逻辑核心之间接口的信息,请参阅编程指南中的数据平面详细设计部分。 |
| 11 | 带系统延迟的放大麦克风数据(系统延迟前) | 0,1,2,3: 通过索引访问特定麦克风。 |
| 12 | 带系统延迟的放大远端(参考)数据 | 0: 通过I2S接收的远端数据,若需要,经过采样率转换为16 kHz,并应用可配置的固定增益和系统延迟。此类别提供传递给SHF逻辑核心进行处理的参考信号。 |
如图所示我们看到我们对应的左右的声道为如图文字标注的地方:

要将左声道输出设置为第 4 个原始麦克风信号(无增益),请发出以下命令:
xvf_host --use i2c AUDIO_MGR_OP_R 1 3
但是要注意原始音频非常的小,不是没有输出。

那么我们需要这么干,先设置增益到100,再输出3通道的索引3即可看到很大的音频(设置增益无法使原始MIC的音频增大,即无法增大通道1的所有索引):
xvf_host --use i2c AUDIO_MGR_MIC_GAIN 100
xvf_host --use i2c AUDIO_MGR_OP_R 3 3

使用如下命令可以恢复原来左右声道的默认配置:
xvf_host --use i2c AUDIO_MGR_OP_L 8 0
xvf_host --use i2c AUDIO_MGR_OP_R 0 0
三、普通GPIO的输出配置
其中通道0 索引6是红灯,索引7是绿灯
xvf_host --use i2c GPO_PORT_PIN_INDEX 0 6
设置占用比(0-100)设置亮度
xvf_host --use i2c GPO_PIN_PWM_DUTY 50
关闭
xvf_host --use i2c GPO_PIN_PWM_DUTY 0
