問你什麽時候才要接電話。
前言
我們常常在遊戲中聽到來自電話、或是對講機裡面的對話聲音,透過語音我們可以幫助遊戲加速玩家對遊戲世界觀的認識,不過這時候電話中的聲音聽起來應該是如何呢?對講機的效果可以怎麽製作在遊戲裡面?
電話中的聲音?
我們都經常使用手機和電話,仔細聽聽可以發現裡面的聲音和我們平常聽到的感覺不太一樣。對比我們生活中人耳能聽到的頻率20-20KHz,從電話另外一端的麥克風將我們說話的聲音換能,經過電話綫路的濾波傳輸之後、最終透過我們的電話聽筒的揚聲器播放出來,中間經過非常多的聲音訊號處理。
在300hHz-3.5K左右頻率被保留下來,而其他的頻率則在過程中損耗或是過濾掉了,因此造就我們在裡面聽到的聲音幾乎只有中頻,而遊戲中我們常聽到的電話録音,答録機都是在音頻引擎裡面做了對應的濾波處理,讓我們可以更沉浸在遊戲內的氛圍。
我該把效果加在哪裏?
一般我們可以在DAW軟體中直接製作出含有效果器的音訊檔案,不管是套用效果器,使用EQ濾波器等等都可以做到我們要的效果。那可以不透過額外的軟體,直接在FMOD Studio裡面製作電話語音嗎?
把效果套在Studio內,不是檔案上!
沒錯,遊戲中常常使用到的語音小則數十句,動輒上千句都有可能。對音效設計師來說,批量幫語音檔案加上效果器再輸出成音訊檔並不是太困難的事情,但誰能保證這語音檔不會用在別的地方或是設備上?
注意
我們在Asset裏面新增Languages資料夾(名稱隨意),下面放入我們等會要在STUDIO裏面`添加的Locale Name Folder,接下來把會用到的語音放入資料夾下面。(語音名稱可以相同/不同)
企劃
我們上次做的對話有一些地方要改動…我們想把電話設備改成對講機。
音效設計師
天啊,我檔案都已經渲染完了耶,你這樣我要重新全部輸出一次…
新建State Group
我們可以States資料夾下新增Default Work Unit,或是直接在下方新增StateGroup,新增好Group之後才可以將我們要用到的State放入裡面。

添加State到容器或音軌
在Project Explorer下方,我們可以把State組件加入到我們想要變更的聲音素材或是Bus上,在標籤頁找到States,選擇AddStateGroup講剛才做好的Group加入。

編輯State屬性
新增State之後,我們可以在裡面設定我們要的數值。相同的StateGroup可以添加到不同的Sound或是Bus,也就是說兩個不同的Sound套用了同一個StateGroup卻可以做出不同的聲音效果。

聆聽效果
做好個別的設定之後,我們可以回去播放Sound文件,並且在Transport Control裡面找到State標籤,在聲音播放的時候選擇我們其中一個狀態,並且聆聽效果的變化。(參考影片範例1)

範例演示
讓我們看一下實際在Unity內使用State的效果,在影片內製作State High & Low兩種方式來切換不同的音樂狀態,一般會多設定一個None的模式讓State回到原本預設的數值。
[Demo 1] 切換當前播放的音樂狀態
Music From SONUSCORE – Champions Of Darkness (Full) (Tilman Sillescu)
在語音前後加上一點效果!
在加上前面的EQ Filter效果之後,一般常見的電話語音效果就完成的差不多了,不過例如有些設備像是:對講機,通話答録機等這些設備,通常在語音的前後會有一些訊號開始和結束的音效,我們可以讓他動態加載在每一句話的前後嗎?
讓表演再真實一點!
我們都知道在對講機講話之前,會有一個按下通話按鈕的聲音,接着而來的是一小段雜訊,接下來才會是中間說話的聲音。隨着語音剛落,放開通話鍵也會傳出一個突破訊號。這樣的訊號才是所謂一段”完整的聲音表演”。
企劃
音效哥,我們的聲音好像少了點什麽東西…我說不上來。就是不像平常我們在講話的感覺。
音效設計師
沒頭沒尾的聲音表現又讓你胃食道逆流了嗎?試試sidechain吧!
為Music裡新增State
想要在遊戲引擎裡面使用State,我們必須現在wwise的GameSync底下新增這個組件。
新建State Group
和上面的State做法一樣,我們在Work Unit裡面新增一個適合音樂使用的State Group。

添加State組件到Music音軌並編輯屬性
在屬性頁面我們可以對兩個音樂分別設置不同的音量,效果和通道上的效果器數值。

添加State組件到Container
設定好數值後,按下F10切換到交互音樂設計界面,在GameSyncs下面找到我們做好的StateGroup,將其拖到Music Swtich Container Association Editor下方。

對State新增路徑
我們可以在Music Type裡面看到我們想要切換的三種狀態:Indoor ,Outdoor,None(系統自動添加),點擊Add Path準備建立與聲音的關係。

添加路徑到物件
在Project Explorer找到我們想要切換的音樂,分別將其用拖拉的方式或是點擊紅框處添加到Object欄位下方。(參考影片範例2)

總結
回到一開始的引言,原來用State處理從高處瞬間落入水面的聲音效果是這麼簡單!只要在原本和想要切換的狀態之間,設定不同的LPF參數和需要衰減的音量就可以輕鬆完成。
那可能有人會想:State做的事情和RTPC有不一樣嗎?仔細想想,還真的有點不太一樣。RTPC更接近的說:是調整一個連續的數值,表現的是一個線性的變化(當然也可以做成階段性),控制的參數和屬性也有些微的不同,以及一條RTPC 一次只能變更一個Parameter。而State更傾向於整合這些單一的項目,可以批量更改Event或是Bus的聲音屬性,並可以簡單透過調用SetState就完成聲音功能的切換。所以對於大方向上概略的調整建議使用State組件,而要完成細節上的表現還是推薦使用RTPC。