人工智慧如何生成聲音 第八章_語音生成中的關鍵模組:文字、語者、韻律與聲碼器

更新 發佈閱讀 68 分鐘

8.1 模組化視角的意義

前幾章的討論,大多以「整個系統」為單位展開:我們談 Tacotron、FastSpeech、VITS、HiFi-GAN,也談它們各自如何處理對齊、生成、還原與控制。這種系統層次的視角很重要,因為它讓我們看見技術演進的歷史順序,也看見不同世代方法之間的替代關係。然而,當我們真正要評估一個語音生成工具,或真正要設計一個語音 AI 應用時,只停留在「整體系統」的層次,往往還不夠。因為在系統表面的差異之下,大多數語音生成系統其實共享一組功能上高度相似的核心模組,只是這些模組的實作方式、耦合程度、以及被整合進端到端架構的程度不同。

我們可以先用一個實務上的問題來建立這種模組化視角。假設三個看似都很強的 TTS 系統,一個系統在英文表現流暢,但是遇到日期、縮寫、外來語時常讀錯;另一個系統在字詞發音上很穩,但說話的情感與語氣總是顯得扁平;第三個系統則是文字理解與韻律表現都不錯,卻在最終聽感上總帶著某種人工痕跡。這三種失敗,其實並不是「同一種失敗」。它們分別指向文字前處理模組、韻律建模模組、以及聲碼器模組的不同瓶頸。從這個角度來看,語音生成不是一個單一黑箱,而是一個由若干功能環節協作完成的系統工程。

這個模組化視角之所以重要,至少有三個理由。第一,它能幫助我們更精確地理解能力邊界。當一個商業工具宣稱自己能「自然地模仿任何人的聲音」時,我們真正需要問的是:它的說話者嵌入模組有多穩健?它的文字前端是否能處理多語與多音字?它的韻律控制是隱式的還是顯式的?它的聲碼器是否能在未見過的說話者條件下保持音質?第二,它有助於系統設計。研究者與工程師在建置真實產品時,常常不是從零做一個完整的系統,而是選擇並整合現有的模組。第三,它對工具評估有直接價值。許多部署失敗,並不是核心生成模型太弱,而是模組之間的介面設計不當,或是某一模組在目標場景中不相容。

特別值得指出的是,模組化視角與第五章討論的端到端整合趨勢之間,存在一種看似矛盾、其實互補的關係。端到端系統在訓練時,確實傾向於消除人工指定的中間邊界;例如在 VITS 這類模型中,傳統的「聲學模型」與「聲碼器」已不再是可獨立優化的分離部件。然而,從功能的角度來看,模型仍然必須完成若干不同的子任務:它仍然必須理解文字形式、決定發音單位、推斷說話者身份、選擇韻律模式、最終,還必須還原為可播放的波形。換句話說,端到端訓練消除了模組之間的工程邊界,但沒有消除這些功能需求本身。因此,模組化視角在今天仍然有意義,只是它從「可替換的工程模組」逐漸轉化為「可分析的功能模組」。

本章將沿著這條線索,依序討論語音生成系統中最關鍵的幾個模組:文字前處理與音素表徵、說話者嵌入、韻律建模、聲碼器,以及多語言與跨語言生成的特殊考量。這些模組不是彼此孤立的技術點,而是共同決定系統表現的結構性因素。理解它們,不只是為了知道「系統裡有什麼零件」,而是為了理解:當我們說一個系統自然、穩健、可控、可遷移時,這些性質究竟是從哪裡來的。

從理論的角度來看,模組化視角還有另外一個重要的功能:它能把原本龐雜的系統知識拆解成可以逐步掌握的分析單元。我們如果只記得模型名稱,很容易把語音生成理解成一串彼此競爭的品牌或論文;但是一旦轉到模組視角,就會看見每個系統其實都在回答相似的結構問題:輸入文字怎麼被轉換成可以發音的單位?說話者身份怎麼被表示?韻律要靠隱式學習還是顯式控制?波形是由什麼樣的還原機制生成?這種分析框架,會在後續各章中持續發揮作用。

8.2 文字前處理與音素表徵

在大多數 TTS 系統中,原始文字並不會直接、原封不動地送進聲學模型。相反地,它通常需要先經過一個文字前端(text frontend),將書寫形式轉換為更接近可以發音單位的表徵。這一步如果做得不好,後面再強的生成模型,也只能在錯誤的語言輸入上「認真地做錯事」。因此,文字前處理不是一個可有可無的前置程序,而是整個語音生成系統的第一道結構性約束。

8.2.1 文字正規化

文字正規化(text normalization, TN)的任務,是把書面語中的非標準形式,轉換成適合朗讀的標準形式。直覺來看,這像是一個簡單的符號替換問題;但是一旦進入真實語料,就會發現它其實牽涉到語境、詞性、文化習慣,甚至任務場景。

最典型的例子是數字。數字本身並不攜帶唯一的朗讀方式。「2024」可以讀成「二〇二四」、也可以在某些場景被壓縮成「二千零二十四」;「3.14」在數學語境中與在產品型號語境中的讀法可能不同;「100%」與「100 號」雖都含有 100,但其語音展開方式完全不同。換句話說,TN 處理的不是單純的字元替換,而是把符號序列還原為語音可理解的語言表達。

縮寫與首字母縮略詞更能顯示這類問題的複雜性。例如「AI」在某些中文場景中被直接讀成字母名稱,在另一些場景中則可能應該展開為「人工智慧」;「Dr.」在醫學語境與地址語境的讀法不同;電子郵件、網址、股票代號、型號名稱,也都有高度依賴語境的發音規則。這表示一個好的 TN 系統,往往不能只依靠局部規則,而需要一定程度的上下文判斷。日期、時間與貨幣表達同樣也是如此。像是「2024/01/01」、「2024-01-01」、「Jan. 1, 2024」、「元旦」,表面上指涉的是相近的時間資訊,但朗讀方式並不相同;「$1,500」在中文系統中是要讀作「一千五百元」、「一千五百美元」,還是保留幣別名稱,也取決於場景與設計選擇。

從技術路線來看,早期 TN 系統多依賴規則與有限狀態轉換器(Finite-State Transducer, FST)。FST 的優勢是可控、可解釋、對高頻規則現象處理穩定,因此,長期是工業系統的基礎工具。它特別適合處理數字、日期、縮寫等具有明確模式的結構性轉換。但 FST 的限制也很明顯:一旦遇到新型式、混合語言、或是高度語境依賴的讀法,規則系統的維護成本會迅速上升。近年的神經式 TN 方法,則嘗試以 seq2seq 模型直接學習從原始文字到正規化文字的映射。其優點是更靈活、更能處理例外情況;其代價則是需要標記資料,而且一旦發生錯誤,往往較難以人工規則進行快速修正。

對語音合成而言,TN 的最終目標不是「輸出一個更漂亮的文字序列」,而是為後續發音與韻律建模提供穩定的語言基底。這也是為什麼 TN 雖然位於系統最前端,卻會連帶影響整個系統的可懂度、自然度與穩健性。

8.2.2 字素到音素轉換

文字正規化之後,下一步通常是字素到音素轉換(Grapheme-to-Phoneme conversion, G2P)。這一步的核心問題是:書寫形式並不等於發音形式。語音模型真正要生成的是聲音,而不是拼字,所以系統需要把文字轉換為更貼近語音單位的表徵。

G2P 的難度高度依賴語言。對西班牙語、芬蘭語這類拼字與發音規律相對一致的語言,G2P 可以主要依賴規則完成。對英語而言,情況則複雜得多。拼字與發音之間的關係不穩定,歷史拼法、借詞來源、詞性差異、語義差異,都可能改變讀音。像是 read 的現在式與過去式、lead 的金屬義與動詞義,就是一個經典的例子。對這種語言而言,G2P 不是單純的發音規則映射,而是詞彙知識、語法資訊與上下文判斷的綜合問題。

現代 G2P 系統通常採用多策略組合。第一層是詞典查詢,對高頻詞直接使用既有發音詞典;第二層是規則系統,處理具有一般性規律的未知詞;第三層則是資料驅動的方法,如基於 Transformer 的 G2P 模型,用來處理詞典外詞彙與新造詞。這種分層設計的概念其實很清楚:高信心的詞彙交給顯式知識處理,低信心或新情況才交給模型推斷。

對中文等表意文字系統,G2P 的問題又不一樣。漢字本身不直接標示發音,因此系統需要根據詞語與語境來決定讀音,尤其是多音字問題。例如「行」在「銀行」與「行走」中的讀音不同;「重」在不同語境中的聲母與聲調也會改變。這表示中文的 G2P,本質上往往與詞彙切分、詞性判斷與語義消歧綁定在一起。從這個意義上來說,G2P 並不只是聲學問題,而是語言理解問題在語音生成中的前端表現。

也正因為如此,G2P 的品質往往會在最終輸出中以兩種方式被暴露出來。第一種是直接的發音錯誤:系統把詞念錯,使用者立即察覺。第二種則更隱蔽:即使音素沒有完全錯,若音素序列的切分與標記不夠自然,後續韻律模組也會在錯誤的單位上分配重音與停頓,讓整句話聽起來「勉強可懂,但不像人會這樣念」。這提醒我們,文字前端與韻律模組之間不是串聯而已,而是深度耦合的。

8.2.3 音素系統的設計

一旦文字被轉換為音素序列,接下來的問題就變成:系統究竟要採用什麼樣的音素表徵?這不是單純的標記選擇,而是一個模型介面的設計問題。

音素(phoneme)是語言中最小的對比性語音單位。不同語言有不同的音素系統,也有不同的音韻組織方式。英語約有 40 多個常用音素;華語則需要同時考慮聲母、韻母與聲調;粵語、泰語、越南語等聲調語言更是如此。這意味著,系統的音素標記方案若設計不當,就可能在輸入層面就損失關鍵語言資訊。

常見的英語音素標記系統包括 ARPAbet與 IPA (International Phonetic Alphabet, 國際音標)。ARPAbet 的優勢是 與ASCII 友好、與許多工程資源相容;IPA 的優勢則在於語言學通用性更高。對多語系統而言,有些研究會嘗試使用通用音素集,把多個語言投影到同一套音素空間,以促進跨語言參數共享。但這種共享並不總是沒有代價。因為即使兩個語言表面上有相近的音段,它們在實際操作、協同發音與韻律環境中的分布,也可能不同。

對聲調語言來說,聲調資訊尤其不能被簡化為可有可無的附加標記。這裡需要再次強調:在普通話、粵語、泰語等語言中,聲調不是後期可以隨意再加上的韻律裝飾,而是詞彙識別的一部分。如果系統沒有在輸入表徵中明確保留聲調資訊,後端模型就必須在缺少明確監督的情況下自行猜測,這會直接增加語義錯誤的風險。

從模型角度來看,選擇音素表徵,其實是在決定「哪些語言差異要交給前端處理,哪些差異要留給模型自己學」。這個選擇沒有放諸四海皆準的答案,但它會相當程度地影響系統的資料需求、泛化能力與跨語言遷移效果。

8.2.4 從字元直接建模的爭議

Tacotron 類系統一個重要的歷史突破,就是嘗試直接用字元序列作為輸入,而不顯式地經過 G2P。這種做法在當時很有象徵意義:它似乎表示只要模型足夠強大,就可以從大量資料中自行學會字元到發音的對應關係。

但這裡真正值得探究的問題是:模型能學會,不代表系統設計上就一定應該讓它自己學。 若語言本身發音規律清楚,直接字元輸入的確能大幅簡化系統;可是如果語言的拼字與發音關係高度不規則,則把原本可由前端穩定處理的知識全部推給模型,往往會提高資料需求,也會讓系統對稀有詞與新詞的處理更為脆弱。

因此,當代實務上的共識並不是「字元一定比較先進」或「音素一定比較保守」,而是依照語言與任務場景進行選擇。發音規律性高的語言,可以更多使用字元輸入;發音歧義多、或對發音準確率要求極高的場景,則傾向保留音素前端,甚至使用字元與音素混合輸入。總而言之,這裡最需要理解的是:字元輸入與音素輸入其實對應兩種不同的系統哲學,一種強調讓模型多學,一種強調在前端先把不確定性降到最低。

8.3 說話者嵌入

如果說文字前端回答的是「這段話應該怎麼被念出來」,那麼說話者嵌入(speaker embedding)回答的,就是另一個同樣關鍵的問題:這段話應該聽起來像誰在說。

在多說話者文字轉語音(multi-speaker TTS)、語音轉換(voice conversion)與語音複製(voice cloning)系統中,說話者嵌入的作用,是把一個人的聲音特性壓縮成固定維度的向量表徵,讓模型能夠在生成時以這個向量為條件,控制輸出的音色、共鳴特徵、基頻範圍,以及部分發音習慣。從系統的角度來看,這個向量就像是一種「身份條件」:它告訴生成器,接下來要說出的內容雖然可能相同,但最終聽起來應該屬於哪一位說話者。

不過,這裡有一個非常重要的觀念需要先釐清:說話者嵌入不是把某段聲音樣本原樣壓縮起來的結果。 如果它只是把輸入語音逐細節地記住,那麼其中就會混入大量與身份無關的資訊,例如當下說了什麼內容、語速快慢、情緒狀態、背景環境,甚至錄音設備與空間條件。理想的說話者嵌入,應該是一種更抽象的表徵:它盡量忽略「這一刻說了什麼」,而保留「這個人說話時穩定呈現出的身份線索」。也就是說,好的說話者嵌入應當對語言內容與環境擾動相對不敏感,卻對「誰在說話」這件事情高度敏感。

從這個角度來看,說話者嵌入其實就是一種特殊的表徵學習問題。它要學的不是一般聲學結構,而是對身份穩定、對內容可變的表徵。這也是為什麼它在語音合成系統中如此重要:若模型無法把身份特徵穩定地抽離出來,那麼它就很難在生成時一邊保留文字內容,一邊保持目標說話者的一致性。相反地,若說話者嵌入品質夠高,系統就能在不同文字、不同句型,甚至不同任務條件下,仍然維持相對穩定的聲音身份。

因此,說話者嵌入可以被視為多說話者語音生成中的基礎條件模組。它一方面是聲音身份的摘要,另一方面也是後續聲學模型、聲碼器與控制模組得以運作的關鍵介面。也正因為如此,理解說話者嵌入時,我們至少需要問三個問題:它是怎麼被訓練出來的?它的架構如何從變長語音中提取穩定身份特徵?以及,它最後又是如何被整合進 TTS 系統中的?接下來的幾節,便是沿著這三個問題逐步展開。

8.3.1 說話者嵌入的訓練方式

說話者嵌入的訓練,多半不是直接在 TTS 任務中完成的,而是來自說話者識別(speaker identification)或說話者驗證(speaker verification)任務。這樣的設計背後,其實有一個很清楚的概念:如果一個模型能夠可靠地判斷兩段語音是否來自同一個人,或者能正確區分不同說話者,那麼它在中間層形成的表徵,就很可能已經抓住了說話者身份的核心特徵。換句話說,說話者嵌入不是憑空設計出來的,而是先在「辨認誰在說話」這個任務上被學出來,再被遷移到語音合成系統中使用。

目前最具有代表性的訓練目標之一,是 GE2E 損失(Generalized End-to-End loss,廣義端到端損失)。GE2E 的基本想法並不複雜:它要直接在嵌入空間中塑造一種幾何結構,使同一說話者的語音向量彼此靠近,不同說話者的向量彼此分離。為了做到這件事,在一個訓練批次中,通常會抽取 N 位說話者,每位說話者再各取 M 段語音。若第i 位說話者的第 j 段語音所對應的嵌入向量記為 eij​,那麼同一位說話者其他樣本的平均中心可寫成:

vocus|新世代的創作平台




這個式子最關鍵的地方,在於上標 (−j)。它表示:在計算第 i 位說話者的中心向量時,要把目前這個樣本eij​​ 自己排除掉。為什麼要這樣做?因為如果把eij​​ 也一起算進平均,這個中心就會被當前樣本本身拉近,使它和自己的中心看起來過度相似,從而高估正例相似度,削弱損失函數原本應有的判別壓力。GE2E 在這裡的設計,其實非常精巧:它讓每一個樣本都必須在「不依靠自己」的前提下,靠近屬於自己說話者的整體中心,同時遠離其他說話者的中心。這使得整個嵌入空間在訓練中逐漸形成更穩定的身份群聚結構。

從功能上看,GE2E 屬於一種度量學習(metric learning)思路。它不只是要模型做出分類決策,而是直接塑造向量空間本身的幾何關係。這種做法的好處,是特別適合後續面對訓練時未出現過的新說話者。因為模型真正學到的是「如何在空間中比較身份相似性」,而不只是記住幾個固定類別的邊界。對於多說話者 TTS、少樣本語音複製與說話者驗證這類應用來說,這種能力非常重要。

除了 GE2E 之外,另一條常見路線是分類式訓練(classification-based training)。這種方法把每一位說話者當成一個類別,訓練一個多類別說話者分類模型,然後再把模型中間層的向量取出來作為說話者嵌入。這種做法在封閉集條件下通常表現很好,因為它可以直接利用強監督訊號,讓模型學會如何區分訓練集中已知的每一位說話者。從工程上看,這種方法也相對直接、穩定,容易實作。

不過,分類式訓練也有一個明顯限制:它天然更偏向「記住訓練時有哪些說話者」,而不一定那麼擅長面對從未出現過的新說話者。也就是說,若系統最終的目標是開放集應用,例如輸入任意一位新說話者的少量語音,就希望抽出穩定的身份向量,那麼單純依賴分類式訓練往往不如 GE2E 這類度量學習方法穩健。這也是為什麼在近年的說話者嵌入研究中,許多工作會特別強調對比學習、度量學習或其他直接優化嵌入空間結構的方法:因為對這類任務而言,真正重要的,不只是分類正確,而是向量空間本身是否具有良好的泛化能力。

因此,從更高的角度來看,說話者嵌入的訓練方式其實對應兩種不同的思路。分類式訓練強調把說話者當成明確類別來區分,優勢是監督清楚、封閉集表現通常很好;GE2E 這類度量學習式訓練則更強調嵌入空間的幾何結構,優勢是更適合開放集與新說話者泛化。兩者都能產生可用的說話者嵌入,但它們所塑造的向量空間性質並不完全相同,而這些差異,也會直接影響後續在 TTS、VC 與語音複製系統中的穩定性與可遷移性。

8.3.2 說話者嵌入的提取架構

說話者嵌入的提取架構,面對的是一個很具代表性的技術問題:輸入是一段長度不固定的語音,輸出卻必須是一個固定維度的向量。 這表示編碼器不能只會在局部時間片段裡抓特徵,還必須能把整段語音中與「誰在說話」有關的資訊穩定地聚合起來,壓縮成一個可供下游系統使用的身份表徵。從功能上來看,這類架構大致都包含兩個步驟:先在幀層次或短時間範圍內提取局部聲學特徵,再透過某種全域聚合機制,把可變長度的序列轉換成固定長度的說話者向量。

最早具有代表性的深度式方法,是 d-vector。它最初由 Variani et al. (2014) 在文本依賴的說話者驗證場景下提出,使用深度神經網路(Deep Neural Network, DNN)在幀層次上處理聲學特徵,並取最後一層隱藏表徵,再對整段語音做平均,形成固定維度的說話者嵌入。後來這個思路被進一步擴展為基於 LSTM 等序列模型的通用版本,逐漸成為文本無關場景下的標準說話者嵌入方法,也正是在這個擴展過程中,d-vector 開始被廣泛引入語音合成系統。d-vector 的歷史意義,不只在於它的效果不錯,而在於它第一次清楚展示了一件事:神經網路中間層所學到的表徵,可以被拿來當作說話者身份的可遷移表徵。也就是說,模型不必手工設計一套「誰在說話」的特徵,只要在說話者辨識任務上訓練得夠好,中間表徵自然會發展出對身份敏感的向量空間。

後來出現的 x-vector,則可以看作是對 d-vector 思路的系統性強化。它以時延神經網路(Time-Delay Neural Network, TDNN)為核心。TDNN 的特點,是在每個時間位置上不只看當前這一幀,還會同時看前後若干幀,因此比普通逐幀的前饋網路更能捕捉短時間上下文中的穩定模式。對說話者建模而言,這點很重要,因為一個人的身份特徵往往不在單一瞬間,而是在連續若干幀的共振峰結構、音色變化與發聲習慣中才會比較穩定地顯現。

x-vector 的另一個關鍵設計,是統計池化(statistics pooling)。它不是只對整段語音做簡單的平均,而是同時計算幀級表徵的均值與標準差,再把這兩者拼接成一個固定維度向量。這個設計背後有很清楚的概念:均值可以概括整段語音的「平均樣貌」,而標準差則描述它在時間中的變異程度。對說話者身份而言,這種「平均特徵+變異特徵」的組合,比單純平均更能穩定地保留個體差異。也正因如此,x-vector 很快成為說話者驗證與多說話者語音生成中的標準架構之一。

在這條路線上再往前推一步的代表,是 ECAPA-TDNN。這個名稱是 Emphasized Channel Attention, Propagation and Aggregation in TDNN 的縮寫,可以譯作「強化通道注意力、傳播與聚合的時延神經網路」。它可以理解成:在 x-vector 的基礎上,進一步讓模型更聰明地決定「哪些特徵最值得用來辨識說話者」。其中最關鍵的改進之一,是引入通道注意力機制(channel attention),讓模型能夠動態地強調那些對身份區分最有用的特徵通道,而不是把所有通道一視同仁地處理。

除此之外,ECAPA-TDNN 還結合了多尺度特徵融合。所謂多尺度,指的是模型不只看單一時間範圍內的模式,而是同時整合不同感受野上的特徵:有些說話者差異體現在非常局部的音色細節,有些則要在較長的時間範圍裡才會變得明顯。透過多尺度融合,模型能夠同時保留短時與中時程的身份線索。再配合更精緻的池化設計,ECAPA-TDNN 不只是把整段語音「平均起來」,而是更有選擇性地決定:哪些時間片段、哪些特徵維度,最能代表這個人是誰。從功能上看,它的進步可以理解為:系統不再只是抽取一段聲音的整體樣貌,而是更懂得在複雜訊號中抓住最具辨識力的身份痕跡。

近年來,Transformer 架構的說話者編碼器也逐漸受到重視。這裡的 Transformer 指的是以自注意力機制(self-attention)為核心的神經網路架構。與 TDNN 主要依賴局部時間窗的卷積式建模不同,自注意力的優勢在於:它可以更靈活地直接關聯一段語音中相距很遠的不同片段。對說話者嵌入而言,這意味著模型有能力把分散在整段語音中的身份線索放到同一個計算框架裡整合。例如,某些說話者特徵可能只在特定音素、特定發音方式或特定長時間語流中才明顯浮現,Transformer 類模型在這方面具有潛在的優勢。

不過,這種優勢也伴隨較高的計算成本與部署代價。也因此,在實際工業場景中,TDNN 家族,尤其是 x-vector 與 ECAPA-TDNN至今仍然是非常實用的主力架構。原因不只是它們歷史悠久,而是它們在性能、穩定性、計算效率與實務可部署性之間,取得了很好的平衡。從技術演進來看,說話者嵌入提取架構的發展主線,其實相當清楚:從 d-vector 的「先逐幀提取、再平均聚合」,到 x-vector 的「局部上下文建模+統計池化」,再到 ECAPA-TDNN 的「注意力化、多尺度化與更精細的聚合」,最後延伸到 Transformer 式的全域依賴建模。這條演進路徑也正好說明了一件事:說話者嵌入的品質,不只取決於訓練目標,更取決於編碼器是否真正學會了如何在變長語音中穩定地提取身份線索。

8.3.3 說話者嵌入在 TTS 系統中的整合方式

說話者嵌入提取出來之後,還有另一個同樣關鍵的問題:它究竟要如何進入 TTS 系統,才能真正影響最終生成結果? 這裡牽涉的,不再是「如何抽出一個能代表說話者的向量」,而是「如何把這個向量作為條件資訊,穩定而有效地整合進聲學模型或整體生成架構中」。換句話說,說話者嵌入本身只是身份資訊的載體;若整合方式設計不佳,模型即使拿到了這個向量,也未必能在實際生成時正確地使用它。

從系統觀點來看,說話者條件整合(conditioning)的核心任務,是讓模型在生成每一個聲學特徵或波形片段時,都知道「這句話是誰在說」。但這裡有一個細緻差別:說話者資訊有時像是整段語音的穩定背景,有時又像是會滲入內部特徵分布的調節因素,甚至在更複雜的系統裡,它還可能需要被模型在不同時間步動態取用。也正因為如此,說話者嵌入進入 TTS 系統的方式,並不是只有一種,而是至少可以區分為三類常見的策略:全局加法整合、條件批次正規化,以及交叉注意力整合。

最簡單、也最常見的一種方式是全局加法整合(global additive conditioning)。它的做法,是先把說話者嵌入投影到與模型中間特徵相同的維度,再直接加到編碼器或解碼器的隱藏表徵上。簡單地說,就是把說話者身份當作一個整段語音都共享的背景條件,均勻地施加到整個生成過程中。這種方法的優點很明顯:實作簡單、訓練穩定,而且在多說話者 TTS 這種「同一句話由不同人說」的場景裡,通常已經足以讓模型明白目前應該生成哪一種音色與發聲風格。它隱含的假設是:說話者特性對整段語音的影響,大致是全局且均勻的,而不是需要在每個時間點做細緻調度。

第二種方式是條件批次正規化(Conditional Batch Normalization, CBN)。相較於全局加法只是對特徵加上一個條件偏移,CBN 的想法更進一步:它讓說話者嵌入去控制中間特徵分布的縮放與平移,也就是說,說話者身份不只是附加在特徵上的一層背景,而是能夠改變特徵本身的統計結構。若以h 表示中間特徵,則這種條件調整可以寫成類似下式:

vocus|新世代的創作平台



其中,s 是說話者嵌入, h^ 是正規化之後的特徵,γ(s)與 β(s) 則分別是由說話者向量所生成的縮放參數與偏移參數。這個公式的概念含義是:不同說話者不只是對特徵「加上一個固定風格」,而是可以整體改變這些特徵的分布形狀。從適應能力來看,這通常比單純的加法更具有彈性,因為它允許模型用更細緻的方式,把說話者資訊滲透到內部表徵之中。對於需要加強說話者一致性,或希望模型更穩定地適應不同身份條件的場景來說,這種調整方式往往比全局加法更有表達力。

第三種方式是交叉注意力整合(cross-attention conditioning)。在這種設計裡,說話者嵌入不再只是單一固定向量,或不只是用來改變特徵分布,而是被視為一組可供模型動態查詢的條件表徵。生成器在不同時間步,可以透過交叉注意力機制,選擇性地取用與當前生成內容最相關的說話者資訊。簡單地說,全局加法像是在整段語音上均勻灑上一層身份條件,CBN 像是在內部特徵分布上施加說話者調制,而交叉注意力則更像是讓模型在生成過程中隨時回頭查看:「此刻最需要哪一部分的說話者資訊?」這種方式在精細風格控制、多條件合成,或說話者身份與其他控制條件需要共同協調的場景中,尤其具有吸引力。不過,它的代價也很清楚:計算成本更高,模型結構更複雜,而且在單純的多說話者 TTS 任務裡,未必一定能帶來與其複雜度相稱的收益。

若把這三種整合方式放在一起看,它們其實對應的是三種不同的系統假設。全局加法整合假設說話者資訊像一個穩定背景,可以在整段語音中均勻施加;條件批次正規化假設說話者不只提供背景身份,還會改變內部特徵分布,因此需要更細緻的調制;交叉注意力整合則假設說話者資訊本身也可能需要被動態選取,並在不同時間位置以不同強度參與生成。這三種假設沒有哪一種絕對正確,而是取決於任務需求:單純的多說話者 TTS、帶有細膩韻律控制的語音合成,以及說話者身份與情緒、語速、風格聯合建模的複雜系統,對說話者條件的整合需求本來就不同。

因此,從更高的角度來看,說話者嵌入在 TTS 中的整合方式,其實不只是工程細節,而是系統如何理解「身份條件」的一種具體表現。模型究竟把說話者當作全局背景、分布調制因子,還是可動態查詢的條件記憶,會直接影響它最後生成語音時的穩定性、可控性與說話者一致性。也正因為如此,說話者建模的問題從來不只在於「有沒有一個好的嵌入向量」,更是在於:這個向量被系統用什麼方式吸收、轉化,並真正落到最終的發聲結果上。

8.3.4 少樣本說話者嵌入的挑戰

在語音複製(voice cloning)的場景中,最吸引人的設定往往是 few-shot,甚至 zero-shot:系統只聽到幾秒鐘參考音訊,就能用該說話者的聲音去合成任意新內容。從使用者角度來看,這種能力非常理想,因為它意味著不需要長時間錄音,也不需要為每位新說話者重新訓練完整模型。然而,從技術角度來看,這其實把說話者嵌入問題推到了最困難的極限。原因很簡單:模型現在必須在極少的觀測條件下,推斷出一個人的穩定聲音身份,而不是只在資料充足時做平均化的身份估計。

這裡的根本困難在於:短音訊未必能完整呈現一個人的典型聲學特徵。 一個人的聲音身份,並不是由單一瞬間決定的,而是分散在音色、共振峰結構、基頻範圍、發聲習慣、韻律傾向與局部語音動態之中。若參考樣本很短,模型所看到的,很可能只是這個人聲音的一個局部切面,而不是足以代表其身份的完整樣貌。例如,參考片段可能剛好錄在吵雜環境中,帶有明顯背景噪聲;也可能因為錄音當下緊張、生病、疲倦或情緒激動,而使聲音狀態偏離平常;甚至可能只是恰好只包含少數幾類音素,讓某些對身份很有區辨力的聲學線索根本沒有出現。換句話說,在 few-shot 條件下,模型看到的未必是「這個說話者是誰」,而可能只是「這個人某一次、某種狀態下的局部發聲樣本」。

也正因為如此,少樣本說話者嵌入真正要解決的,不只是從短音訊中抽出一個向量,而是做出魯棒的身份估計。所謂魯棒,意思是這個向量應該盡量忽略偶發性的噪聲、情緒、錄音條件與內容偏差,只保留那些跨樣本仍然穩定存在的身份特徵。這比一般多說話者 TTS 裡的嵌入提取更難,因為一般情況下我們往往可以用較長語音、較多樣本,甚至可在訓練中看到足夠多的同說話者資料;但在 few-shot 或 zero-shot 場景裡,模型幾乎沒有這種餘裕。

因此,常見的改進手段也都圍繞著同一個目標:讓嵌入模型在不理想條件下,仍能抓到穩定的身份線索。 其中一類方法是資料增強(data augmentation),例如在訓練階段主動加入噪聲、混響、音量變化與頻寬限制,使模型習慣各種音質與錄音條件,減少它把環境因素誤當成身份特徵的風險。另一類方法,是在推論時使用多段參考樣本,再對多個嵌入向量做平均或更穩健的聚合,以降低單一樣本偶發偏差的影響。還有一些方法則會在訓練時直接模擬短語音條件,例如專門以短片段進行對比學習或相似度學習,讓模型在一開始就學會:即使只聽到很短的語音,也必須盡量做出穩定的身份判斷。

從更高的角度來看,few-shot 與 zero-shot 場景之所以特別具有代表性,是因為它們清楚地揭示了一件事:語音複製看起來像是生成問題,但它在很大程度上其實先是一個估計的問題。 後端生成器當然重要,但如果前端說話者嵌入本身已經不穩定,後端再強,也只是在放大一個不夠準確的身份條件。也就是說,語音複製系統的成敗,往往不只取決於聲學模型與聲碼器是否足夠自然,還取決於說話者嵌入這個前端模組,是否真的能在極少樣本條件下提供一個可信的身份表示。這也正是為什麼少樣本說話者嵌入,不只是說話者建模中的一個特殊案例,而是整個語音複製技術能否真正走向實用的重要前提。

8.4 韻律建模

如果說說話者嵌入回答了「像誰說」,那麼韻律建模回答的就是「怎麼說」這個問題。在很多實際系統裡,一段語音是否自然,往往不是因為音色不對,而是因為節奏、停頓、重音與語氣不對。也正因為如此,韻律成為語音生成中最難完全自動化、卻又最直接影響使用者感受的模組之一。

8.4.1 韻律建模的層次結構

要理解韻律,最重要的第一步,是先理解它不是單一變數,而是分布在多個時間尺度上的結構。換句話說,韻律不是只靠某一條 F0 曲線或某一組時長值就能完全描述;它其實同時存在於音素、音節、詞、短語、句子,甚至篇章的不同層級中。

在最細的音素層次,韻律表現在音素的固有時長與局部協同發音效應上。某些元音天然較長,某些輔音天然較短;相同音素在詞尾與詞中,其實際時長也可能不同。這些差異聽起來很細小,卻正是自然語音不機械的重要來源。

到了音節與詞層次,韻律開始表現為重音配置與局部 F0 模式。英語的重音位置會改變詞義或詞性;中文等聲調語言則在這個層次上把詞彙聲調與語流語調交疊在一起。這表示模型如果只看到字詞序列,而沒有形成對音節層次結構的表徵,就很難真正掌握重音與局部語調。

再往上是短語與句子層次。這是韻律最具語用意義的範圍:一句話是陳述、疑問、延續、反諷還是強調,往往不是由單一音素決定,而是由整段 F0 走向、局部峰值配置、句尾延長與停頓共同塑造。也就是說,句子層次的語調不能只是由底層單位機械地拼接出來,它需要更高層的全局規劃。

最後是篇章層次。當系統要朗讀一段長文、有聲書或多輪對話時,還需要考慮跨句的一致性:整體語速是否穩定、段落情緒是否逐步推進、角色之間的語氣是否有區辨。這一層目前仍然是語音生成最前沿、也最困難的挑戰之一。從這個角度來看,韻律建模的難點從來不只是「預測一條曲線」,而是讓不同時間尺度上的語音表達彼此協調。

8.4.2 韻律的預測方法

一旦理解了韻律具有多層次結構,下一個問題就是:現代 TTS 系統究竟如何建模它?大致來看,目前的韻律處理可以分成三條主要路線:隱式韻律建模、顯式韻律建模,以及潛在韻律建模。

第一種是隱式韻律建模。Tacotron 類系統便屬於此類。模型在訓練時只需要文字與對應語音,韻律並不作為單獨標註被輸入,而是作為頻譜重建的副產品,被內隱地學在注意力與解碼器狀態之中。這種方式的魅力在於簡潔:不需要額外的韻律標籤,也不需要明確定義每一個韻律維度。然而,它的代價也很清楚,那就是可控性較低。系統確實能學到某種自然韻律,但使用者通常很難精確指定。

第二種是顯式韻律建模。FastSpeech 2 是最具代表性的例子。它把時長、F0、能量拆開來預測,讓每個維度都有自己的預測器與控制介面。這種方式的最大優點,是把原本模糊的「說得自然」分解成可操作的子問題:哪個音節該拉長?哪個詞該加強?整句 F0 該上揚還是下滑?從工程部署的角度來看,這種顯式設計特別有價值,因為開發者可以直接調整輸出,而不必重新訓練整個模型。

第三種是潛在韻律建模。這一路線不直接預測每一條 F0 曲線或每一個時長值,而是學一個潛在韻律空間,讓整體說話風格被壓縮成向量。GST 與各種 Prosody VAE 就屬於此類。它們的吸引力在於,能用參考語音或潛在採樣的方式控制整體風格,而不是手動指定所有底層韻律數值。從使用者體驗來看,這種方式也更接近人類對韻律的理解:我們通常不會說「把第三個音節的 F0 提高 17 Hz」,而會說「請用比較溫柔、比較緩慢、比較懷舊的語氣」。

從理論角度看,這三條路線的差別不只是控制介面不同,而是對「韻律究竟是什麼」有不同假設。隱式方法把韻律當成為了完成重建任務而自然浮現的副產品;顯式方法把韻律視為可分解、可預測的結構變數;潛在方法則把韻律視為一個高維但可壓縮的風格空間。這三種觀點其實都抓住了韻律的一部分,也正因如此,韻律才始終難以被單一方法完全處理。

8.4.3 語調模型的特殊問題

在前一節提到的三條韻律建模路線中,F0(fundamental frequency,基頻)幾乎都是最難處理、也最容易出問題的一個維度。原因不只是它在聽感上極為重要,更在於它同時牽涉到語言、情緒、說話者差異與數學表徵上的特殊性。換句話說,時長與能量固然也屬於韻律的一部分,但若說哪一個變量最能直接影響我們對「語氣像不像真人」的判斷,通常還是 F0。也正因如此,語調模型往往需要被單獨提出來討論。

第一個困難,在於 F0 在有聲段(voiced region)與無聲段(unvoiced region)之間先天上是不連續的。當聲帶振動時,我們可以定義一個相對清楚的基頻值;但在清音、停頓或無聲摩擦音中,聲帶並不週期性振動,因此嚴格來說並不存在明確的 F0。這意味著,如果我們把整段語音的語調表示成一條連續曲線,模型就會遇到大量缺值、跳變,甚至是本質上「不存在該數值」的區段。這和一般連續回歸問題很不一樣,因為它不是單純的數值預測,而是同時包含「這裡有沒有基頻」與「若有,其值是多少」兩個問題。

因此,實務上常見的做法,是把有聲/無聲判斷(voiced/unvoiced decision)與 F0 數值預測分開建模。也就是說,模型先判斷某個時間位置是否屬於有聲段,再只在有聲段上預測對應的 F0。另一種常見做法則是先對原始 F0 序列做插值(interpolation),用鄰近有聲區段的值填補無聲區段,使整條曲線在訓練時看起來較連續、較平滑。這樣做的目的,不是宣稱無聲段真的有基頻,而是讓模型在數值優化上更容易學到整體的語調輪廓。換句話說,這裡的插值是一種工程上的輔助表示,而不是語音學意義上的真實 F0。

第二個特殊之處,在於 F0 的感知尺度更接近對數,而不是線性尺度。人類對音高的感受,並不是以固定的赫茲差來衡量,而更接近比例差。例如,從 100 Hz 升到 200 Hz,和從 200 Hz 升到 400 Hz,在音樂與聽覺感知上都接近「升高一個八度」。這表示,若模型直接在線性 Hz 尺度上建模 F0,數值上的差異不一定等於感知上的差異。也正因如此,許多系統不是直接預測 F0,而是改為預測 logF0,也就是基頻的對數值。這樣的轉換看似只是數學技巧,實際上卻很重要,因為它讓模型優化的數值空間,更接近人類實際感受到的音高變化。當表示空間與感知空間較一致時,模型通常也更容易學出穩定、自然的語調模式。

第三個麻煩,則出現在多說話者系統中。不同說話者的基頻範圍往往非常不同:有些人天生音高較高,有些人則較低;同樣一句話,即使語調模式相似,其絕對 F0 數值也可能差很多。如果系統不先做某種程度的說話者相關正規化,那麼模型就很容易把兩件本質不同的事混在一起:一件是「這位說話者本來就習慣用較高的音域說話」,另一件則是「這一句話在語用上需要語氣上揚」。前者屬於身份特徵,後者屬於韻律結構。若兩者混淆,模型在跨說話者共享韻律模式時就會變得模糊,也會使推論時的語調控制顯得不穩定。

這也是為什麼許多系統在建模 F0 時,會先做說話者相關的標準化(speaker-dependent normalization),例如把每位說話者的 F0 轉換到相對於其個人均值與方差的尺度上,再讓模型學習其中跨說話者可共享的語調模式。這種做法的直觀意義是:先把「天生音域差異」扣掉,再來看「語氣如何變化」。只有這樣,模型才比較有可能學到一種真正可遷移的韻律知識,而不是把身份差異誤學成語調規律。

從更高的角度來看,F0 建模之所以特別麻煩,正是因為它同時處在幾條不同的邊界上:它一方面是聲學量,另一方面又承載語義與情緒;它一方面可以被視為數值曲線,另一方面又有不連續、對數感知與說話者依賴等特殊性。也就是說,語調模型的困難,從來不只是「把一條曲線預測準」而已,而是要在聲學表示、感知尺度、身份差異與語用功能之間找到一種可學習的平衡。而當這些低層問題逐漸被處理之後,下一個自然浮現的問題就是:除了把 F0 曲線本身預測得更準,我們能不能從更高層次改善韻律決策?

8.4.4 大型語言模型對韻律預測的影響

這也正是近年大型語言模型(Large Language Model, LLM)開始影響韻律建模的背景。傳統方法多半從聲學特徵、局部文字特徵,或顯式韻律變量出發;而 LLM 的加入,則打開了另一條路徑:讓高層語義理解直接參與語音生成中的韻律決策。

這背後有一個很重要的概念。人類在朗讀時,通常不是先逐字掃描,再機械地決定每個音節的 F0 或時長;相反地,我們往往先理解整句話在說什麼,知道它是陳述、疑問、反問、強調、安撫還是諷刺,知道哪裡是資訊焦點、哪裡應該停頓、哪裡的語氣需要拉高或收斂,之後韻律才自然浮現。換句話說,韻律並不只是低層聲學模式的排列,它也深受高層語義、語用功能與篇章結構的制約。若模型能取得這些高層訊息,它理論上就更有可能做出接近人類的韻律預測。

也正因為如此,LLM 在這裡的重要性,不只是「模型變大了」,而是它帶來了一種新的資訊來源:對整句語義、語境意圖與語篇組織的表示能力。這和前面談到的顯式韻律控制形成了一個很有意思的對照。顯式方法試圖把時長、F0、能量拆出來,讓模型在低層變量上可預測、可調整;而 LLM 路線則更像是把問題往上提,問的是:能否先理解「這句話想怎麼被說」,再讓這種理解下傳成具體的韻律模式。前者比較像工程控制,後者則更接近語義驅動的韻律規劃。

PromptTTS 與 InstructTTS 便代表了這個方向,但兩者的技術路線有所不同。PromptTTS 以風格描述文字作為顯式條件輸入,直接影響聲學模型的生成行為;InstructTTS 則進一步在離散潛在空間中結合自然語言提示,透過潛在表徵來承載表達性風格。儘管技術細節不同,它們共同的關鍵在於:不再要求使用者直接調整 F0 曲線或手動設置每個音節的時長,而是允許以自然語言描述說話風格,例如「請以沉穩、低聲、略帶懷舊感的語氣朗讀」或「請用較明亮、較有鼓舞感的方式說這段話」。這種做法的真正意義,不只是操作更方便,而是把韻律控制從低層工程參數,提升為高層語義介面。從人機互動的角度看,這比傳統韻律編輯更符合人的直覺,因為人們通常不會用赫茲、毫秒或能量包絡來描述說話方式,而是用風格、情緒、態度與語境來表達需求。

不過,這條路線也帶來新的問題。自然語言提示雖然更符合人類使用習慣,但它本身常常是模糊的、可多重解釋的。例如「溫柔」「沉穩」「懷舊」這些描述,並沒有唯一對應的聲學實現,不同模型、不同資料分布,甚至不同語境,都可能導致不同結果。這意味著,LLM 式韻律控制雖然提升了介面層次,卻未必自動提升控制的精確性。從理論研究角度來看,這類系統仍然需要回答一個核心問題:模型究竟是在真正理解語義與風格,還是在把某些常見提示詞對應到資料中學到的統計模板?

因此,大型語言模型對韻律預測的影響,可以理解為韻律建模的一次重要上移:它讓系統不再只從局部聲學或底層韻律變量出發,而開始把句子意義、語境意圖與人類描述方式納入控制介面。這很可能是未來 expressive TTS 的重要方向之一,但它也同時提醒我們:當韻律控制被提升到語義層次後,問題不會因此變得更簡單,而只是從「如何準確預測低層曲線」轉變成「如何把高層語義穩定轉譯為可聽的說話方式」。

8.5 聲碼器的角色與設計

第五章已經從歷史演進的角度討論過神經聲碼器。本節則把聲碼器重新放回模組視角中來理解:在語音生成系統裡,聲碼器究竟扮演著什麼角色?如果文字前端負責把文本整理成可供模型理解的語言表示,說話者嵌入負責回答「像誰說」,韻律模組負責回答「怎麼說」,那麼聲碼器真正負責的,就是最後一步:如何把這些中間表徵轉化為可被人耳接受的真實波形。

從這個角度來看,聲碼器並不是語音系統裡一個附屬的小部件,而是整個生成鏈條中最靠近感知的一個模組。它位在文字、身份、韻律與最終聽感之間的最後介面,也因此最直接地暴露整個系統究竟有沒有真的「說出聲來」。理解聲碼器,不只是理解某種波形生成器,而是在理解語音生成系統如何把抽象表徵落實為具體聽感。

8.5.1 聲碼器作為感知品質的最終決定者

在典型的兩階段系統中,聲學模型輸出的是中間聲學表徵,例如 Mel 頻譜圖;真正最後被人耳聽到的,則是聲碼器所還原出的波形。這意味著,聲碼器在某種意義上就是整個系統的最後一道審判。前面的模組或許決定了「該說什麼、像誰說、用什麼語氣說」,但聲碼器決定了這一切是否能以高品質的聽感落地。

也正因為如此,聲碼器的能力往往構成整個系統音質的上限。若聲碼器本身只能產生帶有人工痕跡、模糊高頻或週期性不自然的波形,那麼再準確的頻譜輸入,也不會自動變成自然語音。反過來說,一個強大的神經聲碼器也不只是被動地「照單全收」:它往往會利用訓練時學到的波形統計規律,在一定程度上修補與平滑中間表徵中的瑕疵,使輸出聽起來比輸入頻譜本身所暗示的還要更自然一些。這正是為什麼聲碼器的每一次躍進,從 Griffin-Lim,到 WaveNet,再到 HiFi-GAN 與擴散式聲碼器,都會成為整個 TTS 音質提升的關鍵節點。

從更理論的角度來看,聲碼器之所以重要,是因為它讓我們看到語音生成中的一個根本事實:中間表徵不等於最終聽感。 一張 Mel 頻譜圖可以在數值上很接近真實資料,但只要波形還原階段不夠強,結果仍然可能聽起來生硬、平滑或失真。換句話說,聲碼器不是單純的技術尾端,而是把「模型內部的表徵世界」翻譯成「人類可感知的聲音世界」的關鍵轉譯器。

8.5.2 通用聲碼器與說話者相關聲碼器

依照訓練資料的設計,聲碼器大致可以分為說話者相關聲碼器(speaker-dependent vocoder)與通用聲碼器(universal vocoder)

說話者相關聲碼器是在單一說話者資料上訓練的。它的優勢在於:模型可以高度適應該說話者的音色細節、共振特性、發聲習慣與局部質地,因此在單一語者高品質 TTS 中,往往能做到非常細膩的波形還原。若系統的目標明確,而且服務對象固定,例如某個特定配音員或虛擬角色,那麼說話者相關聲碼器通常能提供非常漂亮的最終音質。

但這種能力是以泛化性為代價換來的。因為模型看到的資料分布幾乎都來自同一個人,所以它會把某些本屬於「這位說話者特有的聲學規律」內化成一般生成先驗。一旦推論時輸入的聲學表徵來自未見過的說話者,模型表現就可能迅速下降,甚至出現不自然的失真。換句話說,說話者相關聲碼器的強項是深度適配,弱項則是跨說話者泛化。

通用聲碼器則走相反的路線。它在多說話者資料上訓練,學到的是更普遍的「自然語音波形如何分布」的規律,而不是某個單一說話者的特定聲音。這使得它在面對新說話者時,通常具有更好的泛化能力。也正因如此,現代多說話者 TTS、語音複製與一些開放式語音生成系統,大多更偏好通用聲碼器,因為它們更符合真實產品中「輸入說話者不固定」的需求。

不過,通用聲碼器也有自己的隱含假設:它預設前面的聲學模型已經把說話者差異足夠完整地保存在中間表徵中。若某些非常細膩的嗓音質地、氣音特徵或局部發聲習慣,在 Mel 頻譜這一層就已經流失,那麼再強的通用聲碼器也無法憑空補出目標說話者所有微妙特徵。從這個角度來看,通用聲碼器與說話者相關聲碼器之間的差別,不只是資料範圍不同,而是它們對「說話者差異應該在系統哪一層被保留」有不同假設:前者更依賴前端表示攜帶身份資訊,後者則允許更多身份細節被隱含在聲碼器本身之中。

8.5.3 聲碼器的輸入格式與相容性

在研究論文中,我們常把聲學模型與聲碼器視為可以自由組合的模組:前面模型產生 Mel 頻譜圖,後面模組把它還原成波形,看起來就像一種標準化介面。但在真實部署中,這種自由度其實受到非常強的條件限制。聲碼器訓練時所使用的 Mel 頻譜格式,例如取樣率、FFT 大小、窗長、幀移(hop size)、Mel 頻道數與對數壓縮方式,都必須與推論時的輸入一致。特別是幀移的不一致,會直接改變 Mel 頻譜圖的時間解析度,使聲碼器在時間軸上的生成節奏與輸入不匹配,導致語速異常或波形失真。只要這些規格稍有不匹配,哪怕內容語義正確,聲碼器也可能因為輸入分布偏移而產生嚴重失真。

因此,聲碼器的相容性並不是一個枝微末節的工程問題,而是模組理論能否真正落地的關鍵條件。很多表面上看似「模型本身不好」的失敗,實際上只是中間表徵規格不一致,導致後端聲碼器接收到的輸入不再落在它熟悉的分布範圍內。從模組化的觀點來看,這些問題提醒我們:一個模組的成敗,不只取決於它自身的理論設計,也取決於它與其他模組之間是否真的共享同一個介面假設。

這也是研究原型與工業系統常出現落差的重要原因之一。論文中的聲學模型與聲碼器,往往是在完全一致的特徵設定下共同設計與測試,因此表現理想;但在產品系統中,模型可能需要接入既有資料流程、支援多種語言包、兼容不同來源的預訓練模組,甚至在不同設備條件下穩定輸出。此時,聲碼器的輸入相容性就不再是單純的「格式問題」,而成為整個系統是否能穩定出聲的核心工程條件。

此處,提醒我們一件重要的事:聲碼器不是抽象意義上的波形生成器,而是帶有強介面依賴的模組。 它的成功不只依賴生成能力,也依賴整個系統是否在中間表徵層面維持一致。也正因為如此,聲碼器看似位於系統尾端,實際上卻對整個前端模組提出了很強的約束。

8.5.4 從「聲碼器」到「端到端解碼器」的演進

在端到端模型中,傳統意義上的聲碼器邊界開始變得模糊。像 VITS 這類模型,其內部的波形生成器在功能上仍然做著「把中間表徵轉成波形」的工作,但它不再以傳統 Mel 頻譜為輸入,也不再是一個可以輕易獨立替換、單獨訓練的模組,而是整體架構中的一部分。

這帶來一個重要的概念轉變:在現代整合式系統裡,聲碼器不再一定是一個可插拔的模組,而更可能是一種內嵌於整體解碼器之中的功能角色。 也就是說,從功能分析上,我們仍然可以指出系統中有一部分負責最終波形生成;但從工程實作上看,這個部分未必還保有清晰的模組邊界,也未必能像早期兩階段系統那樣被單獨替換或單獨優化。

這並不表示聲碼器「消失了」,而是表示我們對聲碼器的理解必須跟著更新。在兩階段架構中,聲碼器是一個獨立存在的波形還原器;在端到端架構中,它更像是整體生成器內部負責最終聲學落地的那一段機制。功能仍然存在,但邊界不再像以前那麼清楚。端到端整合並不是取消了聲碼器,而是讓「聲碼器」從一個明確模組,逐漸轉變成整體解碼器內部的一種功能分工。

這個變化提醒我們:理解聲碼器,不能只停留在歷史上那些獨立的神經聲碼器模型,而必須更抽象地理解它在語音生成鏈條中的角色。無論是作為獨立模組,還是作為端到端系統中的內部功能,聲碼器的核心任務始終沒有改變,它負責把抽象的中間表徵轉化為可聽、可信、可感知的波形現實。真正改變的,是它在系統中的邊界、可替換性,以及與其他模組之間的耦合程度。因此,聲碼器的演進並不是一條「從有到無」的路,而是一條「從獨立模組走向整體生成器內部功能」的路。

8.6 多語言與跨語言生成

當我們把語音生成從單一語言擴展到多語環境時,整個問題會立刻變得更複雜。因為此時系統不只要學會不同語言如何發音,還要學會哪些特徵可以跨語言共享、哪些不能共享,以及說話者身份如何在不同語言之間保持一致。換句話說,多語生成的困難點不只是資料變多,而是模型必須同時處理「共享」與「差異」這兩種彼此拉扯的要求。

8.6.1 多語言建模的基本策略

多語言 TTS 大致可以分成三種基本策略。

第一種是每種語言各自訓練一個模型。這種做法最直接,也最容易在每一種語言上做局部最佳化。若系統只服務少數幾個高資源語言,這種方式往往能得到穩定的表現。但它的缺點也很明顯:維護成本高,而且語言一多,模型數量、資料流程與部署管理都會迅速變得複雜。

第二種是共享主幹、保留少量語言特定模組。這在實務上通常是比較平衡的方案。模型可以共享較底層的聲學與生成能力,同時在前端文本處理、音素映射或某些語言特有的規則上保留專門模組。這種設計的優點,是既能讓不同語言互相借力,又不至於完全抹平語言的差異。

第三種則是完全共享模型,也就是使用統一音素系統、通用語音單位,或某種更抽象的共享表徵,讓多種語言都在同一個模型裡被處理。這條路線最吸引人的地方,在於它有機會讓低資源語言從高資源語言中受益,尤其是在音韻相近或部分聲學特徵可共享的情況下,知識遷移的潛力相當大。

不過,完全共享的挑戰也最明顯。不同語言並不只是不同標籤,它們還具有不同的音韻結構、不同的聲學邊界,以及不同的韻律規則。也就是說,多語言共享不是把所有語言資料丟進同一個模型就會自動成功;模型必須真正學會哪些層次的知識可以共享,哪些層次則必須保留語言特有的差異。

從知識遷移的角度來看,這裡存在一個很微妙的平衡:共享太少,低資源語言得不到高資源語言的幫助;共享太多,語言特有現象又可能被高資源語言的統計優勢淹沒。因此,多語模型真正困難之處,不在於把多種資料塞進同一個網路,而在於如何在共享與保留差異之間,找到合理的表徵層級。從這個角度來看,多語言建模其實是對表示學習能力的一次直接檢驗:模型是否真的知道哪些是語言共通的聲學與生成規律,哪些則是特定語言不可隨意抹平的結構。

8.6.2 跨語言語音複製的技術難題

如果說多語言 TTS 的目標,是讓系統在多種語言中都能自然地把話說對,那麼跨語言語音複製(cross-lingual voice cloning)則又多了一層要求:系統不只要會說目標語言,還要讓人聽起來像是同一個人在說多個語言。

這之所以更難,是因為說話者身份與語言內容本來就不是完全獨立的。說話者的音色確實和聲道結構、發聲習慣有關,但語言本身也會影響聲道使用方式、共振峰分布與發音動態。當一位說話者從未說過某語言中的特定音素時,系統就必須回答一個非常困難的問題:如果這個人會說這個音,他會怎麼說?

這裡真正的挑戰,不只是聲音像不像,而是模型是否抓住了那些跨語言仍然成立的身份特徵。若說話者嵌入中混入太多語言特有的發音習慣,那麼一旦切換到另一種語言,模型就可能失去說話者一致性;反過來說,若嵌入過度抽象化,又可能保住了某種模糊的音色印象,卻失去了更細膩的個體特色。換句話說,跨語言語音複製真正測試的,不只是說話者嵌入是否穩定,而是它是否真的抓住了比語言更深一層的身份本質。

也因此,跨語言 voice cloning 可以被看成對整個系統的一次壓力測試。多語 TTS 至少還可以把問題理解為「不同語言各自怎麼說」;但跨語言語音複製要求模型同時滿足兩件事:一方面內容必須轉移到新語言,另一方面身份又不能在語言切換中被沖淡。這種雙重要求使它比一般多語 TTS 更依賴良好的解糾纏能力,也更容易暴露說話者嵌入、韻律建模與聲學表徵中的隱性問題。

8.6.3 聲調語言的特殊處理

聲調語言在這裡又把問題推向更高難度。因為在華語、粵語、泰語、越南語等語言中,F0 不只是韻律,也同時參與詞義區辨。這表示系統不能把聲調與情緒語調混為一談,也不能把所有 F0 控制都交給後端韻律模組再去「自由發揮」。在這些語言裡,F0 同時承擔兩種角色:它既是表達語氣的韻律線索,也是區分詞彙意義的音韻結構。這使得聲調語言中的語音生成,天然比非聲調語言更複雜。

在實務上,聲調語言系統通常會選擇顯式標記聲調,讓模型在輸入層就知道每個音節應對應哪種詞彙聲調。這種做法通常比完全依靠隱式學習穩定得多,因為它至少先把「詞彙上應該是什麼聲調」這件事固定下來。但真正困難的地方在於,這還只是第一步。模型之後仍然必須決定:在保持正確詞彙聲調的前提下,語句整體的情緒語調、句尾升降、重音強調與說話者音域特徵要如何疊加上去。

問題在進行跨語言語音複製時尤其困難。當「源語言無聲調、目標語言有聲調」時,系統必須同時做到兩件事:一方面產生正確的詞彙聲調,另一方面還要維持該說話者的個人 F0 範圍與聲音質地。這其實要求模型同時處理三個彼此糾纏的層面:內容結構、身份特徵與韻律表達。若內容主導太強,系統可能說對了字,卻失去原說話者語感;若身份主導太強,則可能出現聲調不準或語義混亂;若韻律自由度過高,又可能讓情緒語調干擾詞彙聲調。

到此,我們可以理解,聲調語言並不只是多語生成中的一個特殊案例,而更像是一種特別嚴格的測試條件。它把原本在其他語言中可以稍微分開處理的三件事:內容、身份、韻律,重新綁得更緊,使模型必須具備更強的解糾纏能力與更精細的控制能力。所以,聲調語言的困難不只是「多處理一個標記」,而是它迫使整個多語語音生成系統更清楚地回答:哪些 F0 變化屬於詞彙內容,哪些屬於說話者身份,哪些又屬於可調節的語氣與表達。也正因如此,它至今仍然是多語與跨語言語音生成研究中的重要難點之一。

本章小結

本章以模組化的視角重新審視語音生成系統,指出在表面上各不相同的系統背後,其實存在幾個反覆出現、共同決定品質與能力邊界的關鍵模組:文字前處理與音素表徵、說話者嵌入、韻律建模、聲碼器,以及多語與跨語生成的處理策略。

文字前端決定的是語言輸入是否被正確理解;說話者嵌入決定的是系統能否穩定地表達「像誰說」;韻律模組決定的是語音是否像人那樣自然、有情境、有節奏;聲碼器決定的是這一切最終是否能以高品質波形落地;而多語與跨語設計,則進一步考驗這些模組能否在不同語言與不同資源條件下協同工作。

更重要的是,本章也顯示:這些模組不是彼此平行、互不相干的零件,而是相互制約的系統結構。一個不穩定的 G2P 會放大後續韻律預測的困難;一個不夠魯棒的說話者嵌入會讓語音複製看似成功、實則身份模糊;一個高品質聲碼器若接到格式不相容的頻譜輸入,也可能輸出失真波形。從這個角度說,語音生成的品質不是單一模組的勝利,而是整體協同設計的結果。

最後還要補上一個實務觀察:使用者在評價一個語音系統時,往往不會說出「這是 G2P 錯誤」或「這是說話者條件整合失敗」,而只會籠統地覺得它聽起來怪、不像人、或不像目標說話者。本章的模組分析價值,就在於把這種表面的主觀感受,拆解回可定位、可比較、也可優化的技術環節。

帶著這個模組化框架進入下一章,我們將更容易理解語音複製為何會成為當代語音生成中最引人注目、也最具爭議的任務:它幾乎同時逼問了說話者嵌入、韻律建模、聲碼器泛化,以及跨語條件下身份保持這幾個問題的極限。

參考文獻

Casanova, E., Weber, J., Shulby, C. D., Junior, A. C., Gölge, E., & Ponti, M. A. (2022). YourTTS: Towards zero-shot multi-speaker TTS and zero-shot voice conversion for everyone. In Proceedings of the International Conference on Machine Learning (ICML) (pp. 2709–2720).

Desplanques, B., Thienpondt, J., & Demuynck, K. (2020). ECAPA-TDNN: Emphasized channel attention, propagation and aggregation in TDNN based speaker verification. In Proceedings of Interspeech 2020 (pp. 3830–3834).

Guo, H., Berry, J., Lu, H., Badlani, R., & Watanabe, S. (2023). PromptTTS: Controllable text-to-speech with text descriptions. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 1–5).

Pratap, V., Tjandra, A., Shi, B., Tomasello, P., Babu, A., Kundu, S., Elkahky, A., Ni, Z., Vyas, A., Fazel-Zarandi, M., Joulin, A., Bengio, Y., & Hsu, W.-N. (2023). Scaling speech technology to 1,000+ languages. arXiv preprint arXiv:2305.13516.

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).

Snyder, D., Garcia-Romero, D., Sell, G., Povey, D., & Khudanpur, S. (2018). X-vectors: Robust DNN embeddings for speaker recognition. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 5329–5333).

Sun, G., Zhang, Y., Weiss, R. J., Cao, Y., Zen, H., Rosenberg, A., Ramabhadran, B., & Wu, Y. (2020). Generating diverse and natural text-to-speech samples using a quantized fine-grained VAE and autoregressive prosody prior. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 6699–6703).

Variani, E., Lei, X., McDermott, E., Moreno, I. L., & Gonzalez-Dominguez, J. (2014). Deep neural networks for small footprint text-dependent speaker verification. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 4052–4056).

Wan, L., Wang, Q., Papir, A., & Moreno, I. L. (2018). Generalized end-to-end loss for speaker verification. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 4879–4883).

Wang, Y., Skerry-Ryan, R. J., Stanton, D., Wu, Y., Weiss, R. J., Jaitly, N., Le, Q. V., & Saurous, R. A. (2017). Tacotron: Towards end-to-end speech synthesis. In Proceedings of Interspeech 2017 (pp. 4006–4010).

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. (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).

Yang, D., Tian, J., Tan, X., Huang, R., Liu, S., Chang, X., Shi, J., Zhao, S., Bian, J., Wu, X., Liu, T.-Y., & Li, W. (2023). InstructTTS: Modelling expressive TTS in discrete latent space with natural language style prompt. arXiv preprint arXiv:2301.13662.

Yolchuyeva, S., Németh, G., & Gyires-Tóth, B. (2019). Grapheme-to-phoneme conversion with convolutional neural networks. Applied Sciences, 9(6), 1143.

Zhang, Y., Weiss, R. J., Zen, H., Wu, Y., Chen, Z., Skerry-Ryan, R. J., Jia, Y., Rosenberg, A., & Ramabhadran, B. (2019). Learning to speak fluently in a foreign language: Multilingual speech synthesis and cross-language voice cloning. In Proceedings of Interspeech 2019 (pp. 2080–2084).

留言
avatar-img
Dino Lee的AI 智識館
4會員
31內容數
這裡是一個探索 人工智慧 × 人文思想 × 跨域研究 的知識空間。 從《深度認識人工智慧》出發,分享 AI 的基礎概念、最新發展,以及它與心理學、哲學、社會的深度對話。
2026/05/05
從工程的角度看,聲音生成是一組彼此相關、但目標並不相同的任務家族。文字轉語音的重點,是把語言內容轉成可懂且自然的說話聲;語音轉語音的重點是在保留某些屬性的同時改變另一些屬性;文字轉音訊與文字轉音樂的重點,在文字描述與聲音結果之間的語義對應。音訊修復是在已有音訊的基礎上,恢復、補全、分離或改善音質。
Thumbnail
2026/05/05
從工程的角度看,聲音生成是一組彼此相關、但目標並不相同的任務家族。文字轉語音的重點,是把語言內容轉成可懂且自然的說話聲;語音轉語音的重點是在保留某些屬性的同時改變另一些屬性;文字轉音訊與文字轉音樂的重點,在文字描述與聲音結果之間的語義對應。音訊修復是在已有音訊的基礎上,恢復、補全、分離或改善音質。
Thumbnail
2026/05/04
自回歸模型擅長順序展開,VAE 擅長建立可操控的潛在空間,GAN 擅長逼近感知真實度,flow 擅長在採樣與密度估計之間取得精確平衡,擴散模型擅長把複雜生成問題拆成穩定的小步驟,而 token 模型則擅長把聲音重新帶入大型序列模型的方法論之中。這些框架像是可以互補、可以組合、也可以彼此嵌套的工具箱。
Thumbnail
2026/05/04
自回歸模型擅長順序展開,VAE 擅長建立可操控的潛在空間,GAN 擅長逼近感知真實度,flow 擅長在採樣與密度估計之間取得精確平衡,擴散模型擅長把複雜生成問題拆成穩定的小步驟,而 token 模型則擅長把聲音重新帶入大型序列模型的方法論之中。這些框架像是可以互補、可以組合、也可以彼此嵌套的工具箱。
Thumbnail
2026/05/02
深度學習時代語音合成的每一步架構演進,本質上都在重新回答同一個問題:哪些決策應該留給人類先驗,哪些可以交由模型從資料中發現。 從對齊到韻律,從頻譜預測到波形生成,從模組管線到整合式框架,這條線索貫穿了 從Tacotron、FastSpeech、到Matcha-TTS 的所有差異。
Thumbnail
2026/05/02
深度學習時代語音合成的每一步架構演進,本質上都在重新回答同一個問題:哪些決策應該留給人類先驗,哪些可以交由模型從資料中發現。 從對齊到韻律,從頻譜預測到波形生成,從模組管線到整合式框架,這條線索貫穿了 從Tacotron、FastSpeech、到Matcha-TTS 的所有差異。
Thumbnail
看更多