首页 > 其他分享 >基于声学基元的高质量空间音频生成框架

基于声学基元的高质量空间音频生成框架

时间:2024-07-21 18:57:03浏览次数:8  
标签:渲染 声场 音频 基元 声学 信号

关键词:人体姿态、声学基元、空间音频建模、体积渲染

        过去几年中,渲染和动画制作逼真的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 倍

标签:渲染,声场,音频,基元,声学,信号
From: https://blog.csdn.net/robinfang2019/article/details/140591105

相关文章

  • 音频文件降噪及python示例
    操作系统:Windows10_x64Python版本:3.9.2noisereduce版本:3.0.2从事音频相关工作,大概率会碰到降噪问题,今天整理下之前学习音频文件降噪的笔记,并提供Audacity和python示例。我将从以下几个方面展开:noisereduce库介绍使用Audacity进行降噪使用fft滤波降噪使用noisereduce进......
  • A2B汽车音频总线:Master板作为独立的DSP开发板做开发(四)ADAU1452的音量调节1
    作者的话OP的这套AD2428的原厂A2B开发系统参考设计,已经写了几十篇文章了,最近有兄弟问OP,Master板既然用的是ADAU的DSP,板子上有一颗ADAU1452和一颗ADAU1761,能不能把他单独当做一个DSP评估板来用?所谓一板两吃?甚至一板三吃?既能评估A2B系统,又可以当ADAU1452和ADAU1761的开发板......
  • android audio不同音频流,(三)各音频流默认音量加载过程
    各音频流默认值,定义文件路径:frameworks/base/media/java/android/media/AudioSystem.java默认音量定义数组: /**@hide*/ publicstaticint[]DEFAULT_STREAM_VOLUME=newint[]{     4, //STREAM_VOICE_CALL     7, //STREAM_SYSTEM ......
  • Python数据获取(网页视频、音频版)
    爬取数据,上一章有介绍,不懂流言私信或者评论交流即可,在Python中编写爬虫通常涉及以下几个步骤:发送HTTP请求:使用requests库向目标网站发送请求。解析网页内容:使用BeautifulSoup从HTML中解析出需要的数据。下载视频文件:使用requests下载视频文件。保存到本地:将下载的视频文件......
  • iOS开发基础129-音频录制上传
    在Objective-C中,音频录制过程涉及几个关键步骤,包括配置录音设置、创建和启动录音机、处理录音会话以及将录制的音频文件上传到服务器。下面是一个详细的示例,包括创建一个简单的音频录制应用,以及将录制的音频文件上传到服务器的代码。1.设置音频会话我们需要使用AVFoundation框......
  • 小白学习微信小程序开发中的图片和音频处理
    微信小程序开发中,图片和音频的处理是非常常见的功能之一。在本文中,我将详细介绍如何在小程序中进行图片和音频的处理,并提供相关的代码案例。一、图片处理图片的选择和上传在小程序中,用户可以选择图片并上传。首先需要在app.json中注册chooseImage和uploadFile的相关权限。然......
  • 使用Django框架实现音频上传功能
    数据库设计(models.py)classMusic(models.Model):"""音乐"""name=models.CharField(verbose_name="音乐名字",max_length=32)singer=models.CharField(verbose_name="歌手",max_length=32)#本质上数据库也是Cha......
  • 数字音频基础­­­­­-从PCM说起
    首先问一个问题——一首歌大概几MB?AI回答一首歌的大小大约为40MB。‌这个估算基于WAV格式的音乐文件,‌这种格式由微软发明,‌以PCM编码为主,‌是多媒体音频中最广泛的格式之一。‌WAV文件的三个主要参数包括采样位数、‌采样频率和声道数。‌通常,‌以PCM编码的WAV文件采样位数是1......
  • STFT:解决音频-视频零样本学习 (ZSL) 中的挑战
        传统的监督学习方法需要大量的标记训练实例来进行训练,视听零样本学习的任务是利用音频和视频模态对对象或场景进行分类,即使在没有可用标记数据的情况下。为了解决传统监督方法的限制,提出了广义零样本学习(GeneralizedZero-ShotLearning,GZSL)的设置。GZSL方法允许......
  • 蓝牙(Bluetooth)音频协议 & 音频编解码协议
    简短不看版:协议名称  特点HSP(手机协议,Head-Set-Profile)提供手机与耳机之间通信所需的基本功能。连接和配置好后,耳机可以作为远程设备的音频输入和输出接口HFP(免提协议,Hands-Free-Profile)在HSP协议的基础上增加了一些扩展功能A2DP(高级音频传送协议,Adva......