载具引擎声合成系统#
成品演示#
下面是一段 Kohler-ch750 引擎启动到保持怠速到调整节气门的音频

前文#
在遊戲音效領域中,載具引擎的聲音一直是很重要的一部分。
當前主流的方法多是通過現場實錄結合上音頻中間件的實時控制,以實現聽感上真實的引擎聲。進階一些,可以通過粒子合成器來實現更好的效果或控制,比如 Wwise 平台上最常用的 REV 插件,但是從根本上也是需要通過對引擎各部分聲音採樣而實現的。
這種方法顯然存在多種限制。
本系統將通過基於發動機工作原理的基礎上,對其進行物理建模。通過對內燃機運行過程中的建模模擬來合成最後的聲音,能夠實現低延遲、高質量的引擎聲音效果並提供實時反饋。
工程結構#
PS:此處借用 @魯旻荟 同學整理的系統結構圖💕
系統運轉總的流程就是:
首先確定車輛的參數,包括:發動機型號,最大轉速,氣缸數等
其次通過用戶實時的啟動點火,熄火,更改檔位,油門位置等操作,影響發動機轉速,油門開度等重要參數來改變引擎模擬器的狀態。
在循環中,模擬器將會根據引擎實時的狀態開始進行車輛運行狀態下引擎的物理仿真計算。通過對進排氣系統的流體動力學仿真,以及通過對排氣流量、引擎轉速、衰減系數等的計算,確定聲音的特性和強度。
最後將結果寫入合成器(Synthesizer 類)。合成器將模擬引擎轉速及排氣量的數據通過計算轉化為模擬的引擎聲音信號,再反饋回 Simulator 類,生成實時動態的引擎聲音信號,並通過音頻輸出設備進行播放。
核心算法#
首先是物理參數如何影響到聲音強度與音色:
(總的來說就是通過一系列物理參數最終影響到排氣系統的流量,從而改變聲音的基礎頻率;同時通過其他引擎模塊的參數改變音色)
- 發動機轉速 (RPM):
轉速越高,排氣頻率越高,導致排氣脈衝的頻率增加,進而提高聲音的頻率。 - 進氣流量:
進氣量增加通常會導致燃燒更充分、更強烈,產生更大的排氣流量和更響亮的聲音。 - 燃料噴射量:
更多的燃料噴射會導致更強烈的燃燒,產生更高的壓力和排氣流量,從而使聲音更響亮。 - 點火時刻:
提前或推遲點火時刻會改變燃燒過程的特性,影響燃燒的效率和壓力波動,從而影響排氣流量和聲音特性。 - 排氣系統壓力:
排氣系統中的壓力變化會直接影響排氣流量的動態特性和聲音的傳播方式。 - 氣缸壓力:
氣缸內壓力波動的頻率和幅度會影響排氣流量的脈動特性,從而影響聲音的頻率和強度。 - 熱量和溫度:
溫度變化影響氣體的膨脹速度和排氣流量的穩定性,進而影響聲音特性。 - 發動機負載:
負載變化會影響燃燒過程的強度和頻率,從而改變排氣流量和聲音。 - 進排氣門的開閉時刻和持續時間:
進排氣門的時序會影響氣缸內氣體交換的效率,改變排氣流量的脈動特性和聲音。 - 振動和諧振:
發動機及其組件的振動特性會通過排氣系統的振動模式影響排氣流量的調制和聲音的頻譜特性。
其次就是聲音合成系統是如何通過這些參數來最終合成聲音信號的:
-
首先排氣流量信號輸入合成器,對其輸入數值插值平滑處理
-
信號直流濾波處理
-
信號微分處理
-
空氣噪聲低通濾波處理
-
信號混合
-
卷積濾波處理
-
電平調整
-
信號量化
-
最後 render 信號到音頻輸出設備
總結與展望#
目前來說本文的介紹只是粗略的介紹了整個系統一些核心的部分,實際上還有許多具體的內容沒有展開。這個系統目前由於其複雜的計算和物理建模,還並不適合直接應用於遊戲引擎。截止到本文完成為止,作者已經投入在對其進行進一步輕量化的工作當中,並致力於實現其在 UE 引擎中的集成。