尊重原创,请勿转载! 作者:图林根の烤肠,如有纰漏欢迎指出。
日期:2015年12月31日
2020年6月注:因为年代是在久远,手头目前在忙于Unity和AR项目的事情,待时间赋予会抽空写一篇通过Python实现的内容,还请见谅~
讲完了 上一篇,现在可以开始实际演练。具体代码都可以从我的GitHub上面的HRTF文件夹下下载。
首先一句话概括3D音频实现的原理:找到对应空间的HRIR数值,然后卷积音频信号即可,是不是看上去很简单哈~
如果无法下载,可以移步百度网盘:
首先主要介绍一下这些文件的功能:
doc 文件夹里面是关于CIPIC HRTF的文档说明,具体相关的资料也可以参考官方网站,个人建议下载官方的那个全部Matlab文档(MATLAB version),总计170 Mb左右, 在下载完成后可以运行里面的showdata.m 文件,从而查看各个位置相关的频谱信息。
audio_with_brir.m 该函数是主要算法,描述了音频文件如何与 HRTF数据进行卷积,从而实现3D音效
hrir_final.mat 是CIPCI KEMAR 21号(Subject_021)的HRTF数据,该数据采用了大耳廓进行采集。
load_CIPIC_HRIR.m 的主要功能是读取 hrir_final.mat 的左右耳HRIR数据,然后在用于audio_with_brir.m文件进行信号卷积
nokia.wav 这个不用多说了,一段测试音频。诺基亚的经典铃声
main.m 为代码的运行的主文件
下面开始分别对各个文件进行解释说明:
a) 读取HRTF函数
从CIPIC的官方文档来看,该HRTF数据的空间坐标系为:
Azimut(方位角,及水平范围内)取值范围 【-80 -65 -55 -45 :5:45 55 65 80】一共25个点,其中从-45°到45°梯度为5°。以人眼为参照物来看,-90°为左耳方向,+90°为右耳方向。
Elevation(立体角?垂直范围内)的取值范围为 【 -45 + 5.625 * (0