謝麗萍,盧熾華,劉志恩,朱亞偉,劉 愷,孫 唯,呂之品
(1.武漢理工大學(xué),現(xiàn)代汽車零部件技術(shù)湖北省重點實驗室,武漢430070;2.東風(fēng)汽車集團股份有限公司,武漢430070)
汽車聲品質(zhì)對乘客的舒適度起著至關(guān)重要的作用,決定著用戶對產(chǎn)品的購買欲望[1-3]。過去各大汽車研究所與主機廠依據(jù)噪聲法規(guī)降低聲壓級的方式受到了嚴峻挑戰(zhàn),用戶更加注重汽車整體的聲品質(zhì),這對汽車的NVH提出了日益苛刻的要求,突出體現(xiàn)為“從靜音到聲品質(zhì)”的變革[4]。
隨著主動發(fā)聲(active sound generate,ASG)技術(shù)的應(yīng)用,汽車可以根據(jù)用戶群體的需求設(shè)計滿足目標(biāo)要求的車內(nèi)聲音,使汽車原本單一乏味、千篇一律的聲音有了辨識度。通過ASG技術(shù)改善車內(nèi)聲音聲品質(zhì)不僅提高了駕駛員的駕駛樂趣,而且能塑造汽車品牌標(biāo)識。Scheuren等[5]提出了汽車的主動聲音設(shè)計和主動發(fā)聲的概念,以發(fā)動機的階次聲為模擬對象,探究不同階次聲匹配對聲音特性的影響,并以此為依據(jù)設(shè)計聲音樣本。Park等[6]開發(fā)了一種個性化發(fā)動機聲音系統(tǒng)(PESS),可通過選擇和調(diào)整發(fā)動機聲音類型、音量、音調(diào)和油門踏板靈敏度來創(chuàng)建各種發(fā)動機聲音。Hutchinson公司的Audrain[7]對汽車聲音主動控制技術(shù)進行了研究,設(shè)計了一款基于電子激振器的主動發(fā)聲控制系統(tǒng),并成功運用于電動汽車和混合動力汽車上,實現(xiàn)根據(jù)車輛不同的行駛工況給駕駛者或者行人聲音上的反饋,保證駕駛激情和安全性。德國Neosonic公司的Bodden等[8]構(gòu)建了elvis3系統(tǒng),該系統(tǒng)實現(xiàn)電動汽車產(chǎn)生車外行人警示聲音和重建車內(nèi)“發(fā)動機聲音”的反饋,為主動聲音設(shè)計從實驗室開發(fā)到整車實施提供了相同的平臺與便利。
車內(nèi)ASG技術(shù)能夠靈活實現(xiàn)滿足不同用戶群體期望的車內(nèi)聲音設(shè)計,汽車聲音合成算法是技術(shù)實現(xiàn)的核心。聲音粒子合成算法是ASG技術(shù)中常用的汽車聲音合成算法之一,主要是將設(shè)計好的聲音樣本分割成細小的聲音粒子,存儲在控制器的內(nèi)存卡中。根據(jù)汽車的行駛工況輸入讀取內(nèi)存卡中的聲音粒子,并進行拼接從而合成目標(biāo)聲音樣本。2012年Jagla等[9]提出了一種基于基音同步疊加的內(nèi)燃機噪聲合成方法,通過主諧波定位的方式分割音頻片段并循環(huán)播放以獲得合成音頻,合成所需計算量小且真實度較高。Baldan等[10]基于對四沖程發(fā)動機工作原理分析,引入了一種內(nèi)燃機聲音合成的計算模型。胡達遠[11]參考分析發(fā)動機轉(zhuǎn)速在整個轉(zhuǎn)速范圍內(nèi)連續(xù)變化時對應(yīng)的發(fā)動機聲音錄音,建立聲音樣本庫,并通過該樣本庫實時模擬任一轉(zhuǎn)速下發(fā)動機聲音。
以往聲音粒子合成算法都是將錄制好的聲音先切割成小的聲音樣本,然后存儲為聲音樣本庫,再根據(jù)工況輸入讀取對應(yīng)樣本后進行聲音拼接,從而播放出隨工況變化的聲音。本文突破常規(guī),提出一種基于發(fā)動機缸壓信號的聲音合成新方法:通過錄制滿足偏好性要求車型的聲音樣本,直接存儲完整的音頻信號;然后,基于缸壓信號的周期特性構(gòu)建聲音粒子檢索表;其次,設(shè)定檢索轉(zhuǎn)速的時間步長匹配索引矩陣中對應(yīng)的轉(zhuǎn)速區(qū)間范圍,計算提升倍數(shù);最后,以變速不變調(diào)的算法進行汽車聲音的模擬。此外,本文中利用MATLAB軟件編寫SS?BCPS算法的可視化GUI程序界面,通過試驗測試的發(fā)動機聲音與缸壓信號在GUI界面上合成目標(biāo)聲音,并組織主觀評價試驗,對比合成音與原始音頻的真實性驗證提出的SS?BCPS算法的有效性。
參考聲音粒子合成算法的機理[9],針對算法中聲音粒子切割難度大,且聲音粒子拼接容易出現(xiàn)爆音的問題,本文中提出了一種基于缸壓信號的汽車聲音合成算法(SS?BCPS),算法原理圖如圖1所示。
圖1 SS?BCPS算法原理圖
發(fā)動機噪聲主要成分的本質(zhì)是每個氣缸的燃燒室發(fā)生連續(xù)點火產(chǎn)生的階次聲,典型四沖程發(fā)動機的氣缸壓力波形如圖2所示。其中,A點為氣缸壓力的波峰,TDC代表壓縮上止點,BDC代表下止點。相鄰兩個波峰之間代表一個完整的發(fā)動機循環(huán),活塞從上止點TDC到下止點BDC再到TDC,包括膨脹、排氣、進氣和壓縮行程,其中曲軸轉(zhuǎn)動2圈[12]。單位時間內(nèi)氣缸壓力波形的變化能夠通過時間軸的方式反應(yīng),基于發(fā)動機缸壓信號的周期特性,本文中將相鄰兩個缸壓波峰之間的時間長度定義為一個聲音粒子的時長。
圖2 四沖程發(fā)動機缸壓曲線
方波是一種非正弦曲線的波形,通常會于電子和訊號處理時出現(xiàn),理想方波只有“高”和“低”這兩個值。為了避免信號采集中出現(xiàn)非相關(guān)因素的干擾,將缸壓信號曲線以峰值數(shù)值的80%為臨界點轉(zhuǎn)換為方波曲線。將缸壓信號大于峰值最大點數(shù)值80%的曲線取值為1,否則取值都設(shè)為0,以此轉(zhuǎn)換為方波曲線,轉(zhuǎn)換后的方波曲線如圖3所示。定義相鄰兩個方波高電平的中點之間的距離為一個聲音粒子的時長,前一個方波的中點為一個聲音粒子片段的起點,后一個方波的中點為終點。其中,定義的聲音粒子片段是在短時間范圍內(nèi)的,因此認為每個聲音粒子片段都是穩(wěn)態(tài)的、時不變的信號。
圖3 方波曲線示意圖
構(gòu)建聲音粒子索引矩陣,主要包括聲音粒子的定位和轉(zhuǎn)速的計算。一個完整的發(fā)動機循環(huán)等同于一個聲音粒子的區(qū)間,曲軸轉(zhuǎn)2圈。利用方波曲線定位出每個聲音粒子片段的起點與終點位置,并計算每個聲音粒子片段對應(yīng)的轉(zhuǎn)速:
式中:Ni為第i個聲音粒子片段對應(yīng)的轉(zhuǎn)速;Si為第i個聲音粒子片段的起點;Ei為第i個聲音粒子片段的終點;fs為原始聲音樣本的采樣頻率。
根據(jù)所述的每個聲音粒子片段對應(yīng)的轉(zhuǎn)速信息、起點和終點位置,構(gòu)建維度為n×3聲音粒子索引矩陣。其中,n為聲音粒子的個數(shù),第1列存儲每個聲音粒子片段對應(yīng)的轉(zhuǎn)速Ni,第2列為每個聲音粒子片段的起始位置Si,第3列為每個聲音粒子片段的終止位置Ei。
音頻信號的變速不變調(diào)即將一段聲音的持續(xù)時間拉長或者縮短,而聲音的音調(diào)不發(fā)生變化[13]。本文中主要對聲音信號進行變速不變調(diào)處理,以構(gòu)建的聲音粒子索引矩陣進行轉(zhuǎn)速區(qū)間的定位,在時域內(nèi)對索引的聲音粒子片段進行刪除,同時保證聲音信號的采樣頻率、基頻和共振峰等都沒有發(fā)生變化,從而實現(xiàn)合成音變速不變調(diào)的放音效果[14]。
根據(jù)車況轉(zhuǎn)速輸入信息,與聲音粒子索引矩陣中第1列對應(yīng)的轉(zhuǎn)速做差值計算,定位最小差值數(shù)對應(yīng)的行數(shù),匹配聲音粒子索引矩陣對應(yīng)的轉(zhuǎn)速區(qū)間范圍。計算轉(zhuǎn)速區(qū)間范圍內(nèi)對應(yīng)的聲音信號時長為
其中,根據(jù)轉(zhuǎn)速區(qū)間上限值Ni與轉(zhuǎn)速區(qū)間下限值Ni+k,分別定位索引矩陣中第i個聲音粒子片段的起點位置Si與第i+k個聲音粒子片段的終點位置Ei+k。轉(zhuǎn)速區(qū)間范圍內(nèi)共k+1個聲音粒子。
進一步地,設(shè)定檢索轉(zhuǎn)速時間步長P,計算轉(zhuǎn)速區(qū)間范圍內(nèi)對應(yīng)的聲音信號時長Tk+1提升倍速為
式中fix為取整函數(shù),設(shè)定提升倍數(shù)向上取整,不足的由0取代。
根據(jù)提升倍數(shù)μ,提取k+1個聲音粒子中的M個聲音粒子片段,提取聲音粒子的間隔為D,其中,M與D的計算表達式分別為
將提取的M個聲音粒子在時域內(nèi)依次拼接合成,模擬出與駕駛員行為匹配的汽車聲音。值得注意的是,本文中提出的聲音合成算法不僅僅針對發(fā)動機聲音,還包括其他與發(fā)動機缸壓信號強相關(guān)的聲音,如車內(nèi)聲音、進排氣聲音等。
以模擬發(fā)動機聲音為例,利用本文提出的SS?BCPS算法合成目標(biāo)聲音。首先,需要同步采集目標(biāo)發(fā)動機聲音樣本與其對應(yīng)的缸壓信號,在發(fā)動機半消實驗室內(nèi)進行測試,試驗場景如圖4所示。
圖4 發(fā)動機聲音與缸壓信號采集示意圖
在發(fā)動機頂部和左右兩側(cè)各布置一個聲壓傳感器。為保證缸壓信號采集的準確性,在四沖程發(fā)動機的氣缸內(nèi)各布置一個缸壓傳感器。試驗中須注意:在發(fā)動機第1缸上止點附近貼1個加速度傳感器,用于判斷是否發(fā)生敲缸,同時檢查4個缸壓信號是否一致。運行發(fā)動機,使其轉(zhuǎn)速從怠速緩慢加速到發(fā)動機能達到的最高轉(zhuǎn)速,利用SIEMENS生產(chǎn)的40通道SCM2E05數(shù)據(jù)采集系統(tǒng)采集信號同步采集聲音樣本與缸壓信號,共采集3組數(shù)據(jù),對比前后采集數(shù)據(jù)的一致性,選擇最優(yōu)數(shù)據(jù)作為SS?BCPS算法所需的原始聲音與缸壓信號。并對信號進行降噪、濾波等處理,以剔除不相干噪聲的影響。試驗設(shè)備如表1所示。
表1 試驗設(shè)備
圖5 (a)為采集的發(fā)動機聲音信號的頻譜圖。由圖可知,發(fā)動機聲音的2階成分在全轉(zhuǎn)速范圍內(nèi)能量均突出,4、6、8階的成分占比明顯,符合傳統(tǒng)四缸機的聲學(xué)特性。其中,除主階次外,本次采集的發(fā)動機聲音包括奇數(shù)階、半階成分在中高轉(zhuǎn)速范圍的能量明顯高于低轉(zhuǎn)速范圍內(nèi)的,400-500 Hz的能量突出。主觀感受上,采集的發(fā)動機聲音強且清晰,富有力量,聲音成分和諧飽滿,加速連貫。圖5(b)為采集的發(fā)動機缸壓信號,如2.1節(jié)所述,缸壓信號呈現(xiàn)周期性變化,兩個相鄰的波峰代表一個完整的發(fā)動機循環(huán)。
圖5 試驗采集的信號
編寫MATLAB程序復(fù)現(xiàn)第1節(jié)所介紹的SS?BCPS算法,以實現(xiàn)不同工況下的汽車聲音模擬。編寫的SS?BCPS算法計算GUI程序界面與算法流程如圖6和圖7所示,軟件窗口界面主要分為信號導(dǎo)入模塊、參數(shù)控制模塊、聲音合成模塊和界面顯示模塊。
圖6 軟件界面
圖7 SS?BCPS算法軟件流程圖
信號導(dǎo)入模塊由“缸壓導(dǎo)入”、“聲音導(dǎo)入”兩按鈕組成??梢来螌?dǎo)入缸壓-時間序列和原始聲音(wav.格式)信號。界面顯示模塊中的兩個繪圖界面均會自動顯示出原始聲音樣本的頻譜圖。
參數(shù)控制模塊可選擇要模擬的轉(zhuǎn)速區(qū)間、轉(zhuǎn)速間隔與檢索時間步長。點擊“索引矩陣生成”模塊可根據(jù)輸入的缸壓與聲音信號,自動存儲與導(dǎo)入聲音與缸壓信號匹配的聲音粒子索引矩陣。起始轉(zhuǎn)速、終止轉(zhuǎn)速文本、轉(zhuǎn)速間隔、檢索時間步長文本框用以輸入SS?BCPS算法所需的控制參數(shù)。
點擊聲音合成模塊中的“聲音合成”按鈕,即實現(xiàn)基于SS?BCPS算法的聲音模擬,且在界面顯示模塊中下方繪圖界面自動顯示出合成音的頻譜圖。點擊“播放”按鈕可播放合成音樣本以便試聽,分辨合成音前后的差異。點擊“導(dǎo)出”按鈕可在指定文件位置導(dǎo)出合成音。
本文中基于2.1節(jié)所采集的發(fā)動機聲音與缸壓信號,利用編寫的SS?BCPS算法GUI程序?qū)崿F(xiàn)對發(fā)動機聲音的模擬。為了進一步驗證合成音的效果,合成提升倍數(shù)分別為原始音頻的4倍、3倍、2倍、1.5倍的發(fā)動機聲音樣本,分別標(biāo)記為S1、S2、S3、S4。并在發(fā)動機臺架上錄制與4組合成音對比的發(fā)動機聲音,分別標(biāo)記為R1、R2、R3、R4。形成4組聲音樣本對,分別標(biāo)記為Group1、Group2、Group3、Group4。
從駕駛經(jīng)驗、教育水平、年齡、性別以及有無聲學(xué)知識等方面選取共計22名評價者[15],評價者由汽車相關(guān)專業(yè)研究生、高校教師和汽車行業(yè)NVH專家工程師組成。其中,男性18人,女性4人,均為右利手,視力正常,具有相關(guān)的聲品質(zhì)評價經(jīng)驗。利用成對比較法對4組聲音樣本進行主觀試聽,兩兩比較,選出聲品質(zhì)真實性較高的聲音樣本,并填入表格,試驗結(jié)果如表2所示。
表2 主觀評價結(jié)果
由表2可知,利用成對評價法對比合成音與錄制音頻的真實性,其中針對真實性主觀感受,選擇合成音的評價者最高占比為55%,最低占比為45%,總體選擇合成音的占比為51.25%,超過50%的選擇率。說明合成音能夠保留原始音頻的主要特征,評價者對原始音與合成音的辨識度不高。進一步證明,本文中提出的SS?BCPS算法合成的發(fā)動機聲音已經(jīng)可以達到“以假亂真”的效果,證明提出算法的有效性,能夠合成逼真的發(fā)動機聲音。
針對ASG系統(tǒng)中所用到的聲音合成算法,基于發(fā)動機缸壓信號的周期特性,提出了一種SS?BCPS算法。并利用MATLAB軟件編寫SS?BCPS算法的可視化GUI程序界面,以實現(xiàn)不同工況下汽車聲音的模擬,得出以下結(jié)論。
(1)引入缸壓信號作為聲音粒子切割的基準,直接存儲完整的音頻信號。根據(jù)實時轉(zhuǎn)速的輸入索引聲音粒子,降低了傳統(tǒng)聲音粒子算法的切割難度,提高合成音的連貫性和自然度。
(2)利用“變速不變調(diào)算法”計算提升倍速,選擇刪減轉(zhuǎn)速區(qū)間范圍內(nèi)的聲音粒子片段,并將剩余聲音粒子片段拼接合成。該方法不僅提高了合成音與駕駛員行為的匹配性,而且可通過修正的提升倍數(shù),獲得不同速率的合成音。
(3)組織主觀評價,對比合成音與原始音之間的真實性。結(jié)果表明,提出的SS?BCPS算法能夠保留原始音頻的主要特征,且音調(diào)依舊滿足實現(xiàn)用戶所選擇的偏好性。進一步驗證了SS?BCPS算法的有效性,可用于ASG系統(tǒng)實時工程的開發(fā)與應(yīng)用。
本文中僅在軟件層面驗證了SS?BCPS算法的可靠性,后續(xù)將進一步結(jié)合ASG硬件系統(tǒng)的開發(fā),從聲音合成算法優(yōu)化的角度實現(xiàn)主動聲音設(shè)計技術(shù)的突破。