本发明涉及声音处理技术领域,尤其涉及一种音效的拟合方法及其系统。
背景技术:
次世代游戏开发过程中,可能需要体现大规模战争的临场感,除了画面表现以外,音效也是非常重要的一环,但是一般的游戏只能使用32甚至64个声音通道,对于部分游戏需要成千上万的游戏单位来说这点是远远不够的,如果对战场中所有游戏单位都播放需要的声音,最终会导致大量的CPU资源占用,以及爆音、声音截断等影响用户体验的现象发生。
技术实现要素:
本发明所要解决的技术问题是:提出一种音效的拟合方法及其系统,可减少资源占用,且提升用户体验。
为了解决上述技术问题,本发明采用的技术方案为:一种音效的拟合方法,包括:
遍历预设范围内的音源;
获取所述音源的位置、音源的速度以及摄像机的位置;
根据所述音源的位置、音源的速度以及摄像机的位置,计算得到所述音源相对摄像机的方向和声音强度;
将所述方向和声音强度代入球形高斯函数,得到球形高斯函数的参数的值,所述参数包括轴、锐度和强度,所述球形高斯函数的公式为G(v;μ,λ,a)=aeλ(μ·v-1),其中,μ为轴,λ为锐度,a为强度;
根据摄像机的位置以及所述轴、锐度和强度,创建虚拟音源。
本发明还涉及一种音效的拟合系统,包括:
遍历模块,用于遍历预设范围内的音源;
获取模块,用于获取所述音源的位置、音源的速度以及摄像机的位置;
第一得到模块,用于根据所述音源的位置、音源的速度以及摄像机的位置,计算得到所述音源相对摄像机的方向和声音强度;
第二得到模块,用于将所述方向和声音强度代入球形高斯函数,得到球形高斯函数的参数的值,所述参数包括轴、锐度和强度,所述球形高斯函数的公式为G(v;μ,λ,a)=aeλ(μ·v-1),其中,μ为轴,λ为锐度,a为强度;
创建模块,用于根据摄像机的位置以及所述轴、锐度和强度,创建虚拟音源。
本发明的有益效果在于:通过将一定范围的音源拟合成一个虚拟音源,由一个虚拟音源来表示整体音源的方向、音量以及频率高低等,由于一个虚拟音源只需占用一个或几个声音通道,因此极大地减少了资源和性能消耗,且也为了更丰富的音效表现留出空间,同时可减少爆音、声音截断等问题,提升用户体验;本发明只需要产生一个虚拟音源即可粗略取代原来独立的大量音源,实际表现平滑变化、层次明显、互不干扰,并且为了其他音效预留了足够的声音通道。
附图说明
图1为本发明一种音效的拟合方法的流程图;
图2为本发明实施例一的1维高斯函数示意图;
图3为本发明实施例一步骤S3的流程图;
图4为本发明实施例一步骤S5的流程图;
图5为本发明一种音效的拟合系统的结构示意图;
图6为本发明实施例三的系统结构示意图。
标号说明:
1、遍历模块;2、获取模块;3、第一得到模块;4、第二得到模块;5、创建模块;
31、第一计算单元;32、第二计算单元;33、第三计算单元;34、第四计算单元;
41、定义单元;42、第五计算单元;
51、创建单元;52、第一调整单元;53、第二调整单元。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:将一定范围内音源拟合成一个虚拟音源。
请参阅图1,一种音效的拟合方法,包括:
遍历预设范围内的音源;
获取所述音源的位置、音源的速度以及摄像机的位置;
根据所述音源的位置、音源的速度以及摄像机的位置,计算得到所述音源相对摄像机的方向和声音强度;
将所述方向和声音强度代入球形高斯函数,得到球形高斯函数的参数的值,所述参数包括轴、锐度和强度,所述球形高斯函数的公式为G(v;μ,λ,a)=aeλ(μ·v-1),其中,μ为轴,λ为锐度,a为强度;
根据摄像机的位置以及所述轴、锐度和强度,创建虚拟音源。
从上述描述可知,本发明的有益效果在于:可极大地减少了资源和性能消耗,且也为了更丰富的音效表现留出空间,同时可减少爆音、声音截断等问题,提升用户体验。
进一步地,所述“根据所述音源的位置、音源的速度以及摄像机的位置,计算得到所述音源相对摄像机的方向和声音强度”具体为:
根据所述音源的位置和摄像机的位置,计算得到所述音源相对摄像机的方向以及所述音源与摄像机之间的第一距离;
根据所述音源的速度以及预设的指数系数和强度系数,计算得到速度影响值;
根据所述第一距离,计算得到距离衰减;
根据所述速度影响值和距离衰减,计算得到所述音源的声音强度。
进一步地,所述速度影响值根据第一公式计算得到,所述第一公式为:速度影响值=pow(音源的速度,指数系数)*强度系数;
所述距离衰减根据第二公式计算得到,所述第二公式为:距离衰减=1/(第一距离^2);
所述音源的声音强度根据第三公式计算得到,所述第三公式为:声音强度=速度影响值*距离衰减。
由上述描述可知,通过上述公式即可得到预设范围的音源相对摄像机的方向以及声音强度,后续即可通过所述方向以及声音强度计算得到虚拟音源的创建参数。
进一步地,所述“将所述方向和声音强度代入球形高斯函数,得到球形高斯函数的参数的值,所述参数包括轴、锐度和强度”具体为:
在曲线拟合函数中定义球形高斯函数G(v;μ,λ,a)=aeλ(μ·v-1);
将所述方向作为参数v,将所述声音强度作为参数G,通过所述曲线拟合函数计算得到轴μ、锐度λ和强度a的值。
由上述描述可知,通过曲线拟合来计算球形高斯函数的参数,提高了计算结果的准确率,从而提高拟合效果。
进一步地,所述“根据摄像机的位置以及所述轴、锐度和强度,创建虚拟音源并对其调整”具体为:
根据摄像机的位置、所述轴以及预设的第二距离,创建虚拟音源;
根据所述锐度,调整所述虚拟音源的音高;
根据所述强度,调整所述虚拟音源的音量。
由上述描述可知,根据计算出的球形高斯函数的轴,在对应的位置上创建虚拟音源,并根据锐度和强度对其音高和音量进行进一步调整。
请参照图6,本发明还提出一种音效的拟合系统,包括:
遍历模块,用于遍历预设范围内的音源;
获取模块,用于获取所述音源的位置、音源的速度以及摄像机的位置;
第一得到模块,用于根据所述音源的位置、音源的速度以及摄像机的位置,计算得到所述音源相对摄像机的方向和声音强度;
第二得到模块,用于将所述方向和声音强度代入球形高斯函数,得到球形高斯函数的参数的值,所述参数包括轴、锐度和强度,所述球形高斯函数的公式为G(v;μ,λ,a)=aeλ(μ·v-1),其中,μ为轴,λ为锐度,a为强度;
创建模块,用于根据摄像机的位置以及所述轴、锐度和强度,创建虚拟音源。
进一步地,所述第一得到模块包括:
第一计算单元,用于根据所述音源的位置和摄像机的位置,计算得到所述音源相对摄像机的方向以及所述音源与摄像机之间的第一距离;
第二计算单元,用于根据所述音源的速度以及预设的指数系数和强度系数,计算得到速度影响值;
第三计算单元,用于根据所述第一距离,计算得到距离衰减;
第四计算单元,用于根据所述速度影响值和距离衰减,计算得到所述音源的声音强度。
进一步地,所述速度影响值根据第一公式计算得到,所述第一公式为:速度影响值=pow(音源的速度,指数系数)*强度系数;
所述距离衰减根据第二公式计算得到,所述第二公式为:距离衰减=1/(第一距离^2);
所述音源的声音强度根据第三公式计算得到,所述第三公式为:声音强度=速度影响值*距离衰减。
进一步地,所述第二得到模块包括:
定义单元,用于在曲线拟合函数中定义球形高斯函数G(v;μ,λ,a)=aeλ(μ·v-1);
第五计算单元,用于将所述方向作为参数v,将所述声音强度作为参数G,通过所述曲线拟合函数计算得到轴μ、锐度λ和强度a的值。
进一步地,所述创建模块包括:
创建单元,用于根据摄像机的位置、所述轴以及预设的第二距离,创建虚拟音源;
第一调整单元,用于根据所述锐度,调整所述虚拟音源的音高;
第二调整单元,用于根据所述强度,调整所述虚拟音源的音量。
实施例一
本发明的实施例一为:一种音效的拟合方法,可应用于游戏中的大规模集群音效。本方法基于球形高斯函数(Spherical Gaussian),其本质上类似1维高斯函数,不过定义在球面上。对1维高斯函数,我们需要计算距离中心的距离,然后以这个距离计算e为底的指数,图形化表示后可以看到如图2所示的标志性的突起特征(中心X=0,高度为3);同理,可以将高斯函数扩展到2D;球形高斯函数和上述的原理相同,只是它定义在球型的表面,因此参数和普通高斯函数稍微有些不同,定义如下:
G(v;μ,λ,a)=aeλ(μ·v-1)
其中,参数μ是3维向量,表示球形高斯函数的轴,类似1维高斯函数中的中心,在本实施例中表示最终音源的方位;参数λ表示锐度,λ值越高,表示声音越集中(游戏中一般表现为远处或者比较集中的集群),相反λ值越低,表示声音越分散(游戏中一般表现为周围集群分散);参数a表示强度,在本实施例中表示最终音源的音量;变量v是3维向量,带入球形高斯函数后可以计算到该方向的声音强度。
如图1所示,所述方法包括如下步骤:
S1:遍历预设范围内的音源。
S2:获取所述音源的位置、音源的速度以及摄像机的位置。
S3:根据所述音源的位置、音源的速度以及摄像机的位置,计算得到所述音源相对摄像机的方向和声音强度。
S4:将所述方向和声音强度代入球形高斯函数,得到球形高斯函数的参数的值,所述参数包括轴、锐度和强度,所述球形高斯函数的公式为G(v;μ,λ,a)=aeλ(μ·v-1),其中,μ为轴,λ为锐度,a为强度;进一步地,将所述方向作为参数v,将所述声音强度作为参数G,将至少三组的方向数据和声音强度数据代入球形高斯函数,即可得到上述三个参数。
S5:根据摄像机的位置以及所述轴、锐度和强度,创建虚拟音源。
进一步地,如图3所示,所述步骤S3包括如下步骤:
S301:根据所述音源的位置和摄像机的位置,计算得到所述音源相对摄像机的方向以及所述音源与摄像机之间的第一距离;
S302:根据所述音源的速度以及预设的指数系数和强度系数,计算得到速度影响值;进一步地,所述速度影响值根据第一公式计算得到,所述第一公式为:速度影响值=pow(音源的速度,指数系数)*强度系数;优选地,所述指数系数的范围为[0.5,2],优选值为1;所述强度系数为所述音源中速度最快的音源的速度值的倒数。
S303:根据所述第一距离,计算得到距离衰减;进一步地,所述距离衰减根据第二公式计算得到,所述第二公式为:距离衰减=1/(第一距离^2)。
S304:根据所述速度影响值和距离衰减,计算得到所述音源的声音强度;进一步地,所述音源的声音强度根据第三公式计算得到,所述第三公式为:声音强度=速度影响值*距离衰减。
进一步地,如图4所示,所述步骤S5包括如下步骤:
S501:根据摄像机的位置、所述轴以及预设的第二距离,创建虚拟音源;进一步地,在摄像机位置+μ*第二距离的位置上创建虚拟音源;优选地,所述第二距离为1米。
S502:根据所述锐度,调整所述虚拟音源的音高;锐度λ越高,音高Pitch越高;进一步地,可根据需要再调节立体声混响程度、高低频等。
S503:根据所述强度,调整所述虚拟音源的音量;进一步地,音量=a*系数,所述系数需要根据声音样本,即步骤S1中遍历的音源做调节。
本实施例通过将一定范围的音源拟合成一个虚拟音源,由一个虚拟音源来表示整体音源的方向、音量以及频率高低等,由于一个虚拟音源只需占用一个或几个声音通道,因此极大地减少了资源和性能消耗,且也为了更丰富的音效表现留出空间,同时可减少爆音、声音截断等问题,提升用户体验;本发明只需要产生一个虚拟音源即可粗略取代原来独立的大量音源,实际表现平滑变化、层次明显、互不干扰,并且为了其他音效预留了足够的声音通道。
实施例二
本实施例是实施例一中步骤S4的进一步拓展。对于步骤S4,可采用曲线拟合(curve fitting)的方式来计算得到参数μ、λ和a,具体地,在曲线拟合函数(curve_fit函数)中定义球形高斯函数G(v;μ,λ,a)=aeλ(μ·v-1),然后将所述方向作为参数v,将所述声音强度作为参数G,即可通过所述曲线拟合函数计算得到轴μ、锐度λ和强度a的值。代码示意如下,其中,X即为参数v,Y即为参数G;
import numpy as np
import pylab as plt
from scipy.optimize import curve_fit
from scipy import asarray
“定义球形高斯函数”
def SphericalGaussian(v,m,lamda,a):
return a*np.exp(m*(v.dot(lamda)-1);
“调用scipy.optimize.curve_fit进行拟合”
popt,pcov=curve_fit(SphericalGaussian,X,Y)
拟合返回的结果中,popt即包含了参数μ,λ,a的值,后续即可通过这三个参数创建对应的虚拟音源。
本实施例通过曲线拟合来计算球形高斯函数的参数,提高了计算结果的准确率,从而提高拟合效果。
实施例三
请参照图6,本实施例是对应上述实施例的一种音效的拟合系统,包括:
遍历模块1,用于遍历预设范围内的音源;
获取模块2,用于获取所述音源的位置、音源的速度以及摄像机的位置;
第一得到模块3,用于根据所述音源的位置、音源的速度以及摄像机的位置,计算得到所述音源相对摄像机的方向和声音强度;
第二得到模块4,用于将所述方向和声音强度代入球形高斯函数,得到球形高斯函数的参数的值,所述参数包括轴、锐度和强度,所述球形高斯函数的公式为G(v;μ,λ,a)=aeλ(μ·v-1),其中,μ为轴,λ为锐度,a为强度;
创建模块5,用于根据摄像机的位置以及所述轴、锐度和强度,创建虚拟音源。
进一步地,所述第一得到模块3包括:
第一计算单元31,用于根据所述音源的位置和摄像机的位置,计算得到所述音源相对摄像机的方向以及所述音源与摄像机之间的第一距离;
第二计算单元32,用于根据所述音源的速度以及预设的指数系数和强度系数,计算得到速度影响值;
第三计算单元33,用于根据所述第一距离,计算得到距离衰减;
第四计算单元34,用于根据所述速度影响值和距离衰减,计算得到所述音源的声音强度。
进一步地,所述速度影响值根据第一公式计算得到,所述第一公式为:速度影响值=pow(音源的速度,指数系数)*强度系数;
所述距离衰减根据第二公式计算得到,所述第二公式为:距离衰减=1/(第一距离^2);
所述音源的声音强度根据第三公式计算得到,所述第三公式为:声音强度=速度影响值*距离衰减。
进一步地,所述第二得到模块4包括:
定义单元41,用于在曲线拟合函数中定义球形高斯函数G(v;μ,λ,a)=aeλ(μ·v-1);
第五计算单元42,用于将所述方向作为参数v,将所述声音强度作为参数G,通过所述曲线拟合函数计算得到轴μ、锐度λ和强度a的值。
进一步地,所述创建模块5包括:
创建单元51,用于根据摄像机的位置、所述轴以及预设的第二距离,创建虚拟音源;
第一调整单元52,用于根据所述锐度,调整所述虚拟音源的音高;
第二调整单元53,用于根据所述强度,调整所述虚拟音源的音量。
综上所述,本发明提供的一种音效的拟合方法及其系统,通过将一定范围的音源拟合成一个虚拟音源,由一个虚拟音源来表示整体音源的方向、音量以及频率高低等,由于一个虚拟音源只需占用一个或几个声音通道,因此极大地减少了资源和性能消耗,且也为了更丰富的音效表现留出空间,同时可减少爆音、声音截断等问题,提升用户体验;本发明只需要产生一个虚拟音源即可粗略取代原来独立的大量音源,实际表现平滑变化、层次明显、互不干扰,并且为了其他音效预留了足够的声音通道。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。