一种用于全景相机的全景音频处理方法与流程

文档序号:26498042发布日期:2021-09-04 01:01阅读:176来源:国知局
一种用于全景相机的全景音频处理方法与流程

1.本发明涉及音视频处理领域,具体是一种用于全景相机的全景音频信号处理方法。


背景技术:

2.全景视频是一种用特殊的全景摄像机进行全方位360度进行拍摄的视频,同时记录下了几乎全部角度和方位的图像信息,并通过数字图像处理的方法还原到特定角度通过屏幕进行显示,因此用户在观看视频的时候,可以利用手机触摸屏、遥控器、运动传感器等手段随意调节视频上下左右的方位进行观看,画面会跟随用户选定的角度进行旋转。
3.全景音频是由传统的立体声技术拓展而来。对于传统的多声道立体声音频格式而言,无论在录音还是在回放过程中,声道都与一个指定位置的录音设备或放音设备一一对应,因此是“基于回放设备布局”的音频格式。20世纪70年代,英国工程师michael anthony gerzon提出并发展了高保真度立体声响复制技术,也就是全景声格式音频,它可以看作是传统的blumlein立体声拾音制式(由英国工程师alan dower blumlein在20世纪30年代提出)在三维空间的扩展,能够以一种简单的麦克风排布方式实现3d空间音频的采集。虽然高保真度立体声响复制技术的相关硬件设备在那之后不久就被开发出来,但却未取得较大的商业成功。然而,由于高保真度立体声响复制技术具有许多传统立体声音频格式所不具备的特点,它吸引到了虚拟现实行业的关注。随着现代计算机技术和数字信号处理设备的普及,以及anthony gerzon针对原始技术申请的专利保护期满,相关的概念由重新被提起并加以发展。2015年起,youtube、bilibili等国内外知名视频网络平台依次开放了对360
°
全景视频的支持,全景声也成为了全景视频需求的一个部分。
4.目前的空间音频重放方式主要有三种,一种是基于大量扬声器规则排布的波阵面合成法,运用大量扬声器同时对准中心的无源区重放录制到的声波信息,其驱动信号为通过模拟声波在自由空间的传播过程解算而来,声波发出后由惠更斯原理在空间进行叠加而近似在中心对称的无源区构造出声场的波面,虽然效果极为精确,但由于其实现不方便、可听区域小等诸多不足,仅仅成为实验室的配置,而没能在个人用户领域取得发展和应用。另一种是球面解析法,将空间声波数据表现为球面正交分解的形式以缩小数据量,重放时根据扬声器摆放位置(例如7.1立体声)进行还原,该方法仍然需要一套家庭影院设备作为支撑,虽然解决了个人用户收听的问题,但移动设备端难以实现。第三种方法为hrtf滤波法,即已知声源位置时,用恰当的传递函数对声音进行滤波,体现双耳的到达时间差以及到达波强差,欺骗人的心理认知以构造声音的立体感,这方法主要应用于电子游戏中,因为电子游戏客户端内部具有全部对象的空间位置数据及其随时间即将经过的轨迹,因而能够方便地进行这些运算,而要对全景相机和麦克风所录制的内容实现实时处理,要涉及到对滤波器参数的动态更新,用户非常容易感受到扰动,并且hrtf数据的精确度有限,一般为声学实验室测量少数的离散点位所得,方位角跨度大,即便是使用内插法,也难以在空间位置指向方面实现“无级变速”式调整。
5.此外,目前的全景声格式均为影视创作等领域适合应用而设计,相应的软硬件产品也均为进行影视后期处理而准备。如直接用于实时直播则会导致全景音频内含的位置信息无法参与到实时处理过程之中,此时为了保证画面与声音的方向同步,则需要主播手持“麦克风阵列+视频相机组合体”时刻保持正对自己或被摄物,且相机与录音装置相对位置固定。亦或用于大型活动、比赛直播时需要现场影视工作人员设法移动拾音器跟随相机同步运动,虽有“全景”之名,却只能让用户感受到全景声场被定位到主播所决定的方向,用户无法实时地、自由地选择观察和聆听角度。如果相机位置固定,麦克风位置亦固定,常见的直播平台软件以及录音录像回放软件又没有支持声音的动态定位和实时渲染功能。
6.为了解决本领域以上三种全景声重发方法以及现有的音视频录播产品当中存在的问题,真正实现个人用户随时随地欣赏全景音视频内容并且实现统一数据流接入的前提下在用户端自由选择符合兴趣的观察角度,同时降低设备造价和实时运算力需求,降低直播和录制现场的部署、操作难度,减少后期工作量而设计了本发明所描述的音频处理方法。


技术实现要素:

7.针对现有全景音视频技术存在的不足,本发明的目的是提供一种用于全景视频相机的全景音频处理方法,以便解决现有技术设备种类数量繁多造价昂贵、实时性不佳、不方便部署及实现、终端用户交互性差的问题。
8.本发明所要解决的技术问题是:提供一种适配全景相机实时录制的全景声音频处理方法。该方法主要包括步骤:
9.步骤一、通过预处理模块的输入预处理模块音频数据输入接口ppad_in获得麦克风阵列左前lf、左后lb、右前rf和右后rb以及单声道音频输入第一路m1、第二路m2
……
第n路mn的时间离散的采样信号;通过预处理模块的预处理模块参数输入接口pp_para输入全部阵列麦克风输入数据相同增益g和数字带通滤波截止点f1和f2、单声道音频分别增益gn和数字带通滤波截止点fn_1和fn_2,gn中n为对应的单声道音频路数,fn_1和fn_2中n为对应的单声道音频路数;通过预处理模块音频数据输出接口ppad_out输出麦克风阵列音频左前通道数据lf_p、左后通道数据lb_p、右前通道数据rf_p、右后通道数据rb_p以及第n路mn单声道音频mn_p;
10.步骤二、由全景声编码模块与单声道音频声像摆放模块进行全景声转换,即将麦克风阵列的录音数据转换为全景声数据,作为中间格式,将单声道音频按照方向性混入全景声数据中全景声编码模块:包含全景声编码模块音频数据输入接口coad_in与全景声编码模块全景声数据输出接口cofoa_out,全景声编码模块音频数据输入接口coad_in连接预处理模块音频数据输出接口ppad_out,将lf_p、lb_p、rf_p、rb_p编码为空间全景声格式信号的全向分量w、前后向分量x、左右向分量y、上下向分量z,编码方法为时域信号做有限阶的球面调和函数分解并取分解系数作为结果,一阶的球面调和函数分解包括一个全向分量w以及三个一阶分量x、y、z,转换关系随麦克风阵列排布方式而不同,转换关系为:
[0011][0012]
x=1*((lf

lb)+(rf

rb))
[0013]
y=1*((lf

rb)

(rf

lb))
[0014]
z=1*((lf

lb)+(rb

rf))
[0015]
并将这个过程的结果w、x、y、z由cofoa_out输出;
[0016]
单声道音频声像摆放模块:包含单声道音频声像摆放模块多路音频数据输入接口panad_in、单声道音频声像摆放模块角度数据输入接口pandir_in和单声道音频声像摆放模块全景声数据输出接口panfoa_out,其功能为将单声道音频转换为对应方位的全景音频并相加,输出一路全景声格式数据,不选用角度数据输入时,则相当于一个多声道混音模块,定义方位角为θ、高度角为φ、单声道信号为s,则转换关系(以矩阵列操作表示)为:
[0017]
w=s*(sqrt(2)/2)
[0018]
x=s*cos(θ)cos(φ)
[0019]
y=s*sin(θ)cos(φ)
[0020]
z=s*sin(φ)
[0021]
将panad_in连接到ppad_out,取得来自用户设备输入,经输入预处理模块进行预处理操作后的n路单声道音频mn_p分别作为信号s,将pandir_in连接到用户提供角度信息的设备获取方位角θn、高度角φn,分别进行上式所述的转换后,将所得的n个全景声格式球面调和函数全向分量wn、前后向分量xn、左右向分量yn、上下向分量zn对应相加,得到w、x、y、z由panfoa_out输出;
[0022]
步骤三、进行音视频同步重定位,由动态声场定位处理模块完成,该模块包含动态声场定位处理模块第一全景声数据输入接口rotfoa_in1、动态声场定位处理模块第二全景声数据输入接口rotfoa_in2、动态声场定位处理模块修正角度信息输入接口rotdir_in1、动态声场定位处理模块重放定位角度信息输入接口rotdir_in2以及动态声场定位处理模块全景声数据输出接口rotfoa_out。将动态声场定位处理模块第一、第二全景声数据输入接口rotfoa_in1、rotfoa_in2分别连接到前文所述的cofoa_out和panfoa_out,将动态声场定位处理模块修正角度信息输入接口rotdir_in1(可选,如果使用)连接到安装于音频采集端(麦克风阵列或搭载麦克风阵列的设备所配备的)惯性测量器件,得到的角度信息用于统一全景音频与全景视频的坐标系。将动态声场定位处理模块重放定位角度信息输入接口rotdir_in2连接到安装在最终音视频重放端用来提供角度信息的设备,其信息可来自测量(惯性测量器件的读数)或输入(触摸屏、鼠标键盘、操纵杆的输入信号),该角度用于实时进行声场旋转定位,主要目标为使声音与全景视频保持方位同步,重新定位后的全景声格式音频数据作为输出,定义修正角度信息(麦克风阵列安装方向偏离全景视频视角水平面所致,由惯性测量器件测量所得)与重放角度信息(由用户端测量或手动指定)角度之和为总的横滚角roll、俯仰角pitch、航向角yaw。则计算旋转矩阵:
[0023]
横滚旋转矩阵
[0024][0025]
俯仰旋转矩阵
[0026][0027]
航向旋转矩阵
[0028][0029]
对三个旋转矩阵求矩阵乘法得到总旋转矩阵r
[0030]
r=rollm*pitchm*yawm
[0031]
并对全景声信号的一阶分量进行旋转操作,零阶(全向)分量不改变
[0032][0033]
wr=w
[0034]
得到旋转后的全向分量wr、旋转后的前后向分量xr、旋转后的左右向分量yr、旋转后的上下向分量zr,由rotfoa_out输出。
[0035]
步骤四、进行全景声格式解码,由虚拟扬声器解码模块完成。该模块包含虚拟扬声器解码模块全景声数据输入接口decfoa_in、虚拟扬声器解码模块虚拟扬声器方位信息输入接口decdir_in、虚拟扬声器解码模块扬声器信号输出接口decls_out。虚拟扬声器解码模块全景声数据输入接口decfoa_in连接到前文所述动态声场定位处理模块的rotfoa_out接收wr、xr、yr、zr数据,并从decdir_in连接到用户端设备获取用户给定的虚拟扬声器摆放位置,以便对全景声格式的音频数据进行解算,所得结果为第n路扬声器的驱动信号lsn,由扬声器信号输出接口decls_out输出。方法及解释如下:
[0036]
相关理论表明,重放系统的虚拟扬声器数量q与球面调和分解的最高阶n应满足如下关系:
[0037]
q≥(n+1)2[0038]
定义q个虚拟扬声器,分布为球面上方位角为azx,高度角为elx的各点。
[0039]
定义扬声器方向:
[0040]
ωx=(azx,elx)
[0041]
在球坐标定义源点:rs为源点半径,ωs为源点方向,θs为源点方位角,φs为源点高度角
[0042]
(rs,ωs)=(rs,θs,φs)
[0043]
在球坐标下定义场点:r为场点半径,ω为场点方向,θ为场点方位角,φ为场点高度角
[0044]
(r,ω)=(r,θ,φ)
[0045]
设待求解的扬声器驱动信号为:
[0046]
e(ωx)
[0047]
通过计算下式得到声压的球面调和函数分解:
[0048][0049]
其中e
i
为第i路扬声器的驱动信号,j
l
(kr)为l阶球贝塞尔函数,为l阶球面调和函数,k为波数,s为平面波源振幅,i、m、l均为求和的计数。
[0050]
则联立后两个等式,截断到n阶,并化为运算形式有以下方程:
[0051]
s
n
y
s
=ye
[0052]
为了求解e,将上式化为:
[0053]
e=s
n
dy
s
[0054]
其中sn为第n个波源的平面波振幅。
[0055]
上式中的ys称为归一化独立编码信号,其矩阵形式为:
[0056][0057]
其中y矩阵为扬声器方向上的球面调和函数分量的矩阵形式,其尺寸应为(n^2)*q:
[0058][0059]
对y求伪逆得到d:
[0060][0061]
得到的d矩阵即为全景声解码矩阵,当
[0062]
q≥(n+1)2[0063]
则可以根据以下方程计算出扬声器驱动信号
[0064]
e=s0dy
s
[0065]
由于全景声格式已经包含ys中的信息,上式变为全景声格式数据与该矩阵求乘法
[0066]
ls=[ls1
ꢀ…ꢀ
lsq]=[wr yr zr xr]*d
[0067]
若需要使用扬声器重放全景声,只需将真实扬声器摆放与虚拟扬声器排布一致,满足:
[0068][0069]
再将ls矩阵的对应列作为第1到q个扬声器的驱动信号输出到decls_out即可。这一系统的最佳听音位置为扬声器阵列中心。
[0070]
到该步骤执行完为止,麦克风阵列信号lf、lb、rf、rb与单声道音频信号m1、m2
……
mn已经在步骤一中被分别预处理,在步骤二中基于全景声w、x、y、z分量的格式被混合,在步骤三中跟随全景视频的角度信息进行了声场角度重定位而生成了wr、xr、yr、zr,在本步中wr、xr、yr、zr分量按照扬声器摆放位置进行了时域解码演算,现已准备好通过扬声器播放。如需通过耳机重放该全景声录音,则需继续进行下一步骤。
[0071]
步骤五、进行耳机信号解码,由心理声学耳机重放模块完成。该模块包含心理声学耳机重放模块扬声器音频信号输入接口hpdvls_in、心理声学耳机重放模块方位信息输入接口hpddir_in以及心理声学耳机重放模块耳机信号输出接口hpdad_out。心理声学耳机重放模块扬声器音频信号输入接口hpdvls_in连接至虚拟扬声器解码模块的decls_out,心理
声学耳机重放模块方位信息输入接口hpddir_in连接到用户设备,输入的方位信息通常应当与虚拟扬声器解码模块的方位信息相同,由用户指定。模块通过人类头相关传递函数(hrtf)构造滤波器对输入信号进行滤波处理,得到耳机信号,由hpdad_out输出,用户设备(例如音频dac、耳机放大器等)连接到这一端口,获取信号通过耳机播放供听音者聆听。
[0072]
定义q段声源来自球面上方位角和高度角与1

q个虚拟扬声器重合的左耳头相关脉冲响应序列,组成矩阵为:
[0073]
[hrir_l1
ꢀ…ꢀ
hrir_lq]
[0074]
同理可定义q段右耳关于以上方位的脉冲响应序列,组成矩阵为:
[0075]
[hrir_r1
ꢀ…ꢀ
hrir_rq]
[0076]
可以通过以下计算实现hrtf滤波器
[0077][0078][0079]
其中dft()表示离散傅里叶变换算法,idft()表示离散逆傅里叶变换算法,x为求和计数考虑到实际音频信号序列长度远远大于脉冲响应序列长度,应当对实际音频信号截断成帧,考虑到截断效应(吉布斯现象),应当配合使用重叠

相加法或重叠

保留法消除失真。
[0080]
到该步骤执行完为止,麦克风阵列信号lf、lb、rf、rb与单声道音频信号m1、m2
……
mn已经在步骤一中被分别预处理,在步骤二中基于全景声w、x、y、z分量的格式被混合,在步骤三中跟随全景视频的角度信息进行了声场角度重定位而生成了wr、xr、yr、zr,在步骤四中wr、xr、yr、zr分量按照扬声器摆放位置进行了时域解码演算得到第n路扬声器的驱动信号lsn,这q个信号在本步中进行了心理声学滤波处理得到了耳机端的驱动信号,即可通过hpdad_out输出送入双耳传声器。
[0081]
以上步骤中所述的“模块”为抽象的逻辑概念,既可以硬件实现,也可以软件实现。模块的概念仅为方便表示信号流与处理方法。以上所述的“连接”一词既可以是电路连接,也可以是程序参数传递,亦可以是数据通信或计算机网络等手段。相应地,“接口”既可以是模拟信号或逻辑电路接口,也可以是软件函数调用接口,亦可以是数据包或适当定义的网络连接等。
[0082]
本发明的设备实现简单,造价低,最简形式仅需最少4个麦克风以及4个扬声器(或一副立体声耳机)即可实现,解决了现有技术设备种类数量繁多造价昂贵的问题。
[0083]
本发明的计算方法固定且为纯数学步骤,理论上任何平台均可实现,可方便部署至各种设备中进行实时处理,解决了现有技术实时性不佳、不方便部署及实现的问题。
[0084]
本发明能够利用统一音频格式对重放空间声场进行任意角度重定位,配合全景视频录放设备可以极大提升用户对于现场视听的体验,解决了终端用户交互性差的问题本发明的各部分具有抽象的连接性而不局限于某个设备内部,因此可以方便地兼容目前现有的音频技术,充分利用已有音频设备,进一步提高了可实现性。
[0085]
本发明属于方法性创新,不局限于具体实现参数,只要符合一定条件就可以方便地应用于各种音频系统,具有一定的普适性。
附图说明
[0086]
图1:本发明的结构示意图。
具体实施方式:
[0087]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实例仅用以解释本发明,并不限定本发明。
[0088]
本实例的麦克风阵列音频信号由音频设备连接电脑提供,选用48000khz的音频信号,4支超心形指向电容麦克风作为拾音器组成正四面体型麦克风阵列,同步采样。单声道音频信号由一段音频波形文件提供,本发明及本实例所提及的算法均在matlab r2019b simulink平台实现。
[0089]
步骤一、进行准备工作,主要由输入预处理模块完成。该模块包含输入预处理模块音频数据输入接口ppad_in、输入预处理模块音频数据输出接口ppad_out、输入预处理模块参数输入接口pp_para,输入预处理模块音频数据输入接口ppad_in连接到阵列麦克风(4路同步,摆放于正四面体顶点位置)与单声道音频(本实例选用4个,即下文n=1~4)。
[0090]
该模块采集输入数据,若输入信号为通用的串行音频协议传输例如iis、tdm、s/pdif等,则按对应标准进行协议解析和通道分离,若为网络传输,则进行缓冲、解包、排序、提取数据操作,最终获得麦克风阵列左前(lf)、左后(lb)、右前(rf)和右后(rb)以及单声道音频输入第一路m1、第二路m2
……
第n路mn的时间离散的采样信号。
[0091]
该模块对数据进行增益、滤波处理,对于lf、lb、rf、rb信号为了保证系统群延时固定且各通道不发生相对移相,处理方法为对全部阵列麦克风输入数据做相同增益g,并进行截止点为f1、f2的数字带通滤波,g、f1、f2由输入预处理模块参数输入接口pp_para输入。该模块亦对单声道音频m1、m2
……
mn分别施加增益gn、截止点为fn_1、fn_2的数字带通滤波、对应参数由输入预处理模块参数输入接口pp_para输入。
[0092]
经过上述通道分离、增益、滤波处理后的麦克风阵列音频左前通道数据lf_p、左后通道数据lb_p、右前通道数据rf_p、右后通道数据rb_p以及第n路单声道音频mn_p由ppad_out输出。
[0093]
步骤二、进行全景声转换,主要由全景声编码模块与单声道音频声像摆放模块完成。这一步骤的实质是将麦克风阵列的录音数据转换为全景声数据,作为中间格式,将单声道音频按照方向性混入全景声数据中(可指定方向性或无方向性)。
[0094]
全景声编码模块:该模块包含全景声编码模块音频数据输入接口coad_in与全景声编码模块全景声数据输出接口cofoa_out,全景声编码模块音频数据输入接口coad_in连接到输入预处理模块音频数据输出接口ppad_out,将前文所述阵列麦克风系统经预处理的信号lf_p、lb_p、rf_p、rb_p编码为空间全景声格式信号的全向分量w、前后向分量x、左右向分量y、上下向分量z,编码方法为时域信号做有限阶的球面调和函数分解并取分解系数作为结果,一阶的球面调和函数分解包括一个全向(0阶)分量w以及三个一阶分量x、y、z,转换关系随麦克风阵列排布方式而不同,本实例以正四面体规则排布,仍然定义麦克风位置为左前(lf)、左后(lb)、右前(rf)和右后(rb),转换关系(以矩阵列操作表示)为:
[0095]
w=(sqrt(3)/3)*(lf+lb+rf+rb)
[0096]
x=1*((lf

lb)+(rf

rb))
[0097]
y=1*((lf

rb)

(rf

lb))
[0098]
z=1*((lf

lb)+(rb

rf))
[0099]
并将这个过程的结果w、x、y、z由cofoa_out输出。
[0100]
单声道音频声像摆放模块:该模块包含单声道音频声像摆放模块多路音频数据输入接口panad_in、单声道音频声像摆放模块角度数据输入接口pandir_in(可选,如果选用,则音频数据与角度数据一一对应)和单声道音频声像摆放模块全景声数据输出接口panfoa_out,其功能为将单声道音频转换为对应方位的全景音频并相加,输出一路全景声格式数据,不选用角度数据输入时,则相当于一个多声道混音模块,定义方位角为θ、高度角为φ、单声道信号为s,则转换关系(以矩阵列操作表示)为:
[0101]
w=s*(sqrt(2)/2)
[0102]
x=s*cos(θ)cos(φ)
[0103]
y=s*sin(θ)cos(φ)
[0104]
z=s*sin(φ)
[0105]
将panad_in连接到ppad_out,取得来自用户设备输入,经输入预处理模块进行预处理操作后的n路单声道音频mn_p分别作为信号s,将pandir_in连接到用户提供角度信息的设备获取方位角θn、高度角φn,分别进行上式所述的转换后,将所得的n个全景声格式球面调和函数全向分量wn、前后向分量xn、左右向分量yn、上下向分量zn对应相加,得到w、x、y、z由panfoa_out输出。
[0106]
步骤三、进行音视频同步重定位,由动态声场定位处理模块完成,该模块包含动态声场定位处理模块第一全景声数据输入接口rotfoa_in1、动态声场定位处理模块第二全景声数据输入接口rotfoa_in2、动态声场定位处理模块修正角度信息输入接口rotdir_in1、动态声场定位处理模块重放定位角度信息输入接口rotdir_in2以及动态声场定位处理模块全景声数据输出接口rotfoa_out。将动态声场定位处理模块第一、第二全景声数据输入接口rotfoa_in1、rotfoa_in2分别连接到前文所述的cofoa_out和panfoa_out,将动态声场定位处理模块修正角度信息输入接口rotdir_in1(可选,如果使用)连接到安装于音频采集端(麦克风阵列或搭载麦克风阵列的设备所配备的)惯性测量器件,得到的角度信息用于统一全景音频与全景视频的坐标系。将动态声场定位处理模块重放定位角度信息输入接口rotdir_in2连接到安装在最终音视频重放端用来提供角度信息的设备,其信息可来自测量(惯性测量器件的读数)或输入(触摸屏、鼠标键盘、操纵杆的输入信号),该角度用于实时进行声场旋转定位,主要目标为使声音与全景视频保持方位同步,重新定位后的全景声格式音频数据作为输出,定义修正角度信息(麦克风阵列安装方向偏离全景视频视角水平面所致,由惯性测量器件测量所得)与重放角度信息(由用户端测量或手动指定)角度之和为总的横滚角roll、俯仰角pitch、航向角yaw。则计算旋转矩阵:
[0107]
横滚旋转矩阵
[0108][0109]
俯仰旋转矩阵
[0110][0111]
航向旋转矩阵
[0112][0113]
对三个旋转矩阵求矩阵乘法得到总旋转矩阵r
[0114]
r=rollm*pitchm*yawm
[0115]
并对全景声信号的一阶分量进行旋转操作,零阶(全向)分量不改变
[0116][0117]
wr=w
[0118]
得到旋转后的全向分量wr、旋转后的前后向分量xr、旋转后的左右向分量yr、旋转后的上下向分量zr,由rotfoa_out输出。
[0119]
步骤四、进行全景声格式解码,由虚拟扬声器解码模块完成。该模块包含全景声数据输入接口decfoa_in、虚拟扬声器方位信息输入接口decdir_in、扬声器信号输出接口decls_out。全景声数据输入接口decfoa_in连接到动态声场定位处理模块的输出端rotfoa_out接收wr、xr、yr、zr数据,并从decdir_in连接到用户端设备获取用户给定的虚拟扬声器摆放位置,以便对全景声格式的数据进行解算,得到的处理结果为对应通道的普通音频信号lsn,由扬声器信号输出接口decls_out输出。方法及解释如下:
[0120]
相关理论表明,重放系统的虚拟扬声器数量q与球面调和分解的最高阶n应满足如下关系:
[0121]
q≥(n+1)2[0122]
定义q个虚拟扬声器,分布为球面上方位角为azx,高度角为elx的各点,本实例中取q=8,n=1,方位角azx和高度角elx分别取球内接正方体的8个顶点所在位置,该正方体各面的法向与直角坐标系坐标轴共线。由于对后续结果无影响,azx、elx在矩阵中先后顺序不限。
[0123]
定义扬声器方向:
[0124]
ωx=(azx,elx)
[0125]
在球坐标定义源点:rs为源点半径,ωs为源点方向,θs为源点方位角,φs为源点高度角
[0126]
(rs,ωs)=(rs,θs,φs)
[0127]
在球坐标下定义场点:r为场点半径,ω为场点方向,θ为场点方位角,φ为场点高度角
[0128]
(r,ω)=(r,θ,φ)
[0129]
设待求解的扬声器驱动信号为:
[0130]
e(ωx)
[0131]
通过计算下式得到声压的球面调和函数分解:
[0132][0133]
其中e
i
为第i路扬声器的驱动信号,j
l
(kr)为l阶球贝塞尔函数,为l阶球面调和函数,k为波数,s为平面波源振幅,i、m、l均为求和的计数。
[0134]
则联立后两个等式,截断到n阶,并化为运算形式有以下方程:
[0135]
s
n
y
s
=ye
[0136]
为了求解e,将上式化为:
[0137]
e=s
n
dy
s
[0138]
其中sn为第n个波源的平面波振幅。
[0139]
上式中的ys称为归一化独立编码信号,其矩阵形式为:
[0140][0141]
其中y矩阵为扬声器方向上的球面调和函数分量的矩阵形式,其尺寸应为(n^2)*q:
[0142][0143]
对y求伪逆得到d:
[0144][0145]
得到的d矩阵即为全景声解码矩阵,当
[0146]
q≥(n+1)2[0147]
则可以根据以下方程计算出扬声器驱动信号
[0148]
e=s0dy
s
[0149]
由于全景声格式已经包含ys中的信息,上式变为全景声格式数据与该矩阵求乘法
[0150]
ls=[ls1
ꢀ…ꢀ
lsq]=[wr yr zr xr]*d
[0151]
若需要使用扬声器重放全景声,只需将真实扬声器摆放与虚拟扬声器排布一致,满足:
[0152][0153]
再将ls矩阵的对应列作为第1到q个扬声器的驱动信号输出到decls_out即可。这一系统的最佳听音位置为扬声器阵列中心。在本步中wr、xr、yr、zr分量按照扬声器摆放位置进行了时域解码演算,现已准备好通过扬声器播放。如需通过耳机重放该全景声录音,则需继续进行下一步骤。
[0154]
步骤五、进行耳机信号解码,由心理声学耳机重放模块完成。该模块包含扬声器音频信号输入接口hpdvls_in(若干个,本例中为q=8个)、方位信息输入接口hpddir_in(与扬
声器音频信号一一对应)以及耳机信号输出接口hpdad_out,扬声器音频信号输入接口hpdvls_in连接至虚拟扬声器解码模块的输出接口decls_out,方位信息输入接口hpddir_in连接到用户设备,输入的方位信息通常应当与虚拟扬声器解码模块的方位信息相同,由用户指定。模块通过人类头相关传递函数(hrtf)对输入信号进行处理,得到耳机信号,由hpdad_out输出,用户设备(例如音频dac、耳机放大器等)连接到这一端口,获取信号通过耳机播放供听音者聆听。方法如下:
[0155]
定义q段声源来自球面上方位角和高度角与1

q个虚拟扬声器重合的左耳头相关脉冲响应序列
[0156]
[hrir_l1
ꢀ…ꢀ
hrir_lq]
[0157]
同理可定义q段右耳关于以上方位的脉冲响应序列
[0158]
[hrir_r1
ꢀ…ꢀ
hrir_rq]
[0159]
本实例中该序列长度为256,可以通过以下计算实现hrtf滤波器
[0160][0161][0162]
本例中由于音频设备获取到的实际音频信号序列长度远远大于脉冲响应序列长度,对实际音频信号截断成帧,本实例中设定帧长为769采样点,考虑到截断效应(吉布斯现象),配合使用数字信号处理领域通用的“重叠

保留法”计算卷积以消除失真,两帧间重叠范围为总帧长1024采样点的四分之一即256采样点。届时,dft、idft运算即可换为1024点fft、ifft进行快速计算。得到结果后截断,仅保留后769个采样点作为本帧的输出信号。
[0163]
连续运行该算法,将音频设备的采样信号作为对ppad_in的输入,执行后从hpdad_out得到的左右声道信号即为耳机驱动信号,即可经电脑声卡输出送入耳机进行聆听。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1