关键词:人体姿态、声学基元、空间音频建模、体积渲染
过去几年中,渲染和动画制作逼真的3D人体模型技术已经发展成熟,并且达到了令人印象深刻的质量水平。然而,与这些全身模型相关联的空间音频建模,却在很大程度上被忽视了。换句话说,尽管我们已经能够创建视觉上令人信服的3D人体模型,但如何模拟和渲染与这些模型相关联的空间声音,比如人体发出的声音,这方面的研究还非常有限。
本研究提出了一种新颖的声音渲染方法,该方法基于声学原语,灵感来源于最近在视觉神经渲染中依赖于体积原语(如立方体或高斯)的方法。与传统的基于单一高阶环境声场(如球谐函数)的方法不同,本研究将多个声学原语(每个代表低阶环境声学)附着在3D人体骨架上,并分别对每个原语进行声音辐射建模。这种方法不仅可以在人体附近模拟声音,而且可以显著减少声场表示的参数数量,从而实现更紧凑和高效的声场表示。
项目地址:https://wikichao.github.io/Acoustic-Primitives
通过这种方法,本研究旨在实现以下目标:
现有方法与所提出方法的直观对比
- 音视频驱动:给定人体姿态和头戴式麦克风的音频信号,可以准确渲染身体产生的声音场(如语音、打响指、拍手、脚步声等)。
- 实时渲染:引入声学原语使得3D声场景的实时渲染成为可能。
- 高质量:尽管只依赖于低阶环境声学表示,但实现了与现有技术相当的质量,同时避免了高计算成本。
1 相关工作
1.1 空间音频建模
- 传统信号处理和线性滤波器:这些方法基于声学理论,通过模拟声波在空间中的传播来生成空间音频。它们通常需要知道声源的位置和声音信号,并且在复杂场景中难以实现。
- 神经双耳渲染:一种基于神经网络的音频处理技术,旨在从单声道声源生成相对位置和方向的双耳声音。这种方法通过实时产生精确的空间音频,能够将单通道声源转换为具有真实空间感的双耳声音。它们通常需要大量的训练数据,并且难以扩展到多声道音频。
1.2 体积渲染中的基元
- 基元(Primitives):在计算机图形学中,基元是指构成复杂图形的基本几何形状。常见的基元包括点、线段、三角形等。这些基元通过组合和变换可以生成复杂的三维模型。
- 体素:体积元素(Volume Pixel)的简称,是三维空间中的最小单位。它类似于二维图像中的像素,但具有三维特性。每个体素包含一个值及其三维位置,这个值可以是灰度值、颜色值或其他物理量。体素渲染技术可以用于生成逼真的 3D 场景,但需要大量的参数来表示整个场景。
- 高斯函数:高斯函数可以用于表示体积中的局部特征,例如物体的形状和材质。高斯体素渲染技术可以用于生成逼真的 3D 场景,并且参数数量较少。
1.3 音视频学习
- 音频-视觉定位:这些方法利用音视频信息来定位声源的位置。它们可以应用于机器人、虚拟现实等领域。
- 源分离:这些方法利用音视频信息来分离混合音频中的不同声源。它们可以应用于语音识别、音乐制作等领域。
- 音视频关联:这些方法学习音频和视觉信号之间的关联,可以应用于视频内容分析、人机交互等领域。
2 方法论(基于声学基元的姿态引导声场生成)
声场生成框架的详细结构和流程
2.1 问题定义
- 输入:头部麦克风音频信号和 3D 人体姿态序列。
- 输出:任意 3D 位置处的音频信号。
- 目标:学习一个映射函数,将输入信息转换为目标位置的音频信号。
2.2 声辐射使用球面波函数
声辐射使用球面波函数的目的是为了高效、准确地模拟三维空间中的人体声场。球面波函数作为一种解波动方程的工具,能够帮助我们分析声波在空间中的传播和扩散
- 建立球面坐标系: 将人体周围的空间划分为球面坐标系,方便描述声波在空间中的传播路径。
- 引入球面谐波函数: 将声压表示为球面谐波函数的级数展开,其中每个球面谐波函数都代表声场中不同方向的声波分量。
- 利用球面波函数表示声场,并将其分解为多个声学基元。
- 每个声学基元由谐波系数、坐标和权重表示。
- 通过叠加多个声学基元的声场,可以生成整个 3D 声场。
2.3 多模态特征编码
多模态特征编码是指将人体姿态和声音信号分别进行编码,并融合在一起,用于预测声学原语参数。
- 音频编码:将音频信号转换为特征表示,并利用时间扭曲技术补偿时间延迟。
- 姿态编码:将人体姿态序列转换为特征表示,并计算相对坐标和距离。
- 音视频特征融合:将音频特征和姿态特征融合,以获取更丰富的信息。
2.4 声学基元解码
声学基元解码是指将融合特征解码为声学原语参数,从而控制声场的形状和强度。
- 声场解码器:根据融合后的特征生成声学基元的谐波系数。
- 基元偏移量:学习声学基元的偏移量,以更准确地表示声源的位置。
- 基元权重:学习声学基元的权重,以控制其在最终声场中的贡献。
2.5 可微声学基元渲染器
可微声学基元渲染器是指利用可微分的球面波函数将声学原语参数渲染为声场中任意位置的声压信号。
- 根据声学基元的信息,渲染目标位置的音频信号。
- 使用球面波函数计算声场,并叠加多个声学基元的声场。
- 渲染过程是可微的,可以进行端到端训练。
3 实验
3.1 实验设置
3.1.1 数据集(SoundingBodies)
- 音频数据:使用 345 个麦克风组成的球形麦克风阵列进行录制,采样率为 48 kHz。
- 视觉数据:使用 5 个 Kinect 传感器进行人体姿态跟踪,帧率为 30 fps。
- 内容:包含各种参与者在不同场景下表演的身体声音和语音,例如站立、坐着等。
- 分割:将录音分割成不重叠的 1 秒长度的片段。
- 分割:将数据集划分为训练集、验证集和测试集,分别为 10,076/1,469/1,431 个片段。
备注:
- Kinect传感器主要用于捕捉参与者的身体动作和姿态。这些传感器能够提供3D身体关节的坐标信息。
- 大型麦克风阵列由345个麦克风组成,以球形排列在录音区域周围。这种配置允许研究人员从不同角度和距离捕捉声音,从而获得全面的声音场数据。
数据集下载地址:https://github.com/facebookresearch/SoundingBodies
3.1.2 实现细节
3.1.2.1 网络结构
- 姿态编码器: 使用时间卷积层和 MLP 提取姿态序列中的时空特征。
- 声音编码器: 使用卷积层和 LSTM 提取频谱图中的局部和长程特征。
- 音频-姿态特征融合模块: 使用 ResNet 块和注意力模块融合姿态特征和声音特征。
- 声场解码器: 使用与声音编码器类似的结构,但输出通道数更多,以生成每个声学原语的球面谐波系数。
- 偏移量预测器: 使用 MLP 网络预测每个声学原语的偏移量。
- 权重预测器: 使用 MLP 网络预测每个声学原语的权重。
3.1.2.2 训练细节
- 使用 AdamW 优化器,学习率为 0.0002。
- 模型训练 100 个 epoch,大约需要 55 小时。
- 使用多尺度 STFT 损失、shift-ℓ1 损失和交叉熵损失函数进行训练。
3.1.3 评估指标
3.1.3.1 信号失真比 (SDR)
信号失真比是衡量音频信号质量的重要指标,表示信号与噪声、失真和其他干扰的比率。
- 通过比较预测的声场信号和真实声场信号之间的差异,计算信号失真比。
- SDR 值越高,表示预测的声场信号质量越好。
3.1.3.2 幅度误差
幅度误差是衡量预测声场信号和真实声场信号之间幅度差异的指标。
- 计算预测声场信号和真实声场信号幅度谱之间的 ℓ2 距离。
- 幅度误差越小,表示预测的声场信号幅度越接近真实声场信号。
3.1.3.3 相位误差
相位误差是衡量预测声场信号和真实声场信号之间相位差异的指标。
- 计算预测声场信号和真实声场信号相位谱之间的角度误差。
- 相位误差越小,表示预测的声场信号相位越接近真实声场信号。
3.2 结论
3.2.1 声场可视化
展示不同类型声音的声场可视化结果,例如语音、拍手、脚步声等。结果表明,模型能够正确地将不同类型的声音分配到相应的声学基元。
3.2.2 麦克风信号预测
展示不同麦克风位置的预测和真实音频信号。结果表明,模型能够准确地预测音频信号(除了低能量的拍打身体声音外),并且在大多数情况下能够保持良好的时间和幅度一致性。
本文的方法在 SDR、幅度误差和相位误差方面取得了与基线方法相当的性能,但推理速度提高了 15 倍。