---
# System prepended metadata

title: 【生成式AI時代下的機器學習(2025)】 12  語音語言模型發展歷程
tags: [生成式AI]

---

20251113筆記 內容可能有錯誤，請參考原始影片

[李宏毅【生成式AI時代下的機器學習(2025)】](https://www.youtube.com/playlist?list=PLJV_el3uVTsNZEFAdQsDeOdzAaHTca2Gi)

[【生成式AI時代下的機器學習(2025)】第十二講：語言模型如何學會說話 — 概述語音語言模型發展歷程](https://www.youtube.com/watch?v=gkAyqoQkOSk&list=PLJV_el3uVTsNZEFAdQsDeOdzAaHTca2Gi&index=13)



![image](https://hackmd.io/_uploads/B18aCDpJbx.png)

### 【生成式AI時代下的機器學習(2025)】第十二講：語言模型如何學會說話 — 概述語音語言模型發展歷程 大綱

**第一部分：語音語言模型 (SLM) 概述與挑戰**
1.  SLM 定義與目標：聽懂及產生聲音。
2.  語音相較於文字的複雜性與資訊豐富性 (情緒、環境音等)。
3.  SLM 應用實例 (ChatGPT Voice Mode, Moshi, Sesame, Gemini Live)。

**第二部分：核心機制：語音分詞化 (Tokenization)**
1.  語音模型的基礎原理：將語音訊號轉換成離散的語音 token 序列。
2.  極端分詞化方案的弊端：純語音辨識/合成 (丟失非文字資訊，如語氣)；純取樣點作為 token (序列過長，不切實際)。
3.  語音分詞化的兩大主流方向：自監督模型 (Semantic/Phonetic Tokens) 與神經語音編解碼器 (Acoustic Tokens)。

**第三部分：語音生成策略與訓練突破**
1.  多層級 Token 的結合與生成策略 (從粗到細)。
2.  長序列挑戰與即時性問題 (Streaming)。
3.  混合解碼 (Hybrid Decoding) 的引入：利用文字模型能力，同時生成語音和文字。
4.  新的分詞技術：**TAES** (Text-Aligned Embedded Speech Tokenization) 解決語音與文字長度不一致的困擾。
5.  SLM 訓練流程：預訓練 (Pretraining) -> 監督式微調 (SFT) -> 人類回饋強化學習 (RLHF/RLA)。

**第四部分：未來關鍵議題**
1.  全雙工溝通 (Full-Duplex)：同時聽與說的能力。
2.  語音語言模型的評估挑戰：需考慮內容以外的安全性與品質 (如尖酸刻薄的語氣)。

---


### 一、語音語言模型 (SLM) 概述與挑戰

1.  **SLM 的目標與挑戰：** 語音語言模型希望讓語言模型**能夠聽懂聲音，也能夠產生聲音**。
    *   **資訊豐富性：** 聲音相較於文字，具有更多的資訊和變化。
    *   **非內容資訊：** 除了文字內容外，聲音還包含講話者的身份、情緒、語氣，甚至可以推測講話者所在的環境因素和狀態。
    *   開發語音模型相比於純文字模型，面臨著不同的挑戰。如果模型只將聲音訊號轉換成文字，將會忽略許多語音中重要的非文字資訊，例如反諷的語氣。

2.  **SLM 的應用與先驅：**
    *   目前已出現多種語音語言模型的應用，例如 **ChatGPT 的 Voice Mode** (在中文裡被翻譯為「高級語音模式」) 和 **Gemini Live**。
    *   **Moshi** 應被視為**最早真正釋出**的語音語言模型。雖然 GPT-4o 在 Moshi 釋出之前曾有 Demo，但它並沒有真正釋出模型服務供大眾互動，而是利用語音辨識加上語音合成來模擬新的語音語言模型。Moshi 釋出的時間點約在去年（2023年）10月，而 GPT-4o 服務真正上線則是在去年底。
    *   在目前所有可用的語音語言模型中，**Sesame** 被個人認為是**互動起來最流暢、最令人經驗深刻**的模型。
    *   語音合成 (TTS) 技術現在已經非常成功，輸出的音質可以達到亂真的程度。例如，某實驗中，三句話中只有一句是真實錄音，另外兩句合成語音的品質足以讓人難以分辨。

### 二、核心機制：語音分詞化 (Tokenization)

1.  **基本原理：** 語音模型的基本原理與文字模型相似。
    *   **Tokenization：** 只要知道如何將一段語音訊號表示成**語音的 token**。
    *   **生成：** 模型吃語音 token 作為輸入，進行 token 接龍，產生更多語音 token。
    *   **Detokenization：** 由於人無法直接聽懂這些離散 token，需要一個 **detokenizer** 將語音 token 轉換回聲音訊號。
    *   透過這兩個步驟 (音訊轉 Token，Token 轉回音訊)，就可以訓練一個語音版的語言模型。

2.  **文字 Token 的自然性：** 對於文字來說，token 是一個相對自然的單位，例如一個英文字詞通常是一個 token。但較長的詞彙會被切成多個 token (如 `generative AI` 在 GPT-4o 中被切成 `Gener`、`ative` 和 `AI`)。

3.  **極端分詞化方法的挑戰：**

    *   **方法一：ASR + TTS (將語音視為文字 Token)**
        *   *Tokenization：* 使用語音辨識 (ASR) 將聲音訊號變成文字 token。
        *   *Detokenization：* 使用語音合成 (TTS) 將文字 token 轉回語音。
        *   *問題：* 這種方法會**忽略聲音訊號中文字以外的資訊**，例如語氣和情緒。例如，帶有反諷語氣的「你實在是真的好棒喔」在辨識成文字後，模型可能無法識別出反諷的意味。

    *   **方法二：原始取樣點 (Raw Sampling Points)**
        *   *Tokenization：* 直接將聲音訊號中的每一個取樣點當作一個 token。
        *   *優點：* 這樣可以保留語音中所有的訊號，不會損失任何資訊。
        *   *問題：* 數據量巨大，不切實際。高品質的聲音通常至少每秒需要 8,000 個取樣點 (電話品質為 8K)，若要模擬 1 分鐘的對話，模型需要處理 **50 萬個 token**。目前的自迴歸模型 (auto-regressive model) 難以處理這麼長的輸入和輸出序列。

4.  **解決方案：** 需要一個介於兩者之間的方法。這個方法必須：
    *   保留語音中重要的資訊。
    *   對原有的語音訊號進行**盡量壓縮**，避免輸入序列過長。
    *   如何打造一個有效的語音 tokenizer 是當前語音領域的熱門研究題目。

### 三、語音 Tokenization 的兩大主流方向

將語音訊號轉換成離散 Token 有兩大方向：

1.  **方向一：使用現成的自監督 (Self-Supervised) Encoder (Semantic/Phonetic Tokens)**
    *   **過程：** 這些模型 (如 Speech Self-Supervised Models) 將一段聲音作為輸入，輸出一個連續的向量序列 (通常 0.02 秒對應一個向量)。
    *   **離散化：** 接著透過 **Vector Quantization** (向量量化) 技術，對連續向量進行聚類 (clustering)，將相近的向量用同一個符號 (token ID) 來表示，從而形成離散的 token 序列。
    *   **壓縮與調整：** 為了縮短序列，有時會進行 **deduplicate** (移除重複的 token) 和 **BPE** (Byte-Pair Encoding，將常一起出現的 token 合併)。
    *   **性質：** 這些 token 被稱為 **Semantic Token** 或 **Phonetic Token**。但 Semantic 這個稱呼容易誤導，因為這些自監督模型抽取的資訊通常更接近**因素 (Phoneme)** 或 **KK音標** 這種發音的基本單位，與語意沒有直接關係。

2.  **方向二：神經語音編解碼器 (Neural Speech Codec, Acoustic Tokens)**
    *   **訓練機制：** 與前一種方法不同，Codec 方法將 tokenizer (compression) 和 detokenizer (decompression) **一起訓練**。
    *   **目標：** 訓練方式類似 Autoencoder，希望輸入的聲音訊號經過 tokenizer 變成 token，再通過 detokenizer 變回聲音訊號後，輸入與輸出越接近越好。
    *   **性質：** 這些 token 被稱為 **Acoustic Token**。Acoustic Token 不僅包含聲音特徵（如情緒、音色），**也保有內容資訊**。
    *   **多層表示：** 今天的神經編解碼器通常不會只抽取一個 token，而是抽取多個 token 來完整地表示一段聲音的不同面向。例如，可使用 **RVQ (Residual Vector Quantization)** 讓不同的 token 組代表不同的資訊層級。

### 四、語音生成策略與長序列挑戰

1.  **結合多層級 Token：** 成熟的語音語言模型不會只選擇一組 token，而是會**結合多種不同層級的 token**。
    *   **生成順序：** 一種可能的生成策略是從**粗 (Coarse)** 的 token 一直生成到**細 (Fine)** 的 token。例如，先生成代表內容資訊的粗 token，再生成代表細緻變化的細 token。Audiolm 和 VALL-E 都使用了類似技術。
    *   **模型分工：** 可以使用不同的語言模型 (LM) 產生不同層級的 token。例如，第一個 LM 產生粗 token（可能是 Auto-regressive Model，品質高），第二個 LM 根據粗 token 產生細 token（可能是 Non-auto-regressive Model，生成速度快）。

2.  **Streaming 和即時性挑戰：**
    *   **生成延遲：** 「從粗到細」的生成策略難以做到 **Streaming** (即時回覆)。因為模型需要將所有層級的 token 都生成完畢後，才能丟入 detokenizer 還原成語音。
    *   **改善即時性：** 另一種策略是**交錯生成**：先產生第一個粗 token、第一個中間 token、第一個細 token，然後再產生第二個粗 token...。這樣只需集齊一組時間點上的所有 token，即可進行 detokenization，從而實現即時生成。

3.  **長度限制問題：**
    *   語音語言模型生成的序列長度計算公式為：$Token\ per\ second \times Token\ 組數 \times 對話長度$。
    *   以 Moshi 為例，其 $Token\ per\ second$ 為 12.5 (這在 SLM 中品質算低，通常需要 50 個以上)，使用 8 組 token，限制 5 分鐘對話 (300 秒)，總共需要生成 **3 萬個 token**。
    *   雖然 3 萬 token 在今天的文字模型中不算長，但它已經比最早釋出時的 GPT-4 (8000 token 上限) 需要處理的長度還要長得多。
    *   **解決長度問題：** 一種思路是讓模型「一步產生多個 token」。例如，一次性產生所有組 token 的第一個位置，雖然序列長度縮短了 8 倍，但可能會導致模型難以同時產生彼此依賴的 token (如細 token 依賴粗 token 的資訊)。
    *   **Acoustic Delay：** 這是基於上述方法的改進，設計為延遲生成較細緻的 token，使得在生成細 token 時，模型已參考了前面生成的粗 token。

### 五、訓練流程與重大突破

1.  **文字與語音的學習效率差異：**
    *   儘管收集海量的語音資料（如一百萬小時），其中包含的**文字內容資訊卻非常有限**。一百萬小時的語音訊號大約只包含 60 億個 token，這大約只相當於 GPT-2 等級的文字數據量。
    *   **文字是語音的壓縮版本**。語音除了文字資訊外，還更複雜，因此在語音上訓練語言模型更困難。
    *   研究顯示，在相同運算資源下，文字模型在語義理解和故事接龍任務上的成長速度持續且快於語音模型。

2.  **結合大型語言模型 (LLM)：**
    *   由於單純使用語音數據難以訓練出好的 SLM，現在主流做法是**從文字模型開始**，將其作為 SLM 的初始化。
    *   這樣做的思路是：語音模型不需要從頭學習語義資訊，只需要在文字模型的基礎上，進一步學習語音相關的資訊和技能。Meta 的 **Voicebox** 是最早進行類似嘗試的模型之一。

3.  **混合解碼 (Hybrid Decoding) 的引入：**
    *   既然 SLM 以文字模型初始化，它天生就能夠產生文字。
    *   **策略：** 讓語音模型在生成語音的同時，也生成文字 (文字作為語音的輔助/獨白)，使生成表現更穩定。
    *   *先文字後語音：* 模組先產出完整的文字稿，再將文字念出來 (即語音合成)。**Spectrum** 模型採用此法。優點是模型可以訓練得不錯，缺點是**難以做到即時回覆**。
    *   *交錯生成：* 模型想一個字就念一個字，從使用者的角度看，回覆較為即時。這需要語音與文字之間有精確的 **Alignment** (對齊)，這在訓練時需要大量的標註數據，具有難度。
    *   *解決長度不一致：* 語音 token 序列通常比文字 token 序列長很多 (語音 token 通常對應 0.02 秒)。**Moshi** 採用模型自決定的方式，讓模型自行決定要插入多少 **epsilon** (代表「什麼都沒生成」的符號) 來匹配語音長度。

4.  **TAES (Text-Aligned Embedded Speech Tokenization) 方案：**
    *   由研究人員提出，旨在解決語音與文字長度不一的困擾。
    *   **核心思想：** 既然 SLM 會同時產生文字，那麼語音 token 就**不需要保留文字的資訊**，只需保留文字以外的資訊即可。
    *   **關鍵目標：** 設計一個特殊的 tokenizer，使其根據輸入音訊中**文字 token 的數量，固定產生相同數量的語音 token** (一個語音 token 對應一個文字 token)。
    *   **機制：** 利用語音辨識系統得知文字 token 數量，並使用 **Aggregator** (透過注意力機制 Attn Layer) 將語音 encoder 抽取的向量與文字 token 進行對齊，從而生成與文字長度相等的語音 token 序列。
    *   **功能驗證：** 實驗證明，TAES 抽出的語音 token 成功儲存了**發音特性**（如速度），當交換 token 時，語音的發音速度會隨之改變。
    *   **訓練 SLM：** 透過 TAES 抽出的文字/語音對齊 token，可以訓練一個 SLM，使其每一步同時產生一個文字 token 和一個語音 token。

5.  **完整的 SLM 訓練流程：**
    *   **預訓練 (Pretraining)：** 從網路上收集大量的語音資料 (例如 YouTube 上的影音平台)，用來訓練模型進行「語音接龍」。
    *   **監督式微調 (Supervised Fine-Tuning, SFT)：** 使用人類標註的對話資料或人與人之間的對話來微調模型，讓其學會與人互動。
        *   *避免遺忘 (Forgetting)：* 由於模型是以文字模型初始化的，直接用純對話資料微調容易破壞原有的文字能力。
        *   *解決方案：* 常常使用的方法是**利用文字 LLM 自行產生對話**，再透過 TTS 系統將文字念出來，產生大量的合成對話資料用於微調。
    *   **人類回饋強化學習 (RLHF) / AI 回饋強化學習 (RLA)：**
        *   RLHF：讓人類評估模型產生的不同回答，告訴模型哪些答案是好的、哪些是不好的。早期 RLHF 專注於提升語音品質 (Quality)，最近則傾向於強化模型對**文字以外的聲音** (如音樂、環境音) 的理解能力。
        *   RLA：使用另一個模型（例如文字 LLM）來提供回饋，判斷 SLM 產生的句子是否合理，進而強化 SLM 的能力。

### 六、未來關鍵議題

1.  **全雙工溝通 (Full-Duplex)：**
    *   傳統的文字互動是回合制的，模型透過明確的訊號（如按下 Enter）得知你講完了。
    *   語音對話則複雜得多，人們在對話時會**同時聽與說** (Concurrency)，可能會有大量的聲音重疊 (overlap)，例如發出「嗯」「太棒了」等回應。
    *   要打造能夠同時聽又同時說的 SLM，需要採用不同於傳統自迴歸模型 (auto-regressive model) 的新技術。

2.  **語音模型評估：**
    *   評估 SLM 的好壞是一個挑戰。
    *   除了評估輸出的文字內容是否安全和合理之外，SLM 還需要考慮**文字以外的資訊**。例如，如果模型講話的語氣很尖酸刻薄，即使文字內容是中性的，人類聽起來也會感到不舒服。因此，評估需要涵蓋這些非文字的面向。

