HI,欢迎来到起点商标网!
24小时服务QQ:2880605093

一种发动机声音合成方法及系统与流程

2021-01-28 15:01:46|223|起点商标网
一种发动机声音合成方法及系统与流程

本发明涉及声音合成领域,特别是涉及一种发动机声音合成方法及系统。



背景技术:

人们已经习惯于各种汽车声音的存在,而且能够分辨出各种发动机声音的品质。电动汽车行驶在道路上,安静的汽车在降低了道路噪声的同时,也为行人带来了潜在危险。因此,发动机声音的合成在多个领域有应用价值,例如,在电动汽车领域,合成的发动机声音可以作为警示音提醒行人;在虚拟驾驶领域,播放合成的发动机声音可以增加驾驶的真实感。

现有技术中,有的文献中公开发动机声音合成技术是将声音视为谐波与随机噪声组成。在频谱处理和恢复过程中,一些细节必然会丢失,而这些细节对于发动机声音的自然度往往非常重要。在频谱建模中,为降低计算复杂度,人们不得不使用简化模型。一般方法将发动机声音视为基于发动机转速的一系列低频谐波和高频随机噪声组成。这类方法能够有效的模拟发动机的低频声音,但对于高频声音来说,采用随机噪声处理,与真实的发动机声差异明显,合成的效果较差。

还有相关文献中公开发动机声音合成技术是基于样本的合成。该方法能够最大程度的保留原始噪声特征,根据需要选择合适的声音片段进行播放,不同声音片段之间的衔接是关键。为此,有人提出了基于psola(基音同步叠加)的发动机声音合成方法。该方法假设各噪声由最小片段组成,片段宽度由基频决定。但由于psola是在时域范围内根据基频确定的长度进行拼接,无法确保使每个频率的波形都同时对齐,在高频段相位不匹配,导致谱线衔接处出现跳变或产生虚假频率,此外由于发动机声音片段很短,当发动机转速缓慢变化或者稳定时,循环播放相同的声音会不自然,拼接段的相位不匹配的影响会更加明显。



技术实现要素:

本发明的目的是提供一种发动机声音合成方法及系统,以提高发动机声音合成的真实度。

为实现上述目的,本发明提供了如下方案:

一种发动机声音合成方法,包括:

获取发动机声音样本;所述发动机声音样本包括多个发动机声音段;

对每个所述发动机声音段进行低通滤波,得到每个所述发动机声音段的低频谐波信号;

对每个所述发动机声音段进行高通窄带滤波,得到所述发动机声音段的多组高频窄带信号;

采用希尔伯特变换方法,对每个所述发动机声音段的高频窄带信号进行分解,得到每个所述发动机声音段的对应的包络信号和载波信号;

将所有发动机声音段的低频谐波信号进行拼接,得到低频谐波拼接信号;

将所有发动机声音段的载波信号进行拼接,得到载波拼接信号;

将所有发动机声音段的包络信号进行拼接,得到包络拼接信号;

将所述包络拼接信号和所述载波拼接信号相乘,得到高频窄带合成信号;

将所述低频谐波拼接信号和所述高频窄带合成信号相加,合成发动机声音。

可选的,所述对每个所述发动机声音段进行低通滤波,得到每个所述发动机声音段的低频谐波信号,具体包括:

根据每个所述发动机声音段的基频,确定每个所述发动机声音段的三次谐波频率;

基于所述三次谐波频率,根据1/3倍频程的频带划分,确定每个所述发动机声音段对应的低通滤波器的频率上限;

采用所述低通滤波器对对应的所述发动机声音段进行低通滤波,得到每个所述发动机声音段对应的低频谐波信号;每个所述发动机声音段对应的低频谐波信号包括发动机基频的阶次谐波信号、1阶次谐波信号、2阶次谐波信号和3阶次谐波信号。

可选的,所述对每个所述发动机声音段进行高通窄带滤波,得到每个所述发动机声音段的高频窄带信号,具体包括:

对每个所述发动机声音段,按1/3倍频程进行高通窄带滤波,得到每个所述发动机声音段对应的多组高频窄带信号;

可选的,所述采用希尔伯特变换方法,对每个所述发动机声音段的高频窄带信号进行分解,得到每个所述发动机声音段的对应的包络信号和载波信号,具体包括:

采用希尔伯特变换方法,对每个所述发动机声音段的每组高频窄带信号进行分解,得到每个所述发动机声音段中每组高频窄带信号对应的包络信号和载波信号。每组高频窄带信号对应的的包络信号均包括发动机基频的1/4阶次信号、1/2阶次信号、1阶次信号、2阶次信号和3阶次信号。

可选的,所述将所有发动机声音段的低频谐波信号进行拼接,得到低频谐波拼接信号,具体包括:

获取当前发动机声音段的低频谐波信号相位;

通过基音同步技术确定下一发动机声音段的低频谐波信号初始相位;

采用过零点对齐的方法使所述下一发动机声音段的低频谐波信号初始相位与所述当前发动机声音段的低频谐波信号相位对齐,在低频谐波信号拼接段对当前发动机声音段的低频谐波信号和下一发动机声音段的低频谐波信号进行拼接;低频谐波信号段拼接段的长度为基频波长的1/2;

依次对所有发动机声音段的低频谐波信号进行拼接,得到低频谐波拼接信号。

可选的,所述将所有发动机声音段的载波信号进行拼接,得到载波拼接信号,具体包括:

对于第i组高频窄带信号,获取当前发动机声音段中第i组高频窄带信号的末端相位;i=1、2、3、4、5…;

根据所述当前发动机声音段中第i组高频载波信号的末端相位,确定下一发动机声音段中第i组高频载波信号的起始点;所述下一发动机声音段中第i组高频载波信号的起始点的相位与所述当前发动机声音段中第i组高频载波信号的末端相位相同;

将所述当前发动机声音段中第i组高频载波信号的末端和所述下一发动机声音段中第i组高频载波信号的起始点对齐,在第i组高频载波信号载波拼接段,对当前发动机声音段中第i组载波信号和下一发动机声音段中第i组载波信号进行拼接;当第i组高频载波信号的频率小于2khz时,第i组载波信号拼接段的长度为1/3倍频程中心频率波长的1/2;当第i组高频窄带信号的频率大于或等于2khz时,第i组载波信号拼接段的长度为1/3倍频程中心频率波长;

依次对所有发动机声音段中第i组高频窄带信号的载波信号进行拼接,得到第i各组载波拼接信号;

依次得到每一组载波拼接信号。

可选的,所述将所有发动机声音段的包络信号进行拼接,得到包络拼接信号,具体包括:

对于第i组高频窄带信号,获取当前发动机声音段中第i组高频窄带信号中一个基频周期内的最大峰值;

根据当前发动机声音段中第i组高频窄带信号中一个基频周期内的最大峰值,确定下一发动机声音段中第i组高频窄带信号的峰值点;所述下一发动机声音段中第i组高频窄带信号的峰值点的峰值与当前发动机声音段中第i组高频窄带信号中一个基频周期内的最大峰值相等;

将下一发动机声音段中第i组高频窄带信号的峰值点与当前发动机声音段中第i组高频窄带信号中一个基频周期内的最大峰值位置对齐,在第i组包络信号拼接段,对当前发动机声音段中第i组高频窄带信号的包络信号和下一发动机声音段中第i组高频窄带信号的包络信号进行拼接;所述第i组包络信号拼接段为基频波长的1.5倍,且所述下一发动机声音段中第i组高频窄带信号的峰值点位于所述第i组包络信号拼接段的1/2位置;

依次对所有发动机声音段中第i组高频窄带信号的包络信号进行拼接,得到第i组包络拼接信号;

依次得到每一组包络拼接信号。

可选的,所述将所述包络拼接信号和所述载波拼接信号相乘,得到高频窄带合成信号,具体包括:

对于第i组高频窄带信号,将第i组包络拼接信号和第i组载波拼接信号相乘,得到第i组窄带信号;

将所有组窄带信号相加,得到所述高频窄带合成信号。

本发明还提供一种发动机声音合成系统,包括:

发动机声音样本获取模块,用于获取发动机声音样本;所述发动机声音样本包括多个发动机声音段;

低通滤波模块,用于对每个所述发动机声音段进行低通滤波,得到每个所述发动机声音段的低频谐波信号;

高通窄带滤波模块,用于对每个所述发动机声音段进行高通窄带滤波,得到每个所述发动机声音段的高频窄带信号;

希尔伯特变换模块,用于采用希尔伯特变换方法,对每个所述发动机声音段的高频窄带信号进行分解,得到每个所述发动机声音段的对应的包络信号和载波信号;

低频谐波信号拼接模块,用于将所有发动机声音段的低频谐波信号进行拼接,得到低频谐波拼接信号;

载波信号拼接模块,用于将所有发动机声音段的载波信号进行拼接,得到载波拼接信号;

包络信号拼接模块,用于将所有发动机声音段的包络信号进行拼接,得到包络拼接信号;

高频窄带信号计算模块,用于将所述包络拼接信号和所述载波拼接信号相乘,得到高频窄带合成信号;

发动机声音合成模块,用于将所述低频谐波拼接信号和所述高频窄带合成信号相加,合成发动机声音。

可选的,所述高通窄带滤波模块具体包括:

高通窄带滤波单元,用于对每个所述发动机声音段,按1/3倍频程进行高通窄带滤波,得到每个所述发动机声音段对应的多组高频窄带信号;

所述希尔伯特变换模块,具体包括:

分解单元,用于采用希尔伯特变换方法,对每个所述发动机声音段的每组高频窄带信号进行分解,得到每个所述发动机声音段中每组高频窄带信号对应的包络信号和载波信号。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明考虑了声音信号的低频谐波信号和高频窄带信号,将声音样本分解为低频谐波信号和高频窄带信号,然后对分解后的低频谐波信号和高频窄带信号分别进行拼接,最后进行发动机声音合成,信号失真度低,从而使合成的发动机信号更接近与真实声音,提高合成发动机声音的真实度。

此外,在对低频谐波信号和高频窄带信号拼接时,考虑了相位匹配问题,进而在相同相位处对低频谐波信号和高频窄带信号分别进行拼接,避免谱线衔接处出现跳变或产生虚假频率,提高发动机声音的真实度和自然度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明发动机声音合成方法的流程示意图;

图2为本发明低频谐波信号拼接的示意图;

图3为本发明载波信号拼接的示意图;

图4为本发明包络信号拼接的示意图;

图5为本发明发动机声音合成系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

图1为本发明发动机声音合成方法的流程示意图。如图1所示,本发明发动机声音合成方法包括以下步骤:

步骤100:获取发动机声音样本。所述发动机声音样本包括多个发动机声音段。例如,可以采集汽车在真实道路上行驶时,从怠速到2400转/分,以50转为间隔的15秒长发动机声音片段作为发动机声音段,进而得到多个15秒的发动机声音段,即发动机声音样本。具体的,根据实际情况和实际车辆进行相应的发动机声音样本采集。

步骤200:对每个发动机声音段进行低通滤波,得到每个发动机声音段的低频谐波信号。具体过程如下:

根据每个所述发动机声音段的基频,确定每个所述发动机声音段的三次谐波频率。例如,转速为2400转/分的发动机声音段对应的基频为80hz,则该发动机声音段的三次谐波为240hz。

基于所述三次谐波频率,根据1/3倍频程的频带划分,确定每个所述发动机声音段对应的低通滤波器的频率上限。例如,转速为2400转/分的发动机声音段对应低频滤波器的频率上限为282hz。

采用所述低通滤波器对对应的所述发动机声音段进行低通滤波,得到每个所述发动机声音段对应的低频谐波信号。低于该低通滤波器频率上限的信号为低频谐波信号,每个所述发动机声音段对应的低频谐波信号包括发动机基频的阶次谐波信号、1阶次谐波信号、2阶次谐波信号和3阶次谐波信号。

步骤300:对每个发动机声音段进行高通窄带滤波,得到每个发动机声音段的高频窄带信号。具体的,对每个所述发动机声音段,按1/3倍频程进行高通窄带滤波,可以得到每个所述发动机声音段对应的多组高频窄带信号。

步骤400:采用希尔伯特变换方法,对每个发动机声音段的高频窄带信号进行分解,得到每个发动机声音段高频窄带信号对应的包络信号和载波信号。本发明中对每一组高频窄带信号均进行分解得到包络信号和载波信号,即对每一组高频窄带信号均采用希尔伯特变换方法进行分解,进而可以得到每个发动机声音段中每组高频窄带信号对应的包络信号和载波信号。

步骤500:将所有发动机声音段的低频谐波信号进行拼接,得到低频谐波拼接信号。经过低通滤波后,低频谐波信号以基频为主。如图2所示,当与下一个发动机声音段的低频谐波信号进行拼接时,首先获取当前发动机声音段的低频谐波信号的相位,进而通过基音同步技术,确定下一发动机声音段的低频谐波信号的初始相位。然后,在低频谐波信号拼接段对相邻两个发动机声音段的低频谐波信号进行拼接,在低频谐波信号拼接段的长度为基频波长的1/2。考虑到两段低频谐波信号虽以基频为主,但也包含其它频率成分,两段新会的幅值相位会有一些差异,因此采用过零点对齐使相邻两个发动机声音段的低频谐波信号的相位对齐,即使得下一发动机声音段的低频谐波信号初始相位与当前发动机声音段的低频谐波信号相位对齐,然后再进行拼接。依次对所有相邻两个发动机声音段的低频谐波信号进行拼接后,得到低频谐波拼接信号。

步骤600:将所有发动机声音段的各组载波信号分别进行拼接,得到载波拼接信号。如图3所示,本步骤对载波信号进行拼接时,是将相邻发动机声音段的同一组高频窄带信号的载波信号进行拼接。由于所有组高频窄带信号对应的载波信号的幅值均为1,因此,对载波信号进行拼接时,只需要对齐前后载波信号的相位即可。具体过程如下:

对于第i组高频窄带信号,获取当前发动机声音段中第i组载波信号的末端相位;i=1、2、3、4、5…。第i组载波信号为第i组高频窄带信号对应的载波信号。

根据所述当前发动机声音段中第i组载波信号的末端相位,确定下一发动机声音段中第i组载波信号的起始点。所述下一发动机声音段中第i组载波信号的起始点的相位与所述当前发动机声音段中第i组载波信号的末端相位相同。

将所述当前发动机声音段中第i组载波信号的末端和所述下一发动机声音段中第i组载波信号的起始点对齐,在第i组载波信号拼接段,对当前发动机声音段中第i组载波信号和下一发动机声音段中第i组载波信号进行拼接。当第i组载波信号的频率小于2khz时,第i组载波信号拼接段的长度为1/3倍频程中心频率波长的1/2;当第i组载波信号的频率大于或等于2khz时,由于采样点较少,第i组载波信号拼接段的长度为1/3倍频程中心频率波长。

依次对所有相邻的发动机声音段中第i组载波信号进行拼接,得到第i组载波拼接信号,第i组载波拼接信号是将所有发动机声音段中第i组载波信号全部拼接的结果。

按照上述方式,依次得到每一组载波拼接信号,即依次得到第1组载波拼接信号、第2组载波拼接信号、第2组载波拼接信号、第3组载波拼接信号和第4组载波拼接信号,以此类推。

步骤700:将所有发动机声音段的包络信号进行拼接,得到包络拼接信号。如图4所示,与载波信号拼接过程类似,包络信号拼接时,也是将相邻发动机声音段的同一组高频窄带信号的包络信号进行拼接。高频窄带信号中的包络信号值均为正值,包络信号频率以发动机基频为主,包含1/4、1/2阶次频率及谐波。考虑到包络信号中有基频的1/4和1/2阶次频率存在,且均为正值,幅值变化较大,因此增加包络拼接段的长度,将包络拼接段设定为基频波长的1.5倍。具体的,包络信号拼接过程如下:

对于第i组高频窄带信号,获取当前发动机声音段中第i组高频窄带信号中一个基频周期内的最大峰值,通常一个基频周期内约包括2个峰值点。

根据当前发动机声音段中第i组高频窄带信号中一个基频周期内的最大峰值,确定下一发动机声音段中第i组高频窄带信号的峰值点;所述下一发动机声音段中第i组高频窄带信号的峰值点的峰值与当前发动机声音段中第i组高频窄带信号中一个基频周期内的最大峰值相等。

将下一发动机声音段中第i组高频窄带信号的峰值点与当前发动机声音段中第i组高频窄带信号中一个基频周期内的最大峰值位置对齐,在第i组包络信号拼接段,对当前发动机声音段中第i组高频窄带信号的包络信号和下一发动机声音段中第i组高频窄带信号的包络信号进行拼接;所述第i组包络信号拼接段为基频波长的1.5倍,且所述下一发动机声音段中第i组高频窄带信号的峰值点位于所述第i组包络信号拼接段的1/2位置,即在峰值点左右分别延展1/4基频波长为包络拼接段。

依次对所有发动机声音段中第i组高频窄带信号的包络信号进行拼接,得到第i组包络拼接信号。

按照上述步骤依次得到每一组包络拼接信号,即依次得到第1组包络拼接信号、第2组包络拼接信号、第3组包络拼接信号、第4组包络拼接信号和第5组包络拼接信号,以此类推。

步骤800:将各组包络拼接信号和载波拼接信号分别相乘,然后相加,得到高频窄带合成信号。具体的,将相同组的包络拼接信号和载波拼接信号相乘,可以得到对应组的高频窄带信号。例如,对于第i组高频窄带信号,将第i组包络拼接信号和第i组载波拼接信号相乘,得到第i组窄带信号。然后将所有组窄带信号相加,可以得到高频窄带合成信号。

步骤900:将低频谐波拼接信号和高频窄带合成信号相加,合成发动机声音。合成的发动机声音模型如下:

式中,为低频谐波信号,n为谐波阶次,an为第n阶次谐波幅值,ω0为基频,为第n阶次谐波初始相位;为高频窄带信号,为第i组载波信号为第i组包络信号,bi为第i组高频窄带信号的载波信号幅值,ωi为第i组高频窄带信号的载波中心频率,为第i组高频窄带信号的载波初始相位,mi为第i组高频窄带信号的调幅因子,i为高频窄带信号的组号,kij为发动机阶次,为第i组高频窄带信号中kij阶次信号的相位,n为高频窄带信号分组的个数。

本发明还提供一种发动机声音合成系统,图5为本发明发动机声音合成系统的结构示意图。如图5所示,本发明发动机声音合成系统包括以下结构:

发动机声音样本获取模块501,用于获取发动机声音样本;所述发动机声音样本包括多个发动机声音段。

低通滤波模块502,用于对每个所述发动机声音段进行低通滤波,得到每个所述发动机声音段的低频谐波信号。

高通窄带滤波模块503,用于对每个所述发动机声音段进行高通窄带滤波,得到每个所述发动机声音段的高频窄带信号。

希尔伯特变换模块504,用于采用希尔伯特变换方法,对每个所述发动机声音段的高频窄带信号进行分解,得到每个所述发动机声音段的对应的包络信号和载波信号。

低频谐波信号拼接模块505,用于将所有发动机声音段的低频谐波信号进行拼接,得到低频谐波拼接信号。

载波信号拼接模块506,用于将所有发动机声音段的载波信号进行拼接,得到载波拼接信号。

包络信号拼接模块507,用于将所有发动机声音段的包络信号进行拼接,得到包络拼接信号。

高频窄带合成信号计算模块508,用于将所述包络拼接信号和所述载波拼接信号相乘,得到高频窄带合成信号。

发动机声音合成模块509,用于将所述低频谐波拼接信号和所述高频窄带合成信号相加,合成发动机声音。

作为另一实施例,本发明发动机声音合成系统中,所述高通窄带滤波模块503具体包括:高通窄带滤波单元,用于对每个所述发动机声音段,按1/3倍频程进行高通窄带滤波,得到每个所述发动机声音段对应的多组高频窄带信号。

所述希尔伯特变换模块504,具体包括:分解单元,用于采用希尔伯特变换方法,对每个所述发动机声音段的每组高频窄带信号进行分解,得到每个所述发动机声音段中每组高频窄带信号对应的包络信号和载波信号。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。

此文章来源于网络,如有侵权,请联系删除

tips