从原始音频定位多个声源
使用麦克风阵列捕获的音频来估计声源位置的研究已持续近四十年,该问题被称为声源定位(SSL)。当仅存在单个声源时,存在稳健、优雅且计算高效的SSL算法。但在实际场景中,经常会出现多人同时说话或演讲者讲话时投影仪产生噪音的情况。在此类场景中,大多数单声源SSL算法表现不佳。
在本月即将在国际声学、语音与信号处理会议上发表的论文中,我们提出了一种基于深度学习的多声源定位方法,相比现有技术有显著改进。该方法的关键在于一种新颖的系统输出编码方式——即多个声源位置的编码——从而避免了所谓的排列问题。
在实验中,我们使用模拟数据和AV16.3语料库的真实录音,对比了我们的方法与最先进的信号处理技术,最多同时处理三个活跃声源。根据该领域标准指标绝对到达方向,我们的方法提供了近15%的性能提升。
我们的方法也是一个端到端解决方案,意味着它直接从麦克风阵列捕获的原始音频输出多个声源的空间坐标,因此无需预处理或后处理。
排列问题
声音传播到麦克风阵列时,到达每个麦克风的时间略有不同,这些到达时间差指示了声源位置。对于单个声源,这种计算相对简单,存在稳健的信号处理解决方案。
然而,对于多个声源,计算变得指数级复杂,使得纯基于信号处理的解决方案难以处理不同的声学条件。深度神经网络应该能做得更好,但它们遇到了排列问题。
考虑以下示例,三个说话者共享对话空间。当任意两人同时说话时,深度网络输出六个值:两个说话者的3D坐标。
如果网络学会将第一个输出(前三个坐标)与说话者A关联,那么它必须将第二个输出同时与说话者B和C关联。但是,如果B和C同时说话(第三组),就不清楚哪个输出对应哪个说话者。
粗定位与精定位
为实现任意空间分辨率(即不受网格限制),我们采用分治策略。首先将声源粗定位到粗略定义的区域,然后在区域内进行精确定位。
如果区域包含至少一个声源,则称该区域为活跃区域,否则为非活跃区域。我们假设任何活跃区域中最多只能有一个活跃声源。对于每个区域,我们计算以下量:
- 区域包含声源的概率
- 声源与麦克风阵列中心之间的归一化欧几里得距离
- 声源相对于穿过阵列中心的水平线的归一化方位角
距离和角度使用每个扇形的最小和最大可能距离和角度进行归一化。
这种设计规避了排列问题。每个粗略区域(R1-R8)在网络输出层都有指定的节点集。因此,将任何给定区域中的声源与网络输出的位置估计关联起来没有歧义。
基于最近在分类任务中使用原始音频的成功经验,我们使用SampleCNN网络架构来消费来自麦克风阵列的多通道原始音频,并为每个区域输出上述三个量。在训练期间,我们对粗定位和精定位使用单独的成本函数(粗区域使用多标签分类成本,精定位使用最小二乘回归成本)。
实验结果
在我们的实验中,我们使用模拟的无混响和混响数据(使用合成房间脉冲响应),在围栏中随机放置最多四个活跃声源,以及来自AV16.3语料库的真实录音。在测试期间,我们首先检测概率超过特定阈值的活跃粗区域。这些活跃区域的精定位输出被视为每个活跃声源的位置。
实验结果表明,在无混响数据上训练的网络在混响数据上也表现良好,反之亦然。为了使同一网络在模拟数据和真实数据上都表现良好,我们使用100个真实数据样本和100个模拟数据样本在无混响和混响设置中对其进行了微调。
为了比较我们模型与基线的性能,我们使用了绝对DOA误差,即声源实际到达方向与估计到达方向之间的绝对差异。经过微调后,我们的系统能够在真实录音上显著优于最先进的方法。
据我们所知,这是第一个用于定位多个声源的端到端方法,可直接处理原始多通道音频数据。在与训练所用配置完全不同的围栏配置中部署我们的网络,需要少量微调数据。
由于我们的系统以原始音频作为输入并输出声源位置,它显著降低了部署多声源定位系统所需的领域知识。它也可以使用现有的深度学习框架轻松部署。