空间音频 2

13|如何利用HRTF实现听音辨位?

此前介绍了空间音频的基本概念,以及如何采集和播放空间音频。基本掌握了空间音频的基本原理。事实上,在游戏、社交、影视等场景中,空间音频被广泛用于构建虚拟空间环境。

[En]

Previously introduced the basic concept of space audio, and how to collect and play space audio. Has basically mastered the basic principles of spatial audio. In fact, in games, social, film and television and other scenes, spatial audio is widely used to build a virtual space environment.

在空间音频的应用里最常见的一种就是”听音辨位”。比如在很多射击游戏中,能够通过耳机中目标的脚步、枪声等信息来判断目标的方向。如何利用 HRTF(Head Related Transfer Functions)头相关传递函数来实现”听音辨位”。

HRTF 简介

之前介绍的”双耳效应”实际上就是空间中音源的声波从不同的方向传播到左右耳的路径不同,所以音量、音色、延迟在左右耳会产生不同的变化。

实际上,这些声波的变化过程就是我们所说的声波的空间传递函数。当引入回波消除时,通过计算回波的空间传递函数来估计回波信号。

[En]

In fact, the changing process of these sound waves is what we call the spatial transfer function of sound waves. When introducing echo cancellation, the echo signal is estimated by calculating the spatial transfer function of the echo.

然后,如果我们提前测量和记录空间中不同位置的声源的空间传递函数,然后使用这个空间传递函数,只要有一个普通的单声道音频以及声源和听者在虚拟空间中的位置信息,我们就可以使用预先采集的空间传递函数来渲染左右耳的声音,从而实现“听来分辨位置”的功能。

[En]

Then, if we measure and record the spatial transfer functions of sound sources in different positions in space in advance, and then use this spatial transfer function, as long as there is an ordinary mono audio and the location information of the sound source and the listener in the virtual space, we can use the pre-collected spatial transfer function to render the sound of the left and right ears, so as to realize the function of “listening to distinguish the position”.

而这个和我们头部形状等信息相关的空间传递函数,也就是我们说的 头部相关传递函数(HRTF)。

再想一想:声源发出的声波是如何到达两只耳朵的?一部分声音不会受到房间的墙壁、地板或障碍物的干扰,而是通过空气直接传播到我们的耳朵,这被称为直达声。还有一些声波,通过太空障碍物或界面多次反射,最终传播到你的耳朵,导致太空中的折射或混响。显然,直接声音和混响加在一起就是你听到的所有声音。

[En]

Think again: how does the sound wave from the sound source reach both ears? Part of the sound is not disturbed by the walls, floors, or obstacles of the room, but spreads directly through the air to our ears, which is called direct sound. There are also some sound waves, which are reflected multiple times through space obstacles or interfaces and finally spread to your ears, resulting in refraction or reverberation in space. Obviously, direct sound and reverberation add up to all the sounds you hear.

如果需要渲染真实的空间音频,则需要渲染所有直接声音和混响。你有没有发现什么不对劲?

[En]

If you need to render a real spatial audio, you need to render all the direct sound and reverberation. Did you find anything wrong?

直达声与虚拟环境无关,混响则与听者的空间布局和声源的环境有关。例如,小房间的混响与沙漠中的混响有明显的不同,混响还与声源、听者和环境的相对位置有关,比如房间角落和房间中间的混响信号。这条道路显然不同。因此,直达声和混响通常需要分开处理。

[En]

*Direct sound has nothing to do with the virtual environment, while reverberation is related to the spatial layout of the listener and the environment of the sound source. For example, the reverberation in a small room is obviously different from that in the desert, and the reverberation is also related to the relative position of the sound source, the listener, and the environment, such as the reverberation signal in the corner of the room and in the middle of the room. the path is obviously different. Therefore, direct sound and reverberation usually need to be dealt with separately. *

先来看看 HRTF 中和直达声渲染相关的 HRIR(Head Related Impulse Response),也就是头部相关冲击响应是如何做直达声渲染的。

HRIR 与直达声渲染

HRIR 其实就是预先采集的直达声到达双耳的空间传递函数。为了得到一个线性系统的传递函数,通常会用一个脉冲信号作为系统的输入,然后记录这个系统的输出信号。当做直达声渲染时,只需要将原始音频卷积对应方向位置的双耳冲击响应就可以得到一个直达声的空间立体声了。

那么如何采集 HRIR?

为了排除混响只录制 HRIR,需要在全消实验室录制 HRIR。图 1 就是一个在全消实验室录制 HRIR 的示意图。在图 1 中看到,全消实验室的墙壁上有很多吸音尖劈,这些材料可以有效地吸收声波,所以在全消实验室里墙壁是不会产生混响的。

空间音频 2

图1 全消实验室真人录制HRIR

在采集 HRIR 时,真人采集就是让人带上入耳式麦克风,然后让扬声器(白色的一圈)在一个球面的不同位置播放脉冲信号。这样入耳式麦克风采集到的就是空间中各个角度的 HRIR 了。这里的扬声器是一个半弧形阵列,测完一个半弧形后可以改变俯仰角再测一组,直至把所有角度都测完。

当把所有方向的数据都采集完毕后,就可以得到一个球形的数据集。图 2 就是一个球形 HRIR 的坐标示意图。可以看到图 2 中央是人头所在的位置,周围的红点就是 HRIR 采集时音源的方位。

空间音频 2

图2 HRIR的采集点的空间分布

当然让一个真人一动不动地测完全套可以得到比较准确的数据,但是这一整套流程下来时间还是很长的。所以为了方便采集,也可以采用同样的方法,使用人工头来采集 HRIR,比如图 3 就是一个利用人工头来采集 HRIR 的例子。人工头上的耳廓可以更换,这样就可以实现可定制耳廓的 HRIR 的采集。

空间音频 2

图3 全消实验室人工头录制HRIR

通过采集到的 HRIR,就可以把单通道的音频分别和某个角度的双耳 HRIR 做卷积,从而渲染出特定方向的声音。可能会有疑问,人的耳朵外形轮廓有的不太一样,这会不会影响空间音频的效果呢?

确实每个人的头部形状可能不尽相同,如果用别人的 HRIR 来做空间音频的渲染可能没有你自己平时听得那么自然。从实际使用的结果上来看, 非定制化的 HRIR 渲染出的音频在角度的判断上差异不是很大,但是渲染后的音色可能会有一些细微的不同。但目前定制化的 HRIR 成本还是比较昂贵的,也许在未来人们都进入”元宇宙”,这种定制化的增强听感的需求会催生出一些新的更便宜且准确的定制化方案。

现在知道 HRIR 是怎么采集的了,再分享几个开源的 HRIR 的数据集。一个是MIT 的人工头数据集,一个是CIPIC 的真人数据集。

知道了 HRIR 的采集和渲染方法之后,就可以对任意一个单声道的音频进行直达声方位的渲染了。那么剩下的混响要如何去渲染呢?

RIR 与反射声渲染

相较于直达声,反射声或者说混响和空间环境、音源位置、听音者位置都是绑定在一起的。所以如果采用和人工头相似的方法去采集房间冲击响应(RIR),那么理论上一个房间内音源位置和听音位置的组合可以说是无限多的。

而且,即使一个房间内所有声源和收听位置的冲击响应都可以以离散的方式收集,房间的形状和大小在虚拟环境中也可以说是千变万化的。通过采样混响来渲染每一个是不可能的。

[En]

And even if the shock responses of all sound sources and listening positions in a room can be collected in a discrete way, the shape and size of the room can be said to be ever-changing in the virtual environment. It is impossible to render each by sampling reverberation.

在实践中,混响的功能不是提供准确的方向感,而是提供空间的大小,或对听者所处环境的感知。事实上,根据镜像原理(如图4所示),当通过接口反射到听者耳朵时,真实声源的声波可以等同于镜像声源的直达声。

[En]

In practice, the function of reverberation is not to provide an accurate sense of orientation but to provide the size of the space, or the perception of the environment in which the listener is located. In fact, according to the mirror image principle (shown in figure 4), the sound wave of a real sound source can be equivalent to the direct sound of a mirror sound source when reflected through the interface to the listener’s ear.

空间音频 2

图4 折射声镜像原理

假设在一个长方体的房间里唱歌(如图 5 所示)。那么发出的声音经过 6 个界面的多次反射会形成多个镜像声源。所以其实混响会让对声源位置的判断变得更模糊,但是由于直达声一般来说会比经过反射的混响的音量大一些,所以在一般的房间内不至于让你的听音失去方向感。

这里值得注意的是,反射声大致可以分为前期反射和后期反射。一般把前 50ms 的反射叫做前期反射,超过 50ms 的叫做后期反射。一般来说前期反射对我们语音的可懂度是有提升效果的,而后期反射太多则会让声音变浑浊,从而降低语音的可懂度。

空间音频 2

图5 长方体房间内的反射波示意图

这里讲的镜像原理其实也就是生成 RIR 的一种方法。这里分享一个基于镜像法的房间冲击响应的生成器。

事实上,镜像法的原理是给出房间界面的大小、反射声吸收系数和界面的空气衰减系数,然后通过镜像法对声源和听者在房间中的位置组合的房间冲击响应进行建模。将获得的脉冲响应与原始音频进行卷积,即可实现混响效果。

[En]

In fact, the principle of the mirror image method is to give the size of the room interface, the reflection sound absorption coefficient and the air attenuation coefficient of the interface, and then through the mirror image method to model the room impact response of the combination of the sound source and the listener’s position in the room. * reverberation can be rendered by convolution with the obtained impulse response and the original audio. *

在实际使用空间音频时,特别是在渲染实时空间音频时,需要注意很多事项。以下是几个常见问题:

[En]

There are many things to pay attention to when actually using spatial audio, especially when rendering real-time spatial audio. Here are several common problems:

  1. 如果想要用 RIR 给声音增加混响,那么原始的声音得是”干声”,也就是原始音频不能有混响。这一点是比较苛刻的。如果是在普通的房间录制的声音,比如客厅或者卧室,其实都已经有 200ms 到 1s 左右的混响了,再卷积一个 RIR 那么得到的混响可能比预期的更为浑浊,混响时间也更长一些。

  2. 如果音源位置或者听音者位置是移动的,也就是说需要实时生成 RIR 来对混响进行建模,但镜像法生成混响,尤其在混响时间比较长的时候算力是比较大的。有的时候得做出取舍,比如一个房间就使用一个固定的预设 RIR 来避免算力无法实时计算。这也是很多游戏体验中混响在一个房间内都是一样的原因。

  3. 真实的不一定是好听的,在歌曲制作时经常会使用一些人工混响效果器来代替真实混响,或者采集一些比较好的固定混响的样本,比如用”维也纳金色大厅”的混响 RIR 来进行混响的渲染。

小结

为了实现听音辨位,可以使用 HRTF 对空间音频进行渲染。

直达声可以采用预先采集的 HRIR 和原始音频通过卷积的方式来实现。基本上需要哪个方向的声音就去卷积哪个方向的 HRIR。HRIR 一般需要全消声实验室进行采集,可以使用一些开源库中的 HRIR 来实现。

反射声或者说混响的渲染则是采用卷积房间冲击响应 RIR 的形式来实现。由于 RIR 和房间的大小、材料、听音者和音源的位置都有关系,所以一般采用镜像法模拟的形式来实现。

在实时交互的场景里,空间音频渲染时计算的实时性是很重要的。这里说的卷积和前面回声消除里讲的自适应滤波器一样,都是可以用频域卷积来加速的,比如采样率是 48kHz 的音频。如果需要和超过 64 点以上的卷积核做卷积,那么用频域卷积会快于时域卷积。

Original: https://blog.csdn.net/qq_37756660/article/details/123476510
Author: Rye
Title: 空间音频 2

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/45598/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部