深度學習時代,語音合成不再只是把語音學知識拆成模組後逐步實作,而是逐漸演變成一個以資料驅動的生成問題。接下來我們將依序討論端到端聲學模型、非自回歸架構、神經聲碼器、韻律控制,以及近年來走向整合式模型的技術趨勢。
5.1 端到端語音合成的基本概念
上一章我們看到,早期語音合成系統的核心工作,是把人類已知的語音學知識拆解成許多彼此相連的子模組:文字分析模組負責把書寫形式轉成發音單位,韻律模組負責估計時長與基頻,聲學模組負責產生參數,聲碼器再根據這些參數把聲音重建出來。這種設計並非錯誤;相反地,它反映了當時工程界對問題的最佳理解。然而,它也有一個明顯的代價:每一個模組都帶入了人類先驗的分工方式,而每一次模組邊界的切分,都可能把原本連續的語音生成過程切碎。
所謂端到端(end-to-end)語音合成,最重要的不是一句「輸入文字、輸出語音」的口號,而是背後的建模哲學:我們不再預先規定模型必須先學會哪些中間步驟、再學會哪些局部規則,而是讓模型在大量配對資料的壓力下,自行發現從文字到語音的有效映射。這個想法看似簡單,卻改變了整個研究問題的重心。問題不再是「我們應該手工設計哪些聲學特徵」,而是「模型能否在資料中自己找到足夠好的表徵、對齊與生成策略」。
要看出這件事情的重要性,可以先想像一個具體的例子。假設輸入文字是「今天下午三點開會」,輸出則是一段自然流暢的語音。這裡至少牽涉四種不同層次的轉換:第一,文字中的數字與時間表達要被正規化成可發音的形式;第二,書寫字詞要對應到某種發音單位;第三,這些發音單位要在時間上展開成長短不一的音幀;第四,這些音幀還必須帶有自然的語調、停頓與音色,最後才能成為可播放的波形。端到端方法的價值,在於它嘗試用一個可聯合優化的模型,把這些原本分散在不同模組中的轉換關係,放回同一個學習框架裡。
當然,理想的嚴格端到端系統,是從原始文字直接輸出最終波形,而且整個訓練過程只依賴單一目標函數。但是在實務上,文字到波形之間的映射太長、太複雜,也太耗費資料與算力。因此,現代系統長期採取一種折衷而高效率的方案:先由聲學模型把文字轉成中介表徵,再由聲碼器把中介表徵還原成波形。這種兩階段架構雖然不是嚴格意義上的「單模型到底」,但它保留了深度學習最重要的優點:中介表徵不再由人類手工規定其細部形式,而是由模型與任務共同塑形。
因此,在本章中我們可以把「端到端」理解為一個有層次的概念。狹義上,它指文字直接到波形的整合式系統;廣義上,它則指語音合成不再依賴大量人工設計的語言特徵、對齊標記與模組規則,而是由神經網路在資料驅動下學會從輸入到輸出的主要映射。這兩種意義雖然不同,但卻共同指出了一個方向:語音合成的知識,正在從人類手工定義的流程,逐漸轉移到模型可學得的表示之中。
5.2 聲學模型與聲碼器的兩階段架構
在深入討論 Tacotron、FastSpeech 或 VITS 之前,我們需要先理解當代 TTS 系統最常見的一個組織方式:兩階段架構。這個架構之所以重要,不只是因為它在工業界長期主導實作,更因為它把一個原本極其困難的問題,拆成兩個在統計性質上相對不同的子問題。第一個子問題是:如何把文字轉成能代表語音內容與韻律的聲學特徵?第二個子問題是:如何把這些特徵精確地還原成可聽的波形?
第一階段通常被稱為文字前端加聲學模型。文字前端(text frontend)的工作,是把輸入文字整理成更適合模型處理的序列。這可能包括文字正規化、縮寫展開、數字讀法處理、字素到音素的轉換(G2P),以及在某些系統中附加停頓、重音、詞界等語言學訊息。之所以需要這些步驟,是因為書寫系統本身並不總是對應穩定的發音。英語是最為典型的例子;同一個拼字,常常依語境而有不同的讀法。即使是中文,數字、日期、外來語、專有名詞也往往需要先進行前處理,否則模型容易在罕見形式上出現失誤。
經過前處理後,聲學模型接收的是一個離散符號序列,輸出的則是一個連續的聲學特徵序列,最常見的是對數 Mel 頻譜圖。這裡立刻出現一個困難的問題:輸入與輸出在長度上差異極大,而且兩者之間並沒有明確給定的對齊。假設一句話只有二十幾個音素,但輸出頻譜卻可能有兩三百幀。換句話說,若文字序列長度記為Ttext,音訊幀序列長度記為 Taudio,那麼通常會出現 Taudio≫Ttext 的情況。舉例來說,一句約 25 個音素的話,最後可能對應到約 300 幀頻譜,亦即 Taudio / Ttext ≈300 / 25 ≈12。這表示平均每一個文字單位後面,都可能展開成十幾個聲學時間步,而且這個展開長度還不是固定不變的。
這個比例所揭示的,不只是「輸出比較長」而已,而是文字序列與語音幀序列之間並不存在一對一對應的關係。不同音素的持續時間本來就不同;同一個音素放在不同語境中,也可能因語速、重音、停頓與句法位置而改變長度。因此,模型必須自己學會:哪個音素要持續多久、何時轉入下一個音素、停頓應該放在哪裡、句尾語調應該上升還是下降。換言之,聲學模型不只是「把內容說出來」,它還必須決定「怎麼說出來」。
第二階段是聲碼器(vocoder)。如果聲學模型像是在規劃一張地圖,聲碼器做的就是把這張地圖變成真正的地形。Mel 頻譜圖已經包含了大量和語音內容、音色與韻律有關的訊息,但它仍然不是可以直接播放的訊號。聲碼器的任務,是從這個中介表徵中恢復波形細節,包括週期結構、雜訊成分、相位關係以及那些決定音質真實感的微小紋理。這一步之所以關鍵,是因為人耳對最終波形的細節極為敏感:即使頻譜在整體上看起來合理,只要重建過程中缺乏自然的細節,聲音仍會顯得扁平、粗糙或帶有人工感。
兩階段架構之所以長期有效,正由於這種問題分解是有理論基礎的。文字到頻譜,主要是語言結構、對齊與韻律預測的問題;頻譜到波形,則更像是高維訊號重建的問題。這兩個問題雖然相關,但在資料形式、時間尺度與建模偏好上並不相同,因此使用不同模型專門處理,往往比單一模型硬做到底更為穩定。後面我們會看到,Tacotron 主要改變的是第一個階段的設計方式,而 WaveNet、HiFi-GAN 等神經聲碼器,則主要改變第二個階段的品質上限。
不過,兩階段架構也有明顯的代價。聲學模型和聲碼器各自訓練,意味著它們並沒有在同一個目標下共同優化。聲學模型追求的是頻譜預測誤差最小,聲碼器追求的是波形真實感最佳化,但這兩種目標並不完全一致。這個差異,正是後來 VITS 等整合式系統試圖跨越的地方。換言之,兩階段架構既是現代 TTS 的成功基礎,也是後續架構革新的出發點。
5.3 Tacotron 與序列到序列架構
如果說兩階段架構為深度學習時代的 TTS 提供了穩定的問題分解架構,那麼 Tacotron 的貢獻,就是讓第一個階段,從文字到聲學特徵,第一次真正擺脫了傳統語音工程中大量手工制定的流程。Tacotron 最核心的洞見是:文字到頻譜,本質上可以被視為一種序列到序列(seq2seq)映射。輸入是一串離散符號,輸出是一串連續頻譜幀;只要模型有能力學會對齊與長程依賴,這件事就不必再被拆成一連串人工模組。
這樣的概念,原本來自神經機器翻譯。翻譯系統需要把一個語言的詞序列,映射成另一個語言的詞序列。語音合成雖然不是翻譯,但結構上有相似之處:文字與語音都具有時間展開的序列特性,而且輸出序列的長度並不與輸入一一對應。Tacotron 把這種結構上的相似性轉化為一個可學習的神經網路問題:由編碼器讀入文字序列,由解碼器逐步生成頻譜圖,而注意力機制負責在生成過程中決定當前應關注哪一部分輸入。
5.3.1 序列到序列架構的基本原理
首先,讓我們先把 seq2seq 的三個核心元件說清楚:編碼器、解碼器與注意力。編碼器的工作,是把輸入文字序列轉換成一串上下文化的表徵。這些表徵不只是單個字元的嵌入,而是已經吸收了前後文資訊的向量。解碼器則以自回歸方式,一步一步輸出下一個頻譜幀。所謂自回歸,意思是當前步的輸出,會依賴前一步已經輸出的結果。這使模型能夠在時間上維持局部連續性,但也意味著生成過程無法完全平行。
真正讓 seq2seq 在語音合成中變得可行的,是注意力機制。沒有注意力時,模型必須把整個輸入壓縮成一個固定維度的向量,再依此生成整段輸出;這對長序列而言幾乎不可行。注意力機制則允許解碼器在每一步生成時,都重新查看整個輸入表徵,並根據當前狀態計算出一組權重,決定應該最重視輸入序列中的哪些位置。對語音合成來說,這等於把原本最棘手的對齊問題,轉化成一個可以由模型在訓練中自動學習的權重分配問題。
當訓練成功時,Tacotron 的注意力矩陣通常會顯示出一條大致由左上走到右下的對角線。這條對角線有重要的語音學意義:它表示模型在生成語音時,大致遵循輸入文字的順序,由左到右單調前進。也就是說,模型不再需要手工提供每個音素的邊界或持續時間,而是能在資料驅動下學出「讀到哪裡了」以及「這裡該停多久」。這件事在 2017 年的語音合成研究裡,是真正改變遊戲規則的一步。
5.3.2 Tacotron 的架構設計
Tacotron 的原始設計以字元序列作為輸入,這本身就帶有一種相當激進的意味。早期語音系統通常認為,模型至少應該吃進音素,而不是直接從字元學起;但 Tacotron 展示了,只要資料與模型足夠,連 G2P(字素到音素的轉換)這種原本看似不可缺少的模組,都可以被部分吸收到神經網路裡。這不表示文字前處理從此不重要,而是說模型有能力把原本外顯的工程知識,重新內化為參數中的統計規律。
在結構上,Tacotron 的編碼器先將字元轉成嵌入向量,再經由 CBHG 模組提取更豐富的上下文表示。所謂 CBHG,是 Convolution Bank, Highway network, and bidirectional GRU 的縮寫,可以譯為「卷積庫—Highway 網路—雙向 GRU 模組」。它不是單一層,而是一個組合式的特徵抽取結構:前面的卷積庫以多種不同寬度的卷積核,同時捕捉局部字元序列中的短程模式;接著由 highway network 在保留原始資訊與引入轉換之間做較靈活的調節;最後再交給雙向 GRU,把前後文一起納入,形成較完整的序列表徵。若用直觀的方式來說,CBHG 的作用,就是把原本較稀疏、較局部的文字輸入,整理成一種同時兼顧局部模式與長距離依賴的中介表徵,讓後續解碼器更容易學習文字與語音之間的對應關係。
在此基礎上,Tacotron 的解碼器開始逐步生成頻譜圖。值得注意的是,原始 Tacotron 的主要輸出目標是線性頻譜圖(linear-scale spectrogram),而非後來 Tacotron 2 所採用的 Mel 頻譜圖。(這個區別在本節中不影響對架構原理的理解,但對於後面討論 Tacotron 2 的改進時很重要,因為 Tacotron 2 正是把輸出目標從線性頻譜圖收斂到對數 Mel 頻譜圖,才使聲學模型與神經聲碼器之間的銜接變得更為順暢。)回到架構本身,這裡最核心的機制就是注意力(attention)。注意力的作用,不只是「參考一下輸入」,而是讓解碼器在生成每一小段聲學輸出時,都能動態決定此刻最應該關注輸入序列中的哪個位置。這一點非常關鍵,因為文字序列與語音幀序列之間本來就不存在固定的一對一對齊:有些音素很短,有些音素會被拉長;有些地方需要停頓,有些地方則會快速滑過。傳統系統通常必須額外設計對齊規則或依賴外部分段資訊,而 Tacotron 則把這個問題內化到模型本身,讓對齊在訓練過程中與生成任務一起被學出來。
Tacotron 還使用了縮減因子(reduction factor),也就是每一步解碼不是只生成一幀,而是一次生成多幀。這個設計背後的直覺是:相鄰頻譜幀之間通常具有高度相關性,因此沒有必要把每一幀都當作完全獨立的決策單位。某種意義上,解碼器不必那麼「一小步一小步」地走;適度地一次跨出幾幀,反而可能讓學習更穩定。若把每一步輸出的幀數記為 r,那麼原本長度為 Taudio 的音訊幀序列,就不需要解碼器走完 Taudio 步,而只需要大約 Nsteps ≈ ⌈Taudio / r⌉ 步。舉例來說,若設定 r = 2,就表示解碼器每一步同時輸出 2 幀,那麼原本需要逐幀走完的序列,現在大約只需要一半的步數。換句話說,縮減因子 r 的作用,就是把解碼器實際面對的序列長度從 Taudio 壓縮到約 Taudio / r,從而降低訓練與推論的時間成本,也常常有助於對齊的學習。
把這三個設計放在一起來看,就比較能理解 Tacotron 的方法論突破在哪裡。CBHG 負責把文字整理成更有上下文結構的表示,注意力機制負責在輸入與輸出之間學出動態對齊,而縮減因子則進一步降低長序列解碼的負擔。這三者共同構成了一條新的技術路線:系統不再需要人類預先規定好所有對齊與分段細節,而是讓模型在資料中自己學會文字如何逐步展開為語音。這也正是 Tacotron 之所以具有歷史意義的地方:它不只是把文字轉成 Mel 頻譜圖,而是第一次清楚展示了端到端語音合成如何可能達成。
這裡還有一個重點:Tacotron 的輸出不是最終波形,而是一種較容易學習的中介聲學表徵。這使模型可以專注在文字到語音結構的高層映射,而不必同時承擔波形細節重建的全部困難。也正因為如此,Tacotron 雖然還不是終點,卻清楚開啟了後續語音生成架構的基本方向:先把對齊與聲學映射端到端地學出來,再由更強的聲碼器去補足最後聲音輸出的自然度。
5.3.3 Tacotron 2 的改進
Tacotron 2 之所以重要,並不是因為它把 Tacotron 的基本路線完全推翻,而是因為它把原本已經相當有啟發性、但仍略顯脆弱的端到端設計,修整成一條真正可用的高品質語音生成管線。若說 Tacotron 的歷史貢獻,在於證明了「文字到聲學表示的端到端學習」是可行的;那麼 Tacotron 2 的歷史貢獻,則在於證明了這條路線不只可行,而且可以在感知品質上逼近真人錄音。
Tacotron 2 的第一個重要改進是把前端聲學模型的目標進一步收斂到 Mel 頻譜圖。相較於早期 Tacotron 中較複雜的中間設計,Tacotron 2 更明確地把問題表述為:輸入文字,輸出對數 Mel 頻譜圖。這個選擇非常關鍵,因為 Mel 頻譜圖已經保留了對語音自然度極重要的頻譜包絡與能量分布,同時又比直接輸出波形容易學習。換句話說,Tacotron 2 並不試圖讓單一模型一次處理從文字到最終波形的全部困難,而是更清楚地把任務切成兩個層次:前端模型專注在「文字如何展開成聲學結構」,後端模型再專注在「如何把這種聲學結構轉成高品質波形」。
第二個改進是整個 seq2seq 聲學模型本身變得更簡潔,也更穩定。相較於 Tacotron 1 中較複雜的 CBHG 結構,Tacotron 2 採用更直接的卷積編碼器與循環解碼器設計,把工程重點放在讓對齊更穩定、讓訓練更可靠,而不是追求架構上的複雜堆疊。它同時使用了更穩健的位置敏感注意力(location-sensitive attention)。這種注意力機制的關鍵,不只是看「目前哪個輸入位置最相關」,還會把前面已經對齊過的注意力位置一併考慮進來。直觀地說,它讓模型不只知道「現在應該看哪裡」,還知道「前面已經看到哪裡了」。對於語音合成這種本質上應該大致單調往前推進的任務來說,這一點非常重要,因為它能減少注意力在訓練中跳回去、重複、漏字或長句失敗的風險。
第三個也是最關鍵的改進,是Tacotron 2 不再把高品質波形生成視為附帶問題,而是明確地把 WaveNet 納入後端聲碼器。這一步的意義非常深遠。Tacotron 1 已經證明:模型可以從文字學出對齊與頻譜結構;但如果最後波形仍由較弱的重建方法來處理,那麼前端的成功未必能完整轉化為人耳真正感受到的自然度。Tacotron 2 則把這件事說得非常清楚:要讓端到端聲學模型的成功真正落到聽感上,就必須接上一個足夠強的神經聲碼器。當 WaveNet 被用來根據 Mel 頻譜圖生成最終波形時,前端的頻譜預測能力與後端的波形細節建模能力,才第一次在同一條管線中結合起來。
也正因為如此,Tacotron 2 最值得強調的,不只是 MOS 分數的提升,而是它清楚展示了兩件事。第一,端到端 seq2seq 聲學模型確實已經有能力學到相當精細的對齊與韻律規律。第二,只有當這些中介聲學表徵交給足夠強的神經聲碼器後,原本停留在頻譜級別的成功,才會真正轉化為波形級別的自然感。換句話說,Tacotron 2 讓整個領域第一次明白看見:聲學模型與聲碼器雖然在系統上可以分工,但它們在感知層面上其實是緊密耦合的。前端決定語音結構是否合理,後端決定這種結構能否被具體實現為自然的人聲;兩者缺一不可。
從歷史位置來看,Tacotron 2 的意義也在這裡。它不是最終答案,因為它仍然保留了自回歸解碼的速度限制,也仍然可能遭遇注意力不穩定等問題;但它把端到端 TTS 從「概念上令人興奮」推進到「感知上真正成立」。也正是在這個基礎上,後續研究才更有信心往兩個方向前進:一個方向是解決自回歸與注意力帶來的穩定性與速度問題,導向 FastSpeech 等非自回歸架構;另一個方向則是持續強化聲碼器與整體優化,最終走向 VITS 等更高度整合的生成模型。
5.3.4 注意力機制的局限
儘管 Tacotron 系列開創了新時代,注意力機制卻也帶來一個難以忽視的問題:它太自由了。從模型表達力的角度看,能在任何輸入位置上分配權重是一種優點;但從語音合成的任務結構來看,這種自由有時反而是一種風險。因為語音合成的對齊本質上應該大致單調前進,不應該隨意回頭、跳躍或停滯。
這種不穩定在短句上可能不太明顯,但一旦句子變長、詞彙變稀有,或文本中出現重複片段,模型就可能出現重音複讀、字詞遺漏、停在某處不走,或突然跳過一段輸入的現象。這不是單純的「品質不好」,而是系統在推論時產生結構性失敗。從產品的角度來看,這種偶發錯誤比平均品質稍差更為棘手,因為它難以預測,也難以在部署前完全測出。
因此,Tacotron 的成功同時也暴露了一個新問題:如果對齊是靠軟性注意力在推論時動態決定,那麼我們是否能用更明確、更穩定的方式來表示時長與對齊?FastSpeech 正是在這個問題意識下出現的新技術。
5.4 FastSpeech 與非自回歸架構
Tacotron 系列讓大家相信,文字到頻譜可以由端到端神經模型學會;但它也同時顯示,自回歸解碼與注意力對齊會帶來速度與穩健性的雙重瓶頸。FastSpeech 的核心洞見非常清楚:與其讓模型在生成每一幀時一邊生成、一邊猜自己該看哪裡,不如先把時長這件事明確處理好,再並行地生成整段頻譜。
5.4.1 FastSpeech 的核心設計
FastSpeech 的結構可以概括為一句話:先決定每個音素要在時間上展開多久,再根據這個展開結果一次生成整段語音。 這也是它和 Tacotron 最根本的差異。Tacotron 的對齊,是在解碼過程中透過注意力一步一步動態形成的;而 FastSpeech 則試圖把這件事提前明確化,也就是先把「每個音素應該持續多少幀」作為一個獨立問題處理掉。
具體來說,編碼器先把音素序列轉成高層表徵。假設共有 N 個音素,編碼器輸出為 h1,h2,…,hN。接著,時長預測器(duration predictor)會為每一個音素預測一個時長 di,表示這個音素在最終聲學序列中應該持續多少幀。這一步的意義非常關鍵,因為它等於先回答了「文字如何在時間上展開」這個問題。
有了每個音素的時長之後,長度調節器(length regulator)就可以把原本較短的音素級序列,展開成與輸出頻譜長度相匹配的幀級序列。若用數學方式表示,這個展開後的序列可以寫成:H′=[h1×d1, h2×d2, …, hN×dN]
這裡的意思不是乘法,而是「把第 i 個音素表示 hi 重複di 次」。也就是說,如果某個音素預測應該持續 5 幀,那麼它的表示就會在展開後的序列中連續出現 5 次。如此一來,原本的音素級表示就被拉長成幀級表示,而整段輸出的總長度也自然變成:
Taudio=∑ (i=1→N) di
這個數學式子說明了一件很重要的事:最終音訊幀序列的長度,不再是模型邊解碼邊猜出來的,而是由每個音素時長的總和明確決定的。換句話說,長度調節器的本質,就是把音素級表示依照預測時長展開成幀級表示,讓解碼器面對的是一條已經對齊好的時間序列。
這樣的改變帶來一個很重要的效果:對齊不再是推論時的臨場結果,而成為模型顯式預測的變數。當時長被單獨建模後,文字序列如何在時間上展開,就不再依賴軟性注意力在解碼時的即時發揮。這使系統在長句子上的穩定性明顯提高,也讓推論完全平行化成為可能。從這個角度看,FastSpeech 不是對 Tacotron 的小修小補,而是把「對齊」這件事從隱性機制提升為顯性對象。
使用 Transformer 作為主體架構,則讓 FastSpeech 能在序列層面高效地建模上下文。這裡要注意的是,FastSpeech 雖然也使用 attention,但它不再依賴解碼過程中那種一步一步的交叉注意力去決定時序對齊。換句話說,attention 被保留下來做表徵建模,但對齊決策被移到時長預測器與長度調節器。這種角色的重新分配,正是整個架構得以穩定化的關鍵。
5.4.2 FastSpeech 2:把韻律變成顯式控制對象
如果說 FastSpeech 的關鍵突破,是把原本隱含在注意力中的對齊問題改寫成顯式時長建模,那麼 FastSpeech 2 的進一步貢獻,則在於把這種「顯式化」從對齊再往前推一步,延伸到幾個最核心的韻律變量。也就是說,FastSpeech 2 的重要性首先是一個架構設計上的推進:它不再只關心文字如何在時間上展開,還把音高與能量這些會直接影響說話方式的因素,一併拉進模型主體之中。
在設計上,FastSpeech 2 通常會在原本的時長預測器之外,再加入音高預測器(pitch predictor)與能量預測器(energy predictor),共同構成一個常被稱為 variance adaptor 的模組,也就是變異調節器。這個名字很貼切,因為它處理的正是那些會使同一句話在具體發聲上產生差異的變量:時長決定節奏展開,音高決定語調輪廓,能量決定強弱分布。這些變量原本在 Tacotron 類系統裡大多隱含在整體頻譜預測之中;到了 FastSpeech 2,它們被明確拉出來,變成模型要單獨預測的中間量。
這樣的改動,首先帶來的是更高的可診斷性。當模型輸出不自然時,研究者不再只能從最終頻譜或波形去猜問題出在哪裡,而可以更具體地判斷:是時長估計不穩、音高輪廓過平,還是能量分布失真。從方法論上看,FastSpeech 2 的價值就在於,它把原本較黑箱的 seq2seq 生成過程,拆出幾個可以被觀察、被檢查,也更容易被優化的中間變量。
其次,它也代表了一種更務實的工程哲學。FastSpeech 的時長最初仍仰賴教師 Tacotron 的注意力對齊來提供訊號,但 FastSpeech 2 進一步改用更穩定的強制對齊工具(forced alignment)來提供時長標籤。這個改變看似只是資料前處理細節,其實非常關鍵:若時長標籤本身來自一個不穩定的教師模型,那麼教師的對齊偏差就可能被連帶灌進學生模型;而外部對齊工具雖然少了幾分「純端到端」的理想性,卻使整體訓練條件更一致,也降低了錯誤累積的風險。從這個角度看,FastSpeech 2 並不是追求理論上最純粹的端到端,而是選擇一條足夠穩定、足夠高效,也足夠可解釋的路。
因此,FastSpeech 2 在這裡最適合被理解成:它把非自回歸架構從「顯式對齊」推進到「顯式變異建模」。這不只是為了提升品質,也是在為後續更可控的生成系統鋪路。後面的小節中,我們將進一步討論這些顯式變量在實際使用時如何成為控制介面、如何對應不同場景需求,進行聲音的韻律控制。
5.4.3 對齊學習的進一步發展:從隱性注意力到顯式時長,再到聯合學習
然而,FastSpeech 系列雖然大幅提升了穩定性與速度,卻也留下了一個新的問題:如果系統必須依賴外部對齊工具來提供時長標籤,那麼它究竟還算不算真正意義上的端到端?這個問題並不是語義上的吹毛求疵,而是牽涉到一個更深的技術分歧:對齊應該被視為模型內部自己學出的結構,還是應該作為外部提供的顯式訊號?
從這個角度看,Tacotron、FastSpeech 與後續整合式模型之間,其實不只是模型名稱的更替,而是一條持續展開的對齊觀辯論。Tacotron 的立場是:讓注意力自己學,對齊應該在生成過程中自然浮現。FastSpeech 的回答則是:這樣太不穩定了,不如把時長顯性建模,先把對齊固定下來,再來談高品質與高速度。也就是說,從 Tacotron 到 FastSpeech,我們看到的不是單純的架構替換,而是「隱性學習」與「顯式建模」之間的一次方法論轉向。
但這場辯論並沒有在 FastSpeech 這裡結束。接下來的問題變成:能不能在保留顯式時長所帶來的穩定性與速度優勢的同時,減少對外部工具鏈的依賴?也正是在這裡,後續整合式方法開始出現。它們試圖把時長、對齊與生成重新放回同一個模型框架中處理,使對齊既不是完全自由漂移的注意力,也不必完全依賴外部標註工具。而這條發展路線,將在 5.7 談到 VITS 與近年整合式模型時再更詳細展開。
因此,從 Tacotron 到 FastSpeech,再到後續整合式方法之間,我們真正看到的,不只是模型名單越來越長,而是一條關於「對齊究竟該如何表示與學習」的連續辯論。這條主線非常重要,因為它揭示了現代 TTS 的核心張力之一:靈活性與穩定性往往彼此拉扯,隱性學習與顯式控制也各有代價。Tacotron 的自由度高,但穩定性不足;FastSpeech 的穩定性高,但更依賴外部對齊。後續方法之所以值得注意,正是因為它們試圖重新統合這兩端。
5.5 神經聲碼器的突破
如果聲學模型負責決定「說什麼、怎麼說」,那麼神經聲碼器真正決定的是「聽起來像不像真實聲音」。在深度學習時代,許多研究者很快發現:即使前端頻譜預測已經相當準確,只要後端仍使用傳統聲碼器,整體音質就很難突破某個上限。原因很簡單:傳統聲碼器本質上依賴強烈的發聲假設,而真實語音中的細節遠比那些假設所允許的更豐富。
神經聲碼器的重要性,可以用一個概念來理解。給定一張 Mel 頻譜圖,理論上對應的不只是一條波形;而是有無數條波形都可能在 Mel 頻譜尺度上看起來相近,但其中只有少數真正具有自然的微觀紋理與相位關係。神經聲碼器所做的,就是學會在這個高維解空間中,找到更接近真實人聲分布的那些解。從研究史來看,WaveNet、WaveRNN、WaveGlow、HiFi-GAN 與擴散式聲碼器,分別代表了不同的生成的思考路徑。
5.5.1 WaveNet
WaveNet 的革命性,在於它不再把語音看成「一組待重建的聲學參數」,而是直接把波形本身當成生成目標。這意味著,模型不再先預測 MFCC、F0 或頻譜包絡,再交給聲碼器重建,而是直接面對最終要聽到的訊號:一連串隨時間展開的取樣值。從這個角度看,WaveNet 的核心問題可以表述得非常直接:已經知道前面所有取樣點之後,下一個取樣點最可能是什麼?
這就把語音生成轉化成一個典型的自回歸(autoregressive)建模問題。若把整段波形記為 x=(x1,x2,…,xT),並把額外的條件資訊(例如文字、說話者資訊或頻譜條件)記為 c,那麼 WaveNet 假設整段語音的條件機率可以寫成:
p(x|c) = ∏( t=1→T ) p(xt | x<t, c)
這個式子的意思並不複雜:整段語音的機率,被拆成一連串「在前面已知的情況下,當前這一點出現的機率」。也就是說,模型不是一次決定整段波形,而是一步一步地往前生成。每一個新的取樣點,都依賴前面所有已經生成過的取樣值,以及外加的條件資訊 c。這正是 WaveNet 所謂「逐取樣點生成」的數學表達。
有了這個分解之後,訓練目標也就自然確定下來。因為我們希望模型為真實語音給出盡可能高的機率,所以在訓練時會最大化整段資料的條件對數似然(conditional log-likelihood):
log p(x|c) = Σ(t=1→T) log p(xt | x<t, c)
這個數學式其實只是前一個機率連乘式取對數後的等價寫法。它之所以重要,是因為原本整段語音的聯合機率很難直接處理;但一旦轉成對數形式,整體目標就變成「把每一個時間點的預測好壞加總起來」。於是,訓練 WaveNet 的意思就可以理解為:讓模型在整段語音的每一個取樣位置上,都盡量準確地預測下一個樣本值。換句話說,第一個公式描述的是 生成時的因果結構,第二個公式描述的則是 訓練時的優化目標。
不過,這裡有一個重要的實作細節值得補充。WaveNet 並非直接預測連續的取樣值,而是先透過 μ-law 壓縮,把原本 16-bit 的音訊(共 65,536 種可能值)量化為 256 個離散類別,再以 softmax 分類的方式預測每一步的輸出。這個設計讓模型不必處理連續數值的回歸問題,而可以把每一步的預測轉化為一個 256 類的分類任務,在訓練上更為穩定。這個選擇也為後續聲碼器的設計埋下了伏筆:稍後我們會看到,WaveRNN 之所以需要 coarse/fine 的雙路 softmax 設計,正是因為它希望跳過 μ-law 壓縮、直接處理更高解析度的 16-bit 音訊,而在那種情況下,單一 softmax 的 65,536 類分類空間就變得過於龐大。
在模型架構上,WaveNet 透過擴張因果卷積(dilated causal convolution)來實現這件事。所謂「因果」,是指模型在預測當前取樣點時只能使用過去資訊,而不能偷看未來;所謂「擴張」,則是讓模型在卷積層數不必過深的情況下,也能看到更長範圍的歷史訊號。這使 WaveNet 不只掌握非常局部的波形細節,也能捕捉較長時間尺度上的聲音結構,例如週期性、共振模式與發音延續。這種做法第一次清楚證明:只要模型容量足夠,神經網路確實可以自己學會波形中的細緻結構,而不必完全依賴傳統聲碼器的人類發聲先驗性的存在。
但 WaveNet 的成功同時伴隨著一個殘酷的代價:它太慢了。逐點自回歸意味著,若是 16 kHz 的語音,每秒就要做 16,000 次生成決策;若是 22.05 kHz,則還要更多。從機率建模的角度看,這種方式非常優雅,也極具表達能力;但從實際部署的角度看,它卻幾乎不可承受。也正是在這裡,我們第一次清楚看到一個此後會反覆出現於聲音生成中的張力:品質、速度與並行性,往往無法同時最大化。
Parallel WaveNet 等後續工作,便是在回應這個問題。它們試圖透過蒸餾策略,更精確地說,是機率密度蒸餾(probability density distillation),也就是訓練一個可並行的學生模型(逆自回歸流),使其輸出分布盡量接近高品質自回歸教師模型的分布,把教師的生成能力轉移給推論更快的學生模型。這說明了一個非常重要的觀念:高品質生成模型不一定非得直接部署到產品端,它也可以在訓練階段作為知識來源,用來塑造一個推論更快、較適合實際應用的模型。這種「教師負責品質、學生負責速度」的設計思路,後來在許多音訊生成系統中都持續出現。
5.5.2 WaveRNN
如果說 WaveNet 證明了「直接波形自回歸建模可以得到極高品質」,那麼接下來很自然的問題就是:我們能不能保留自回歸的品質優勢,但把它做得更快、更能部署? WaveRNN 回應的正是這個問題。它沒有放棄自回歸生成的基本邏輯,而是採取了一種非常工程化、也非常務實的策略:既然每一步都必須依賴前一步,那就想辦法把「每一步」算得更便宜。
WaveRNN 的核心做法,是用單層但容量很大的循環神經網路單元,取代 WaveNet 那種較龐大的卷積堆疊。這樣的設計並不改變自回歸生成的本質,卻讓單步推論的成本大幅下降。對語音生成來說,這件事非常重要,因為聲音是時間訊號,推論延遲不是附帶條件,而是系統能否真正部署的核心指標。若一個模型音質再好,卻無法以接近即時的速度輸出語音,它在許多真實場景中的價值就會大打折扣。
WaveRNN 另一個很有代表性的技巧,是 coarse/fine 的雙路 softmax,也常被稱為 Dual Softmax。它要解決的,是輸出層分類空間過大的問題。若我們把 16-bit 的音訊樣本直接當作離散分類目標,那麼模型在每一個時間點都必須在216=65,536個可能值之中做選擇,這對輸出層而言是很重的負擔。WaveRNN 的做法,是把原本一次性的 16-bit 分類,拆成兩個較小的 8-bit 子問題。因為28=256 ,所以模型可以先預測較粗粒度的高位元部分,再預測較細粒度的低位元部分。簡單來說,就是先決定「大致落在哪一個較粗的數值區間」,再在這個區間內補上更細的差異。這樣做並不改變最後仍然要生成 16-bit 音訊的事實,但它顯著降低了每一步輸出分類的計算壓力。
這個方法的重要性不只在於它更快,而在於它提醒我們:語音生成的實務突破,有時未必來自全新理論,而是來自對既有生成邏輯的重新工程化。WaveRNN 並沒有推翻自回歸建模,而是把它重新包裝成更接近可部署技術的形式。它也凸顯出 TTS 與圖像生成的一個關鍵差異:圖像生成可以容忍較長的離線等待,但語音生成往往直接受限於時間延遲,因此「能不能即時或近即時產生」本身就是評價方法好不好的一部分。
5.5.3 WaveGlow
如果 WaveRNN 代表的是「保留自回歸,但把它做快」,那麼 WaveGlow 代表的則是另一條更根本的思路:是否可以乾脆放棄逐點自回歸,改用可並行生成的方式,同時維持高品質? 這正是正規化流(normalizing flow)進入聲碼器設計的背景。
WaveGlow 不再把波形生成理解成「一步一步預測下一個樣本值」,而是把它理解成「在簡單分布與真實波形分布之間建立一個可逆映射」。在訓練時,模型學習如何把真實波形映射到較簡單、通常是高斯分布的潛在空間;到了推論時,則從這個簡單分布中取樣,再透過反向映射把樣本轉回波形。也就是說,WaveGlow 的生成不是沿著時間逐步展開,而是透過一次整體性的變換,把來自高斯空間的樣本轉成可聽的語音訊號。
值得一提的是,WaveGlow 雖然在生成框架上與 WaveNet 截然不同,但在局部建模的層次上卻延續了 WaveNet 的設計遺產。它的可逆變換是由一系列仿射耦合層(affine coupling layers)堆疊而成,而每一層內部用來計算變換參數的條件網路,正是採用 WaveNet 風格的擴張卷積結構。換句話說,WaveGlow 並非從零開始發明一套全新的波形建模方式,而是把 WaveNet 已經證明有效的局部波形建模能力,重新嵌入一個可並行、可逆的生成框架之中。這也說明了一件在聲碼器發展史中反覆出現的現象:新的生成框架往往不是完全取代舊的建模元件,而是把它們重新組合到不同的架構邏輯裡。
這種做法的吸引力,在於它同時保留了兩個優點。第一,它不像 GAN 那樣完全放棄似然觀點,而仍然維持了較明確的機率訓練基礎;第二,它又不像 WaveNet 那樣必須逐點自回歸,因此在推論時可以高度並行化。從解決問題的思考角度來看,WaveGlow 特別適合用來說明一件事:不同生成模型之間的差異,不只是「網路長得不一樣」,而是它們對「生成」這件事本身有不同理解。WaveNet 把生成理解成逐點條件預測;WaveGlow 則把生成理解成兩個分布之間的可逆坐標變換。這種差異,到了第六章討論通用生成模型時,會再次變得非常重要。
不過,WaveGlow 也提醒我們一件事:並行生成雖然大幅改善速度,卻不一定自動等於最佳感知品質。它在方法論上的意義很大,因為它證明了高品質聲碼器不必只能走自回歸這一條路;但在實際系統競爭中,後來仍出現了 GAN 與擴散模型等不同方向,這說明語音生成始終處在「品質、速度、穩定性」三者之間的持續取捨之中。
5.5.4 HiFi-GAN
HiFi-GAN 之所以能迅速成為業界常用的聲碼器之一,是因為它在品質、速度與部署成本之間取得了非常漂亮的平衡。它採用生成對抗網路(GAN)的框架,不再以精確似然為主要目標,而是讓生成器與判別器在對抗過程中學習:什麼樣的波形才真正像真人語音。從這裡開始,聲碼器已經不再只是傳統意義上的訊號還原器,而是一個明確以感知品質為導向的生成模型。
HiFi-GAN 的成功,不只是因為它用了 GAN,而是因為它的判別器設計非常懂語音。它並沒有用一個通用判別器去粗略分辨「真或假」,而是更進一步把語音訊號的內部規律轉化為判別器偏好的結構。其中最著名的,是多週期判別器(multi-period discriminator)與多尺度判別器(multi-scale discriminator)。
多週期判別器的想法,是從不同週期視角去檢查語音的規律性。因為語音,特別是有聲段,天然帶有週期結構;如果生成器只在局部波形上看起來像真實語音,卻無法在不同週期尺度上維持合理規律,那麼生成結果仍然容易聽起來失真。多週期判別器等於逼迫生成器同時顧到不同的週期模式。多尺度判別器則是從不同時間解析度觀察訊號,避免模型只在很短的局部範圍內看起來合理,卻在較長時間尺度上失去自然性。這種設計非常值得注意,因為它體現了深度學習時代的一個成熟特徵:好的架構通常不是把通用網路硬套到任務上,而是把任務本身的內在結構,轉換成模型的歸納偏好。
HiFi-GAN 的另一個成功的原因,是它不是只靠單一對抗損失,而是把對抗損失、特徵匹配損失(feature matching loss)與 Mel 損失結合起來。單靠對抗學習,訓練往往容易不穩;單靠重建損失,輸出又容易過度平滑。把多種目標結合起來,等於同時從幾個角度約束模型:既要有全局真實感,又不能脫離條件特徵太遠,也要保住與頻譜結構的基本一致性。從系統觀點看,HiFi-GAN 說明一件事:聲碼器真正的任務,不再只是「把中介特徵翻譯回波形」,而是要在感知品質上生成一個足以被人耳接受的、具有語音質地的真實訊號。
5.5.5 擴散模型聲碼器
如果說 HiFi-GAN 代表的是「以少步數、強對抗學習追求高效率高品質」,那麼擴散式聲碼器如 DiffWave 與 WaveGrad 則提出了另一種波形生成觀:從高斯雜訊出發,逐步去噪,最後得到結構清晰的波形。 這種方法的核心概念是,與其一次性直接生成最終波形,不如把生成過程拆成許多較小的修正步驟,讓模型在每一步只需要回答「目前這個版本還有哪些雜訊應該被去掉」。
這種做法的優勢,在於它對複雜分布的擬合能力通常很強。由於生成被分解成許多細小步驟,模型往往能更穩定地處理波形中的細節、質地與局部變化,因此在音質與穩定性上常有出色的表現。從感知的角度來看,擴散模型特別擅長處理那些細膩、難以一次性精確決定的波形結構。
但是它的代價也很明顯:推論過程通常需要多步去噪,因此自然地慢於單步或少步數的 GAN 式生成器。也就是說,擴散模型的優勢常常建立在較重的推論成本之上。這再次提醒我們,聲碼器設計沒有唯一最佳答案。不同應用場景對品質、速度、穩定性與部署成本的要求不同,因此不同生成框架也會在不同條件下各有優勢。
到這裡我們已經看到,神經聲碼器的突破,主要回答的是「如何把中介聲學表徵轉成更像真人的波形」這個問題。WaveNet、WaveGlow、HiFi-GAN 與擴散式聲碼器各自從不同生成原理出發,把波形品質推到了早期系統難以企及的高度。然而,波形品質只是自然度的一半;另一半,則關乎語音在韻律與情感層面是否被「說對了」。這正是下一節的主題。
5.6 韻律建模與情感控制
如果說聲碼器解決的是「質地」問題:讓合成語音在波形層面具備真人聲音的微觀紋理,那麼韻律與情感控制要解決的,則是「表達」問題:同樣一句話,為什麼有些說法聽起來自然投入,有些卻像是照稿念過一遍?這個差異不在於波形是否清晰,而在於語調、節奏、停頓與情緒張力是否貼合語境。從這裡開始,我們討論的重點從「聲音的物理品質」轉向「說話的表達品質」。
5.6.1 韻律的構成維度
韻律通常被拆成幾個彼此相關的維度:F0 決定感知上的音高走勢,時長決定節奏與語速,能量決定強弱起伏,而停頓則在語流中標示結構與修辭邊界。這些維度在分析上可以分開描述,但在真實語音中卻是高度聯動的。當說話者強調某個詞時,他通常不只是把音量放大,還會同時拉長時長、提高 F0,甚至在前後加入微妙的停頓。從聽覺上看,韻律不是幾條彼此獨立的控制曲線,而更像是一個橫跨多個時間尺度協同變化的模式。
這也正是韻律建模困難的地方。若模型把各個變量完全獨立處理,就容易得到「每個局部都合理,但整體聽起來不像真人」的結果。真實韻律不只是局部參數的加總,它還受到句法結構、語義焦點、篇章組織與情緒狀態的共同影響。句尾語調應該上揚還是下沉、短語邊界該不該停頓、哪個詞需要被突出,這些都不是簡單地由單一音素決定的。也因此,韻律問題其實是 TTS 中最接近高層語言理解與情感理解的部分;它不只是聲學問題,也是語言與表達問題。
5.6.2 全局風格 Token 與韻律遷移
在這樣的背景下,Global Style Tokens(GST)之所以具有啟發性,是因為它提出了一種不同於顯式情感標籤的思路:也許我們不必先替每一段語音人工命名為「快樂」、「悲傷」、「嚴肅」等固定風格,而可以讓模型自己在資料中發現某些跨句子穩定存在的韻律模式,再用可學習的 token 來表示它們(Wang et al., 2018)。
這個想法很重要,因為它抓住了韻律研究中的一個現實:許多風格其實沒有清晰邊界,甚至難以被人類語言精確命名。一段語音可能同時帶有沉穩、克制、帶點疲憊的色彩,但很難用單一情感標籤概括。GST 的做法,是讓模型建立一組可學習的風格 token,並透過參考語音去推測「這段語音比較像哪些 token 的組合」,再把這種整體風格遷移到新的文字上。這使風格控制不必等到精確標註完成才開始,而是先透過資料驅動方式形成一個風格空間,再利用參考音訊在其中選取或混合適當的位置。
從表徵學習的角度看,這正是潛在空間思想的一次具體落地。模型不再依賴人類先把所有韻律風格命名完畢,而是自己在資料中找到可重複利用的風格模式。它的優點是彈性高、對標註依賴低,也較能處理那些難以明確命名的語氣差異;但它的限制也很清楚:GST 所提供的多半是全局風格控制,也就是整句或整段語音的整體氣質。更進一步說,這些 token 雖然在模型內部具有控制效果,卻未必總能對應到人類熟悉的、可清楚命名的風格軸線。也就是說,GST 讓我們獲得了一個很有用的風格空間,但這個空間未必自然的具有對人類完全透明的語義結構。若我們想更細緻地控制某一個詞、某一個音節,甚至某個局部情緒轉折,全局風格 token 往往就不夠用了。
5.6.3 細粒度韻律控制:FastSpeech 2 如何做
然而,全局風格控制並不足以覆蓋所有真實應用需求。有聲書朗讀、角色配音、導航語音、教學語音與對話代理,真正需要的往往不是整句整段的整體氣質,而是能在單句、短語甚至單詞的層次上,調整強調、語速、起伏與情緒張力。這正是 FastSpeech 2 的 variance adaptor 設計開始發揮作用的地方。前面 5.4.2 節已經從架構角度說明了它如何把時長、音高與能量變成獨立可預測的變量;這裡要討論的,是當這些變量在推論階段能被外部調整時,語音生成的使用方式發生了什麼改變。
例如,若希望整體語速更慢,可以放大時長;若希望某個關鍵詞更有強調感,可以在對應區段提高音高或能量;若希望整體語氣更平穩,則可以降低 F0 的起伏幅度。這裡最值得注意的,不只是「能不能調」,而是這種調整是否能對應到真實任務需求。導航語音追求的是清楚、穩定、少歧義,因此常需要較平整的韻律與明確的節奏;兒童故事朗讀則往往需要更大的高低起伏與更誇張的局部強調;對話代理則必須根據語境快速切換語氣,在禮貌、熱情、簡潔、安撫之間調整張力。從這個角度看,細粒度韻律控制的重要性不只是技術上的,而是直接關係到 TTS 是否能服務不同用途。
不過,這裡也要看清楚它的邊界。即使模型已經能顯式調整時長、音高與能量,真實韻律仍然不只由這三個量決定。人類說話時的情感色彩、篇章組織、語義焦點、說話者意圖,往往會同時滲入這些變量之中,而且它們之間並不是簡單獨立的關係。換句話說,顯式變量控制讓我們得到了很好用的局部控制桿,但並不等於已經完整掌握了高層表達。這也是為什麼細粒度韻律控制雖然讓系統從「平均最自然」走向「依場景可控」,卻仍然需要和 GST、參考語音、情感資料建模,甚至更高層的語言理解結合起來,才能接近真正自然的人類表達。
也正因如此,FastSpeech 2的角色,應該被理解為一個承上啟下的位置:它承接前面架構層面的顯式變量設計,但真正關心的是這些變量在應用中如何轉化為控制能力。前者解決的是「模型怎麼建」,後者則開始回答「系統能怎麼用」。這個區分非常重要,因為它也提醒我們:現代 TTS 的進步,不只是把模型做得更大、更準,而是逐步把語音生成從黑箱預測,變成一種能被設計、能被調整、也能被場景需求牽引的表達技術。
5.6.4 情感 TTS 的資料挑戰:難的不只是模型,而是資料本身
情感 TTS 一直是研究焦點,但它同時也是最容易被低估的資料問題。原因並不只是「情感資料比較少」這麼簡單,而是:若要讓模型真正學會情感,而不是只學會幾種表面的語調模板,我們需要的是大量、品質一致、情緒分布合理,而且標註可靠的語音資料。這在現實中極為昂貴,也極難做到。
第一個困難,是情感本身難以標註。與文字轉錄不同,情感不是一個天然客觀、唯一正確的答案。同一段語音,不同標註者可能會覺得它是「悲傷」,也可能覺得只是「低落」或「平靜」。就算研究者事先規定少數幾個情感類別,語音中的真實表達仍然常常落在類別邊界之間,而不是落在某個乾淨俐落的格子裡。這意味著,情感資料的標註天生就帶有主觀性,而這種主觀性會直接傳遞到模型上,使模型學到的情感邊界本身也可能是模糊而不穩定的。
第二個困難,是情感資料的分布通常不自然。在真實世界中,中性語音遠比高強度情感語音容易收集,因此大多數資料集都呈現中性資料遠多於情感資料的偏斜結構。更麻煩的是,很多公開情感語音資料集其實是「表演式語音」,也就是請錄音者刻意演出憤怒、悲傷、快樂等情緒。這類資料對研究很有幫助,因為情感標記清楚、錄音品質整齊;但它也有明顯缺陷:表演出來的情感常比自然對話中的情緒更誇張、更模板化。若模型主要在這種資料上訓練,它學到的很可能是「戲劇化的情感模板」,而不是真實人際互動中的細膩表達。
第三個困難,是情感與其他因素往往糾纏在一起。例如,某些情感資料可能來自特定說話者、特定錄音環境、特定文本類型,甚至特定麥克風條件。結果是,模型看似在學情感,實際上卻可能同時學到了說話者音色、文本風格或錄音條件。這種糾纏會直接導致一個常見問題:當你要求模型「更悲傷」時,它也許不只改變了情感表達,還一併改變了說話者質地、語速分布或某些不該改變的特徵。從表徵學習的角度看,這其實就是一種典型的未解耦問題。
第四個困難,是情感的評估也不容易。即使模型生成的語音在技術上自然、清楚,研究者仍然很難只靠單一指標判斷它「情感是否正確」。因為情感是否成功,不只取決於音高、時長與能量的局部模式,還取決於它是否和文本內容一致、是否符合語境、是否被人類聆聽者穩定地感知為同一種情緒。這意味著,情感 TTS 的難題不只發生在訓練資料上,也發生在評估方法上:如果沒有合適的評估框架,模型即使進步了,我們也未必能準確描述它究竟進步在哪裡。
因此,情感語音合成的進展,很大程度上依賴各種折衷策略。常見做法包括:先在大量中性語料上預訓練,再用少量情感資料微調;使用 GST 或參考語音方式,繞過高成本的顯式情感標註;或者借助大型語言模型對文本情緒與語篇意圖的理解,作為韻律生成的高層條件。這些方法共同反映出一個事實:情感控制不是單靠模型架構就能解決的問題,它同樣深受資料品質、標註設計與任務定義方式的制約。
從更根本的角度看,韻律與情感控制其實揭示了語音合成中的一個深層問題:越接近高層次的人類表達,就越不能只靠低層聲學參數的擬合來解決。模型固然重要,但若資料本身沒有足夠穩定地呈現出情感、語境與語言結構之間的關係,那麼再強的模型也只能學到表面的聲學線索,而難以真正掌握「怎麼說才像人在這個情境下說話」。也正因如此,韻律與情感控制不只是第五章中的一個補充主題,而是整個深度語音生成發展中最接近高層表達能力的一條主線。
本節小結
總結來說,韻律建模與情感控制之所以重要,是因為語音生成若只做到內容正確與音色真實,仍然無法真正接近真人說話。韻律涉及 F0、時長、能量與停頓等多個彼此聯動的維度,而這些維度又受到句法、語義、焦點與情緒狀態的共同影響。GST 提供了一種從資料中學習全局風格空間的方法,使整體韻律遷移成為可能;FastSpeech 2 則把時長、音高與能量顯式拉出來建模,讓局部韻律控制變得更可操作。至於情感 TTS,真正的困難往往不只來自模型,而更大的問題來自於資料:情感標註主觀、資料分布偏斜、表演式語料與自然語料之間存在差距,而且情感常與說話者、文本與環境糾纏在一起。這也就說明,韻律與情感控制其實是語音合成中最接近高層表達與語境理解的部分。
5.7 從二階段走向端到端整合:VITS 與近年趨勢
當兩階段架構發展到相當成熟之後,研究社群自然會問:既然聲學模型與聲碼器在感知上彼此依賴,我們是否能讓它們不再分開訓練,而是作為一個整體共同優化?這個問題背後的想法其實很強。若前端預測出一個在頻譜誤差意義上看起來漂亮、但對後端並不友善的中介表徵,那麼整個系統的品質就可能在模組交界處被消耗掉。整合式模型的吸引力,正是在於它試圖減少這種人為切分所帶來的落差。
5.7.1 兩階段架構的殘餘問題
兩階段系統雖然在工程上非常成功,但它並不是沒有代價。第一個殘餘問題是目標函數的不一致。聲學模型通常優化的是頻譜重建誤差,例如 L1 或 L2 損失;但人耳對自然度的感知,並不等同於頻譜逐點的數值接近。聲碼器則通常優化波形品質、感知真實感,或對抗式損失;然而它的輸入又來自前端模型的預測,而不是來自真實頻譜。這意味著,前後兩個模組雖然在系統中彼此相連,卻未必在同一個感知目標上共同被優化。前端可能努力把頻譜誤差壓低,後端則努力把波形做得像真人,兩者的最佳化方向並不完全一致。
第二個問題是訓練條件與推論條件之間的分布偏移。聲碼器在訓練時,看到的往往是真實頻譜;但真正部署時,餵給它的卻是聲學模型預測出的頻譜。這兩者即使只差一點點,在波形層面也可能被放大。也就是說,聲碼器學會的是「如何把真實頻譜變成好聲音」,但產品上真正需要它做的,卻是「如何把帶有預測誤差的頻譜也穩定轉成好聲音」。這個差距,在兩階段系統中幾乎很難完全避免。
第三個問題則與生成的多樣性有關。對同一句話而言,現實世界中原本就存在多種合理讀法:有些可以說得較快,有些可以說得較慢;有些可以比較平穩,有些則帶著比較多的情緒起伏。但若前端模型被設計成輸出單一、確定性的中介頻譜,整個系統就容易收斂到一種「平均化」的發音方式。這種平均化未必會讓輸出錯誤,卻會使語音失去人類說話本來具有的可變性與表達彈性。
因此,兩階段系統的問題並不只是「還不夠自然」而已,而是它在結構上同時面臨三種問題:前後模組的目標不一致、訓練與推論條件不一致,以及單一路徑生成導致的多樣性不足。也正是在這樣的背景下,研究者開始思考:是否可以把這些原本分散的部分,放到同一個生成框架中重新理解?
5.7.2 VITS 的設計邏輯:把對齊、潛在變量與波形生成放進同一個模型
VITS 的出現之所以重要,不是因為它單純把聲學模型與聲碼器「黏在一起」,而是因為它用一個完整的生成式框架,重新描述了文字到語音的整個過程。VITS 的全名是 Variational Inference with adversarial learning for end-to-end Text-to-Speech,可以理解為「結合變分推論與對抗學習的端到端文字轉語音模型」。它把條件變分自編碼器(conditional VAE)、正規化流(normalizing flow)、對抗學習(adversarial learning)以及時長建模整合在一起,使文字到波形不再是兩個鬆散模組的接力,而變成同一個統計模型中的不同部分。
這裡最重要的觀念是:語音生成本來就不是單一確定映射,而是一個帶有潛在隨機性的條件生成問題。 給定同一段文字、同一位說話者,我們在現實中本來就可能聽到多種合理的說法。因此,若模型只被設計成輸出唯一的一條頻譜路徑,它其實是在過度簡化這個問題。VITS 則透過潛在變量 z,把這種可變性正式納入模型。
其變分部分的核心目標可以寫成:
LELBO = Eq[logp(x∣z,c)] − DKL(q(z∣x,c)∥ p(z∣c))
這個數學式可以分成兩個部分來理解。前半項 Eq[logp(x∣z,c)] 表示:在給定潛在變量 z 與條件 c(例如文字或對齊資訊)之後,模型應該盡可能能夠重建真實語音 x。也就是說,潛在變量不是任意存在的,它必須真的攜帶有助於生成語音的資訊。後半項的 KL 散度 DKL(q(z∣x,c) ∥ p(z∣c)) 則要求:由真實語音推得的後驗分布 q(z∣x,c),不要偏離條件先驗 p(z∣c) 太遠。簡單來說,這是在約束模型不要為了記住每一筆訓練資料,而把潛在空間變得過度任意;相反地,它必須把不同語音實例組織成一個具有統計結構的可採樣空間。
如果只靠這個變分目標,模型可以學到可採樣的潛在空間,但最終波形品質未必足夠好。因此,VITS 又引入了對抗學習,把判別器對「像不像真人語音」的感知壓力直接加到訓練目標上。這使模型不只學會「重建得對」,還要學會「聽起來像真的」。從結果上看,VITS 的成功正是來自這種雙重壓力:一方面用潛在變量處理語音生成中的多樣性與不確定性,另一方面用對抗學習直接把最終波形品質納入優化。
此外,VITS 還包含了非常關鍵的時長建模。它不是把對齊完全當成外部前處理,而是把時長預測與單調對齊搜尋放進整體框架裡,使「文字如何展開成語音時間軸」這件事也成為模型內部的一部分。這一點很重要,因為它意味著 VITS 並不是只把「頻譜預測 + 聲碼器」整合起來,而是更徹底地把對齊、潛在變量建模、波形生成三者放進同一套學習機制。
從直覺上說,VITS 讓模型不只學會「這段文字通常對應怎樣的語音」,也學會「在合理範圍內,它還可能以哪些不同方式被說出來」。潛在變量承載了風格、節奏與局部差異,時長建模負責語音如何在時間上展開,而對抗訓練則把最終波形品質直接拉入共同優化。這也是為什麼 VITS 類方法常常能在不依賴獨立聲碼器的情況下,同時追求自然度、速度與多樣性。
更重要的是,VITS 代表了一種更完整的問題觀:文字對齊、頻譜結構與波形重建,並不是三件可以完全乾淨分離的事,而是同一個語音生成過程在不同解析度上的表現。當它們被放進共同優化的系統中,模型就有機會學出更一致的內部表徵。這也就是為什麼 VITS 類方法在品質上能超越許多成熟的兩階段管線。
5.7.3 Matcha-TTS 與流匹配:從「如何採樣」重新思考 TTS
如果說 VITS 展現了端到端整合的力量,那麼 Matcha-TTS 則代表了另一個新方向:用更高效的生成動力學,去重新思考 TTS 的生成過程。這裡的關鍵詞是 流匹配(flow matching)。
要理解流匹配,可以先把它和擴散模型做一個直觀對比。擴散模型的基本做法,是從雜訊開始,經過多步去雜訊,逐漸逼近目標資料分布;也就是說,它把生成理解為一連串細小修正。流匹配的想法則有所不同:它不強調逐步消除隨機雜訊,而是直接學習一個向量場(vector field),讓資料點可以從一個簡單分布,沿著這個向量場連續流動到目標分布。更直白的說,擴散比較像是「一步一步把模糊影像擦清楚」,而流匹配更像是「學會一條從起點走到終點的運動規則」。
這個差異在 TTS 中很重要,因為它關係到生成步數與效率。若模型能直接學會從簡單分布流向高品質聲學表示的動力學,那麼就有可能用更少步數完成高品質生成,而不必像某些擴散式方法那樣仰賴較長的採樣鏈。也因此,Matcha-TTS 所代表的,不只是某個具體模型名稱,而是一個更大的訊號:TTS 的研究正在和更一般的生成模型理論快速接軌。語音合成不再只是「文字處理的一個應用分支」,而開始成為生成式建模、對齊學習、條件控制與高維訊號生成交會的一個前沿場域。
從這個角度來看,Matcha-TTS 值得注意的地方,不在於它是否一定會成為最後的主流贏家,而在於它清楚表明:語音合成的核心問題,已經可以放到更一般的生成模型語言中進行理解。因為到了這一步,TTS 已經不只是語音工程問題,而同時也是生成模型方法論的問題。
本章小結
如果把本章整體回看一次,我們會發現一條非常清楚的技術趨勢:系統越來越少依賴人工定義的中間產物,越來越強調聯合優化,越來越重視把對齊、韻律與波形品質視為同一個整體問題來處理。Tacotron 讓對齊從外部規則或顯式標記,轉向模型內部的可學習機制;FastSpeech 讓時長與韻律控制變得顯性且穩定;神經聲碼器把波形品質推到新的上限;VITS 與 Matcha-TTS 則進一步打破模組邊界,把生成問題重新放進更一般的生成模型框架中。
然而,這條趨勢並不是一條單一路線的線性取代,而是在多條軸線上同時演進。第一條軸線是生成方式:自回歸、非自回歸、流模型、對抗模型、擴散模型,各自代表對「如何產生輸出」的不同回答。第二條軸線是對齊方式:從 Tacotron 的軟注意力,到 FastSpeech 的顯式時長,再到 VITS 的聯合對齊學習,每一步都在重新定義文字與語音之間的時間關係應該如何被表示。第三條軸線是控制方式:從隱含在整體頻譜預測中的隱式韻律,到 GST 的全局風格遷移,再到 FastSpeech 2 的顯式 F0 與能量控制,語音合成逐漸從「只能接受模型給出的預設說法」,走向「可以依場景需求調整說話方式」。第四條軸線則是系統組織方式:從聲學模型與聲碼器各自訓練的兩階段管線,走向 VITS 類方法把對齊、潛在變量與波形生成放進同一個框架的端到端整合。
真正理解現代 TTS,不能只靠記住模型名稱,而要看每個模型在這幾條軸線上各自做了什麼選擇。某些模型以品質為優先,願意承擔較高計算代價;某些模型以速度與穩定性為優先,因此在生成方式上選擇更容易並行的結構;某些模型特別重視控制能力,因此把韻律與時長顯式拉出來;某些模型則試圖在共同優化之下,把原本分開處理的問題重新整合。這些不同選擇,構成了本章真正想建立的視角:現代語音合成不是一條單一路線,而是一個在多個設計維度上持續取捨與演化的系統空間。
若要從本章的所有發展中提煉出一個最核心的觀察,那就是:深度學習時代語音合成的每一步架構演進,本質上都在重新回答同一個問題:哪些決策應該留給人類先驗,哪些可以交由模型從資料中發現。 從對齊到韻律,從頻譜預測到波形生成,從模組管線到整合式框架,這條線索貫穿了 Tacotron、FastSpeech、WaveNet、HiFi-GAN、VITS 與 Matcha-TTS 的所有差異。
然而,本章的討論始終是在語音合成這個具體任務的範圍內展開的。我們看到了自回歸、非自回歸、流模型、對抗模型、擴散模型等不同生成方式在 TTS 中的具體應用,但還沒有系統性地問一個更根本的問題:這些生成方式,究竟各自對「生成」本身抱持著怎樣的理解?它們之間的差異,是否能被放到一個更一般的框架中統一看待?第六章將從這個角度出發,把自回歸、VAE、GAN、flow、diffusion 與 token 模型放到同一張圖裡,討論它們作為生成模型各自的核心假設、優勢與代價。若本章回答的是「現代語音生成系統長成了哪些主要架構」,那麼第六章要追問的,則是「這些架構背後,究竟站在怎樣的生成模型觀上」
參考文獻
Battenberg, E., Skerry-Ryan, R. J., Mariooryad, S., Stanton, D., Kao, D., & Bagby, T. (2020). Location-relative attention mechanisms for robust long-form speech synthesis. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 8102–8106).
Borsos, Z., Sharifi, M., Vincent, D., Kharitonov, E., Zeghidour, N., & Tagliasacchi, M. (2023). SoundStorm: Efficient parallel audio generation. arXiv preprint arXiv:2305.09636.
Chen, N., Zhang, Y., Zen, H., Weiss, R. J., Norouzi, M., & Chan, W. (2021). WaveGrad: Estimating gradients for waveform generation. In Proceedings of the International Conference on Learning Representations (ICLR).
Chorowski, J., Bahdanau, D., Serdyuk, D., Cho, K., & Bengio, Y. (2015). Attention-based models for speech recognition. In Advances in Neural Information Processing Systems (Vol. 28).
Kalchbrenner, N., Elsen, E., Simonyan, K., Noury, S., Casagrande, N., Lockhart, E., Stimberg, F., van den Oord, A., Dieleman, S., & Kavukcuoglu, K. (2018). Efficient neural audio synthesis. In Proceedings of the International Conference on Machine Learning (ICML) (pp. 2410–2419).
Kharitonov, E., Vincent, D., Borsos, Z., Marinier, R., Girgin, S., Pietquin, O., Sharifi, M., Tagliasacchi, M., & Zeghidour, N. (2023). Speak, read and prompt: High-fidelity text-to-speech with minimal supervision. Transactions of the Association for Computational Linguistics, 11, 1703–1718.
Kim, J., Kong, J., & Son, J. (2021). Conditional variational autoencoder with adversarial learning for end-to-end text-to-speech. In Proceedings of the International Conference on Machine Learning (ICML) (pp. 5530–5540).
Kingma, D. P., & Dhariwal, P. (2018). Glow: Generative flow with invertible 1×1 convolutions. In Advances in Neural Information Processing Systems (Vol. 31).
Kong, J., Kim, J., & Bae, J. (2020). HiFi-GAN: Generative adversarial networks for efficient and high fidelity speech synthesis. In Advances in Neural Information Processing Systems (Vol. 33, pp. 17022–17033).
Kong, Z., Ping, W., Huang, J., Zhao, K., & Catanzaro, B. (2021). DiffWave: A versatile diffusion model for audio synthesis. In Proceedings of the International Conference on Learning Representations (ICLR).
Le, M., Vyas, A., Shi, B., Karrer, B., Sari, L., Moritz, R., Williamson, M., Manohar, V., Adi, Y., Mahadeokar, J., & Hsu, W.-N. (2023). Voicebox: Text-guided multilingual universal speech generation at scale. In Advances in Neural Information Processing Systems (Vol. 36).
Mehta, S., Szekér, R., Lameris, G., Svensson Lundgren, E., Henter, G. E., & Beskow, J. (2024). Matcha-TTS: A fast TTS architecture with conditional flow matching. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP).
Prenger, R., Valle, R., & Catanzaro, B. (2019). WaveGlow: A flow-based generative network for speech synthesis. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 3617–3621).
Raffel, C., Luong, M.-T., Liu, P. J., Weiss, R. J., & Eck, D. (2017). Online and linear-time attention by enforcing monotonic alignments. In Proceedings of the International Conference on Machine Learning (ICML) (pp. 2837–2846).
Ren, Y., Ruan, Y., Tan, X., Qin, T., Zhao, S., Zhao, Z., & Liu, T.-Y. (2019). FastSpeech: Fast, robust and controllable text to speech. In Advances in Neural Information Processing Systems (Vol. 32).
Ren, Y., Hu, C., Tan, X., Qin, T., Zhao, S., Zhao, Z., & Liu, T.-Y. (2021). FastSpeech 2: Fast and high-quality end-to-end text to speech. In Proceedings of the International Conference on Learning Representations (ICLR).
Shen, J., Pang, R., Weiss, R. J., Schuster, M., Jaitly, N., Yang, Z., Chen, Z., Zhang, Y., Wang, Y., Skerry-Ryan, R. J., Saurous, R. A., Agiomyrgiannakis, Y., & Wu, Y. (2018). Natural TTS synthesis by conditioning WaveNet on mel spectrogram predictions. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 4779–4783).
Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to sequence learning with neural networks. In Advances in Neural Information Processing Systems (Vol. 27).
van den Oord, A., Dieleman, S., Zen, H., Simonyan, K., Vinyals, O., Graves, A., Kalchbrenner, N., Senior, A., & Kavukcuoglu, K. (2016). WaveNet: A generative model for raw audio. arXiv preprint arXiv:1609.03499.
van den Oord, A., Li, Y., Babuschkin, I., Simonyan, K., Vinyals, O., Kavukcuoglu, K., van den Driessche, G., Lockhart, E., Cobo, L., Stimberg, F., Casagrande, N., Grewe, D., Noury, S., Dieleman, S., Elsen, E., Kalchbrenner, N., Zen, H., Graves, A., King, H., … Hassabis, D. (2018). Parallel WaveNet: Fast high-fidelity speech synthesis. In Proceedings of the International Conference on Machine Learning (ICML) (pp. 3918–3926).
Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, Ł., & Polosukhin, I. (2017). Attention is all you need. In Advances in Neural Information Processing Systems (Vol. 30).
Wang, Y., Skerry-Ryan, R. J., Stanton, D., Wu, Y., Weiss, R. J., Jaitly, N., Yang, Z., Xiao, Y., Chen, Z., Bengio, S., Le, Q., Agiomyrgiannakis, Y., Clark, R., & Saurous, R. A. (2017). Tacotron: Towards end-to-end speech synthesis. In Proceedings of Interspeech 2017 (pp. 4006–4010).
Wang, Y., Stanton, D., Zhang, Y., Skerry-Ryan, R. J., Battenberg, E., Shor, J., Xiao, Y., Ding, F., Xu, R., & Saurous, R. A. (2018). Style tokens: Unsupervised style modeling, control and transfer in end-to-end speech synthesis. In Proceedings of the International Conference on Machine Learning (ICML) (pp. 5180–5189).
Zen, H., Senior, A., & Schuster, M. (2013). Statistical parametric speech synthesis using deep neural networks. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 7962–7966).



















