基于缸压信号的汽车声音合成算法研究*
2021-11-04谢丽萍卢炽华刘志恩朱亚伟吕之品
谢丽萍,卢炽华,刘志恩,朱亚伟,刘 恺,孙 唯,吕之品
(1.武汉理工大学,现代汽车零部件技术湖北省重点实验室,武汉430070;2.东风汽车集团股份有限公司,武汉430070)
前言
汽车声品质对乘客的舒适度起着至关重要的作用,决定着用户对产品的购买欲望[1-3]。过去各大汽车研究所与主机厂依据噪声法规降低声压级的方式受到了严峻挑战,用户更加注重汽车整体的声品质,这对汽车的NVH提出了日益苛刻的要求,突出体现为“从静音到声品质”的变革[4]。
随着主动发声(active sound generate,ASG)技术的应用,汽车可以根据用户群体的需求设计满足目标要求的车内声音,使汽车原本单一乏味、千篇一律的声音有了辨识度。通过ASG技术改善车内声音声品质不仅提高了驾驶员的驾驶乐趣,而且能塑造汽车品牌标识。Scheuren等[5]提出了汽车的主动声音设计和主动发声的概念,以发动机的阶次声为模拟对象,探究不同阶次声匹配对声音特性的影响,并以此为依据设计声音样本。Park等[6]开发了一种个性化发动机声音系统(PESS),可通过选择和调整发动机声音类型、音量、音调和油门踏板灵敏度来创建各种发动机声音。Hutchinson公司的Audrain[7]对汽车声音主动控制技术进行了研究,设计了一款基于电子激振器的主动发声控制系统,并成功运用于电动汽车和混合动力汽车上,实现根据车辆不同的行驶工况给驾驶者或者行人声音上的反馈,保证驾驶激情和安全性。德国Neosonic公司的Bodden等[8]构建了elvis3系统,该系统实现电动汽车产生车外行人警示声音和重建车内“发动机声音”的反馈,为主动声音设计从实验室开发到整车实施提供了相同的平台与便利。
车内ASG技术能够灵活实现满足不同用户群体期望的车内声音设计,汽车声音合成算法是技术实现的核心。声音粒子合成算法是ASG技术中常用的汽车声音合成算法之一,主要是将设计好的声音样本分割成细小的声音粒子,存储在控制器的内存卡中。根据汽车的行驶工况输入读取内存卡中的声音粒子,并进行拼接从而合成目标声音样本。2012年Jagla等[9]提出了一种基于基音同步叠加的内燃机噪声合成方法,通过主谐波定位的方式分割音频片段并循环播放以获得合成音频,合成所需计算量小且真实度较高。Baldan等[10]基于对四冲程发动机工作原理分析,引入了一种内燃机声音合成的计算模型。胡达远[11]参考分析发动机转速在整个转速范围内连续变化时对应的发动机声音录音,建立声音样本库,并通过该样本库实时模拟任一转速下发动机声音。
以往声音粒子合成算法都是将录制好的声音先切割成小的声音样本,然后存储为声音样本库,再根据工况输入读取对应样本后进行声音拼接,从而播放出随工况变化的声音。本文突破常规,提出一种基于发动机缸压信号的声音合成新方法:通过录制满足偏好性要求车型的声音样本,直接存储完整的音频信号;然后,基于缸压信号的周期特性构建声音粒子检索表;其次,设定检索转速的时间步长匹配索引矩阵中对应的转速区间范围,计算提升倍数;最后,以变速不变调的算法进行汽车声音的模拟。此外,本文中利用MATLAB软件编写SS⁃BCPS算法的可视化GUI程序界面,通过试验测试的发动机声音与缸压信号在GUI界面上合成目标声音,并组织主观评价试验,对比合成音与原始音频的真实性验证提出的SS⁃BCPS算法的有效性。
1 SS⁃BCPS的原理
参考声音粒子合成算法的机理[9],针对算法中声音粒子切割难度大,且声音粒子拼接容易出现爆音的问题,本文中提出了一种基于缸压信号的汽车声音合成算法(SS⁃BCPS),算法原理图如图1所示。
图1 SS⁃BCPS算法原理图
1.1 声音粒子索引矩阵的构建
发动机噪声主要成分的本质是每个气缸的燃烧室发生连续点火产生的阶次声,典型四冲程发动机的气缸压力波形如图2所示。其中,A点为气缸压力的波峰,TDC代表压缩上止点,BDC代表下止点。相邻两个波峰之间代表一个完整的发动机循环,活塞从上止点TDC到下止点BDC再到TDC,包括膨胀、排气、进气和压缩行程,其中曲轴转动2圈[12]。单位时间内气缸压力波形的变化能够通过时间轴的方式反应,基于发动机缸压信号的周期特性,本文中将相邻两个缸压波峰之间的时间长度定义为一个声音粒子的时长。
图2 四冲程发动机缸压曲线
方波是一种非正弦曲线的波形,通常会于电子和讯号处理时出现,理想方波只有“高”和“低”这两个值。为了避免信号采集中出现非相关因素的干扰,将缸压信号曲线以峰值数值的80%为临界点转换为方波曲线。将缸压信号大于峰值最大点数值80%的曲线取值为1,否则取值都设为0,以此转换为方波曲线,转换后的方波曲线如图3所示。定义相邻两个方波高电平的中点之间的距离为一个声音粒子的时长,前一个方波的中点为一个声音粒子片段的起点,后一个方波的中点为终点。其中,定义的声音粒子片段是在短时间范围内的,因此认为每个声音粒子片段都是稳态的、时不变的信号。
图3 方波曲线示意图
构建声音粒子索引矩阵,主要包括声音粒子的定位和转速的计算。一个完整的发动机循环等同于一个声音粒子的区间,曲轴转2圈。利用方波曲线定位出每个声音粒子片段的起点与终点位置,并计算每个声音粒子片段对应的转速:
式中:Ni为第i个声音粒子片段对应的转速;Si为第i个声音粒子片段的起点;Ei为第i个声音粒子片段的终点;fs为原始声音样本的采样频率。
根据所述的每个声音粒子片段对应的转速信息、起点和终点位置,构建维度为n×3声音粒子索引矩阵。其中,n为声音粒子的个数,第1列存储每个声音粒子片段对应的转速Ni,第2列为每个声音粒子片段的起始位置Si,第3列为每个声音粒子片段的终止位置Ei。
1.2 变速不变调算法
音频信号的变速不变调即将一段声音的持续时间拉长或者缩短,而声音的音调不发生变化[13]。本文中主要对声音信号进行变速不变调处理,以构建的声音粒子索引矩阵进行转速区间的定位,在时域内对索引的声音粒子片段进行删除,同时保证声音信号的采样频率、基频和共振峰等都没有发生变化,从而实现合成音变速不变调的放音效果[14]。
根据车况转速输入信息,与声音粒子索引矩阵中第1列对应的转速做差值计算,定位最小差值数对应的行数,匹配声音粒子索引矩阵对应的转速区间范围。计算转速区间范围内对应的声音信号时长为
其中,根据转速区间上限值Ni与转速区间下限值Ni+k,分别定位索引矩阵中第i个声音粒子片段的起点位置Si与第i+k个声音粒子片段的终点位置Ei+k。转速区间范围内共k+1个声音粒子。
进一步地,设定检索转速时间步长P,计算转速区间范围内对应的声音信号时长Tk+1提升倍速为
式中fix为取整函数,设定提升倍数向上取整,不足的由0取代。
根据提升倍数μ,提取k+1个声音粒子中的M个声音粒子片段,提取声音粒子的间隔为D,其中,M与D的计算表达式分别为
将提取的M个声音粒子在时域内依次拼接合成,模拟出与驾驶员行为匹配的汽车声音。值得注意的是,本文中提出的声音合成算法不仅仅针对发动机声音,还包括其他与发动机缸压信号强相关的声音,如车内声音、进排气声音等。
2 试验测试与数据处理
2.1 信号的采集
以模拟发动机声音为例,利用本文提出的SS⁃BCPS算法合成目标声音。首先,需要同步采集目标发动机声音样本与其对应的缸压信号,在发动机半消实验室内进行测试,试验场景如图4所示。
图4 发动机声音与缸压信号采集示意图
在发动机顶部和左右两侧各布置一个声压传感器。为保证缸压信号采集的准确性,在四冲程发动机的气缸内各布置一个缸压传感器。试验中须注意:在发动机第1缸上止点附近贴1个加速度传感器,用于判断是否发生敲缸,同时检查4个缸压信号是否一致。运行发动机,使其转速从怠速缓慢加速到发动机能达到的最高转速,利用SIEMENS生产的40通道SCM2E05数据采集系统采集信号同步采集声音样本与缸压信号,共采集3组数据,对比前后采集数据的一致性,选择最优数据作为SS⁃BCPS算法所需的原始声音与缸压信号。并对信号进行降噪、滤波等处理,以剔除不相干噪声的影响。试验设备如表1所示。
表1 试验设备
图5 (a)为采集的发动机声音信号的频谱图。由图可知,发动机声音的2阶成分在全转速范围内能量均突出,4、6、8阶的成分占比明显,符合传统四缸机的声学特性。其中,除主阶次外,本次采集的发动机声音包括奇数阶、半阶成分在中高转速范围的能量明显高于低转速范围内的,400-500 Hz的能量突出。主观感受上,采集的发动机声音强且清晰,富有力量,声音成分和谐饱满,加速连贯。图5(b)为采集的发动机缸压信号,如2.1节所述,缸压信号呈现周期性变化,两个相邻的波峰代表一个完整的发动机循环。
图5 试验采集的信号
2.2 SS⁃BCPS算法的实现
编写MATLAB程序复现第1节所介绍的SS⁃BCPS算法,以实现不同工况下的汽车声音模拟。编写的SS⁃BCPS算法计算GUI程序界面与算法流程如图6和图7所示,软件窗口界面主要分为信号导入模块、参数控制模块、声音合成模块和界面显示模块。
图6 软件界面
图7 SS⁃BCPS算法软件流程图
信号导入模块由“缸压导入”、“声音导入”两按钮组成。可依次导入缸压-时间序列和原始声音(wav.格式)信号。界面显示模块中的两个绘图界面均会自动显示出原始声音样本的频谱图。
参数控制模块可选择要模拟的转速区间、转速间隔与检索时间步长。点击“索引矩阵生成”模块可根据输入的缸压与声音信号,自动存储与导入声音与缸压信号匹配的声音粒子索引矩阵。起始转速、终止转速文本、转速间隔、检索时间步长文本框用以输入SS⁃BCPS算法所需的控制参数。
点击声音合成模块中的“声音合成”按钮,即实现基于SS⁃BCPS算法的声音模拟,且在界面显示模块中下方绘图界面自动显示出合成音的频谱图。点击“播放”按钮可播放合成音样本以便试听,分辨合成音前后的差异。点击“导出”按钮可在指定文件位置导出合成音。
3 合成音的主观评价
本文中基于2.1节所采集的发动机声音与缸压信号,利用编写的SS⁃BCPS算法GUI程序实现对发动机声音的模拟。为了进一步验证合成音的效果,合成提升倍数分别为原始音频的4倍、3倍、2倍、1.5倍的发动机声音样本,分别标记为S1、S2、S3、S4。并在发动机台架上录制与4组合成音对比的发动机声音,分别标记为R1、R2、R3、R4。形成4组声音样本对,分别标记为Group1、Group2、Group3、Group4。
从驾驶经验、教育水平、年龄、性别以及有无声学知识等方面选取共计22名评价者[15],评价者由汽车相关专业研究生、高校教师和汽车行业NVH专家工程师组成。其中,男性18人,女性4人,均为右利手,视力正常,具有相关的声品质评价经验。利用成对比较法对4组声音样本进行主观试听,两两比较,选出声品质真实性较高的声音样本,并填入表格,试验结果如表2所示。
表2 主观评价结果
由表2可知,利用成对评价法对比合成音与录制音频的真实性,其中针对真实性主观感受,选择合成音的评价者最高占比为55%,最低占比为45%,总体选择合成音的占比为51.25%,超过50%的选择率。说明合成音能够保留原始音频的主要特征,评价者对原始音与合成音的辨识度不高。进一步证明,本文中提出的SS⁃BCPS算法合成的发动机声音已经可以达到“以假乱真”的效果,证明提出算法的有效性,能够合成逼真的发动机声音。
4 结论
针对ASG系统中所用到的声音合成算法,基于发动机缸压信号的周期特性,提出了一种SS⁃BCPS算法。并利用MATLAB软件编写SS⁃BCPS算法的可视化GUI程序界面,以实现不同工况下汽车声音的模拟,得出以下结论。
(1)引入缸压信号作为声音粒子切割的基准,直接存储完整的音频信号。根据实时转速的输入索引声音粒子,降低了传统声音粒子算法的切割难度,提高合成音的连贯性和自然度。
(2)利用“变速不变调算法”计算提升倍速,选择删减转速区间范围内的声音粒子片段,并将剩余声音粒子片段拼接合成。该方法不仅提高了合成音与驾驶员行为的匹配性,而且可通过修正的提升倍数,获得不同速率的合成音。
(3)组织主观评价,对比合成音与原始音之间的真实性。结果表明,提出的SS⁃BCPS算法能够保留原始音频的主要特征,且音调依旧满足实现用户所选择的偏好性。进一步验证了SS⁃BCPS算法的有效性,可用于ASG系统实时工程的开发与应用。
本文中仅在软件层面验证了SS⁃BCPS算法的可靠性,后续将进一步结合ASG硬件系统的开发,从声音合成算法优化的角度实现主动声音设计技术的突破。