You are on page 1of 71

逢 甲 大 學

電 聲 碩 士 學 位 學 程
碩士論文

通過設計和應用線性相位濾波器
實現遊戲語音頻譜一致性
Achieving Spectrum Consistency of Game Voice by
Design and Application of Linear Phase Filter

指導教授:蔡鈺鼎 博士
研 究 生:范文上

中 華 民 國 一 百 一 十 二 年 九 月
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

致 謝
衷心感謝我的指導教授蔡鈺鼎博士,在電聲碩士學位學程中對我的教

導和耐心指引,蔡鈺鼎博士在學術上對我的論文提出了寶貴的建議與指導,

使我在研究過程中能夠更深入地探索與思考,增長擴大了關於聲音科學的

知識與實作。

此外,我要感謝同學、學弟妹、學長姊們在這段就學時期的無私幫助。

特別要感謝彭子桓同學在學習過程中提供的寶貴意見和技術支持。我亦感

謝逢甲大學提供的良好學術環境與資源,使我能夠在舒適的環境中進行學

習研究。同時,感謝黃錦煌教授,廖祿立董事長,方俊教授,劉育成副教

授,黃振鴻副教授對我的學習與論文提出寶貴建議和幫助,讓我的研究能

夠更加完善。

當然還要特別感謝我的家人。他們一直以來對我的愛護和支持,無論

我面對的困境多麼艱難,他們始終陪伴在我身邊,為我打氣加油。感謝他

們的鼓勵與支持,讓我在學術路上不斷前進。最後,感謝所有在這段時間

給予我幫助、支持和鼓勵的朋友們,你們讓我的碩士生涯順利與健全。

范文上 謹誌於
逢甲大學電聲碩士學位學程
中華民國一百一十二年七月

i
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

摘 要

本論文著重在線上遊戲設計的開發過程中使用特定的語音錄音作為參

考音軌,其頻譜特徵用作為設計濾波器的基礎,我們的目的是設計一個濾

波器,使另一語音錄音(目標音軌)經過該濾波器後,其頻譜能夠接近參

考音軌,進而實現音質的一致性。本研究提出的方法基於線性相位濾波器,

首先透過短時傅立葉變換(STFT)計算出目標音軌與參考音軌的頻譜,接著

比較兩者的頻譜差異,然後根據比較差異的結果,設計一個線性相位濾波

器,該濾波器的目的是讓目標音軌的頻譜與參考音軌的頻譜達到一致,最

後使用卷積的操作將濾波器應用於目標音軌得到輸出結果。

透過頻譜匹配方法,我們不僅能夠改變目標音軌的頻譜特性,使其與

參考音軌的頻譜特性相匹配,還能夠保持目標音軌的時域特性不變,避免

引入額外的相位失真。通過將參考音軌的頻譜特徵應用於目標音軌,輸出

結果顯示音質更接近參考音軌,這將以利後續遊戲開發製程。

關鍵詞:音頻一致性、線性相位濾波器、頻譜特徵、短時傅立葉變換,卷

ii
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

Abstract
This paper delves into the development process of online game design,
where a specific voice recording serves as a reference track for spectral analysis.
The spectral features of this reference track are utilized as the foundation for
designing a filter with the aim of ensuring sound quality consistency in another
voice recording, known as the target track, after processing through the filter.

The methodology proposed in this study relies on the use of linear-phase


filters. Initially, the Short-Time Fourier Transform (STFT) is employed to
calculate the spectra of both the target and reference tracks. Subsequently, the
spectral disparities between these two are evaluated. Based on these distinctions,
a linear-phase filter is meticulously designed to align the spectrum of the target
track with that of the reference track. Then, convolution is applied to process
the target track with the filter, producing the desired output.

This spectral matching approach not only allows us to modify the spectral
characteristics of the target track to resemble those of the reference track closely
but also preserves the target track's time-domain characteristics, preventing
additional phase distortion. By incorporating the spectral features of the
reference track into the target track, the resulting output exhibits a higher
quality that more closely resembles the reference track, offering valuable
advantages for subsequent game development processes.

Keywords: Audio Consistency, Linear-phase Filter, Spectral Features,


Short-Time Fourier Transform, Convolution.

iii
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

目錄
摘 要..........................................................................................................................................ii

Abstract .................................................................................................................................... iii

目錄........................................................................................................................................... iv

圖目錄....................................................................................................................................... vi

表目錄......................................................................................................................................vii

第一章 緒論.............................................................................................................................. 1

1.1 研究動機與目的......................................................................................................... 2

1.2 研究範圍..................................................................................................................... 3

第二章 方法與學術探討.......................................................................................................... 5

2.1 處理語音音頻方法的選擇......................................................................................... 5

2.2 關鍵方法學術探討..................................................................................................... 7

2.2.1 短時傅立葉變換.............................................................................................. 7

2.2.2 線性相位濾波器............................................................................................ 12
2.2.2-1 頻率響應 ............................................................................................ 14
2.2.2-2 脈衝響應 ............................................................................................ 15
2.2.2-3 卷積 .................................................................................................... 18
第三章 實施方法與過程說明................................................................................................ 21

3.1 編程語言選擇........................................................................................................... 22

3.2 語音音頻載入讀取................................................................................................... 22

3.3 語音音頻特徵提取................................................................................................... 23

3.4 振幅譜計算與平均................................................................................................... 25

3.5 線性相位濾波器設計............................................................................................... 26

3.6 使用卷積與輸出結果............................................................................................... 31

3.7 保存輸出檔案........................................................................................................... 32

3.8 設置檔案路徑........................................................................................................... 33
iv
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

3.9 呼叫函數並執行....................................................................................................... 34

3.10 過程總結................................................................................................................. 34

第四章 實施結果與分析........................................................................................................ 38

4.1 實施前準備............................................................................................................... 38

4.2 輸出結果................................................................................................................... 39

4.3 結果分析................................................................................................................... 45

4.3.1 灰階比較圖.................................................................................................... 46

4.3.2 頻率響應圖與歐式距離比較........................................................................ 52

第五章 結論與展望................................................................................................................ 57

參考文獻.................................................................................................................................. 59

v
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖目錄
圖 1 當 N_FFT=1024 女聲輸出頻譜 ............................................ 40
圖 2 當 N_FFT=2048 女聲輸出頻譜 ............................................ 40
圖 3 當 N_FFT=4096 女聲輸出頻譜 ............................................ 41
圖 4 女聲參考音頻頻譜..................................................... 41
圖 5 女聲目標音頻頻譜 .................................................... 42
圖 6 當 N_FFT=1024 男聲輸出頻譜 ............................................ 43
圖 7 當 N_FFT=2048 男聲輸出頻譜 ............................................ 43
圖 8 當 N_FFT=4096 男聲輸出頻譜 ............................................ 44
圖 9 男聲參考音頻頻譜 .................................................... 44
圖 10 男聲目標音頻頻譜 ................................................... 45
圖 11 女聲灰階比較圖 ..................................................... 47
圖 12 女聲輸出入音頻灰階比較圖 ........................................... 48
圖 13 男聲灰階比較圖 ..................................................... 50
圖 14 男聲輸出入音頻灰階比較圖 ........................................... 51
圖 15 女聲各音頻-頻率響應比較圖 .......................................... 53
圖 16 男聲各音頻-頻率響應比較圖 .......................................... 53

vi
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

表目錄
表 1 施行流程表 .......................................................... 21
表 2 設計程式碼流程表 .................................................... 34
表 3 遊戲語音 女聲 音頻輸出圖檔名對照表 .................................. 39
表 4 遊戲語音 男聲 音頻輸出圖檔名對照表 .................................. 42

vii
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

第一章 緒論

音頻頻譜一致性指的是兩個或多個音頻在頻譜特性上的相似程度。實

現頻譜一致性的過程是通過處理與調整目標音頻的頻譜特性,使其與另一

個當作參考音頻的頻譜特性保持一致,目的是將目標音軌可以被參考音頻

在頻譜特性上被應用並指引。

本研究的重點是針對遊戲設計中已錄製好的目標音頻進行處理,將其

頻譜特徵與另一個參考錄音的頻譜特徵進行匹配和被指引著。這需要通過

比較參考音頻和目標音頻之間的頻譜表現差異,設計一個濾波器,然後將

濾波器應用到目標音頻上,使目標音頻在保持原有音色的基礎上,具有與

參考錄音相似的頻譜表現。

由於本研究主要處理的是遊戲設計中商業用途的數位錄音,這些錄音

的音質通常具有高解析度、高保真度和相對較低的失真度。在這樣的基礎

上實現頻譜一致性具較強的合理性,而不是對任意音質的錄音進行處理。

通過這項研究,我們可以更有效地實現音頻頻譜一致性,並提高遊戲

語音音頻製作的整體效果與效率。在未來的工作中,我們將繼續探索如何

優化濾波器設計和應用,以便更精確地實現遊戲語音的音頻頻譜一致性,

為音頻製作帶來更高的品質和效率。

1
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

1.1 研究動機與目的

音質一致性的要求在許多音頻處理的實用場景中都具有重要意義,如

遊戲業、影視業、音樂業等業界的語音處理部分。例如,這些實用場景中,

聲音內容會需要遵循某個參考標準以確保跨平台、跨地域或跨業界的需求。

要達到這一目標,音頻製作人員需要花費大量時間處理分析給定的參考語

音頻,並根據其聲音特徵來處理欲輸出的目標音頻,以便聲音在整個開發

製程中保持一致性。

為了提高製作效率並降低製程時間,實現即時音質一致性變得尤為重

要。例如,在影視集團內,同一故事內容可能被製作成適合不同平台播放

的影音產品,並在全球範圍內進行推廣。在這些產品中,從原始音頻到多

聲道、多語言版本,甚至不同消費者端的播放平台,都需要根據參考語音

音頻的聲音特徵來後期製作。在這樣的製程中,擬合頻譜的特性是處理關

鍵因素之一。頻譜特性的擬合可以使兩個不同的錄音具有相似的音質,但

這並不是音頻保持一致性唯一的影響因素。除了頻譜特性外,還需考慮動

態範圍、時間特性(如擴散、延遲和共振)以及諧波特性等因素,才能確

保音質一致在細節上的完美逼近。然而,在實際商業作品的語音製程中,

由於錄音環境、軟硬體設備條件、輸出聲音規格等等專業技術與要求同等

規格的限制之下,這些其他的聲音特徵的變數影響相對變得比較小。

雖然動態表現、錄音空間特性、音色變化等聲學特徵都會影響音質一
2
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

致性的細節,但在商業工作環境限制下,使得頻譜特性在很大程度上才是

影響音頻整體音色和音響特性的關鍵。所以,當兩個語音音頻的頻譜特性

響應相似時,各個頻率成分的相對振幅如果可以擬合,它們的音色也會非

常相似,從而達到音質一致性的逼近。

本篇論文的研究將以商用遊戲語音的頻譜擬合作為出發點,目的在逼

近音質一致性。通過調整語音音頻的頻率響應以實現相似的頻率特性,讓

我們可以在一定程度上實現音質一致性。在實際應用中,音頻工程師需要

在工作平台和任務組織中投入大量時間來分析、處理並與團隊溝通,以確

保語音音質一致性。為了降低成本並提高效率,尋求一種即時性的音質一

致性解決方案變得尤為重要。

總之,音質一致性在各種音頻處理的實用場景中具有重要意義,並且

對音頻製作人員的工作效率有著重大影響。本研究將以頻譜的擬合為基礎,

探討語音音質一致性的實現方法,以期為音頻製作人員提供一個更有效、

更高效的解決方案。

1.2 研究範圍

本篇研究處理的聲音內容範圍限於商用遊戲設計中的語音,而不是音

樂、音效等等聲音特徵相對複雜,要求細節比較多的聲音內容。基於效率

與即時性的目的,本篇將頻譜的擬合實驗對象限於遊戲語音,語音相對於

音樂或音效具有較少的頻率組成成分。語音一般只包含基本的頻率成分和
3
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

其相應的諧波組成,而音樂和音效的頻率組成成分比較多,包含了更多的

諧波和複雜的頻譜特徵。因此,在頻譜的擬合技術設計中,語音的頻譜特

性更容易被掌握和調整。

其次,語音在主客觀上比音樂或音效更重視清晰度和可辨識性並且容

易理解辨識。 語音訊息的傳遞主要依賴於聲音的特徵,如音高、共振峰等。

這些特徵相對固定,因此進行頻率響應擬合時,只需專注並保留這些關鍵

特徵即可。音樂音效則涉及更多的音頻成分和變化,因此在進行頻率響應

擬合時,可能會對音質造成較大的影響。並且語音的時域特性相對較簡單,

不包含複雜的共鳴、混響和回聲等效應,特別是商用遊戲錄音,對此要求

限制更高。因此處理起來相對較容易。 相對的,音樂和音效通常需要更複

雜的處理技術,來實現相應的效果目的。

所以綜合上述,本篇研究對象的範圍會在商用遊戲語音錄音。

4
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

第二章 方法與學術探討

我們將對商用遊戲數位語音為對象進行頻譜的擬合以完成音質一致性

的目的,採取處理的方法因應即時性與效率的前提,就像在數位音頻工作

站 DAW (Digital Audio Workstation)裡將音頻經過等化器(Equalizer)[1]插

件的處理一樣,我們將設計一個濾波器,將目標語音音頻經過它處理,使

得目標音頻保持原有音色的基礎上,具有與參考語音音頻相似的頻譜表現,

然後輸出結果。

2.1 處理語音音頻方法的選擇

如果在數位音訊領域裡,參考語音音頻和目標語音音頻的規格條件是:

時長差距不大、取樣速率和位元深度都相同的情況下,且數據量相對較小,

傳統方法像等化器、濾波器或是這幾年受到關注的機器,深度學習方法都

可能適用來處理。選擇哪種方法處理取決於具體的應用場景和需求。對於

這種較短的遊戲語音數位音頻片段,傳統方法可能會有一定的優勢,原因

是:

1.計算複雜度較低:傳統方法在計算上相對簡單,不需要大量的計算資源,

這使得它們在處理較短音訊片段時具有較高的效率。

2.可解釋性較強:傳統方法的參數調整過程通常較為直觀,可以直接觀察

和調整各個頻帶的增益值。這有助於在特定場景下快速獲得較理想的音訊

5
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

效果。

3.適用於小數據:傳統方法不需要大量的訓練數據,在數據量較小的情況

下仍能獲得較好的效果。

在選擇處理方法時,還需要考慮以下因素:

1.可用計算資源:深度學習方法通常需要較多的計算資源,如高性能 GPU。

如果可用資源有限,傳統方法可能更適合。

2.時間限制:深度學習方法可能需要較長的訓練和調整時間樣本,樣本數

量不足容易無法獲得理想的訓練結果。如果需要快速獲得結果,傳統方法

可能更合適。

因此,在這種比較短的遊戲語音數位音頻場景下,傳統方法可能在計

算效率、可解釋性和小數據適應性,可以直接對語音音訊的頻譜特性進行

調整,而無需訓練複雜的模型等等方面具有優勢。所以本篇研究方法將設

計一個濾波器類似傳統方法功能一樣,使得目標語音音頻經過這個設計出

來具有參考語音音頻的頻譜特徵的傳統濾波器,進行處理並輸出一個結果,

讓目標語音音頻的頻譜與參考語音音頻的頻譜趨於一致,意即是我們可以

根據目標語音音頻和參考語音音頻的頻譜比例設計濾波器,並對目標語音

音頻進行濾波應用,使其頻譜接近參考語音音頻的頻譜,有著參考語音音

頻的聲音特徵並保有原來的音色,從而實現音質的一致性。

6
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

2.2 關鍵方法學術探討

音訊處理方法的目標是要設計一個濾波器,它將在不改變目標語音音

頻的音色下,保留目標語音音頻的時域特性(例如音高,動態,時長等)

的同時,使其頻譜特性接近參考語音音頻的頻譜特性。這讓我們的目標語

音有能有著參考語音音頻的聲音特徵,並與參考語音的音質趨向一致。

本篇論文將用編寫程式語言來達成目標。而編寫此程式的關鍵技術,

也就是達成此方法的關鍵學術,在於如何因應我們的目標即設計一個保留

時域特性的濾波器。其要能保持目標音頻訊號的時域特性不變,避免引入

額外的相位失真,最終將音頻訊號的各種頻率成分同步到達聽者的耳朵,

以維持聲音的清晰度和音色。如果某些頻率成分比其他頻率成分延遲或提

前,則可能導致音色失真,我們需要讓所有頻率成分同時到達,不產生相

位失真。所以我們需要線性相位濾波器[2],因為它可以在改變音頻的頻譜

特性的同時,保持音頻的相位特性不變,從而保持其時域特性的穩定性。

2.2.1 短時傅立葉變換

我們需要架構的關鍵是,通過對目標音頻的頻譜特性調整,來達到與

參考音頻相似的音質表現。需要一種方法在保持音軌原有音色的基礎上,

實現音質一致性,這目的以線性濾波器可以達成。這方法主要基於頻域技

術。首先,將計算目標語音音軌和參考語音音軌的頻譜,以此來作為後續

7
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

設計濾波器的基礎。為了提取遊戲設計裡目標與參考語音的頻譜特徵,我

們將遊戲語音的數位錄音訊號的時域部分進行短時傅立葉變換(STFT)[3],

將時間域的音訊訊號轉換為頻率域,並得到每一個短時間段內的頻譜特性,

提取其幅度頻譜。

幅度頻譜是指在時頻譜(Spectrogram)中,以時間為橫軸,頻率為縱

軸在二維度上的表示圖形。該圖行的顏色或亮度則表示該頻率在該時間的

強度或幅度。這種圖形可以顯示出訊號在時間經過中各種頻率上的能量分

布。這樣,我們就能夠在一個圖行中,同時觀察到訊號在時間和頻率上的

變化情況。在音訊處理中,幅度頻譜可以用來瞭解音訊的音調、音色等特

性。對音訊進行短時傅立葉變換(STFT)後,可以得到一系列的幅度頻譜,

形成時頻譜,這種圖可以顯示出音訊隨時間變化的頻譜特性。

短時傅立葉變換(Short-time Fourier Transform,STFT)


,是一種在時

間和頻率領域分析訊號的工具。其基本思想是先將長時間的訊號內容分為

短時間的片段,然後對每個短時間片段進行傅立葉轉換(FFT)[4]。傅立葉

轉換(FFT)只提供訊號本身有哪些頻率成份的資訊,卻沒有提供時間資訊,

它不能同時提供訊號的時間和頻率資訊,因為它把整個訊號當作一個整體

來處理,當我們對整個訊號進行傅立葉轉換時,我們會獲得一個頻譜,說

明包含甚麼頻率成分,以及其頻率成分的振幅和相位。該頻譜表示訊號在

所有時間點的頻率分佈,但是我們並不能看到這個頻譜是如何隨時間變化

8
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

的。因為傅立葉轉換將整個訊號視為一個整體來處理,而不考慮訊號在不

同時間點的行為。假設 x(t)是我們希望分析的信號,那麼其傅立葉轉換 X(𝑓)

定義為[5]:

X(𝑓) = ∫ 𝑥(𝑡)𝑒 −𝑗2𝜋𝑓𝑡 𝑑𝑡 (式 1)

其中,∫ 是積分符號,e 是自然對數的底數,j 是虛數單位,f 是頻率,𝑒 −𝑗2𝜋𝑓𝑡

是傅立葉轉換的基函數。可以看到,傅立葉變換的公式(式 1)中,積分是

在整個時間軸上進行的,這意味著我們在計算每一個頻率成分的時候,都

將訊號的所有時間資訊一起考慮。結果是,我們可以得到每個頻率成分的

振幅和相位,但是我們無法知道這些頻率成分在何時出現或消失。這就是

為什麼傅立葉變換不能提供時間資訊的原因。

短時傅立葉轉換(STFT)則可以提供時間與頻率這兩種資訊。假設 x(t)

是我們希望分析的訊號,w(t)是時間窗函數,對於連續時間訊號,在時間點

t 的 STFT 定義為[6]:

𝑋(𝜏, 𝜔) = ∫ 𝑥(𝑡) 𝑤(𝑡 − 𝜏)𝑒 −𝑗𝜔𝑡 𝑑𝑡 (式 2)

這裡𝑋(𝜏, 𝜔) 是輸入訊號 x(t) 的 STFT,𝜏是時間變量,𝜔是頻率變量。𝑤(𝑡 − 𝜏)

是一個窗函數,用於選取輸入訊號的一個短時間段,窗函數的選擇會影響

STFT 的時間分辨率和頻率分辨率。常見的窗函數包括矩形窗(Rectangular

、漢寧窗(Hanning window)等等,
window)、漢明窗(Hamming window)

寬窗可以給出更好的頻率分析,而窄窗可以給出更好的時間分析,窗函數

9
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

的大小(即窗的寬度)將決定時間和頻率分析的精度[7]。𝜏是時間偏移變量,

𝜔是頻率變量,𝑗是虛數單位,ℯ是自然對數的底數,𝑒 −𝑗𝜔𝑡 是複指數函數,用

於進行傅立葉變換。

(式 2)的意思是,對於每個時間點 𝑡 和頻率 f,STFT 計算的是訊號 𝑥

在時間𝑡的周圍,頻率為 f 其成分的強度。音頻訊號首先被切割成許多短的

片段,然後對每個片段進行傅立葉變換。這能夠得到音頻訊號在每個時間

點的頻率成分。而這窗函數可以減少在傅立葉變換中由於非週期訊號的突

然開始或結束所引起的頻譜失真,使新訊號在窗函數為零的地方開始和結

束,解決了非週期性訊號問題。

總之,短時傅立葉轉換能把訊號分割成短的時間片段,對每個片段進

行傅立葉轉換,在局部時間窗口上應用傅立葉轉換的技術,從而獲得每個

時間片段的頻譜資訊。數位音訊訊號如果使用程式碼來處理會是離散的。

對於 STFT 的離散版本會是:
𝑖2𝜋𝑘𝑛
(− )
𝑋(𝑚, 𝑘) = ∑𝑛 𝑥[𝑛] 𝑤[𝑛 − 𝑚] 𝑒 𝑁 (式 3)

在(式 3)中,"∑_n x[n]"表示對所有的 n 進行求和,每一項是 x 在 n 處的值。

在這裡,n 是一個離散時間點或樣本索引,它在每次迭代中通過 x[n]和 w[n-m]

移動,x[n]表示在時間點 n 的訊號值,一個音頻檔案的樣本值。k 是頻率節

點(frequency bin),m 是時間框架(time frame)的索引,w[n - m]是窗函數,N

是傅立葉轉換的大小(總的取樣點數)
。"-i2πkn/N"的部分,這裡的"i"是虛

10
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

數單位(等於根號-1)
,"2πkn/N"是指在進行傅立葉轉換時用於代表相位的

項。這個項在數學上被稱為複指數,可以將訊號從時間域轉換到頻率域。

過程為 "-2πkn" 被 N 除的結果再乘以虛數單位 "i"。

這裡的過程是說 x[n] w[n - m]就是對訊號 x[n]進行窗化的結果。窗函數

w[n-m]的目的是將訊號的一部分(即一個時間框架)"窗化",以便在這個

時間框架內部分析訊號的頻率內容。意即對每個框架的窗訊號計算傅立葉

轉換,結果會是一個複數值矩陣,代表時間框架 m 中頻率節點(frequency

bin)k 的振幅和相位,振幅表示該頻率的強度或能量,而相位表示該頻率的

相對相位位置,透過對不同時間框架和頻率節點的振幅和相位進行解析,

我們可以獲得音訊在不同時間和頻率上的變化信息。

最後,我們進行求和,對於每一個 n,都將訊號的一個小片段(由窗

函數 w[n-m]定義)與傅立葉轉換項相乘,然後將所有結果加總起來。這個

操作對於所有的時間窗口中心 m 和頻率節點 k 都會執行,生成一個時間-

頻率兩個維度的複數矩陣 X(m, k),其中每各元素代表了在該時間和頻率下

的複數頻譜值。我們將所有時間片段的頻譜訊息組合起來,形成一個二維

的時間-頻率表示,一軸代表時間,另一軸代表頻率。這個時間-頻率平面

中的每一點都對應一個複數,該複數表示在特定時間點的特定頻率成分的

幅度和相位。

這就是 STFT 輸出的結果,是輸出了一個複數矩陣,每各元素表示一

11
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

個時間點和一個頻率的音頻訊號的振幅和相位。振幅(該複數的模或絕對

值)代表該頻率下訊號的能量或強度,是指這個複數在複平面上與原點的

距離。而相位(該複數的角度)代表該頻率下訊號的相對時間延遲。然後,

我們可以計算每個元素的絕對值得到該音頻訊號的平均振幅頻譜。

依此,後續我們可以求得目標音軌和參考音軌之間的頻譜比例。根據

所得的頻譜比例,定義成頻率響應來設計一個線性相位濾波器,即在每各

頻率上,應該如何改變輸入音軌的振幅,使其接近於參考音軌的振幅。這

個比例就成為了我們的濾波器設計的目標。然後將該濾波器應用於目標音

軌,以達到音質一致性的目的。

2.2.2 線性相位濾波器

在數位訊號處理中,濾波器是用來增強或減弱訊號中特定頻率成分的

工具。濾波器的特性由其頻率響應決定,而頻率響應描述了濾波器對不同

頻率的輸入訊號的增益和相位變化。而線性相位濾波器(Linear Phase Filter)

其中的特性是在所有頻率下都具有相同的相位響應,因此它不會引起輸入

訊號的相位失真。

因為這類濾波器的主要特點在於其相位響應與頻率呈線性關係,意即

所有頻率成分在經過濾波器處理後,其相位延遲是恆定的。換句話說,所

有頻率的成分都會同時到達,避免了因相位差異導致的音色變化或其他可

能的失真。
12
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

我們研究的目標是設計線性相位濾波器來完成頻譜的擬合,考慮到由

於線性系統固有頻響的特性,我們選擇採用有限脈衝響應濾波器 (Finite

Impulse Response ,FIR) 的設計策略來達成此目標。FIR 濾波器的設計方法

都僅設計線性相位濾波器,其中包含有多種方法,包括窗口法 (Windowing)、

帶過渡帶的多頻帶 (Multiband with Transition Bands)、升餘弦法 (Raised

Cosine)、約束最小乘二法(Constrained Least Squares)、任意響應(Arbitrary

Response)、等等。在多種方法中,我們可以用參考頻率取樣法 (Frequency

Sampling Method)[8] 作為我們實現頻譜擬合的設計初略,藉此法是基於其

對頻率響應的直接控制,對於會掌握音頻的頻譜特性的我們,應該能有效

藉此線索來實現我們的目標。

依照這個參考線索,線性相位響應濾波器的設計過程大致可分為以下

三步:

1.指定濾波器所需的頻率響應。頻率響應是指在頻域中描述濾波器特性的

函數,這個函數通常由濾波器的要求{例如通帶(Passband)和阻帶(Stopband)

的寬度和漣波(Ripple)來決定。它定義在各種不同頻率下,輸入訊號的振

幅和相位會如何變化,我們通常會使用一個理想的頻率響應 H(f)作為設計

目標。

2.計算所需頻率響應的傅里葉逆變換。使傅里葉逆變換用來將頻域中的設

計轉換到時域的設計。這在時間域中產生一個的響應,視為濾波器的脈衝

13
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

響應 h(t)。

3. 計算和實現脈衝響應。脈衝響應 h(t) 描述了濾波器對單位脈衝的響應,

即在無窮大的時間內對單位脈衝的積分響應。這個響應通常是非常長的,

在真實的世界中,我們不能實現一個無限長的脈衝響應,所以實際設計的

時候需要將其截斷,以通過使用一個窗函數(window function)將理想的脈

衝響應"剪裁"到一個有限的長度,以便我們能在數字濾波器中實現。然後

用有限各元素的數字濾波器來逼近。

2.2.2-1 頻率響應

線性相位濾波器的頻率響應用一般數學描述可以用(式 4)表示[9]:

𝐻(𝑓) = |𝐻(𝑓)|𝑒 𝑗2𝜋𝑓𝜏 (式 4)

其中,𝐻(𝑓)是頻率響應,|𝐻(𝑓)|是振幅響應,f 是頻率,τ 是恆定的時間延

遲,j 是虛數單位。(式 4)表示了頻率響應𝐻(𝑓)在不同頻率下的特性,即其

如何對應各種不同頻率的輸入訊號來進行振幅和相位的處理,也就是說頻

率響應定義濾波器在頻域的行為,說明了在特定頻率下,濾波器會如何影

響輸入訊號的振幅和相位。|𝐻(𝑓)|是頻率響應的振幅,表示了濾波器對不

同頻率的增益或減弱程度。𝑒 𝑗2𝜋𝑓𝜏 是頻率響應的相位成分,表示了濾波器對

不同頻率的相位變化,恆定的時間延遲 𝜏 使得線性相位濾波器在所有頻率

下具有相同的相位響應,確保了所有的頻率成分都會同時到達,從而避免

了音色變化或其他可能的失真。
14
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

如果不是在以上所說的連續時間系統上做考量的話,對於離散時間系

統來做數位濾波器的設計,頻率響應𝐻(𝑒 𝑗𝜔 ) 是系統在頻域中的響應。它描

述了系統如何對輸入訊號的不同頻率成分進行反應處理,通常被定義為系

統的脈衝響應ℎ(𝑛)的離散時間傅立葉轉換[10]。這裡𝜔是數位(或正規化)

頻率變數,𝑛是離散的時間變數。其公式可以寫成[11]:

𝐻(𝑒 𝑗𝜔 ) = ∑∞
𝑛=−∞ ℎ(𝑛)𝑒
−𝑖𝜔𝑛
(式 5)

其中,𝐻(𝑒 𝑗𝜔 )是系統的頻率響應,ℎ(𝑛)是系統的脈衝響應,這是一個離散

時間序列,𝜔是數位頻率,範圍−𝜋 ≤ 𝜔 ≤ 𝜋。符號𝑒 𝑗𝜔 表示在複數平面上的

一個旋轉向量,這可以被視為在複數平面上的一個正弦波,其旋轉速度由

數位頻率𝜔決定,∑_(𝑛 = −∞)^∞表示對所有的時間指數𝑛進行求和。(式

5)表示了對於所有時間變數索引𝑛的ℎ(𝑛),與旋轉複數𝑒 −𝑖𝜔𝑛 的乘積和,轉

換為其頻率域的表示。

結果𝐻(𝑒 𝑗𝜔 )是一個複數函數,對於每個頻率𝜔,它都給出系統的頻率

響應,即系統對該特定頻率輸入的增益與相位變化。如果將特定的相關的

頻譜比率納入上述濾波器的頻率響應設計中,這樣可以確保我們設計的濾

波器能讓某個目標音頻經過處理後,在保持其原始音色的同時,其頻譜特

性能接近給定的參考音頻,以達到頻譜特性的一致性。

2.2.2-2 脈衝響應

脈衝響應描述了當系統受到"單位脈衝"(一個僅在單一時間點具有值
15
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

的訊號)時,系統的響應將是如何的。一般是指系統在輸入為單位脈衝函

數時的輸出(響應)
,被定義為在線性系統對迪拉克 delta 函數的輸出響應

[12]。它在所有點上的值都是零,除了在零點上其值是無窮大,並且其積分

值為 1。或者是在離散系統中對克羅內克δ函數的輸出(響應)[13],它在

n=0 處為 1,而在其他地方值為 0。若是 ℎ(𝑡) 或 ℎ(𝑛) 是脈衝響應,在系

統𝐿的脈衝響應過程應為(式 6):

ℎ(𝑡) = 𝐿{𝛿(𝑡)} 或 ℎ(𝑛) = 𝐿{[𝛿(𝑛)]} (式 6)

這是一種系統對輸入的操作過程。

物理意義上,脈衝響應可以被視為系統對於一個"瞬間"或"突然"的輸

入訊號的反應。由於迪拉克 delta 脈衝在頻率域中是所有頻率的恆量,說明

迪拉克函數在頻率域中包含所有頻率的成分。因此,脈衝響應實際上反映

了系統對於所有頻率輸入的反應,也就是其頻率響應的時間域表示。換句

話說,脈衝響應是一種全頻的響應,它可以告訴我們系統在各種不同頻率

下的反應是如何的,給出了濾波器在所有頻率下的響應資訊,這也就是說,

可以讓我們在時間域中觀察和理解系統的頻率響應。如此,脈衝響應在時

間域中對應到頻率域中的頻率響應,是訊號的頻率響應轉換回其在時間領

域的形式,即系統對於不同頻率的輸入的輸出情況[14]。

假設 H(f) 是一個連續時間系統的頻率響應,那麼該系統的脈衝響應

h(t) 可以通過傅立葉逆變換得到,公式表達如(式 7):

16
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

1 ∞
ℎ(𝑡) = ∫ 𝐻(𝑓)𝑒 𝑗2𝜋𝑓𝑡 𝑑𝑓
2𝜋 −∞
(式 7)

在(式 7)中,對於每一個特定時間點 𝑡 ,脈衝響應 ℎ(𝑡) 的值是頻率響應

𝐻(𝑓) 在所有頻率下的加權平均,其中的權重是 𝑒 𝑗2𝜋𝑓𝑡 這個權重表示一個

以 𝑓 為頻率的複數正弦波。

傅立葉逆變換本質上是一種從頻率領域回到時間領域的轉換過程。它

是通過將所有頻率 f 下的旋轉向量(或稱複數正弦波)依據對應的頻率響

應 H(f) 進行加權,這裡的 "加權過的頻率成分" 實際上就是每個頻率成分

在經過濾波器的頻率響應影響後的結果。例如,如果頻率響應 H(f) 在某一

特定頻率 f0 上的值是 2+0j,是個純實數,相位響應為零,這表示在 f0 頻

率處,該濾波器將輸入訊號的振幅增加一倍,而相位保持不變,這就是"

加權"過的頻率成分。然後將這些加權後的結果進行積分,即將頻率域的訊

號解構為其各個頻率成分,然後按照頻率響應的加權將它們組合起來,從

而得到時間域的訊號就是脈衝響應 h(t)。

在設計濾波器的傳統方法中,我們通常從時間域出發。首先選擇一個

適當的窗函數,如 Hamming 或 Hanning 窗,然後定義濾波器的特定規範,

例如截止頻率。接下來,利用選定的窗函數生成脈衝響應,並使用傅立葉

變換查看其在頻率域中的行為。

但在某些情境下,尤其是當我們具有明確的頻率響應目標時,我們可

能會首先在頻率域中開始。這種方法先定義濾波器的頻率響應,然後嘗試

17
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

使用傅立葉逆變換來獲得其時間域的脈衝響應,我們可以將給定的頻率響

應 𝐻[𝐾] 轉換為其相應的脈衝響應 ℎ[𝑛] 。假設我們有一個 N 點的頻率響

應 𝐻[𝐾](k = 0, 1, .., N-1),則對應的脈衝響應 ℎ[𝑛] 可以從式 8 得到:


𝑗2𝜋𝑘𝑛
1 {𝑁−1}
ℎ[𝑛] = ( ) ∑{𝐾=0} 𝐻[𝐾] 𝑒 𝑁 for n = 0, 1, ..., N-1 (式 8)
𝑁
𝑗2𝜋𝑘𝑛
(式 8)[15]實質上是將所有頻率 k 的複數正弦波(由 𝑒 𝑁 表示)按照頻

率響應 H[k] 的權重相加,並除以 N 進行歸一化,因為這是我們希望得到

的脈衝響應的幅度與原始訊號在時間域下的幅度是一致的,所以,我們需

要將逆變換的結果除以點數 N 進行歸一化。將 h[n] 的範圍歸一化到某一

範圍內,從而得到在時間領域下的脈衝響應 h[n]。求和運算的範圍是從 0

到 N−1。這是由於在離散傅立葉變换中,頻率是離散並且周期的。由於訊

號的週期性,我們通常只需要在一個週期內(即 0 到 N−1)進行考慮。

2.2.2-3 卷積

卷積(Convolution)在訊號處理中是常見的數學運算,用於描述兩個

函數間的某種特定交互關係,以生成一個新的輸出函數。在線性時間不變

系統中,卷積的運算用於描述系統的輸出,輸出訊號可以通過將輸入與系

統的脈衝響應進行卷積操作來獲得。對於連續時間系統,卷積的數學表達

為(式 9) [16]:

𝑦(𝑡) = ∫ 𝑥(𝜏)ℎ(𝑡 − 𝜏)𝑑𝜏 (式 9)

其中,𝑦(𝑡)是輸出,𝑥(𝜏)是輸入,ℎ(𝑡 − 𝜏)是脈衝響應,τ是積分變量。在線
18
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

性相位濾波器中,脈衝響應具有對稱或反對稱的特性,這是因為其相位響

應與頻率之間存在線性關係。這樣的對稱性賦予了這類濾波器一個重要的

特性,即它們能夠保證訊號的頻譜形狀在經過濾波之後不變,輸出的只有

其振幅和相位有所調整。對於音頻處理應用來說,這是一個非常有用的特

性,因為它可以避免引入不期望的相位失真。

而在數位訊號處理中,由於我們處理的是離散的數據點,卷積運算是

透過離散時間卷積來實現的,其數學表達為(式 10) [17]:

𝑦[𝑛] = ∑∞
𝑘=−∞ 𝑥[𝑘] ℎ[𝑛 − 𝑘] (式 10)

其中,𝑦[𝑛]是輸出,𝑥[𝑘]是輸入,ℎ[𝑛 − 𝑘]是濾波器的脈衝響應。假設我們

有兩個序列 x 和 h,它們的卷積 y ,對於輸出序列 y 的每一個元素 y[n],

我們都會遍歷輸入序列 x 的每一個元素 x[m],並將其與 h[n - m] 相乘,

然後將這些乘積加總求合。這就是卷積的基本運算步驟。(式 10)假設序列

x 和 h 是無窮長的,在實際的計算中,我們通常處理的是有限長度的序列

卷積的和,是可以限制在非零範圍內。對於有限長度的序列,假設我們有

兩個有限長度的序列𝑥[𝑚]和 h[𝑚],長度分別為𝑀與𝑁我們可以將(式 10)稍

作修改為:

min (𝑛,𝑀−1)
𝑦[𝑛] = ∑𝑚=max (0,𝑛−𝑁+1) 𝑥[𝑚] ∗ h[𝑛 − 𝑚] (式 11)

其中,M 是序列 x 的長度,N 是序列 h 的長度。(式 11)表示,對於輸出

序列 y 的每一個元素 y[n],我們只需要考慮輸入序列 x 和 h 中在範圍內

19
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

的元素,們不需要計算那些將被零乘的項。將這些元素進行相同的乘積和

加總操作就是卷積的計算過程。所以,卷積的操作被定義為對所有可能的

m 的求和。這個離散時間的卷積公式具有與連續時間卷積公式相同的性質:

它考慮了兩個函數在所有可能的時間位移(由 n - m 表示)上的相互關係,

可以有效的在計算過程中節省資源。

卷積運算提供了一個框架來理解和描述線性時間不變系統的行為,對

於我們想要設計的線性相位濾波器,其頻率響應的相位部分是一個與頻率

成線性關係的函數,這保證了所有頻率成分的相位延遲是恆定的,所有頻

率成分都以相同的速度通過濾波器,而避免可能的相位失真。如果我們使

用線性相位濾波器對目標音頻進行卷積,這可以保留目標音頻的原始特性

而且避免相位失真。而這濾波器的脈衝響應由頻率響應得到,並且如果這

各頻率響應具有目標音頻與參考音頻的頻譜比例特徵,這樣輸出就會有著

原本音頻特徵且不會有可能的相位失真,也能讓頻譜形狀保持不變,只有

其振幅和相位會受到濾波器調整,因此,這樣的卷積輸出結果與過程也就

是本文的研究目的。

20
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

第三章 實施方法與過程說明

實施方法首先是讀取並載入需要的遊戲語音數位音頻檔案,接著進行

短時間傅立葉變換(STFT)得到頻譜,然後計算平均振幅頻譜,依計算出

的平均頻譜作成比率來連結彼此頻譜關係,依比例建立線性相位濾波器的

頻率響應,這樣的設計將不是典型的類型,利用此頻譜匹配的設計建構濾

波器,最後將濾波器應用卷積到目標語音音頻並輸出結果。我們將用編寫

程式碼的方法來實施設計,施行的流程會是如表 1

表 1 施行流程表

載入分析並取得目標音頻與參考音頻的頻譜

計算此二音頻的平均振幅頻譜

使用此二音頻的平均振幅頻譜計算平均頻譜的比率

依此比率當作頻率響應以建構濾波器

轉換調整成脈衝響應

應用濾波器於目標音頻得到輸出結果

21
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

3.1 編程語言選擇

我們選擇使用 Python 作為主要的編程語言,並在 Anaconda3(64-bit)的

環境下,利用 SpyderV5 作為我們的整合開發環境,作業系統是 Windows 10

22H2 專業版,電腦核心為 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz,

8.00 GB RAM。

音訊處理在多種程式語言中都有相應的工具和庫可以使用。Python、

Matlab、C++等語言都有強大的音訊處理庫,如 Python 的 librosa、Matlab

的 Signal Processing Toolbox、C++的 Aquila 等。它們都提供了音訊讀寫、

特徵提取、音訊分析等基本功能。其中,Python 與機器學習;深度學習緊

密結合,有強大的社團支援,語法簡單清晰,易於學習和使用,在效率與

學習上,可以直接承接使用,因此,本篇會使用它來做為編程語言。

3.2 語音音頻載入讀取

數位音頻檔案的讀取是設計這個程式碼的第一步。在 Python 中,使用

librosa.load 函數讀取數位語音音頻檔案,這個函數返回兩個值,分別是音

訊數據和採樣率。其中,音訊數據是一個浮點數時間序列,代表著音訊的

聲壓變化,是一個採樣點的振幅。音頻的採樣率代表每秒採樣的次數,是

每秒鐘的樣本數量。

我們使用的錄音音頻是商用數位錄音,音質要求高,故我們將採用原
22
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

錄音的採樣率,並將其返回的浮點數陣列組,作為處理數位音訊的數據,

這採樣率的大小是影響到音訊的品質和可解析的頻率範圍。我們可以將上

述用 Python 寫成以下,其中 sr=None 就是說明保持原採樣率

# Load target and reference audio files

target_audio, sr = librosa.load(target_file, sr=None)

reference_audio, sr_ref = librosa.load(reference_file, sr=None)

3.3 語音音頻特徵提取

在 Python 中,可以使用 librosa.stft 函數進行短時傅立葉轉換(Short-Time

,我們使用該函數庫默認的漢寧窗(Hanning
Fourier Transform, STFT)

window)計算。這程式庫可以將語音音頻訊號分割成短的時間片段,然後

對每個時間片段進行傅立葉轉換以獲得其頻譜特徵。STFT 會將音頻訊號從

時間域轉換到頻率域,它可以保留音頻的時間訊息,使我們能夠分析音頻

在不同時間點的頻譜特性。

librosa.stft 函數進行 STFT 後,這個函數會返回一個複數值矩陣,每個

元素代表一個頻率的振幅和相位,即特定時間和頻率的複數值,其中每一

列對應於輸入音頻的一段的短時傅立葉變換。接下來,我們會調整窗作用

的大小跟移動長度的參數,這兩個參數可以影響 STFT 的解析度,用於分析

目標和參考語音音頻的頻譜。

這裡我們先假設 n_fft=2048,設定了 FFT 的視窗大小為 2048 個樣本點,


23
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

這意味著每個視窗包含 2048 個樣本點的音訊資料。通常情況下,n_fft 的

值越大,會得到更多的頻率資訊,頻域分辨率越高,但是,因為窗口覆蓋

比較多的時間造成得不到精準時間位置而使得時域分辨率越低。相反道理,

n_fft 的值越小,頻域分辨率越低,窗口涵蓋時間較短反而可以比較精準確

定時間位置,而使得時域分辨率越高。

而利用 hop length 參數設定相鄰窗口之間的跳躍長度,這參數大小會

確定 STFT 的解析度,影響了時域分辨率和計算成本,其值越小,時域分

辨率越高,但計算成本也越大。我們先設定為 512 個樣本點,這意味著每

512 個樣本點就開始一個新的視窗,每 512 個音頻樣本,STFT 分析窗口就

向前移動一次,例如對 0 到 2047 點進行 FFT,接著會對 512 到 2559 點進

行 FFT,以此類推,FFT 窗口之間會有 512 點的重疊。

另外利用 win length 設定每個窗的實際長度,我們先設定為 2048 個樣

本點,這意味著窗函數將在每個窗的 2048 個樣本點上應用,這也意味著濾

波器的有效階數會跟著樣本點的長度而被決定,因為線性相位濾波器的對

稱性,我們實際上是可以得 1024 個有效階數來處理訊號。通常情況下,窗

長度可以小於或等於 n_fft,但在大多數情況下,它們的值是相等的。win

length 的值影響了時域和頻域的平滑程度。我們可以將上述過程用 Python

程式碼來實踐:

# Perform STFT on both target and reference audio

24
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

target_stft = librosa.stft

(target_audio, n_fft=2048, hop_length=512, win_length=2048)

reference_stft = librosa.stft

(reference_audio, n_fft=2048, hop_length=512, win_length=2048)

3.4 振幅譜計算與平均

在 Python 中,我們可以使用 numpy abs 函數來計算 STFT 的結果(複

數)的絕對值,以獲得這些複數的幅度,藉此來得到音頻的振幅譜,代表

每個時間和頻率點的音頻訊號的能量大小。以此,得到的語音音頻的振幅

頻譜,這提供了音頻訊號在每個時間段中不同頻率的強度信息,也就是各

個頻率成分的強度。

然後,可以使用 numpy mean 函數沿著時間軸來計算振幅譜的平均值,

得到每個頻率的平均振幅也就是獲得一個單一的頻譜形狀,這形狀表示了

整個音頻訊號的頻譜特性。這有助於消除任何瞬時或短暫的頻譜差異,並

提供了一個更一致的基礎來進行比較。我們可以藉此計算參考音頻和目標

音頻之間的振幅譜比率。在數學上,其比率可以表示為(式 12):
avgreferenceamplitude
Ratio = (式 12)
avginputamplitude +𝜀

其中,𝜀是一個很小的數,用來防止分母為零。這種為零的狀況有時會出現

在輸入音頻的某些頻率成分的能量非常小,以至於在數值運算中被視為零;

或者是輸入音頻的某些頻率成分的能量實際上是零,例如該音頻並不包含
25
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

這些頻率的成分,在這些情況下,如果不加入ε,則在計算比例時將會出

現分母為零的情況,而加入ε後,即使輸入音頻的平均振幅被計算出為零,

該運算式仍然能夠正常運算。所以,加入 ε 是為了保證運算處理之目標音

頻當成輸入音頻其平均振幅為零時,得到的結果的穩定性和有效性。我們

可以將過程用 Python 寫成以下程式碼:


# Compute amplitude spectrums
target_amplitude = np.abs(target_stft)
reference_amplitude = np.abs(reference_stft)

# Compute reference audio's average amplitude spectrum


avg_reference_amplitude = np.mean(reference_amplitude, axis=1)

# Compute target audio's average amplitude spectrum


avg_target_amplitude = np.mean(target_amplitude, axis=1)

# Compute the ratio between the reference and target amplitude spectra
ratio = avg_reference_amplitude / (avg_target_amplitude + 1e-10)

3.5 線性相位濾波器設計

計算了參考音頻和目標音頻的平均振幅譜的比例,這個關鍵比例將用

來設計線性相位濾波器,其頻率響應要跟這各比例是一致的。這樣儘管各

個頻率上的振幅會不一樣,但它不會改變音頻中各個頻率成分的相對時間

關係。這實際上就是在計算參考音頻與目標音頻之間的頻率響應差異,因

此這種比例就可以被視為線性相位濾波器的頻率響應。

在所有頻率上,其相位響應與頻率成線性關係。這種特性使得線性相

位濾波器在處理訊號時,不會引入相位失真,即不會改變訊號的相位結構。
26
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

我們會使用 numpy.fft.ifft 和 numpy.fft.fftshift 函數來得到脈衝響應以設計線

性相位濾波器。我們可以將上述目的,內容用 Python 寫成以下程式碼過程。

# Create a linear phase filter based on the ratio

filter_freq_response = np.concatenate([ratio, ratio[-2:0:-1]])

filter_impulse_response = np.real(np.fft.ifft(filter_freq_response))

linear_phase_filter = np.fft.fftshift(filter_impulse_response)

其中

# Create a linear phase filter based on the ratio

filter_freq_response = np.concatenate([ratio, ratio[-2:0:-1]])

在這段程式碼中,np.concatenate()是一個 NumPy 函數[18],用於將多個陣

列沿著一個軸連接在一起。這裡,np.concatenate()函數接受一個陣列的列表

[ratio, ratio[-2:0:-1]] 作為參數,並將列表中的所有陣列連接在一起,形成一

個新的陣列 filter_freq_response。[ratio, ratio[-2:0:-1]] 是一個由兩個陣列

ratio 和 ratio[-2:0:-1] 組成的列表,這兩個陣列會被連接在一起。ratio 是

一個陣列,代表了正頻率部分的振幅比率,ratio[-2:0:-1] 是 ratio 陣列的一

個切片,代表了負頻率部分的振幅比率,並且順序被反轉。

所以,filter_freq_response = np.concatenate([ratio, ratio[-2:0:-1]]) 這行程

式碼的意思是將正頻率部分的振幅比率和負頻率部分的振幅比率連接在一

起,形成一個完整的振幅比率陣列,然後將該陣列賦值給 filter_freq_response。

27
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

ratio 是參考音頻的平均振幅頻譜與目標音頻的平均振幅頻譜之間的比率,

我們想要依這各特定的比率來設計線性相位濾波器。

具體來說,如果在某個頻率上,參考音頻的振幅是目標音頻的兩倍,

那麼該頻率上的比率就會是 2。如果在另一個頻率上,參考音頻的振幅是

目標音頻的一半,那麼該頻率上的比率就會是 0.5。因此,這個比率實際

上是一個頻譜,並且會隨著頻率的變化而變化,是根據目標和參考音頻的

每個頻率成分的振幅動態計算出來的,即對於每個頻率,都有一個對應的

比率,作為是頻率響應的陣列。

在程式中,ratio 陣列代表的是頻譜的一半(正頻率部分)
,而 ratio[-2:0:-1]

則是將這個頻譜反轉過來,是 ratio 的反向版本代表的是另一半(負頻率部

分)。在 Python 中,步長(step)是用於切片(slicing)操作的一個參數,

一個整數的間距[19],這決定了取出元素的間隔。例如,如果我們有一個列

表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我們可以使用步長來取出其中的偶數元素:

list[::2],這裡的 2 就是步長,表示每隔一個元素取一次,結果會是[0, 2, 4,

6, 8]。同樣地,步長也可以是負數,表示反向取元素。例如,list[::-1]會

給出一個與原列表完全相反的列表:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]。

在程式碼 ratio[-2:0:-1]中,ratio[-2:0:-1]將從 ratio[-2]開始,每次向前移

動一個位置,直到 ratio[0](不包含)。然而,由於步長為-1,因此這將是

一個反向的列表,結果將從 ratio[-2](即 ratio 的倒數第二個元素)開始,

28
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

到 ratio[1](即 ratio 的第二個元素,不包含 ratio[0])。這意味著該列表不

包含 ratio 的第一個和最後一個元素,而是其餘元素的反向列表。這種方

式確保了在 filter_freq_response 中,正頻率部分和負頻率部分是對稱的。

在 Python 中,我們通常只計算正頻率部分的頻譜,因為負頻率部分可

以從正頻率部分得到,步長的值在這個程式中,因為需要創建一個對稱的

頻譜,所以選擇了-1 作為步長,以反向取出元素,將此比率與其自身的反

向版本連接就得到了完整的、對稱的頻譜,作為頻率響應。這樣做的目的

是為了在後續的運算中得到實數的輸出。如果我們只使用 ratio 的一半進行

傅立葉反變換,那麼得到的輸出將會是複數,這在處理音頻訊號時並不能

轉換為聲音。因此,我們需要確保頻譜是對稱的,這樣在進行傅立葉反變

換時才能得到實數的輸出。

接著後續是這段程式碼

filter_impulse_response = np.real(np.fft.ifft(filter_freq_response))

是說將濾波器的頻率響應透過逆快速傅立葉變換(IFFT)轉換回時域,以

得到脈衝響應的音頻訊號。這個脈衝響應說明濾波器對於瞬間脈衝輸入的

反應。

在這個過程中,我們使用 np.real() 函數來提取 IFFT 結果的實數部分,

確保我們得到的脈衝響應為實數。這個步驟的重要性源於實數訊號的一個

關鍵特性:其頻譜的對稱性。這是因為一個實數訊號 x(t)的傅立葉變換 X(f)

29
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

會滿足一個特性:X(f) = X*(-f),其中*表示共軛。這意即實數訊號的頻譜

在正負頻率之間是對稱的。

因此,我們需要確保 IFFT 得到的脈衝響應為實數,以維持這種對稱性。

因為在實際應用中,我們不能將複數的聲壓值直接轉換成聲音,所以我們

需要提取實部。在 Python 的 Numpy 函數庫中,我們可以使用 np.fft.ifft()[20]

函數對輸入的複數頻響應數據進行反 FFT 操作,並且用 np.real() 函數提取

其實部,從而得到實數脈衝響應。通過以上步驟,我們能夠從頻率響應得

到與之相對應的實數脈衝響應,並且確保了其頻譜的對稱性,以確定其相

位的線性。

然後最後這段程式碼

linear_phase_filter = np.fft.fftshift(filter_impulse_response)

是將脈衝響應從零頻率中心移動到頻譜的中心,從而得到線性相位濾波器

以來濾波其他訊號。FFTShift 操作的數學原理是在 FFT 操作之後,我們獲

得的數據陣列是從零頻率(直流分量)開始,然後依次包含了正頻率和負

頻率分量[21]。

這種排列方式有時對於分析和視覺化並不方便,尤其是當我們想要觀

察頻譜的對稱性或者對正負頻率成分進行比較的時候。我們可以利用

FFTShif 操作讓分析更直觀。這個操作的目的是將 FFT 的輸出數據陣列進

行循環移位,使得零頻點從陣列的開頭移到中心。

30
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

例如,在 numpy.fft.fftshift() 函數中,對於一個給定的 1-D 陣列,該

函數會將該陣列的前半部分和後半部分對調,所以零頻點從陣列的開頭移

動到了陣列的中心。對於偶數長度的陣列,前半部分和後半部分是等長的;

對於奇數長度的陣列,後半部分會比前半部分長一個元素。如果我們有一

個長度為 8 的陣列 A = [1, 2, 3, 4, 5, 6, 7, 8]進行 FFTShift 後會得

到 B = np.fft.fftshift(A),陣列 B 會是 [5, 6, 7, 8, 1, 2, 3, 4]。可以看

到,原陣列 A 的後半部分 [5, 6, 7, 8] 移到了新陣列 B 的前半部分,

原陣列 A 的前半部分 [1, 2, 3, 4] 移到了新陣列 B 的後半部分。這樣

就達到了將零頻點從陣列開頭移到中心的效果。

在 Python 的 Numpy 庫中,FFTShift 操作可以使用 np.fft.fftshift()函數

來實現。這個函數將輸入的數據陣列進行循環移位,並返回移位後的結果。

這並不會改變原數據陣列的內容。這種行為在 Python 中被稱為

"pass-by-object-reference"[22],意味著我們傳遞的是對象的參考,而不是對

象本身或其值的副本。因此,即使我們更改了 linear phase filter 的值,filter

impulse response 的值也不會被改變,意即當我們對一個變數進行操作時,

實際上操作的是一個新的變數陣列,而不是原始陣列。

3.6 使用卷積與輸出結果

使用 NumPy 的 convolution 函數將設計的濾波器經過卷積運算應用到

目標音頻上,如下程式碼所示
31
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

# Apply the linear phase filter to the target audio

filtered_audio = np.convolve

(target_audio, linear_phase_filter, mode='same')

這函數使用上會有邊界效應,其影響有 3 種選擇,為了保持最後輸出長度

一樣,我們選擇 same 模式,意即保持輸出長度的同時,將邊界效應最小化。

雖然邊界效應仍可能存在,並可能影響卷積的結果,但這模式會使輸出的

語音音頻的長度將與輸入的語音音頻相同。

這步驟將目標音頻通過一個具有脈衝響應的線性時不變系統得到輸出。

在 Python 的 numpy 庫中,我們可以使用 np.convolve 函數來實現。這個函

數會將輸入的兩個數據陣列進行卷積,並返回卷積的結果。在這個過程中,

np.convolve 函數會對輸入元素計算乘積,然後將這些乘積加總以得到輸出

的每一個元素。

所以,當我們將這個卷積操作應用到目標音頻和線性階段濾波器上時,

我們實際上是將濾波器的響應(即脈衝響應)應用到音頻訊號上,以得到

經過濾波處理的音頻信號,意即會將參考音頻的聲音特徵應用到目標音

頻。

3.7 保存輸出檔案

使用 soundFile 將處理過的音頻數據寫入併存儲到硬碟裡保存起來,

# Save the modified audio


32
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

sf.write(output_file, filtered_audio, sr)

soundFile 是一個基於 libsndfile、CFFI 和 NumPy 的音頻庫[23],是 Python

中一個常用的音頻處理庫,它可以讀取和寫入各種格式的音頻文件。這段

程式意思是:

sf.write: 這是 SoundFile 庫的一個函數,用於將數據寫入音頻文件。

output_file:這是要保存的音頻文件的名稱或路徑。

filtered_audio:這是要保存的音頻數據,這裡指的是經過濾波處理過的音頻

數據。

sr:這是音頻的取樣率,表示每秒音頻數據的樣本數。

所以,這段程式碼的功能就是將經過濾波(即卷積過程)處理過的音頻數

據 (filtered_audio) 以指定的取樣率(sr)保存到(output_file)指定的音頻文件

中。

3.8 設置檔案路徑

# Set target, reference and output file paths

target_audio ='./audio data/<target_file_name>'

reference_audio = './audio data/<reference_file_name>'

output_audio = './audio data/<output_file_name>'

這過程是設置程式碼相關目標,參考跟輸出音頻檔案在電腦裡的磁碟

路徑:
33
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

輸入音頻是我們的欲處理的目標語音音頻檔案的路徑

參考音頻我們參考語音音頻檔案的路徑

輸出是經上述程式代碼處理完,具有參考音頻的頻譜特徵的目標音頻的路

徑。

3.9 呼叫函數並執行

# Apply spectrum_matching_eq

spectrum_matching_eq(target_audio, reference_audio, output_audio)

最後我們呼叫我們定義名字為 spectrum_matching_eq 的函數,這個函

數會將目標音頻(target_audio)的頻譜調整以匹配參考音(reference_audio)的

頻譜,然後將結果保存為輸出(output_audio)音頻檔案。這段程式碼的作用

是將函數與特定的輸入和輸出,意即目標音頻,參考音頻跟輸出音頻檔案

連接起來,並執行函數以達成頻譜匹配的目的。

3.10 過程總結

最後綜合各小節的設計過程給出實施程式碼的流程如表 2:

表 2 設計程式碼流程表

34
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

載入音訊檔案
使用 librosa.load() 函數載入目標音訊和參考音訊

執行短時傅立葉變換
對目標音訊和參考音訊進行 STFT,產生它們的頻譜

計算幅度譜
使用 np.abs() 函數計算目標音訊和參考音訊的 STFT
的絕對值,得到它們的幅度譜

計算平均幅度譜
使用 np.mean() 函數計算目標音訊和參考音訊的幅度譜
的平均值。平均的作用在表示單一的頻譜形狀提供了一致
的基礎來進行比較

計算幅度譜比例
參考音訊的平均幅度譜,除以目標音訊的平均幅度譜,得
到它們的比例。實際上這是在計算參考音頻與目標音頻之
間的頻率響應差異,因此這比例就可以被視為線性相位濾
波器的頻率響應

35
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

創建線性相位濾波器
基於計算出的幅度譜比例再進行 IFFT 得到脈衝響應,創
建一個線性相位濾波器。這個濾波器只會修改音頻的振
幅,不會影響其相位

應用濾波器
使用 np.convolve() 函數將線性相位濾波器應用於目標
(輸入)音訊

保存修改後的音訊
使用 sf.write() 函數保存經過濾波器修改後的音訊

這章節提供實施的方法其程式碼可匯總如下所示:
import numpy as np
import librosa
import soundfile as sf

def spectrum_matching_eq(target_file, reference_file, output_file):


# Load target and reference audio files
target_audio, sr = librosa.load(target_file, sr=None)
reference_audio, sr_ref = librosa.load(reference_file, sr=None)

# Perform STFT on both target and reference audio


target_stft = librosa.stft(target_audio, n_fft=2048, hop_length=512, win_length=2048)
reference_stft = librosa.stft(reference_audio, n_fft=2048, hop_length=512,
win_length=2048)

# Compute amplitude spectrums


target_amplitude = np.abs(target_stft)
reference_amplitude = np.abs(reference_stft)

36
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

# Compute reference audio's average amplitude spectrum


avg_reference_amplitude = np.mean(reference_amplitude, axis=1)

# Compute target audio's average amplitude spectrum


avg_target_amplitude = np.mean(target_amplitude, axis=1)

# Compute the ratio between the reference and target amplitude spectra
ratio = avg_reference_amplitude / (avg_target_amplitude + 1e-10)

# Create a linear phase filter based on the ratio


filter_freq_response = np.concatenate([ratio, ratio[-2:0:-1]])
filter_impulse_response = np.real(np.fft.ifft(filter_freq_response))
linear_phase_filter = np.fft.fftshift(filter_impulse_response)

# Apply the linear phase filter to the target audio


filtered_audio = np.convolve(target_audio, linear_phase_filter, mode='same')

# Save the modified audio


sf.write(output_file, filtered_audio, sr)

# Set target, reference and output file paths


target_audio ='./audio data/<target_file_name>'
reference_audio ='./audio data/<reference_file_name>'
output_audio ='./audio data/<output_file_name>'

# Apply spectrum_matching_eq
spectrum_matching_eq(target_audio, reference_audio, output_audio)

而下一章可以輸入音頻資料相對於磁碟機的路徑後執行。

37
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

第四章 實施結果與分析

上一章節說明了實施方法的過程,以及設計程式碼的步驟。目的是計

算目標語音音頻和參考語音音頻的短時傅立葉變換(STFT)
,並從中獲得其

振幅頻譜。然後,計算參考音頻的平均振幅頻譜與目標音頻的平均振幅頻

譜之間的比率,並基於這個比率創建一個線性相位濾波器。這個濾波器的

頻率響應與目標語音音頻和參考語音音頻的平均振幅頻譜之間的比率相匹

配。最後,將此濾波器與目標音頻進行卷積,產生修改後的音頻。

4.1 實施前準備

我們將以 2 組遊戲語音作為目標音頻,女男人聲各一,它們都是商用

數位錄音,採樣率都是 48KHz/24bit,單聲道,時長分別為 2 秒跟 3 秒,

是沒有經過任何音頻應用處理過的原始檔案,只有經過 DAW 剪接縮短並

照原規格輸出。以程式碼的規劃來看,對於關鍵的 STFT 處理部分,分別

各自會做出 3 組規範,分別是以 n_fft=1024,n_fft=2048,n_fft=4096 資料

量小大不同來區分。其他影響同屬執行部分的 2 各參數:hop_length=512 將

保持,win_length 將會保持跟 n_fft 一致變化。以音頻解析度低到高,樣本數

量小到大,分別輸出。

我們後續可以將其 3 種輸出的音頻檔案,經繪圖出來觀察分析結果。

將目標語音音頻,參考語音音頻以及輸出語音音頻的絕對磁碟路徑輸入程

38
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

式碼後執行。

4.2 輸出結果

我們將圖檔名先整理好,依照處理樣本之小大,排序,我們需要觀察

的音頻頻譜的圖檔名整理好,如表 3

表 3 遊戲語音 女聲 音頻輸出圖檔名對照表
取樣樣本數 目標音頻圖名 參考音頻圖名 經濾波後輸出的音頻圖名

圖 5 (Target MAN 圖 4 (REF US 圖 1 (TARGET MAN


n_fft=1024
spectrogram) spectrogram) OUT n1024
spectrogram)

圖 5 (Target MAN 圖 4 (REF US 圖 2 (TARGET MAN


n_fft=2048
spectrogram) spectrogram) OUT n2048
spectrogram)

圖 5 (Target MAN 圖 4 (REF US 圖 3 (TARGET MAN


n_fft=4096
spectrogram) spectrogram) OUT n4096
spectrogram)

※Target MAN =Target mandarin

當樣本數變化,目標音頻跟參考音頻的內容都不變。

我們安排好音頻檔案絕對路徑,運行程式碼,得到下列輸出。

當 n_fft=1024 時,經濾波器輸出,我們得到遊戲語音女聲輸出的音頻檔案,

我們將其繪圖以下,是為圖 1

39
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖 1 當 n_fft=1024 女聲輸出頻譜

當 n_fft=2048 時,經濾波器輸出,我們得到遊戲語音女聲輸出的音頻檔案,

我們將其繪圖以下,是為圖 2

圖 2 當 n_fft=2048 女聲輸出頻譜

當 n_fft=4096 時,經濾波器輸出,我們得到遊戲語音女聲輸出的音頻檔案,

我們將其繪圖以下,是為圖 3

40
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖 3 當 n_fft=4096 女聲輸出頻譜

女聲的參考音頻的頻譜圖,是為圖 4

圖 4 女聲參考音頻頻譜

以及女聲目標音頻的頻譜圖,是為圖 5

41
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖 5 女聲目標音頻頻譜

同樣的,第 2 組實施的遊戲人聲語音,男聲部分我們也是跟女聲一樣

作法。我們將圖檔名先整理好,依照處理樣本小大,排序,我們需要觀察

的音頻頻譜的圖檔名整理好,如表 4

表 4 遊戲語音 男聲 音頻輸出圖檔名對照表
取樣樣本數 目標音頻圖名 參考音頻圖名 經濾波後輸出的音頻圖名

圖 10 (Target MAN 圖 9 (REF US 圖 6 (TARGET MAN


n_fft=1024
male spectrogram) male male OUT n1024
spectrogram) spectrogram)

圖 10 (Target MAN 圖 9 (EF US male 圖 7 (TARGET MAN


n_fft=2048
male spectrogram) spectrogram) male OUT n2048
spectrogram)

圖 10 (Target MAN 圖 9 (REF US 圖 8 (TARGET MAN


n_fft=4096
male spectrogram) male male OUT n4096
spectrogram) spectrogram)

※Target MAN male=Target mandarin male

42
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

當 n_fft=1024 時,經濾波器輸出,我們得到遊戲語音男聲輸出的音頻檔案,

我們將其繪圖以下,是為圖 6

圖 6 當 n_fft=1024 男聲輸出頻譜

當 n_fft=2048 時,經濾波器輸出,我們得到遊戲語音男聲輸出的音頻檔案,

我們將其繪圖以下,是為圖 7

圖 7 當 n_fft=2048 男聲輸出頻譜

當 n_fft=4096 時,經濾波器輸出,我們得到遊戲語音男聲輸出的音頻檔案,

我們將其繪圖以下,是為圖 8

43
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖 8 當 n_fft=4096 男聲輸出頻譜

男聲參考音頻的頻譜圖,是為圖 9

圖 9 男聲參考音頻頻譜

以及男聲目標音頻的頻譜圖,是為圖 10

44
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖 10 男聲目標音頻頻譜

4.3 結果分析

圖 1 至圖 10 是經由 python 裡用 librosa.display 畫出來的頻譜圖。我們

經過 librosa.stft 讀取輸出各個音頻檔案後,可以將目標音頻,參考音頻,

以及依 3 種解析度被濾波器應用過的輸出音頻等等繪出頻譜圖。從這些圖

中,我們可以清楚地看出,兩邊垂直軸分別代表著頻率(Hz)和音量(dB)

的值,而橫軸則代表著時間的進行。因此,我們可以直觀地看出音頻在時

間推移下的頻率與音量變化。這種視覺化方法使得我們可以較易理解並比

較目標音頻、參考音頻和濾波後的音頻之間的差異。

客觀視覺上來看各解析度的輸出頻譜圖,的確是可以指出目標語音音

頻原來有的低頻以及高頻形狀,依照濾波器的應用後,得到結果與參考語

音音頻一致的形狀。並且隨著音頻解析度越高,更可以明顯在視覺上,分

別出來參考音頻的頻率特徵,影響著目標音頻,經由濾波器的應用,輸出
45
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

的音頻其聲音特徵是跟參考音頻接近一致的。

4.3.1 灰階比較圖

我們也可以設計灰階比較圖(Difference)來展現各音頻頻譜圖的在頻率

與時間上差異強弱的分布。我們可以將女聲遊戲語音的目標音頻的頻譜圖

(Target MAN spectrogram) 如圖 5 代表著 Target(Input)。女聲參考音頻的頻

譜圖(REF US Male spectrogram)如圖 4 代表著 Reference。女聲經過濾波器

的輸出音頻(TARGET MAN OUT n2048 spectrogram) (我們以 n=2048 解析

度為輸出代表) 如圖 2 代表著 Output。

用這 3 張圖製作成灰階圖放在一起比較,直觀地去觀察目標音頻濾波前

後與參考音頻之間在哪些頻率和時間點上有最大的差異。如圖 11 這各灰階

差異圖使用“紅與藍”顏色代表彼此影響強度的大小,像素點亮度的值對

應著比較亮是紅色,代表強烈,像素點的亮度值對應著比較暗是藍色,代

表衰弱,這樣使頻譜圖在區域性上差異更直觀明顯。

46
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖 11 女聲灰階比較圖

圖 11 女聲灰階比較圖中,Difference: (Target-Reference) 這張圖顯示目標音

頻與參考音頻之間的差異。紅色區域表示目標音頻在某些頻率和時間點上

的強度高於參考音頻,更亮。藍色區域表示目標音頻在某些頻率和時間點

上的強度低於參考音頻,更暗。

紅藍顏色分佈的區域代表目標音頻與參考音頻原始特性,在頻率與時

間上差異顯現在哪,也說明結構上這二個音頻差異的趨勢分布。例如,整

個時間軸上,低頻在 64Hz 以下,只出現單一的白藍色,代表二者之間在這

裡的頻率響應明顯不同。而其他時間的中高頻響應,可以從各自的原始灰

階圖中,看出在時間上,因為不同語言發聲的時間差異,造成的顏色形狀

區域分布的不同。例如 1 秒到 1.5 秒中間,2 秒到 2.5 秒中間,參考音頻明

顯的與目標音頻原始結構上的不同。
47
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

Difference: (Output-Reference) 這張圖顯示了輸出音頻(經過濾波的音

頻)與參考音頻之間的差異。紅色區域表示輸出音頻在某些頻率和時間點

上的強度高於參考音頻,更亮。藍色區域表示輸出音頻在某些頻率和時間

點上的強度低於參考音頻,更暗。

紅藍顏色分佈的區域,說明彼此影響的趨勢,濾波器操作過後,可以

看到除了 64-128Hz 之間其以下的低頻明顯的改變外,其他頻率響應彼此強

度分布的趨勢,合同目標音頻與參考音頻意即輸入與參考比較上來看,沒

有明顯差異。這代表經過濾波器,整個目標音頻的結構表現除了在低頻表

現更趨向參考音頻,其他大部分區域還是保持原有的特性,這與我們需要

不改變原有音色上逼近音質一致性的要求是符合的。

濾波器的效果除了明顯在低頻有差異外,其他影響區域的分布與強度

的顯現,我們可以比較音頻輸出入即目標音頻與濾波後的輸出音頻的灰階

圖如圖 12 來看看濾波影響的差異分布。

圖 12 女聲輸出入音頻灰階比較圖
48
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

從圖 12 女聲輸出入音頻灰階比較圖裡的顏色區域分布差異上看,同一

音頻經過濾波器,濾波前後,在時間與頻率上,有比較連續性的差異分布

趨勢。

除了因為它們是同一音頻這原因外,也代表在整個時間軸上,濾波器對

音頻的影響是連續,並且在低頻部分的差異,明顯是讓目標音頻遵照著參

考音頻的頻譜特性,而讓輸出音頻有著像參考音頻一般的表現。而中高頻

也因為經過濾波,持續的讓同一音頻有著在時間上連續性的影響,說明濾

波效果是整個有效的。

同樣的作法,我們將遊戲語音男聲部分的目標音頻頻譜圖(Target MAN

male spectrogram)如圖 10 代表著 Target(Input)。男聲參考音頻的頻譜圖(REF

US Male spectrogram)如圖 9 代表著 Reference。男聲經過濾波器的輸出音頻

(TARGET MAN male OUT n2048 spectrogram) (我們一樣以 n=2048 解析度

為輸出代表)如圖 7 代表著 Output。用這 3 張圖製作成灰階圖放在一起比較

目標音頻濾波前後與參考音頻之間,直觀地去觀察在哪些頻率和時間點上

有最大的差異。

這各灰階差異圖使用“紅與藍”顏色代表彼此影響強度的大小,紅色

強烈藍色衰弱,使區域性差異更直觀明顯。

49
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖 13 男聲灰階比較圖

圖 13 男聲灰階比較圖裡,Difference: (Target-Reference) 這張圖顯示目標音

頻與參考音頻之間的差異。紅色區域表示目標音頻在某些頻率和時間點上

的強度高於參考音頻,更亮。藍色區域表示目標音頻在某些頻率和時間點

上的強度低於參考音頻,更暗。

紅藍顏色分佈的區域代表目標音頻與參考音頻原始特性,在頻率上,

在時間上,差異顯現在哪,也說明結構上這二個音頻差異的趨勢顯現的效

果。例如,整個時間軸上,低頻在 100Hz 以下,只出現單一的藍白色,代

表二者之間在這裡的頻率響應明顯不同,而其他時間的中高頻響應,可以

從各自的原始灰階圖中,看出時間上,因為不同語言發聲的時間差異,造

成的顏色形狀區域分布的不同,例如 0.5 秒到 1 秒中間,1.5 秒到 2 秒中間,

參考音頻明顯的與目標音頻原始結構上的不同。
50
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

Difference: (Output-Reference) 這張圖顯示了輸出音頻(經過濾波的音

頻)與參考音頻之間的差異。紅色區域表示輸出音頻在某些頻率和時間點

上的強度高於參考音頻,更亮。藍色區域表示輸出音頻在某些頻率和時間

點上的強度低於參考音頻,更暗。

紅藍顏色分佈的區域,說明彼此影響的趨勢,濾波器操作後,可以看

到除了 250Hz 以下的低頻明顯的改變外,其他頻率響應彼此強度分布的趨

勢,合同目標音頻與參考音頻意即輸入與參考比較上來看,沒有明顯差異,

這代表經過濾波器,整個目標音頻的結構表現除了在低頻表現更趨向參考

音頻,其他大部分區域還是保持原有的特性,這與我們需要不改變原有音

色上逼近音質一致性的要求是符合的。

那濾波器的效果除了明顯在低頻有差異外其他影響區域的分布與強度

的顯現會是如何的表現呢?讓我們來比較音頻輸出入的灰階圖如圖 14 來看

看差異分布。

圖 14 男聲輸出入音頻灰階比較圖
51
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖 14 男聲輸出入音頻灰階比較圖裡的顏色區域分布差異顯現,同一

音頻經過濾波器的前後,有著在時間與頻率上比較連續性的差異分布,除

了因為它們是同一音頻這原因外,也代表在整個時間軸上,濾波器對音頻

的影響是連續,並且在低頻部分的差異,明顯是讓目標音頻遵照著參考音

頻的頻譜特性,而讓輸出音頻有著像參考音頻一般的表現。而中高頻也因

為經過濾波,是持續的讓同一音頻有著時間上連續性的影響,說明濾波效

果是整個有效的。

至於濾波器的效果,我們在下一個小節用頻率響應圖直接觀察並用歐

式距離客觀上測量數值的大小來看濾波器的效果。

4.3.2 頻率響應圖與歐式距離比較

我們分別將女聲與男聲目標與參考音頻,以及音頻輸出即被濾波後輸

出的音頻(以 n=2048 解析度為代表),以不同顏色線代表,畫出各音頻之頻

率響應圖,並放於同一張圖中做為比較,如圖 15 女聲各音頻-頻率響應比

較圖,圖 16 男聲各音頻-頻率響應比較圖:

52
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

圖 15 女聲各音頻-頻率響應比較圖

圖 16 男聲各音頻-頻率響應比較圖

圖 15 圖 16 裡三條平滑的頻響曲線,分別代表

藍色線(目標音頻 Target Audio),

橘色線(參考音頻 Reference Audio),

綠色線(濾波後音頻 Filtered Audio)。

圖中的頻率範圍大致從 100 Hz 到 10 kHz,這段頻率的積極表現覆蓋了

人類的基本聽覺範圍,特別是語音的主要範圍。從圖 15、 16 中可以看出,

濾波器的輸出即綠色線(濾波後音頻 Filtered Audio)成功地使藍色線(目標音

53
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

頻 Target Audio)在多個頻率帶上讓綠色線(濾波後音頻 Filtered Audio)更接

近橘色線(參考音頻 Reference Audio),這說明濾波方法在逼近參考音頻的頻

響特性方面是有效的。

當我們比較這三個音頻(目標音頻 "Target Audio"、參考音頻"Reference

Audio" 和濾波後的音頻 "Filtered Audio")的平滑頻率響應時,我們可以將

各個音頻的頻率響應當作向量來進行比較。我們先確定所有向量的長度是

相同的,選擇其中最短的向量作為基準,並將其他向量截斷或填充至此長

度。之後,我們計算這些向量之間的元素差異的平方和。取這些平方和的

平方根,我們就得到了兩向量之間的歐式距離,這也正是歐式距離的數學

計算方法[24],如(式 13)

Euclidean 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒(𝑎, 𝑏) = √∑𝑛𝑖=1(𝑎𝑖 −𝑏𝑖 )2 式 13

其中 𝑛 是向量的維度。各平滑頻率響應可以相當於向量 a 和 b。在音頻處
理中,歐式距離是一種常見的衡量兩個頻譜之間差異的量化方法。理論上,
距離值越小,兩個頻譜就越接近;反之,距離值越大,則表示差異越大。
我們依此來計算出他們彼此的歐式距離(Euclidean Distance)。

從畫出女聲音頻-頻率響應比較圖中,以式 13 來計算出女聲部份的歐

式距離:
Euclidean Distance between Target and Reference: 169.03
Euclidean Distance between Filtered and Reference: 63.38
Euclidean Distance between Target and Filtered: 117.5
從算出的數據中,我們可以進行以下分析和說明:目標音頻與參考音頻的

54
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

歐式距離:這個值為 169.03,它反映了目標音頻與參考音頻在頻譜上的差

異。這個值可以被視為目標音頻在進行任何處理之前與參考音頻的距離或

差異。濾波後音頻與參考音頻的歐式距離:這個值為 63.38,這比目標音

頻與參考音頻的距離小得多,這意味著經過濾波處理後的目標音頻在頻譜

上更接近參考音頻。目標音頻與濾波後音頻的歐式距離:這個值為 117.56,

這反映了目標音頻在濾波處理前後的頻譜差異,可以從這裡看出,濾波器

其實並沒改變原始目標音頻大部分的音質特性,只是在逼近參考音頻的頻

譜上做出明顯的貢獻。

所以綜合以上,女聲目標音頻經過濾波處理後,其頻譜明顯接近了參

考音頻,這可以從目標音頻與參考音頻之間的歐式距離從 169.03 降低到

濾波後音頻與參考音頻的 63.38 上看出。這說明濾波操作成功地使目標音

頻的頻譜更接近參考音頻。

另外,我們也可以從畫出男聲音頻-頻率響應比較圖來一併計算出男聲

部份的歐式距離
Euclidean Distance between Target and Reference: 117.51
Euclidean Distance between Filtered and Reference: 37.92
Euclidean Distance between Target and Filtered: 115.61
從計算出的數據中,我們也可以看出跟女聲的歐式距離一樣的趨勢,男聲

目標音頻經過濾波處理後,其頻譜明顯接近了參考音頻,這可以從目標音

頻與參考音頻之間的歐式距離從 117.51 降低到濾波後音頻與參考音頻的

37.92 上看出。這也一樣說明濾波操作成功地使目標音頻的頻譜更接近參
55
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

考音頻。而目標音頻濾波前後的數值 115.61 ,和目標音頻與參考音頻之間

的歐式距離 117.51 非常接近。這意味著濾波操作並沒有顯著改變目標音頻

的頻響特性,這樣的差異表明濾波器主要是在努力使目標音頻的頻響更接

近參考音頻,集中努力在使其更接近參考音頻的特定頻率特性,而不是大

幅改變目標音頻的原始特性。

56
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

第五章 結論與展望
在這篇論文中,我們專注於音質匹配的問題,並提出了一種基於頻譜

分析和線性濾波的頻譜匹配方法。在我們研究的範圍內,使用商業遊戲語

音當作音頻,在客觀條件相當並保持高品質之下,我們能得到好的結果,

並且穩定達成目的。然而,此方法並非萬無一失。

我們的假設是,目標音頻和參考音頻的頻譜差異是平均的,並且可以

通過一個固定的濾波器來補償,這種假設在實際應用中可能不是都成立的。

例如,如果目標音頻和參考音頻的頻譜差異在不同的時間段有很大的變化,

那麼一個固定的濾波器可能無法達到良好的匹配效果。因此,未來的研究

方向應該考慮將頻率響應擬合和其他聲音特徵如動態,諧波等相結合優化

以更精確地實現音質一致性。

音頻頻譜匹配的問題並非單一方向的,它需要考慮各種因素,並進行

多次試驗和優化。我們需要發展出用於評估頻譜匹配方法的標準化指標,

以便更直觀地比較不同方法的效果。此外,我們也應當研究聽覺模型在音

頻頻譜匹配中的應用,以充分考慮人耳對音頻質量的感知。同時,我們也

可以考慮使用多個參考音軌,以更全面地捕捉音質特徵並提高目標音軌的

頻譜一致性。

在實際的應用場景中,音頻頻譜匹配技術的表現如何,是一個值得深

入探討的問題。這包括音樂製作、電影後期製作和廣播以及聲音後製等場

57
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

景。我們需要對音質一致性效果進行評估,並根據評估結果,反覆優化和

調整處理技術,以獲得更好的音質一致性效果。在這個過程中,我們可能

需要深入了解各種處理技術的原理,掌握使用相關庫的方法,並進行多次

反覆運算和優化。實際上,我們可能需要在音質一致性和其他性能指標(如

計算複雜性、即時性等)之間進行權衡,以找到最佳方案。

音質一致性的實現是一個複雜的問題,可能涉及到多種音訊處理技術

的組合和優化。這個問題對於深度學習和神經網路技術來說,在許多音訊

處理任務中已經取得了顯著的進展,未來利用這些技術可以為我們提供了

一種新的可能性,來自動分析和調整音頻特性,以減少音頻工作人員的人

力投入,為音頻製作帶來更高的效率和更佳的成果。

最後,我們必須認識到,這種基於頻譜分析和線性濾波的頻譜匹配方

法,雖然其理論基礎是訊號處理和數位音頻處理的基本理論,並且已經在

許多音頻處理應用中得到了驗證和應用,但是,它也有其限制和假設。這

需要我們在實際應用中進行謹慎的考慮。

58
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

參考文獻
[1] Wikipedia contributors. (2023). Equalization (audio). In Wikipedia, The
Free Encyclopedia, from
https://en.wikipedia.org/w/index.php?title=Equalization_(audio)&oldid=11
66044209 (Accessed on 1 Mar. 2023)
[2] The MathWorks, Inc.(2023),FIR Filter Design, Linear Phase Filters, from
https://www.mathworks.com/help/signal/ug/fir-filter-design.html?searchHig
hlight=FIR%20filter&s_tid=srchtitle_support_results_10_FIR%20filter#f4-
9960 (Accessed on 1 Jan. 2023)
[3] Zhi Zhao(2020),时频分析之短时傅里叶变换(STFT), from
https://blog.csdn.net/weixin_45317919/article/details/110910320 (Accessed
on 1 Mar. 2023)
[4] Smith, J.O. (2011),Spectral Audio Signal Processing, online book,
edition,from http://ccrma.stanford.edu/~jos/sasp/ (Accessed on 1 Mar.
2023)
[5] Wikipedia contributors. (2023). Fourier transform. In Wikipedia, The Free
Encyclopedia, from
https://en.wikipedia.org/w/index.php?title=Fourier_transform&oldid=11604
62432 (Accessed on 1 Mar. 2023)
[6] Wikipedia contributors. (2022, October 11). Short-time Fourier transform.
In Wikipedia, The Free Encyclopedia, from
https://en.wikipedia.org/w/index.php?title=Short-time_Fourier_transform&
oldid=1115436538 (Accessed on 1 Apr. 2023)
[7] Maxkit Fellows 時頻分析(2021), from
https://blog.maxkit.com.tw/2021/03/blog-post_22.html (Accessed on 1 Mar.
2023)
[8] Julius O. Smith III (1996) MUS421 Lecture 4 FIR Digital Filter Design,
from https://ccrma.stanford.edu/~jos/WinFlt/ (Accessed on 1 Jan. 2023)
[9] Maxkit Fellows(2021),頻率響應, from
https://blog.maxkit.com.tw/2021/02/blog-post_22.html (Accessed on 1 Mar.
2023)
[10] Steven W. Smith, Ph.D. (1997) Digital Signal Processing, from
http://www.dspguide.com/pdfbook.htm. (Accessed on 1 Mar. 2023)
59
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

[11] Smith, J.O. (2007) Introduction to Digital Filters with Audio Applications,
online book edition, from http://ccrma.stanford.edu/~jos/filters/ (Accessed
on 1 Apr. 2023)
[12] 维基百科,自由的百科全書 (2023), 脈衝響應, from
https://zh.wikipedia.org/w/index.php?title=%E5%86%B2%E6%BF%80%E
5%93%8D%E5%BA%94&oldid=76563092 (Accessed on 1 Feb. 2023)
[13] 維基百科 自由的百科全書(2022),狄拉克δ函數, from
https://zh.wikipedia.org/w/index.php?title=%E7%8B%84%E6%8B%89%E
5%85%8B%CE%B4%E5%87%BD%E6%95%B0&oldid=74995873
(Accessed on 1 Feb. 2023)
[14] Oppenheim, A. V., R. W. Schafer(2010) Discrete-Time Signal Processing.
3rd ed p49,Prentice Hall.
[15] 維基百科, 自由的百科全書(2022),離散傅立葉變換. from:
https://zh.wikipedia.org/w/index.php?title=%E7%A6%BB%E6%95%A3%
E5%82%85%E9%87%8C%E5%8F%B6%E5%8F%98%E6%8D%A2&oldi
d=72610669 (Accessed on 1 Feb. 2023
[16] Maxkit Fellows (2020), DSP 卷積 Convolution, from
https://blog.maxkit.com.tw/2020/12/dsp-convolution.html (Accessed on 1
Jan. 2023
[17] Alan V. Oppenheim, Alan S. Willsky(1996), Syed Hamid Nawab, Signals &
Systems 2nd, p78, Prentice Hall
[18] Numpy Developers(2019),numpy.concatenate, from
https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html
(Accessed on 1 Jan. 2023
[19] ShengYu(2021), ShengYu Talk Python range 用法與範例, from
https://shengyu7697.github.io/python-range/ (Accessed on 1 Mar. 2023)
[20] Numpy Developers(2019),numpy.fft.ifft, from
https://numpy.org/devdocs/reference/generated/numpy.fft.ifft.html#numpy.f
ft.ifft (Accessed on 1 Jan. 2023)
[21] Help Center The MathWorks Inc. (2023) Fftshift, from
https://www.mathworks.com/help/matlab/ref/fftshift.html (Accessed on 1
Mar. 2023)
[22] Pujan Dave(2022), Pass By Object Reference in Python, Understanding
60
逢甲大學 e-Theses & Dissertations(112 學年度)
通過設計和應用線性相位濾波器實現遊戲語音頻譜一致性

“pass by object reference” in Python. from


https://python.plainenglish.io/pass-by-object-reference-in-python-79a8d92d
c493 (Accessed on 1 Aug. 2023)
[23] Bastian Bechtold(2015),python-soundfile,Retrieved January 2023,from
https://github.com/bastibe/python-soundfile
[24] 51CTO 博客 振华 OPPO(2022) 余弦距离和歐氏距离,知道原理和公式

后真的很簡單 Retrieved August 2023 from


https://blog.51cto.com/u_15581550/5187458 (Accessed on 1 Aug. 2023)

61
逢甲大學 e-Theses & Dissertations(112 學年度)

You might also like