说明书一种虚拟现实三维音效的实现方法及系统
技术领域
本发明涉及虚拟现实三维音效技术领域,尤其涉及一种虚拟现实三维音效的实现方法及系统。
背景技术
目前常见的立体声回放技术,环绕声效果,常见于商业影院以及家庭影院的音响系统。简单地讲,环绕声就是在人的不同方向放置发声装置,从而实现使得听者能够分辨来自各个方向的声音,增加声音的立体和真实感。和环绕声一样,虚拟三维音效也希望能够提高声音的立体感,但只需要使用两个声源,例如耳机的两个发声单元或者两个音箱。虚拟三维音效是利用对人类听觉空间定位,尝试还原人在自然环境中对声音的定位。由于人在声音定位时输入源只有左耳和右耳鼓膜的振动信息,因此我们理论上我们只需要两个声道即能模拟自然界中任意位置的外部声源。
但是很多的时候,只有单个声源的时候,人们也想体验立体三维音效,这时候,往往是不能得到满足的;或是听力出现障碍的人群,若是想享受一下立体三维音效的效果,那就是难上加难了;因此,用户急需一种在单个声源的情况下或在听力出现障碍的情况下,都能让用户体验到立体三维音效的效果的设备。
发明内容
本发明的目的是在于克服现有技术的不足,本发明提供了一种虚拟现实三维音效的实现方法及系统,以使用户得到更好的体验效果。
为了解决上述问题,本发明提出了一种虚拟现实三维音效的实现方法,所述方法包括:
获取用户的头部相对于竖直方向的偏转角度;
根据获取的所述用户的头部相对于竖直方向的偏转角度,判断所述头部相对于竖直方向的偏转角度是否大于阈值;
若是,则根据所述用户的头部相对于竖直方向的偏转角度对所述用户的头部在虚拟空间中的相对位置坐标进行更新,获取更新结果,根据所述更新结果对头部相关脉冲响应函数进行更新,利用更新后的头部相关脉冲响应函数对声音进行叠加,获取叠加组成的第一信号,将所述第一信号输出到所述用户的耳机上;
若否,采用头部相关脉冲响应函数对声音叠加组成,获取叠加组成的第二信号,将所述第二信号输出到所述用户的耳机上。
优选地,所述获取用户的头部相对于竖直方向的偏转角度包括:
采用结合加速仪和陀螺仪的卡尔曼滤波器获取用户的头部相对于竖直方向的偏转角度。
优选地,所述对所述用户的头部在虚拟空间中的相对位置坐标进行更新的步骤包括:
根据所述用户的头部相对于竖直方向的偏转角度,利用三角函数公式,获取所述用户的头部在虚拟空间中向竖直和水平方向移动的距离;
根据获取所述用户的头部在虚拟空间中向竖直和水平方向移动的距离,对所述用户在虚拟空间中的相对位置进行更新。
所述根据所述更新结果对头部相关脉冲响应函数进行更新的步骤包括:
所述更新结果为对所述用户的头部在虚拟空间中的相对位置坐标进行更新,获取更新后的所述用户的头部的左耳及右耳的三维坐标;
结合所述获取更新的所述用户的头部的左耳及右耳的三维坐标、头部相关脉冲响应数据库的数据,通过插值方式逐步更新头部相关脉冲响应函数,获取更新后的头部相关脉冲响应函数。
优选地,所述用户的头部的左耳及右耳的三维坐标的更新步骤包括:
判断用户的头部相对于竖直方向的偏转方向是向左偏转、向右偏转、向前偏转或向后偏转;
若所述用户的头部是向左偏转,则更新后的左耳A的坐标为(-x·cos(β-α),0,x·sin(β-α)),右耳B的坐标为(x·cos(β+α),0,x·sin(β+α));
若所述用户的头部是向右偏转,则更新后的左耳A的坐标为(-x·cos(β+α),0,x·sin(β-α)),右耳B的坐标为(x·cos(β-α),0,x·sin(β-α));
若所述用户的头部是向前偏转,则更新后的左耳A的坐标为(-x·cos(β),|x·cosβ-x·cos(β-α)|,x·sin(β-α)),右耳B的坐标为(x·cos(β),|x·cosβ-x·cos(β-α)|,x·sin(β-α));
若所述用户的头部是向后偏转,则更新后的左耳A的坐标为(-x·cos(β),-|x·cosβ-x·cos(β-α)|,x·sin(β-α)),右耳B的坐标为(x·cos(β),-|x·cosβ-x·cos(β-α)|,x·sin(β-α));
式中,x为左耳及右耳分别到坐标系原点的距离;β为左耳及右耳分别到坐标系的原点O的连线与X轴形成的夹角;α为用户头部相对竖直方向偏转的角度。
另外,本发明还提出了一种虚拟现实三维音效的实现系统,所述系统包括:
角度获取模块:用于获取用户的头部相对于竖直方向的偏转角度;
判断模块:用于判断所述获取用户的头部相对于竖直方向的偏转角度是否大于阈值;
更新模块:用于当判断模块判断为是时,则根据所述用户的头部相对于竖直方向的偏转角度对所述用户的头部在虚拟空间中的相对位置坐标进行更新,获取更新结果,根据所述更新结果对头部相关脉冲响应函数进行更新,获取更新后的头部相关脉冲响应函数;
声音叠加模块:用于根据所述更新后的头部相关脉冲响应函数对声音进行叠加,获取叠加组成的第一信号,或用于当判断模块判断为否时,则根据所述头部相关脉冲响应函数对声音进行叠加,获取叠加组成的第二信号;
信号输出模块:用于将获取的所述第一信号输出到所述用户的耳机上;或用于将获取的所述第二信号输出到所述用户的耳机上。
优选地,所述更新模块包括:
用户相对位置更新单元:用于根据所述用户的头部相对于竖直方向的 偏转角度对所述用户的头部在虚拟空间中的相对位置坐标进行更新;
函数更新单元:用于根据更新后的所述用户的头部在虚拟空间中的相对位置坐标更新所述头部相关脉冲响应函数。
优选地,所述用户相对位置更新单元包括:
距离获取子单元:用于根据所述用户的头部相对于竖直方向的偏转角度,利用三角函数公式,获所述用户在虚拟空间中向竖直和水平方向移动的距离;
用户相对位置更新子单元:用于根据所述用户的头部在虚拟空间中向竖直和水平方向移动的距离,对所述用户的头部在虚拟空间中的相对位置坐标进行更新。
优选地,所述函数更新单元包括:
数据获取子单元:用于获取所述用户的头部的左右耳的三维坐标和头部相关脉冲响应数据库的数据;
函数更新子单元:用于根据获取所述用户的头部的左右耳的三维坐标和所述头部相关脉冲响应数据库的数据,通过插值方式逐步更新头部相关脉冲响应函数,获取更新后的头部相关脉冲响应函数。
优选地,所述声音叠加模块包括:
第一叠加单元:用于根据所述更新后的头部相关脉冲响应函数对声音进行叠加,获取叠加组成的所述第一信号;
第二叠加单元:用于当判断模块判断为否时,根据所述头部相关脉冲响应函数对声音叠加组成,获取叠加组成的所述第二信号。
在本发明实施例中,可以实现使用头部控制来获取虚拟三维音效的效果,操作简单,适合广大的人群使用,特别是仅仅依靠听觉的残疾人士,可以提高用户的使用体验感。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员 来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例的虚拟现实三维音效的实现方法的流程示意图;
图2是本发明实施例的三维坐标系示意图;
图3是本发明实施例的虚拟现实三维音效的实现系统的结构组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例的虚拟现实三维音效的实现方法的流程示意图,如图1所示,该方法包括:
S11:获取用户的头部相对于竖直方向的偏转角度;
S12:根据获取用户的头部相对于竖直方向的偏转角度,判断用户的头部相对于竖直方向的偏转角度是否大于阈值,若是,则进入S13,若否,则进入S17;
S13:若是,则根据用户的头部相对于竖直方向的偏转角度对用户的头部在虚拟空间中的相对位置坐标进行更新,获取更新结果;
S14:根据更新结果对头部相关脉冲响应函数进行更新;
S15:利用更新后的用户的头部相关脉冲响应函数对声音进行叠加,获取叠加组成的第一信号;
S16:将获取的第一信号输出到用户的耳机上;
S17:若否,则无需更新用户在虚拟空间中的相对位置,采用用户的头部相关脉冲响应函数对声音叠加组成,获取叠加组成的第二信号;
S18:将获取的第二信号输出到用户的耳机上。
其中,对S11作进一步说明:
构建三维坐标系,获取用户头部坐标及双耳的坐标,采用加速仪和陀螺仪并结合卡尔曼滤波器获取用户的头部相对于竖直方向的偏转角度,即可获取双耳相对于竖直方向的偏转角度;这样可以解决单一使用加速仪可能存在的不稳定性问题或单一使用陀螺仪可能存在的误差较大的问题。
其中,对S12作进一步说明:
在本实施例中,设置阈值为0.5度,当用户的头部相对于竖直方向偏转小于或等于0.5度时,判断为不需要更新用户在虚拟空间中的相对位置;当用户的头部相对于竖直方向偏转大于0.5度时,判断为需要更新用户在虚拟空间中的相对位置。
对S13作进一步说明:
根据用户的头部相对于竖直方向的偏转角度,利用三角函数公式,获取用户的头部在虚拟空间中向竖直和水平方向移动的距离。
根据获取的用户的头部在虚拟空间中向竖直和水平方向移动的距离,对用户的头部在虚拟空间中的相对位置坐标进行更新。
其中,以用户的双耳作为判别用户的相对虚拟空移动端的距离;如图2所示,使用用户的头部中心构建一个三维的坐标系,其中左耳A及右耳B分别到坐标系的原点O的连线与X轴形成的夹角为β,,且左耳A及右耳B分别到坐标系的原点O的连线长度为x,用户的头部相对于竖直方向的偏转角度为α,即用户的双耳相对于竖直方向的偏转角度也为α,左耳及右耳相对于坐标系原点的距离都为x,左耳向上下移动的距离为hl=|x·sinβ-x·sin(β±α)|,右耳向上下移动的距离为
用户的双耳相对于水平方向移动的距离,左耳向水平位置移动距离为sl=|x·cosβ-x·cos(β±α)|,右耳向水平位置移动距离为获取用户的头部竖直和水平方向移动的距离。
根据勾股定理即可得到左耳实际位移的距离为右耳实际位移的距离为即可根据位移的距离更新用户在虚拟空间中的相对位置,获取更新头部三维坐标和更新的左耳及右耳的三维坐 标;
判断用户的头部相对于竖直方向的偏转方向是向左偏转、向右偏转、向前偏转或向后偏转;
若所述用户的头部是向左偏转,则更新后的左耳A的坐标为(-x·cos(β-α),0,x·sin(β-α)),右耳B的坐标为(x·cos(β+α),0,x·sin(β+α));
若所述用户的头部是向右偏转,则更新后的左耳A的坐标为(-x·cos(β+α),0,x·sin(β-α)),右耳B的坐标为(x·cos(β-α),0,x·sin(β-α));
若所述用户的头部是向前偏转,则更新后的左耳A的坐标为(-x·cos(β),|x·cosβ-x·cos(β-α)|,x·sin(β-α)),右耳B的坐标为(x·cos(β),|x·cosβ-x·cos(β-α)|,x·sin(β-α));
若所述用户的头部是向后偏转,则更新后的左耳A的坐标为(-x·cos(β),-|x·cosβ-x·cos(β-α)|,x·sin(β-α)),右耳B的坐标为(x·cos(β),-|x·cosβ-x·cos(β-α)|,x·sin(β-α))。
其中,对S14作进一步说明:
步骤S14中的更新结果为对用户的头部在虚拟空间中的相对位置坐标进行更新,获取更新后的用户的头部的左耳及右耳的三维坐标;
结合获取更新后的用户的头部的左耳及右耳的三维坐标、头部相关脉冲响应数据库的数据,通过插值方式逐步更新头部相关脉冲响应函数,获取更新后的头部相关脉冲响应函数。
其中,对S15或S17作进一步说明:
声音即为声源振动发出的声音信号;通过头部相关脉冲响应函数对声音信号进行叠加,获取第一信号或第二信号。
另外,本发明实施例还提供一种虚拟现实三维音效的实现系统,如图3所示,该系统包括:
角度获取模块31:用于获取用户的头部相对于竖直方向的偏转角度;
判断模块32:用于判断获取用户的头部相对于竖直方向的偏转角度是否大于阈值;
更新模块33:用于当判断模块判断为是时,则根据所述用户的头部相对于竖直方向的偏转角度对所述用户的头部在虚拟空间中的相对位置坐标进行更新,获取更新结果,根据所述更新结果对头部相关脉冲响应函数进行更新,获取更新后的头部相关脉冲响应函数;
声音叠加模块34:用于根据所述更新后的头部相关脉冲响应函数对声音进行叠加,获取叠加组成的第一信号,或用于当判断模块判断为否时,则根据所述头部相关脉冲响应函数对声音进行叠加,获取叠加组成的第二信号;
信号输出模块35:用于将获取的第一信号输出到用户的耳机上;或用于将获取的第二信号输出到用户的耳机上。
其中,更新模块33包括:
用户相对位置更新单元:用于根据用户的头部相对于竖直方向的偏转角度对用户的头部在虚拟空间中的相对位置坐标进行更新;
函数更新单元:用于根据更新后用户的头部在虚拟空间中的相对位置坐标更新头部相关脉冲响应函数。
其中,用户相对位置更新单元包括:
距离获取子单元:用于根据头部相对于竖直方向的偏转角度,利用三角函数公式,获取用户的头部在虚拟空间中向竖直和水平方向移动的距离;
其中,以用户的双耳作为判别用户的相对虚拟空移动端的距离;如图2所示,使用用户的头部中心构建一个三维的坐标系,其中左耳A及右耳B分别到坐标系的原点O的连线与X轴形成的夹角为β,且左耳A及右耳B分别到坐标系的原点O的连线长度为x,用户的头部相对于竖直方向的偏转角度为α,即用户的双耳相对于竖直方向的偏转角度也为α,左耳及右耳相对于坐标系原点的距离都为x,左耳向上下移动的距离为hl=|x·sinβ-x·sin(β±α)|,右耳向上下移动的距离为
用户的双耳相对于水平方向移动的距离,左耳向水平位置移动距离为sl=|x·cosβ-x·cos(β±α)|,右耳向水平位置移动距离为获取用户的头部竖直和水平方向移动 的距离。
更新子单元:用于根据用户的头部在虚拟空间中向竖直和水平方向移动的距离,对用户的头部在虚拟空间中的相对位置坐标进行更新。
根据上述获取的左耳向上下移动的距离为hl、右耳向上下移动的距离为hr、左耳向水平位置移动距离为sl和左耳向水平位置移动距离为sr;采用勾股定理,即可得到左耳实际位移的距离右耳实际位移的距离即可根据位移的距离更新用户在虚拟空间中的相对位置,获取更新头部三维坐标和更新的左耳及右耳的三维坐标;
若所述用户的头部是向左偏转,则更新后的左耳A的坐标为(-x·cos(β-α),0,x·sin(β-α)),右耳B的坐标为(x·cos(β+α),0,x·sin(β+α));
若所述用户的头部是向右偏转,则更新后的左耳A的坐标为(-x·cos(β+α),0,x·sin(β-α)),右耳B的坐标为(x·cos(β-α),0,x·sin(β-α));
若所述用户的头部是向前偏转,则更新后的左耳A的坐标为(-x·cos(β),|x·cosβ-x·cos(β-α)|,x·sin(β-α)),右耳B的坐标为(x·cos(β),|x·cosβ-x·cos(β-α)|,x·sin(β-α));
若所述用户的头部是向后偏转,则更新后的左耳A的坐标为(-x·cos(β),-|x·cosβ-x·cos(β-α)|,x·sin(β-α)),右耳B的坐标为(x·cos(β),-|x·cosβ-x·cos(β-α)|,x·sin(β-α))。
其中,所述函数更新单元包括:
数据获取子单元:用于获取所述用户的头部的左右耳的三维坐标和头部相关脉冲响应数据库的数据;
函数更新子单元:用于根据获取所述用户的头部的左右耳的三维坐标和所述头部相关脉冲响应数据库的数据,通过插值方式逐步更新头部相关脉冲响应函数,获取更新后的头部相关脉冲响应函数。
其中,声音叠加模块34包括:
第一叠加单元:用于根据更新后的头部相关脉冲响应函数对声音进行叠加,获取叠加组成的第一信号;
第二叠加单元:用于当判断模块判断为否时,根据所述头部相关脉冲响应函数对声音叠加组成,获取叠加组成的所述第二信号。
在本发明实施例中,可以实现使用头部控制来获取虚拟三维音效的效果,操作简单,适合广大的人群使用,特别是仅仅依靠听觉的残疾人士,可以提高用户的使用体验感。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,ReadOnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁盘或光盘等。
另外,以上对本发明实施例所提供的虚拟现实三维音效的实现方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。