首页 > 乐器声学 专利正文
音色库生成方法、声音合成方法及系统、音频处理芯片与流程

时间:2022-01-23 阅读: 作者:专利查询

音色库生成方法、声音合成方法及系统、音频处理芯片与流程

1.本发明涉及音频处理技术领域,尤其设计一种音色库的生成方法、声音合成方法及系统、音频处理芯片、计算机可读存储介质、电子设备。


背景技术:

2.随着音频技术的发展,各种声音的合成越来越多,如直播声卡,变声耳机、变声k歌宝等产品越来越多样,这些合成设备,需要软件中存储对应乐器的音色文件,这些音色文件常常采用倒谱法、频谱包络法生成音色库,增大了flash的消耗,对存储空间要求较大,且在一些应用中,如实时合成声音的系统时往往声源信号是直接录入进来的,需要实时处理,若按照现有的方式生成音色信息,则处理算法复杂,效率较低,且对系统空间要求太大,尤其是对于小系统来说,很难应用。


技术实现要素:

3.基于上述现状,本发明的主要目的在于提供一种音色库的生成方法、声音合成方法及系统、音频处理芯片、计算机可读存储介质、电子设备,以解决现有的声音合成设备对空间占用太大的问题。
4.为实现上述目的,本发明采用的技术方案如下:
5.本发明的第一方面提供了一种音色库的生成方法,包括步骤:
6.s110:获取声源信号,并对所述声源信号分帧,得到多个声源音频帧;
7.对各所述声源音频帧执行s120~s160之后执行s170;
8.s120:对所述声源音频帧进行加窗处理;
9.s130:求加窗处理后的信号的幅度谱,记为第一幅度谱;
10.s140:根据所述第一幅度谱更新平均幅度谱,其中,所述平均幅度谱的初始值为0;
11.s150:在所述第一幅度谱中,找出幅度大于预设幅度阈值的波峰,记为局部最大波峰,并确定在多个预设的低通核中每一个局部最大波峰与哪个低通核的波形分布相似度最高,记所述局部最大波峰与相似度最高的低通核的乘积之和为共振峰出现概率,并将局部最大波峰所在位置对应的频点、与其相似度最高的低通核以及该局部最大波峰对应的共振峰出现概率作为相似数据组;
12.其中,各所述低通核的峰值和带宽不同;
13.s160:选择各相似数据组中所述共振峰出现概率最大的前第一预设个数所对应的相似数据组,对所选择的所述相似数据组在概率表中对应的概率值进行补偿,且共振峰出现概率越大,其对应的概率值的补偿值越大;
14.其中,所述概率表包括频点、低通核与概率值的对应关系,所述频点遍历所述频域信号中的频点,初始的各概率值为0;
15.s170:根据所述概率表确定发生概率最高的前第二预设个数的对应频点和低通核,分别记为中心频点和最大低通核;
16.s180:在所述平均幅度谱中找出各所述中心频点对应的幅度值,记为最大幅度,相对应的所述中心频点、所述最大低通核以及所述最大幅度形成一个共振峰信息,各所述共振峰信息形成所述音色库中所述声源信号对应的音色。
17.优选地,所述步骤s120包括步骤:
18.s121:将所述声源音频帧转换为频域信号,并求幅度谱,记为第二幅度谱;
19.s122:根据所述第二幅度谱中各波峰位置所对应的频点确定加窗长度;
20.s123:根据所述加窗长度对所述声源音频帧进行加窗处理。
21.优选地,所述步骤s122包括步骤:
22.s122a:求所述第二幅度谱中第一个波峰大于预设波峰阈值的位置,根据该位置对应的频点计算其对应的周期,记为预设周期;其中,所述预设波峰阈值根据所述第一幅度谱中各波峰位置对应的频点确定;
23.s122b:所述加窗长度为所述预设周期的1.5倍到2.5倍。
24.优选地,所述步骤s122a中预设波峰阈值小于所述第二幅度谱中幅度最大的幅度值。
25.优选地,所述步骤s140具体包括:将所述平均幅度谱乘以0.99所得的乘积与所述第二幅度谱乘以0.01所得的乘积相加之后作为新的平均幅度谱。
26.优选地,所述步骤s150中的预设幅度阈值根据所述第一幅度谱的幅度平均值确定。
27.优选地,所述步骤s150包括:
28.s151:在所述第一幅度谱中,找出幅度大于预设幅度阈值的波峰,记为局部最大波峰,对每一个局部最大波峰执行s152、s153;
29.s152:所述局部最大波峰分别与各预设的所述低通核做点乘求和运算,得到多个点乘值;
30.s153:求多个点乘值中的最大值,即为所述相似数据组中的共振峰出现概率,计算所述共振峰出现概率时的所述低通核即为所述相似数据组中的低通核,将对应的局部最大波峰所在位置对应的频点、与其相似度最高的低通核、以及该局部最大波峰对应的共振峰出现概率作为相似数据组。
31.优选地,所述低通核通过下述公式确定:
[0032][0033][0034]
其中,x为低通核的位置,c为系数,不同的低通核的c值不同;y[x]为低通核在第x位置的值;d为低通核的位置个数。
[0035]
优选地,所述步骤s160中,对概率值的补偿方式为:各所述概率值的补偿值按照对应的所述共振峰出现概率从小到大的顺序依次增加1。
[0036]
优选地,所述第二预设个数小于或者等于所述第一预设个数,各自选自4~6。
[0037]
优选地,所述步骤s170包括步骤:
[0038]
s171:计算所述概率表中各频点对应的各个概率值的和,得到各频点对应的概率
和,选取所述概率和最大的第二预设个数对应的频点作为所述中心频点;
[0039]
s172:对每一个所述中心频点在所述概率表中找出其对应的最大概率值,所述最大概率值对应的所述低通核即为最大低通核。
[0040]
优选地,对各所述声源音频帧执行s120~s160包括:
[0041]
判断各所述声源音频帧的能量是否大于预设能量值,若是,执行s120~s160。
[0042]
本发明的第二方面提供了一种声音合成方法,包括步骤:
[0043]
s100:采用上述任一项所述的方法生成音色库;
[0044]
s200:选取所述音色库中的一个音色,根据选取的音色的各共振峰信息分别生成滤波器;
[0045]
s300:获取声音信号帧;
[0046]
s400:根据所述声音信号帧生成脉冲序列,并使用各所述滤波器分别对所述脉冲序列进行滤波,之后将各结果相加,得到合成信号;其中,所述脉冲序列的周期根据所述声音信号帧的基频确定;
[0047]
s500:将所述合成信号作为输出信号输出。
[0048]
优选地,所述步骤400包括步骤:
[0049]
s410:使用所述声音信号帧更新声音能量,所述声音能量的初始值为0;
[0050]
s420:对所述声音信号帧进行基频检测,得到的声音基频;
[0051]
s430:根据所述声音基频确定所述脉冲序列的周期,并生成所述脉冲序列;
[0052]
s440:使用各所述滤波器分别对所述脉冲序列进行滤波,之后将各结果相加,得到中间信号;
[0053]
s450:使用所述声音能量对所述中间信号进行幅度调制,得到合成信号。
[0054]
优选地,所述步骤s500具体包括步骤:
[0055]
s510:对所述合成信号经效果器处理,得到所述输出信号;
[0056]
s520:输出所述输出信号。
[0057]
优选地,所述步骤s510中的效果器包括延时器、混响器和哇音踏板效果器中的至少一种。
[0058]
优选地,所述声源信号来自于乐器;
[0059]
所述声音信号帧包括来自于麦克的人声。
[0060]
本发明的第三方面提供了一种音色库模块,包括:
[0061]
声源获取单元,获取声源信号,并对所述声源信号分帧,得到多个声源音频帧;
[0062]
概率表单元,与所述声源获取单元连接,用于对各所述声源音频帧进行如下处理:
[0063]
对所述声源音频帧进行加窗处理;将加窗处理后的信号转换为频域信号,记为第一幅度谱;根据所述第一幅度谱更新平均幅度谱,其中,所述平均幅度谱的初始值为0;在所述第一幅度谱中,找出幅度大于预设幅度阈值的波峰,记为局部最大波峰,并确定在多个预设的低通核中每一个局部最大波峰与哪个低通核的波形分布相似度最高,记所述局部最大波峰与相似度最高的低通核的乘积之和为共振峰出现概率,并将局部最大波峰所在位置对应的频点、与其相似度最高的低通核以及该局部最大波峰对应的共振峰出现概率作为相似数据组;其中,各所述低通核的峰值和带宽不同;以及选择各所述共振峰出现概率最大的前第一预设个数所对应的相似数据组,对所选择的所述相似数据组在概率表中对应的概率值
进行补偿,且所述共振峰出现概率越大,其对应的概率值的补偿值越大;其中,所述概率表包括频点、低通核与概率值的对应关系,所述频点遍历所述频域信号中的频点,初始的各概率值为0;
[0064]
音色库生成单元,与所述概率表单元连接,用于根据所述概率表确定发生概率最高的前第二预设个数的对应频点和低通核,分别记为中心频点和最大低通核;在所述平均幅度谱中找出各所述中心频点对应的幅度值,记为最大幅度,相对应的所述中心频点、所述最大低通核以及所述最大幅度形成一个共振峰信息,各所述共振峰信息形成所述音色库中所述声源信号对应的音色。
[0065]
本发明的第四方面提供了一种声音合成系统,包括:
[0066]
如上所述的音色库模块;
[0067]
滤波器模块,与所述音色库模块连接,用于选取所述音色库中的一个音色,根据选取的音色的各共振峰信息分别生成滤波器;
[0068]
合成模块,与所述滤波器模块连接,用于获取声音信号帧,根据所述声音信号帧生成脉冲序列,并使用各所述滤波器分别对所述脉冲序列进行滤波,之后将各结果相加,得到合成信号;以及用于将所述合成信号作为输出信号输出。
[0069]
本发明的第五方面提供了一种音频处理芯片,其内集成有电路模块,所述电路模块被配置为实现如上任一项所述的音色库生成方法或者如上任一项所述的声音合成方法。
[0070]
本发明的第六方面提供一种电子设备,其特征在于,包括如上所述的音频处理芯片、输入模块和输出模块,所述音频处理芯片具有输入接口和输出接口,所述输入模块和所述第一输入接口连接,用于获取所述声源信号和/或所述声音信号帧;所述输出模块与所述输出接口连接,用于输出所述输出信号。
[0071]
优选地,所述输入模块包括麦克风,所述输出模块包括喇叭或者耳机。
[0072]
优选地,所述电子设备包括音箱、k歌宝、语音玩具或具有主播声卡的设备。
[0073]
本发明的第七方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程被执行时实现如上任一项所述的音色库生成方法或者如上任一项所述的声音合成方法。
[0074]
本发明的音色库生成方法,设置多个低通核,使用低通核对幅度谱中较大峰值附近的数据进行处理,并根据处理结果对概率表中的概率值进行补偿,然后根据概率值的大小在概率表和平均幅度谱中找出对应的中心频点、低通核以及最大幅度,这三者共同表征一个共振峰信息,如此,获取的声源信号会生成多个共振峰信息,形成共振峰组,能够表征声源信号的音色信息。可见,这种音色库的生成方法,通过与低通核的计算能够更准确地了解声源音频帧中各局部最大波峰的数据分布情况,进而提高对概率表中概率值的补偿准确性,进而提高共振峰信息提取的准确度,且算法简单,降低了对资源的占用,尤其能够适应小系统的应用。
[0075]
本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。
附图说明
[0076]
以下将参照附图对本发明的优选实施方式进行描述。图中:
[0077]
图1为本发明提供的音色库的生成方法的一种优选实施方式的流程图;
[0078]
图2为本发明提供的声音合成方法的一种优选实施方式的流程图;
[0079]
图3为本发明提供的音色库模块的一种优选实施系统图;
[0080]
图4为本发明提供的声音合成系统的一种优选实施方式的系统图;
[0081]
图5为本发明提供的音色库的生成方法中,低通核的一种优选实施方式的波形图。
具体实施方式
[0082]
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分,为了避免混淆本发明的实质,公知的方法、过程、流程、元件并没有详细叙述。
[0083]
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
[0084]
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
[0085]
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0086]
需要说明的是,本发明中采用步骤编号(字母或数字编号)来指代某些具体的方法步骤,仅仅是出于描述方便和简洁的目的,而绝不是用字母或数字来限制这些方法步骤的顺序。本领域的技术人员能够明了,相关方法步骤的顺序,应由技术本身决定,不应因步骤编号的存在而被不适当地限制。
[0087]
本技术提供了一种音色库的生成方法,如图1所示,包括步骤:
[0088]
s110:获取声源信号,并对声源信号分帧,得到多个声源音频帧;其中,声源信号可以通过麦克等设备获取,一个声源信号来自于一个乐器。
[0089]
对各声源音频帧执行s120~s160之后执行s170,也就是说,获取当前声源音频帧,然后对当前声源音频帧执行s120~s160,之后获取下一声源音频帧作为当前声源音频帧,返回s120执行,继续执行至s160,如此循环,直至各声源音频帧均执行过s120~s160为止,再执行s170。
[0090]
s120:对声源音频帧进行加窗处理;
[0091]
s130:求加窗处理后的信号的幅度谱,记为第一幅度谱,具体地,对加窗处理后的信号进行傅里叶变换,得到频域信号,通过对频域信号求绝对值,得到第一幅度谱;
[0092]
s140:根据第一幅度谱更新平均幅度谱,其中,平均幅度谱的初始值为0;也就是说,每一帧声源音频帧都会在上一帧得到的平均幅度谱上进行更新,以使对当前声源信号处理完成后的平均幅度谱能够包含各声源音频帧的信息。
[0093]
s150:在第一幅度谱中,找出幅度大于预设幅度阈值的波峰,记为局部最大波峰,并确定在多个预设的低通核中每一个局部最大波峰与哪个低通核的波形分布相似度最高,
记该局部最大波峰和与其相似度最高的低通核的乘积之和为共振峰出现概率,并将局部最大波峰所在位置对应的频点、与其相似度最高的低通核、以及该局部最大波峰对应的共振峰出现概率局部最大波峰作为相似数据组,也就是说,对于每一局部最大波峰,都会选择该波峰信息与预设的多个低通核进行相似度计算,从而选出与该局部最大波峰相似度最高的低通核,该低通核与该局部最大波峰的乘积之和记为共振峰出现概率,这样,每一个局部最大波峰都能够得到一组相似数据组,该相似数据组中包括局部最大波峰所在位置的频点、与其相似度最高的低通核、以及对应的共振峰出现概率,在这组相似度数据组中,共振峰出现概率为在该频点处以该低通核表示的带宽出现共振峰的概率。可以理解地,当在第一幅度谱中找出大于预设幅度阈值的波峰个数为n时,则执行完s150能够得到n组相似数据组。其中,低通核为预先设置好的一些数据分布曲线图,以显示不同的数据分布情况,各低通核的峰值和带宽不同,各低通核具有一个波峰,有的低通核的波峰峰值较大,有的峰值较小,有的波峰的带宽较长,有的带宽较短。通过s150能够确定各局部最大波峰的数据分布更接近于预设的哪个数据分布情况,以及在该局部最大波峰的对应的频点以相似度最高的低通核出现共振峰的概率。
[0094]
s160:选择各共振峰出现概率最大的前第一预设个数l所对应的相似数据组,对所选择的相似数据组在概率表中对应的概率值进行补偿,且共振峰出现概率越大,其对应的概率值的补偿值越大。也就是按照共振峰出现概率从大到小的顺序对相似数据组进行排序,选出前面l个相似数据组,然后在概率表中找出与这l个相似数据组对应的概率值,并对这l个概率值进行补偿;
[0095]
其中,概率表包括频点、低通核与概率值的对应关系,频点遍历频域信号中的频点,低通核遍历预设的各低通核,相似数据组中的波峰位置对应的频点与概率表中的频点对应,低通核与概率表中的低通核对应。且初始的各概率值为0。这样,根据每一组相似数据组的频点、低通核找出概率表中满足该频点、低通核的对应关系,然后对应关系中的概率值进行补偿,具体地补偿方式是当相似数据组中的共振峰出现概率越大时,在对应关系中的概率值的补偿值就越大。需要说明的是,本发明的概率表只是用于表示频点、低通核和概率值的对应关系,并不限定其具体表现形式,具体地,概率表可以为表格的形式,如表格的第一列代表频点,第二列代表低通核,第三列代表概率值,第一列与第二列形成频域信号中的各频点与预设的各低通核的各种组合;概率表也可以为二维图表形式,其横坐标代表频域信号中的频点,纵坐标代表各低通核,二者相交的位置代表对应的概率值;当然,概率表也可以为其他形式。
[0096]
s170:根据概率表确定发生概率最高的前第二预设个数的对应频点和低通核,分别记为中心频点和最大低通核,该最大低通核代表了中心频点对应的带宽;也就是说,根据第概率表中各数据的分析,找出形成共振峰可能性最高的几个位置,这几个位置能够更准确的反应声源信号的共振峰情况,记录该位置对应的频点和低通核,分别记为中心频点和最大低通核,如此,能够找出第二预设个数的中心频点和与各中心频点对应的最大低通核。
[0097]
s180:在平均幅度谱中找出各中心频点对应的幅度值,记为最大幅度,相对应的中心频点、最大低通核以及最大幅度形成一个共振峰信息,各共振峰信息形成音色库中的声源信号对应的音色信息,如此,又在平均幅度谱中找出第二预设个数的最大幅度,进而生成包括第二预设个数的共振峰信息。
[0098]
上述方法中,在对当前声源信号的每个声源音频帧执行步骤s120~s160时,都会对平均幅度谱和概率表的值进行更新,当每一个声源音频帧均执行完步骤s120~s160之后,得到了与该声源信号对应的一个概率表和平均幅度谱,然后根据概率表和平均幅度谱中找出能够表征该声源信号的共振峰组。上述音色库的生成方法,对于每一个声源信号执行s110至s180,得到该声源信号对应的一个音色信息,可以每获取一个声源信号,执行一次s110至s180,以存储该声源信号对应的音色信息,如此,不同声源信号的音色信息组成了音色库,以被声音合成等过程使用。需要说明的是,这个音色信息的生成过程可以为实时的,也可以在声音合成之前事先执行之后存储起来。
[0099]
本发明的音色库生成方法,设置多个低通核,使用低通核对幅度谱中较大峰值附近的数据进行处理,以确定局部最大波峰的分布情况,并根据处理结果对概率表中的概率值进行补偿,然后根据发生概率的大小在概率表和平均幅度谱中找出对应的中心频点、低通核以及最大幅度,这三者共同表征一个共振峰信息,如此,获取的声源信号会生成多个共振峰信息,形成共振峰组,能够表征声源信号的音色信息。可见,这种音色库的生成方法,通过与低通核的计算能够更准确地了解声源音频帧中各局部最大波峰的数据分布情况,进而提高对概率表中概率值的补偿准确性,进而提高共振峰信息提取的准确度,且算法简单,降低了对资源的占用,尤其能够适应小系统的应用。
[0100]
其中,步骤s110中,对声源信号进行分帧,可以采用现有技术中的分帧方法进行,这里就不在详述。对于分帧得到的各声源音频帧,有的声源音频帧为空帧,若还要执行s120~s160,增加了不必要的资源浪费,也影响音色库生成的时效性。为了解决这些问题,本发明的一种优选实施例中,先对声源音频帧的能量进行判断,若为空帧,则直接获取下一帧,若非空帧,才执行步骤s120~s160,即对各声源音频帧执行s120~s160包括:
[0101]
判断各声源音频帧的能量是否大于预设能量值,若是,对该声源音频帧执行s120~s160;若否,重新获取声源音频帧,即获取下一声源音频帧。
[0102]
步骤s120中加窗处理时的加窗长度可以事先设定为某一固定窗长,也可以根据当前声源音频帧各频点的周期进行确定,具体地,步骤s120包括步骤:
[0103]
s121:将声源音频帧转换为频域信号,并求幅度谱,记为第二幅度谱,即先对声源音频帧进行傅里叶变换,转换为频域信号,然后对频域信号求绝对值,得到第二幅度谱;
[0104]
s122:根据第二幅度谱中各波峰位置所对应的频点确定加窗长度;
[0105]
s123:根据加窗长度对声源音频帧进行加窗处理。
[0106]
采用第二幅度谱求加窗长度,可以利用整个算法的傅里叶变换算法(在步骤s130中也使用了),从而减少代码量,减少对系统资源的占用,提升音色库生成的效率,尤其是在实时生成音色库的实施例中和小系统(存储空间等有限的系统)下,使用该方法在系统资源的提升上表现得尤为明显。
[0107]
一种实施例中,上述步骤s122包括步骤:
[0108]
s122a:求第二幅度谱中第一个波峰大于预设波峰阈值的位置,根据该位置对应的频点计算其对应的周期,记为预设周期t0;其中,预设波峰阈值与第一幅度谱中各波峰位置对应的频点相关;
[0109]
s122b:上述加窗长度大于预设周期t0,具体为预设周期t0的1.5倍到2.5倍,如为1.5倍t0、2.0倍t0、2.2倍t0、2.5倍t0等,优选地,加窗长度为1.5倍t0。
[0110]
采用第二幅度谱中第一个波峰大于波峰阈值的频点确定加窗长度,简化了加窗长度的运算量,进一步减少系统的资源占用。
[0111]
进一步优选地,步骤s122a中预设波峰阈值小于或者等于第二幅度谱中幅度最大的幅度值,如为最大幅度值的0.5倍,0.7倍、0.4倍等。通过将预设波峰阈值与第二幅度谱的最大幅度值相关联,是为了幅度归一化,以便于后续处理。预设波峰阈值也可以直接设定一个幅度值,或者选择第二幅度谱中某一幅度值。
[0112]
当然,上述步骤s122还可以采用相关法确定加窗长度,如同时根据多个波峰位置对应的频点计算加窗长度,这种方式,由于有些波峰位置对应的频点相同,因此,采用这种方法确定加窗长度时,需要先排除频点相同的波峰位置,然后再选取部分或者全部不同频点的波峰位置进行计算,具体的相关算法可以根据需要进行不同的选择,这里就不再详述了。
[0113]
上述步骤s140中对平均幅度谱的更新,将平均幅度谱乘以第一低通系数所得的乘积与第一幅度谱乘以第二低通系数所得的乘积相加之后作为新的平均幅度谱,第一低通系数与第二低通系数之和等于1。在另一实施例中,优选第一低通系数大于第二低通系数,以使第一幅度谱逐渐对整个平均幅度谱进行影响。进一步地优选地,第一低通系数为0.99,第二低通系数为0.01,即步骤s140具体包括:将平均幅度谱乘以0.99与第二幅度谱乘以0.01相加之后作为新的平均幅度谱。需要说明的是,第一低通系数与第二低通系数也可以选择其他值。
[0114]
在步骤s150中,优选预设幅度阈值根据第一幅度谱的幅度平均值确定,如为幅度平均值的2倍、2.5倍、2.8倍等。进一步优选地,预设幅度阈值可以为第一幅度谱的幅度平均值的2.5倍,具体地,先计算出第一幅度谱中的幅度平均值,即将第一幅度谱中各幅度值相加求平均,采用这种确定预设幅度阈值的方式,能够更准确地提取到有效信号(即非噪声)的信息,尽可能避免噪声信号的干扰。在另一种实施例中,预设幅度阈值也可以设定与第一幅度谱中最大幅度值相关。
[0115]
上述步骤s150中,确定与局部最大波峰相似度最高的低通核的方法可以通过图像比较的方式确定,本发明的一种优选实施例中,通过点乘求和运算实现,具体地,当在第一幅度谱中找出幅度大于预设幅度阈值的波峰,记为局部最大波峰后(如前所述为n个),对每一个局部最大波峰进行如下处理,具体地对各局部最大波峰执行步骤s152~s154之后再执行s160,也就是说,步骤s150包括步骤:
[0116]
s151:在第一幅度谱中,找出幅度大于预设幅度阈值的波峰,记为局部最大波峰,对每一个局部最大波峰执行s152、s153;
[0117]
s152:局部最大波峰分别与各预设的低通核做点乘求和运算,得到多个点乘值,具体地,选择第一幅度谱中以局部最大波峰所在位置为中心的第三预设个数内的数据作为运算数据区间,该第三预设个数与低通核的数据个数相等,如都包括d个位置的数据,然后将这个运算数据区间分别与每一个低通核做点乘求和运算,得到多个点乘值,即有多少个低通核,就有多少个点乘值;
[0118]
s153:求这些点乘值中的最大值,记为点乘最大值,即相似数据组中的共振峰出现概率,计算该共振峰出现概率时的低通核记为相似数据组中的低通核,将对应的局部最大波峰所在位置对应的频点、与其相似度最高的低通核以及共振峰出现概率作为相似数据
组。
[0119]
具体地,如在步骤s151中找到大于预设幅度阈值的波峰个数为n,则执行n次步骤s152、s153,记低通核的个数为m,每个低通核的个数为d,则对于第i个局部最大波峰,步骤s152按照如下公式(1)计算与各低通核的点乘求和运算。
[0120][0121]
其中,i为第i个局部最大波峰在第一幅度谱中的位置,从1到n;p[i-k]为第一幅度谱中第[i-k]位置的幅度值,qj[w-k]为第j个低通核的第[w-k]位置的幅度值;j从1到m,k从-w到+w;w为(d+1)/2。这样,步骤s152得到m个v
i,j
,且每个v
i,j
与p[i]、qj对应;在步骤s153中,比较这m个v
i,j
的大小,得到最大的那个v
i,j
,将其记为v
imax
,并将计算其时使用的低通核记为q
imax
,对应的第i个局部最大波峰位置对应的频点记为si,从而得到第i个局部最大波峰位置对应的相似数据组为(v
imax
,q
imax
,si)。在对每一个局部最大波峰位置执行完步骤s152、s153后,得到n个相似数据组,然后执行s160。
[0122]
在上述各实施例中,低通核的生成方式可以有多种,只要能够体现出数据的多种分布规律即可,如可以为三角形曲线、正弦曲线等,本发明的一种低通核采用高斯核,进一步的,按照如下公式(2)、(3)生成,这种方式的曲线更为平滑,更符合自然概率的分布,在后续处理中尤其是概率值补偿中更接近真实情况:
[0123][0124][0125]
其中,x为低通核的位置,其最大取值可以根据采样频率设置;c为系数,不同的低通核的c值不同,反应了低通核中数据的方差;y[x]为低通核在第x位置的值;d为低通核的位置个数。
[0126]
在这种低通核的生成方式中,c表征了数据的分散程度,具体可以考虑采集频率进行设定,为了更好地体现数据的集中程度,本发明中优选c为0.1~5,如0.1、0.2、0.8、1、2、3、4、5等,这样数值不会太大。在设定了低通核个数后,可以从这个范围中选择中间的值,如当低通核个数m为五时,可以选0.1、0.3、1、3、5,在低通核个数选为11时,相应地,对应图5中的五个低通核的曲线。
[0127]
在步骤s160中,对多个需要补偿的概率值,在同一声源音频帧中,各补偿值一般按照一定的顺序设置,如共振峰出现概率(为相似数据组中的相关度)从小到大的顺序设置相似数据组对应的概率值的各补偿值,若各补偿值差异太大(如相邻两个补偿值差距为3、4或者更大),则当某次发生错位造成的影响就会太大,在后面的累加中迟迟无法纠正;而若各补偿值差异太小(如相邻两个补偿值差距为0.2、0.5等),则补偿后仍然很难区分概率值的高低,本发明为了更好地解决上述问题,一种优选的实施例中,对概率值的补偿方式为:各概率值的补偿值式按照对应的共振峰出现概率从小到大的顺序依次增加1,具体地,在该步骤中,可以先对n个相似数据组中的v
imax
按照从大到小进行排序,选出前面的第一预设个数,每一个v
imax
都对应一个相似数据组,然后根据相似数据组中的(q
imax
,si)去概率表中找到对应的坐标的概率值,对该概率值进行补偿,即找到概率表中横坐标为si,纵坐标q
imax

对应的概率值,对此值进行补偿。以步骤s160中第一预设个数为五为例,即选出共振峰出现概率v
imax
排最大的五个相似数据组,将这些相似数据组按照各自共振峰出现概率v
imax
从小到大的顺序排列,各相似数据组对应的概率表中的概率值记为p1、p2、p3、p4、p5,则p1、p2、p3、p4、p5各自的补偿值依次加1,如各自分别加1、2、3、4、5,或者各自分别加2、3、4、5、6等。进一步优选地,这些补偿值自1开始从小到大顺次加1,即在第一预设个数为五的实施例中,p1、p2、p3、p4、p5分别为1、2、3、4、5,也就是说,每执行一次s120~s160,概率表中会有五个概率值分别增加1、2、3、4、5。
[0128]
当然,这些补偿值依次递增也并不限于呈等差数列递增,也可以相邻两个补偿值的差值不相等。
[0129]
其中,若第二预设个数大于第一预设个数,即最后确定的共振峰个数大于每次概率值补偿的个数,则在概率值补偿的时候,会一直累积在固定的几个频点上,降低了共振峰选择的准确性。优选地,第二预设个数小于或者等于第一预设个数。进一步优选地,二者的数值相等。
[0130]
对于低通核的个数来说,太多,在对局部最大波峰的相似度确定中能够更精确,但是也会增加运算量,太少则无法准确反映局部最大波峰的数据分布情况,考虑到语音或者音乐等声音信号的频谱图是不会很平坦的,而是一个个波峰凸起的样子,其有效能量集中的个数往往主要在3~7个波峰处,因此采用上述个数,既不会对整个方法的执行增大太多的运算量,又能够准确表征声音的共振峰信息。优选地,低通核的个数、第一预设个数和第二预设个数均选自4~6,更优选地,三者相等,均为五,以便于整个方法中的运算。
[0131]
上述步骤s170的第一种方式,包括步骤:
[0132]
s171:计算概率表中各频点对应的各概率值的和,得到各频点对应的概率和,并选取概率和最大的第二预设个数对应的频点作中心频点;概率表中,每一个频点对应着多个概率值(第一预设个数的概率值),将这些概率值相加,即得到该频点对应的概率和,得到相对应的频点与概率和,然后比较这些概率和,选出最大的第二预设个数的概率和,将这些概率和对应的频点作为中心频点;
[0133]
s172:对每一个中心频点在概率表中找出其对应的最大概率值所对应的低通核,记为最大低通核,该最大低通核代表了中心频点对应的带宽,代表带宽;每一个中心频点对应着多个低通核(第一预设个数),然后选出对应概率值最大的那个低通核作为最大低通核,即该中心频点对应的带宽,这样得到第二预设个数个对应的中心频点和最大低通核。
[0134]
具体地,在步骤s171中先对各频点的概率值进行求和,即将同一频点对应的各概率值相加,得到该频点对应的概率和,得到频点与概率和的对应序列,然后将这些频点的概率和进行比较,选出最大的几个概率和对应的频点作为代表共振峰信息的中心频率,由于使用概率和进行比较,能够更准确地反映出这些频点发生的概率高低,从而使选择的共振峰的中心频率更精确。对于每一个中心频点,在概率表中,对应着多个低通核,即对应着不同的带宽,在步骤s172中选择这一中心频点发生概率最大的那个低通核作为该频点处的带宽,即仍然是通过最大概率值去选择的带宽,因此,对于带宽的选择也能够更精确地表征该声源信号在该中心频点的带宽。
[0135]
对于中心频率与最大低通核的选择还可以采用第二种方式,先选择带宽(即低通核),即先计算每一个低通核对应的各概率值之和,得到各低通核对应的概率和,求概率和
最大的第二预设个数的低通核作为最大低通核,然后每个最大低通核对应的概率值最大的那个点对应的频点作为中心频点,如此也得到第二预设个数对应的中心频点和最大低通核。再或者,直接从概率表中找到第二预设个数最大的概率值,这几个概率值对应的频点记为中心频点,低通核记为最大低通核。
[0136]
考虑到低通核的个数若太大会大大增加计算量,且当这个数值大到一定程度时,对于最终产生共振峰组的信息变化不会很大,即效果并不明显,因此,低通核的个数选择一般不会太大,若先通过求概率和的方式确定带宽,很有可能最终将全部的低通核都选入,即第二种方式,无疑,这种方式降低了对中心频点选择的准确性。而频点的个数通常远大于低通核的个数,采用通过求概率和的方式先确定中心频点(即第一种方式),再确定对应的带宽(即低通核),既不会使运算量太大,又能够更准确地反应中心频率和其对应的带宽。
[0137]
本发明还提供了一种声音合成方法,可以用于人声与乐器声的合成,也可以用于其他声音与音色库中的音色合成,如图2所示,合成包括步骤:
[0138]
s100:采用上述任一项所述的方法生成音色库;
[0139]
s200:选取音色库中的一个音色,根据选取的音色的各共振峰信息分别生成滤波器。具体地,选择哪一个音色,在获取声音合成指令时即可获知,即希望合成的目标乐器,然后从音色库中选择要合成的音色,该音色包括有第二预设个数的共振峰信息,每个共振峰信息包括有对应的中心频点、最大低通核以及最大幅度,根据这些信息可以对应生成一个滤波器,由于有第二预设个数的共振峰信息,因此,会生成第二预设个数的滤波器。
[0140]
s300:获取声音信号帧,具体地可以通过麦克获得,如可以通过麦克获取人声,则该合成方法即用于人声的合成;
[0141]
s400:根据声音信号帧生成脉冲序列,并使用各滤波器分别对脉冲序列进行滤波,之后将各结果相加,得到合成信号;其中,脉冲序列的周期根据声音信号帧的基频确定,该脉冲序列为单脉冲序列;
[0142]
s500:将合成信号作为输出信号输出。
[0143]
在声音合成时,可以事先采用上述各音色库的生产方法先生成各声源信号对应的音色,当需要声音合成时,直接调用该音色库的信息即可。也可以在声音合成时,实时生成各音色。本发明的声音合成方法,根据音色库中同一音色的各共振峰信息生成目标乐器的滤波器组,对于声音信号帧通过提取基频生成脉冲序列,然后使用滤波器组进行滤波,进而得到合成信号,这种方式对fash的存储空间需求很低,且可以对声音信号帧的每个点独立处理,不是块操作,因此,实时性好,尤其适合低成本的嵌入式声音合成处理。
[0144]
需要说明的是,上述步骤s100、s200只要在s400中使用滤波器滤波的步骤前执行即可,并不限于一定在s300之前先执行。
[0145]
上述步骤s400中,可以直接使用声音能量作为脉冲序列的幅度,然后通过滤波器滤波后得到合成信号。本发明的一种优选实施例中,先生成幅度为1的脉冲信号,然后使用声音信号帧生成的声音能量对滤波后的脉冲序列进行幅度调制,具体地,步骤400包括步骤:
[0146]
s410:使用声音信号帧更新声音能量,声音能量的初始值为0;
[0147]
s420:对声音信号帧进行基频检测,得到的声音基频,具体地可以通过相关法或者本领域技术人员熟知的其他方法,如通过神经网络训练的提取模型,提取基频特征;
[0148]
s430:根据声音基频确定脉冲序列的周期,并生成脉冲序列,即脉冲序列中各脉冲的间隔可以根据声音基频得到;
[0149]
s440:使用各滤波器分别对脉冲序列进行滤波,之后将各结果相加,得到中间信号;
[0150]
s450:使用声音能量对中间信号进行幅度调制,得到合成信号,即将中间信号的各位置的值与步骤s410中得到的声音能量的对应位置的值相乘作为合成信号对应位置的值。
[0151]
其中,上述步骤s410中,对于声音能量的更新,具体可以将声音能量与第三低通系数的乘积加上当前声音信号帧的能量与第四低通系数的乘积,得到的和作为当前声音信号帧的声音能量。其中第三低通系数与第四低通系数之和为1,且第三低通系数远大于第四低通系数,如第三低通系数为0.99,第四低通系数为0.01,当然,二者也可以分别选用其他值。上述基频检测可以采用现有技术的基频检测方法实现,如相关法。
[0152]
采用上述方法,使当前声音信号帧的能量与之前的声音信号帧的能量相关,从而使输出信号的声音更平滑;且在有些声音处理后,后期还需做音效处理,有的音效处理中也需要进行音量的调节,当采用上述方式将幅度调制放到滤波后面执行时,可以将后续的音量调节与步骤s450合并进行执行,从而提高声音合成的效率;且若是把幅度调制放在前面执行,则由于很多声音信号帧是静音帧,这样会丢失了很多音量变化的信息。
[0153]
其中,上述步骤s200中的滤波器优选采用二阶无线冲击响应滤波器,具体地,根据每一个共振峰信息生成滤波器的方法可以通过巴特沃斯或者其他滤波器算法生成,每一个共振峰信息都会换算呈对应的一组系数:a1、a2、b0、b1、b2。则脉冲序列经其中一个滤波器滤波可以按如下公式计算:
[0154]
u[m]=b0
×
v[m]+b1
×
v[m-1]+b2
×
v[m-2]+a1
×
u[m-1]+a2
×
u[m-2];
[0155]
其中,u[m]为经一个滤波器滤波后脉冲序列的第m个位置的值;v[m]为滤波前脉冲序列的第m个位置的值;v[m-1]为滤波前脉冲序列的第m-1个位置的值;v[m-2]为滤波前脉冲序列的第m-2个位置的值;u[m-1]为经一个滤波器滤波后脉冲序列的第m-1个位置的值;u[m-2]为经一个滤波器滤波后脉冲序列的第m-2个位置的值。如此,经第二预设个数的滤波器分别滤波后,将相同的位置的u[m]相加即得到滤波处理后的脉冲序列。
[0156]
需要说明的是,上述s410只要在s450之前执行,并不限于先执行s410才能执行s420。
[0157]
为了提高输出信号的音效,上述步骤s500具体包括:
[0158]
s510:对合成信号经效果器处理,得到输出信号;
[0159]
s520:输出所述输出信号。
[0160]
具体地,步骤s510中的效果器包括延时器、混响器和哇音踏板效果器中的至少一种。
[0161]
其中,上述各实施例中,各处的傅里叶变换可以为基二傅里叶变换,本发明的一种优选实施例中,采用分裂基快速傅里叶变换,以提高时频域转换速率。
[0162]
在具体的一个实施例中,上述合成方法中,声源信号来自于乐器;声音信号帧包括来自于麦克的人声,如此,通过合成方法处理后,能够将人声转换成乐器出现的声音,如在k歌等设备中,将人声表现的歌声以乐器(即音色库的一个音色)的歌声播放。
[0163]
本发明还提供了一种音色库模块,用于执行上述任一实施例的音色库生成方法,
如图3所示,音色库模块10包括:
[0164]
声源获取单元11,获取声源信号,并对声源信号分帧,得到多个声源音频帧;
[0165]
概率表单元12,与声源获取单元11连接,用于对各声源音频帧进行如下处理:对声源音频帧进行加窗处理;将加窗处理后的信号转换为频域信号,记为第一幅度谱;根据第一幅度谱更新平均幅度谱,其中,平均幅度谱的初始值为0;在第一幅度谱中,找出幅度大于预设幅度阈值的波峰,记为局部最大波峰,并确定在多个预设的低通核中,每一个局部最大波峰与哪个低通核的波形分布相似度最高,记局部最大波峰与相似度最高的低通核的乘积之和为共振峰出现概率,并将局部最大波峰所在位置对应的频点、与其相似度最高的低通核以及该局部最大波峰对应的共振峰出现概率作为相似数据组;其中,各低通核的峰值和带宽不同;以及选择各共振峰出现概率最大的前第一预设个数所对应的相似数据组,对所选择的相似数据组在概率表中对应的概率值进行补偿,且共振峰出现概率越大,其对应的概率值的补偿值越大;
[0166]
其中,概率表包括频点、低通核与概率值的对应关系,所述频点遍历所述频域信号中的频点,初始的各概率值为0;
[0167]
音色库生成单元13,与概率表单元12连接,用于根据概率表确定发生概率最高的前第二预设个数的对应频点和低通核,分别记为中心频点和低通核;其中,第二预设个数小于或者等于第一预设个数;然后在平均幅度谱中找出各中心频点对应的幅度值,记为最大幅度,相对应的中心频点、最大低通核以及最大幅度形成一个共振峰信息,各共振峰信息形成音色库中该声源信号对应的音色。
[0168]
进一步地,本发明还提供了一种声音合成系统,如图4所示,包括:
[0169]
上述音色库模块10;
[0170]
滤波器模块20,与音色库模块10连接,用于选取音色库中的一个音色,根据选取的音色的各共振峰信息分别生成滤波器;
[0171]
合成模块30,与滤波器模块20连接,用于获取声音信号帧,根据声音信号帧生成脉冲序列,并使用各滤波器分别对脉冲序列进行滤波,之后将各结果相加,得到合成信号;以及用于将合成信号作为输出信号输出。
[0172]
本发明还提供了一种音频处理芯片,其内集成有电路模块,电路模块被配置为实现如上述任一实施例所述的音色库生成方法或者如上述任一实施例所述的声音合成方法。
[0173]
此外,本发明还提供了一种电子设备,包括音箱、k歌宝、语音玩具或具有主播声卡的设备,电子设备包括上述音频处理芯片、输入模块和输出模块,音频处理芯片具有输入接口和输出接口,输入模块和输入接口连接,用于获取所述声源信号和/或声音信号帧,即输入接口可以通过输入模块获取音色库模块10需要的声源信号,以便生成音色,也可以通过输入模块获取合成模块30需要的声音信号帧,以便合成模块进行声音合成。输出模块与输出接口连接,用于输出输出信号。
[0174]
具体地,输入模块包括麦克风;输出模块包括喇叭或者耳机。
[0175]
另外,本发明还提供了一种计算机可读存储介质,如光盘、u盘、硬盘等,其上存储有计算机程序,所述计算机程被执行时实现如上述任一实施例所述的音色库生成方法或者如上述任一实施例所述的声音合成方法。其中,该计算机程序被执行时可以以demo可视对话框呈现,也可以直接为可执行的exe文件。
[0176]
本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。
[0177]
应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。