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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++报错已解决】“Null Pointer Dereference“

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 在软件开发过程中,遇到 “Null Pointer Dereference” 报错可能会让你感到困惑。这个错误提示通常意味着你的程…

Git分支合并以及分支部分合并 提交记录合并

Git分支合并,以及分支部分合并,提交记录合并 最近工作中用到git分支合并的场景,记录一下. 分支整体合并,合并所有记录 仅合并分支部分代码

《从C/C++到Java入门指南》- 16.多维数组

多维数组 二维数组 打印一下 Java 中的二维数组会发现,打印的是 JVM 中的地址: import java.util.*; public class Main {public static void main(String[] args) {int arr[][] {{1, 2, 3},{4, 5, 6}};int ns[] {3, 4, 1, 3};System.out.println(A…

鸿蒙仓颉语言【互操作InterOp】

interoperate 语言的互操作,是必不可少的核心能力,在不同的操作系统平台上要与不同基础的OS接口api进行交互,以创建更合适的兼容层。 仓颉使用foreign关键字来声明调用的不同操作系统的基础API,声明的同时,明确数据类…

leetcode hot100 (面试复习用)

数组 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入:nums [-2,1,-3,4,-1,2,1,-5,4]输出:6解释&#xff1…

【Qt】按钮的属性相关API

目录 一. QPushButton 二. QRadioButton 按钮组 三. QCheckBox Qt中按钮的继承体系如下图 QAbstractButton是一个抽象类,集成了按钮的核心属性和API 按钮说明QPushButton(普通按钮)最常见的按钮,用于触发操作或者事件。可以设…

习题2.21

(defn rever [a](defn item[l r](if ( nil (first l)) r(item (rest l) (cons (first l) r))))(item a nil)) 这段代码非常有助于理解什么是深度优先,什么是广度优先。 很久没有写习题的代码了,倒不是懒得做习题了,是私事多,状态…

【系统架构设计】数据库系统(三)

数据库系统(三) 数据库模式与范式数据库设计备份与恢复分布式数据库系统分布式数据库的概念特点分类目标 分布式数据库的架构分布式数据库系统与并行数据库系统 数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库设计 备份与恢复 分布式数据库系统…

macbook pro大模型推理

安装与配置 参考github ollama 链接安装ollama。安装完成后,安装常用的模型,下载速度超快。 性能测试 在进行实际测试之前,我首先对模型进行了预处理,以确保其在 M3 Max 上能够高效运行。测试过程中,我主要关注了以下几个方面: 模型加载时间 加载大型模型通常需要较…

粘弹性和机械塑性等力学行为如何影响细胞行为?

组织和细胞外基质(ECM)是细胞生存和功能的关键组成部分,它们不仅提供细胞生长和迁移的结构支撑,还通过其力学特性影响着细胞的形态、功能和行为。组织和ECM并非简单的材料,它们展现出复杂且多样的力学行为,…

农场驿站平台小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,农场资讯管理,卖家管理,用户分享管理,分享类型管理,商品信息管理,商品分类管理,系统管理,订单管…

MATLAB学习日志DAY13

13.矩阵索引(1) 13.1 下标 上图! A 的行 i 和列 j 中的元素通过 A(i,j) 表示。 例如,A(4,2) 表示第四行和第二列中的数字。 在幻方矩阵中, A(4,2) 为 15。 A(1,4) A(2,4) A(3,4) A(4,4) 用来计算 A 第四列中的…

【PB案例学习笔记】-32制作一个简单记事本程序

大家好,我是晓凡。 写在前面 这是PB案例学习笔记系列文章的第32篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码…

JVM基本知识——运行空间

JVM(Java Virtual Machine)即Java虚拟机,是负责读取java字节码,并在实际的硬件环境中运行。 JVM可以分为三部分:类装载器(ClassLoader)子系统、内存空间、执行引擎 内存空间(运行时…

“狂飙”过后,大模型未来在何方?

2024年6月14日,第六届“北京智源大会”在中关村展示中心开幕。 开幕现场,智源研究院、OpenAI、百度、零一万物、百川智能、智谱AI、面壁智能等国内主流大模型公司CEO与CTO,人工智能顶尖学者和产业专家,在围绕人工智能关键技术路径…

【计算机网络】计算机网络的性能指标(上篇)

个人主页:【😊个人主页】 系列专栏:【❤️计算机网络】 文章目录 前言计算机网络的性能指标速率数据量速率的定义计算方法与测量影响因素优化方法 带宽带宽的定义影响因素计算方法优化方法 吞吐量定义测量与测试影响因素与带宽的区别提升方法…

数据结构(栈)

文章目录 一、概念与结构 栈:⼀种特殊的线性表,其只允许在固定的⼀端进⾏插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶,另⼀端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压…

docker compose 容器 编排分组

遇到问题:执行docker compose up -d 后docker compose 创建的容器们 在desktop-docker 中都在docker下一堆 搜索想着能不能把这个docker名字改一下,但是都没有找到这样的一个方案; 最后发现,我执行docker compose up -d 命令所在…

7. LangChain4j如何使用统一api调用?

前言 当我们对接LangChain4j的时候,面对复杂的各种各样的大模型的api的对接,让很多开发者感到力不从心。在每个大模型的api都不一样的时候?该如何快捷的切换模型的使用呢? 这时,One-API应运而生,它以其简洁…

面向初学者和专家的 40 大机器学习问答(2024 年更新)

面向初学者和专家的 40 大机器学习问答(2024 年更新) 一、介绍 机器学习是人工智能的重要组成部分,目前是数据科学中最受欢迎的技能之一。如果你是一名数据科学家,你需要擅长 python、SQL 和机器学习——没有两种方法。作为 DataFest 2017 的一部分,我们组织了各种技能测…