AI 工程從零開始|Phase 6 Part 2:語音合成與音訊模型 — 讓機器開口說話

大多數工程師把 TTS 當成「呼叫 API、播放音訊」的黑箱。 真正的 AI 工程師理解聲學模型與聲碼器的分工、延遲來源、以及為何同一句話用不同架構品質差距達 0.8 MOS。 他們能設計零樣本語音克隆系統、控制情感韻律、並在 200ms 內完成整條推論鏈。 本文帶你從模型架構到線上服務,逐層拆解語音合成工程的每一個決策點。


面試情境

你的公司要推出有聲書朗讀功能,支援繁體中文與英文雙語、使用者可上傳 30 秒聲音樣本克隆自己的聲音、整體端對端延遲需低於 300ms。請說明你會如何設計這套 TTS 系統,包含模型選型、聲碼器、語音克隆架構、以及上線後如何持續改善音質。


一、核心問題:語音合成的工程挑戰

語音合成表面上是「文字轉音訊」,但工程挑戰遠比想像中複雜:

三大矛盾張力

維度極端 A極端 B工程取捨
自然度 vs 延遲Tortoise-TTS(MOS 4.5)推論 30sFastSpeech2 < 50ms互動場景選速度,有聲書選品質
個人化 vs 資料量傳統 clone 需 1 小時錄音XTTS v2 只需 6 秒樣本零樣本 clone 改變商業模式
表達力 vs 穩定度情感模型偶爾產生雜音平坦語調安全但無趣情感強度需可調參數

延遲分解(300ms 預算)

文字前處理(正規化/分詞):  ~10ms
G2P(字素轉音素):          ~15ms
聲學模型(Mel 頻譜生成):   ~80ms   ← 最大瓶頸
聲碼器(Mel → 波形):       ~60ms
音訊編碼/傳輸:              ~30ms
緩衝播放首包:               ~20ms
─────────────────────────────────
總計:                       ~215ms  ✓ 低於 300ms

核心工程問題清單

  1. 聲學模型如何從 Tacotron 自回歸演進到 FastSpeech 非自回歸?
  2. 聲碼器 WaveNet vs HiFi-GAN:品質差多少、速度差多少?
  3. 零樣本克隆的 speaker embedding 如何注入?
  4. 情感控制向量(VAE latent)如何不破壞音素對齊?
  5. 串流輸出(chunked TTS)如何降低首包延遲至 < 100ms?

二、三個演進階段

╔══ Phase 1:POC(< 1K 日活,有聲書 Demo)══╗

目標:驗證音質可接受、克隆功能跑通、不需擴展性

┌──────────────────────────────────────────────────────┐
│  Phase 1 POC 架構                                    │
│                                                      │
│  用戶輸入文字                                         │
│      │                                               │
│      ▼                                               │
│  ┌─────────────┐   文字正規化 + G2P                  │
│  │  前處理層    │   (OpenCC 繁簡 + jieba 分詞)        │
│  └──────┬──────┘                                     │
│         │ 音素序列                                    │
│         ▼                                            │
│  ┌─────────────┐   VITS 端對端模型                   │
│  │ TTS 模型    │   (Hugging Face 預訓練)              │
│  └──────┬──────┘   本地 GPU A10G                     │
│         │ 音訊檔案                                    │
│         ▼                                            │
│  ┌─────────────┐   直接回傳 wav/mp3                  │
│  │  儲存/回傳  │   無串流                             │
│  └─────────────┘                                     │
│                                                      │
│  成本:$500/月(單機 GPU 實例)                       │
│  延遲:1–3 秒(可接受,Demo 用)                      │
│  MOS:~4.0(VITS 預訓練)                            │
└──────────────────────────────────────────────────────┘

Phase 1 可接受的捷徑

  • 直接用 Hugging Face 上的 VITS 或 Coqui TTS 預訓練模型
  • 不做串流,整句生成後回傳完整音訊
  • 語音克隆只支援固定幾個說話人
  • 無情感控制,單一語調

Phase 1 遺留問題:無法擴展、無串流、克隆品質不穩


╔══ Phase 2:MVP(10K–100K 日活,正式上線)══╗

目標:低延遲串流輸出、穩定的零樣本克隆、可水平擴展

┌──────────────────────────────────────────────────────────────────┐
│  Phase 2 MVP 架構                                                │
│                                                                  │
│  ┌──────────┐    REST/gRPC     ┌──────────────────────────────┐  │
│  │  客戶端  │ ───────────────▶ │  TTS API Gateway             │  │
│  └──────────┘                  │  (FastAPI + 串流 SSE)        │  │
│                                └──────────────┬───────────────┘  │
│                                               │                  │
│                          ┌────────────────────┼──────────────┐   │
│                          │                    │              │   │
│                          ▼                    ▼              ▼   │
│                   ┌────────────┐   ┌────────────────┐  ┌───────┐ │
│                   │ 前處理服務  │   │  Speaker Embed  │  │ 快取  │ │
│                   │ G2P+正規化  │   │  提取服務       │  │ Redis │ │
│                   └─────┬──────┘   └───────┬────────┘  └───────┘ │
│                         │ 音素              │ 256-dim vector      │
│                         ▼                  ▼                     │
│                   ┌─────────────────────────────────────┐        │
│                   │  FastSpeech2 聲學模型                │        │
│                   │  (ONNX Runtime, A10G GPU)            │        │
│                   │  推論 < 50ms / 句                   │        │
│                   └────────────────────┬────────────────┘        │
│                                        │ Mel 頻譜                 │
│                                        ▼                         │
│                   ┌─────────────────────────────────────┐        │
│                   │  HiFi-GAN 聲碼器                    │        │
│                   │  (TorchScript, 即時串流輸出)         │        │
│                   │  < 60ms / 句                        │        │
│                   └────────────────────┬────────────────┘        │
│                                        │ PCM chunks               │
│                                        ▼                         │
│                                 串流回傳客戶端                    │
│                                                                  │
│  成本:~$3,000/月(4× A10G,Auto Scaling)                       │
│  P95 延遲:< 250ms 首包                                          │
│  MOS:4.2(HiFi-GAN fine-tuned)                                 │
└──────────────────────────────────────────────────────────────────┘

Phase 2 新增元件

  • FastSpeech2 取代自回歸模型,推論速度提升 10×
  • HiFi-GAN 聲碼器,MOS 提升 0.4 分
  • Speaker embedding 服務(d-vector 或 x-vector)
  • Redis 快取常用句子的 Mel 頻譜(命中率約 30%)
  • 串流輸出:chunk 大小 256 frames ≈ 50ms 音訊

Phase 2 遺留問題:情感控制尚未完善、MOS 在情感句差距明顯


╔══ Phase 3:Scale(200K+ 日活,企業級)══╗

目標:情感控制、多語言、音樂生成、成本最佳化

┌─────────────────────────────────────────────────────────────────────┐
│  Phase 3 Scale 架構                                                 │
│                                                                     │
│  ┌──────────┐                                                       │
│  │  客戶端  │                                                       │
│  └────┬─────┘                                                       │
│       │                                                             │
│       ▼                                                             │
│  ┌──────────────────────────────────────────────────────────┐      │
│  │  智慧路由層(按任務類型分流)                             │      │
│  │  互動語音→高速路線   有聲書→高品質路線   音樂→專用路線   │      │
│  └──────────────┬──────────────────────────────────────────┘       │
│                 │                                                   │
│    ┌────────────┼───────────────────────────┐                      │
│    │            │                           │                      │
│    ▼            ▼                           ▼                      │
│ ┌──────┐  ┌──────────────┐  ┌──────────────────────────────┐       │
│ │高速線│  │  高品質線    │  │  音樂生成線                  │       │
│ │F.S.2 │  │  VITS2+Vocos │  │  MusicGen / AudioCraft       │       │
│ │<50ms │  │  MOS 4.4     │  │  文字→音樂 10–30s            │       │
│ └──┬───┘  └──────┬───────┘  └──────────────┬───────────────┘       │
│    │             │                          │                      │
│    └─────────────┴──────────────────────────┘                      │
│                  │                                                  │
│                  ▼                                                  │
│  ┌──────────────────────────────────────────────────────────┐      │
│  │  後處理層                                                │      │
│  │  音量正規化 / 去雜訊 / 格式轉碼 (ffmpeg)                │      │
│  └──────────────────────────────────────────────────────────┘      │
│                                                                     │
│  成本:~$12,000/月(混合 GPU 機型 + Spot)                          │
│  P99 延遲:< 400ms(高品質線)/ < 100ms(高速線首包)               │
│  MOS:4.4(VITS2 + Vocos fine-tuned)                              │
└─────────────────────────────────────────────────────────────────────┘

三、聲學模型演進:Tacotron2 → FastSpeech2 → VITS

3.1 自回歸瓶頸:Tacotron2

Tacotron2 以 Seq2Seq + Attention 生成 Mel 頻譜,每個時間步依賴前一步輸出,造成:

  • 推論時間 O(T),T = 輸出幀數(典型 5–8 秒文字需 800ms 推論)
  • Attention 偶爾錯位(missing/repeating phonemes),品質不穩定
  • 無法並行化

3.2 非自回歸突破:FastSpeech2

┌────────────────────────────────────────────────────────────┐
│  FastSpeech2 架構                                          │
│                                                            │
│  文字/音素序列                                             │
│       │                                                    │
│       ▼                                                    │
│  ┌──────────────┐                                          │
│  │  FFT Block   │  × 4  (Feed-Forward Transformer)        │
│  │  自注意力     │                                          │
│  └──────┬───────┘                                          │
│         │                                                  │
│         ▼                                                  │
│  ┌──────────────┐   預測每個音素的持續時間                 │
│  │ Duration     │   → 決定 Mel 幀對齊                      │
│  │ Predictor    │   (Phoneme → Duration lookup)           │
│  └──────┬───────┘                                          │
│         │ 長度調節(可控語速)                              │
│         ▼                                                  │
│  ┌──────────────┐   預測 F0(基頻)和 Energy               │
│  │ Pitch/Energy │   ← 情感控制入口                         │
│  │ Predictor    │                                          │
│  └──────┬───────┘                                          │
│         │                                                  │
│         ▼                                                  │
│  ┌──────────────┐                                          │
│  │  FFT Block   │  × 4                                    │
│  └──────┬───────┘                                          │
│         │                                                  │
│         ▼                                                  │
│      Mel 頻譜(可並行生成所有幀)                           │
│                                                            │
│  推論時間:< 50ms(A10G GPU,10 秒文字)                   │
│  vs Tacotron2:~800ms → 16× 加速                          │
└────────────────────────────────────────────────────────────┘

FastSpeech2 關鍵數字

  • Duration predictor 誤差 < 5%,消除 Attention 失對問題
  • 語速控制:直接縮放 duration,0.5× – 2.0× 無失真
  • MOS:約 4.0(與 Tacotron2 相當,但穩定性更高)

3.3 端對端整合:VITS

VITS(Variational Inference with adversarial learning for end-to-end TTS)消除聲學模型與聲碼器的分離訓練問題:

  • VAE:隱空間 z 對齊文字與音訊,同時捕捉韻律變化
  • Flow:可逆正規化流,提升 Mel 頻譜品質
  • GAN:對抗訓練,輸出接近真實波形
  • 推論:文字 → 一步到位輸出波形,MOS 4.36(VCTK 基準)
  • 代價:推論時間約 120–200ms,比 FastSpeech2 慢 3–4×
模型推論延遲MOS情感控制克隆難度
Tacotron2800ms3.9
FastSpeech2< 50ms4.0中(F0/Energy)
VITS150ms4.36強(VAE latent)
VITS2120ms4.42

四、聲碼器:Griffin-Lim → WaveNet → HiFi-GAN → Vocos

聲碼器負責「Mel 頻譜 → 波形」,品質差距顯著:

聲碼器推論速度MOS原理適用場景
Griffin-Lim即時(CPU)3.2迭代相位估計原型/Debug
WaveNet0.02× 即時4.4自回歸神經網路已淘汰
WaveGlow2× 即時4.2正規化流次選
HiFi-GAN V1167× 即時4.2GAN + 多週期判別器生產首選
HiFi-GAN V2250× 即時4.1輕量版,精度換速度邊緣設備
Vocos200× 即時4.3ConvNeXt + ISTFT新世代首選

HiFi-GAN 為何是 Phase 2 生產首選

  • 167× 即時意味著生成 1 秒音訊只需 6ms
  • 多週期判別器(MPD)+ 多尺度判別器(MSD)消除高頻雜音
  • 開源、生態完整、fine-tuning 資料需求低(1 小時錄音即可)

Vocos 的優勢

  • 以 ISTFT(反短時傅立葉)取代直接波形生成,相位估計更穩定
  • 在高音質場景 MOS 高於 HiFi-GAN 0.1 分
  • 模型參數僅 13.5M,適合邊緣部署

五、零樣本語音克隆:XTTS/Tortoise 架構

5.1 Speaker Embedding 注入機制

傳統 TTS 克隆需要 > 30 分鐘錄音訓練新說話人模型。零樣本克隆的核心突破是將說話人特徵壓縮為向量,在推論時注入:

┌─────────────────────────────────────────────────────────┐
│  零樣本語音克隆流程                                      │
│                                                         │
│  ┌─────────────────┐   30秒參考音訊                     │
│  │  參考音訊輸入    │                                    │
│  └────────┬────────┘                                    │
│           │                                             │
│           ▼                                             │
│  ┌─────────────────┐   d-vector / x-vector              │
│  │  Speaker Encoder│   (預訓練 ECAPA-TDNN)              │
│  │  (凍結權重)      │   輸出 256-dim speaker embedding   │
│  └────────┬────────┘                                    │
│           │ speaker_emb                                 │
│           │                        文字輸入             │
│           │                           │                 │
│           ▼                           ▼                 │
│  ┌────────────────────────────────────────────────┐     │
│  │  TTS 聲學模型(VITS/FastSpeech2)              │     │
│  │                                                │     │
│  │  cross-attention(text_enc, speaker_emb)        │     │
│  │  或 AdaIN(speaker_emb) 注入每個 FFT Block     │     │
│  └────────────────────────┬───────────────────────┘     │
│                           │ Mel 頻譜                     │
│                           ▼                             │
│                    HiFi-GAN / Vocos                     │
│                           │ 克隆音訊                     │
│                           ▼                             │
│               保留目標說話人音色的輸出                    │
│                                                         │
│  XTTS v2:6 秒參考音訊,MOS 3.8(克隆評估)             │
│  Tortoise:6 秒樣本,MOS 4.2,但推論 30 秒              │
└─────────────────────────────────────────────────────────┘

5.2 XTTS v2 vs Tortoise-TTS

指標XTTS v2Tortoise-TTS
最少參考音訊6 秒6 秒
推論時間~2 秒(1 段落)30–60 秒
克隆 MOS3.84.2
多語言17 種語言 ✓英文為主
適用場景互動/即時離線有聲書

工程建議:有聲書場景用 Tortoise 離線批次生成,互動語音助理用 XTTS v2 即時回應。

5.3 Speaker Embedding 快取策略

用戶上傳 30 秒樣本後,提取 speaker embedding 並存入 Redis(TTL 24h),後續請求無需重新提取。提取一次約 150ms,快取命中後節省此延遲。


六、情感與韻律控制

6.1 情感控制的三個層次

層次 1:F0/Energy 顯式控制(FastSpeech2)

  • 直接調整 pitch(+20% = 更興奮)、energy(+15% = 更有力)
  • 可解釋,但情感不自然,像在「調參數」

層次 2:GST(Global Style Token)

  • 從參考音訊提取全局風格向量,注入聲學模型
  • 10–20 個 token,每個對應一種風格(朗讀、新聞播報、對話等)
  • 無需情感標籤訓練

層次 3:VAE 隱空間控制(VITS/NaturalSpeech2)

  • 情感作為 VAE 隱變數的一部分,採樣時可插值
  • 「中性 → 喜悅」= 在隱空間線性插值,自然漸變
  • MOS 在情感句比 GST 高 0.15 分

6.2 韻律控制實務

1# FastSpeech2 語速/音調控制範例(偽碼)
2output = model.infer(
3    text="今天天氣真好",
4    speaker_id=0,
5    speed=0.9,          # 0.5–2.0,不影響音質
6    pitch_shift=+2,     # 半音單位,-12 到 +12
7    energy_scale=1.1,   # 能量倍率
8)

情感強度校正:用戶若感知過度誇張,提供 0–1 的情感強度滑桿,線性插值 neutral embedding 與 target emotion embedding。


七、音樂生成:MusicGen/AudioCraft 架構

7.1 AudioCraft 架構概覽

Meta 的 AudioCraft 包含三個子模型:

模型用途輸入輸出長度
MusicGen文字→音樂文字描述 + 可選旋律最長 30 秒
AudioGen文字→音效文字描述最長 5 秒
EnCodec神經音訊編解碼器波形壓縮 token

MusicGen 核心設計

  • 以 EnCodec 將音訊壓縮為 4 個量化 codebook 的 token 序列
  • Transformer decoder 自回歸生成這些 token(類似語言模型)
  • 文字條件透過 T5 encoder 提取特徵,以 cross-attention 注入
  • 生成 10 秒音樂約需 15 秒(A100),30 秒音樂約需 45 秒

7.2 音樂生成工程挑戰

一致性問題:自回歸生成可能在 15 秒後轉換風格 → 解法:使用 continuation 模式,以已生成的最後 2 秒作為 prompt

版權問題:生成音樂與訓練資料的相似度檢測 → 部署前跑 fingerprinting(Shazam 演算法),相似度 > 0.85 拒絕輸出

延遲不可接受:45 秒生成不適合互動場景 → 有聲書背景音樂預先批次生成,互動場景只用 5 秒音效(AudioGen < 3 秒)


八、為什麼選 X 不選 Y

決策選擇選 X 的理由不選 Y 的理由Flip Condition
聲學模型FastSpeech2< 50ms 推論,穩定無 Attention 失對Tacotron2:800ms,自回歸無法並行若品質要求 MOS > 4.3 且可接受 200ms,改用 VITS
聲碼器HiFi-GAN V1MOS 4.2,167× 即時,開源生態完整WaveNet:0.02× 即時,生產不可用若 MOS 需再高 0.1 分,改用 Vocos(需評估 fine-tuning 成本)
克隆架構XTTS v26 秒參考音訊,多語言,~2 秒推論Tortoise:推論 30s,不適合即時離線批次有聲書生成用 Tortoise(MOS 更高)
情感控制VAE latent(VITS)自然情感漸變,無需顯式標籤GST:情感不夠自然,需手動挑 token若訓練資料無情感標注,GST 是唯一選擇
Speaker EncoderECAPA-TDNN說話人辨識 EER 0.8%,提取快(50ms)i-vector:準確度低,不支援端對端更新若資源極有限(邊緣),改用輕量 TDNN-F
音訊格式Opus 48kHz壓縮率高,延遲低(20ms frame),WebRTC 原生支援MP3:編碼延遲 > 100ms,不適合串流若客戶端只支援 MP3(舊系統整合),轉碼一次後快取

九、系統效應:Before vs After

9.1 延遲對比

指標Phase 1(POC)Phase 2(MVP)Phase 3(Scale)
首包延遲(P50)2,000ms180ms80ms
首包延遲(P95)5,000ms300ms150ms
完整句子延遲(5秒文字)3,500ms350ms200ms
串流支援✓(chunk 50ms)

9.2 音質對比

指標Phase 1Phase 2Phase 3
MOS(自然度,1–5)3.84.24.4
MOS(克隆相似度)N/A3.53.8
情感表達準確率60%82%
多語言支援僅中文中/英17 語言

9.3 成本對比

指標Phase 1Phase 2Phase 3
月成本$500$3,000$12,000
成本/千字$0.05$0.008$0.004
GPU 使用率15%(浪費)65%82%(Spot)
快取命中率0%30%45%

關鍵洞察:Phase 2 → Phase 3 月成本增加 4×,但日活增加 20×(10K → 200K),單位成本下降 50%。快取命中率每提升 10%,GPU 成本降低約 8%。


十、面試答題要點

「這套有聲書 TTS 系統的設計分三個層次。首先,聲學模型選 FastSpeech2 而非 Tacotron2,非自回歸架構讓推論從 800ms 降至 50ms,Duration Predictor 解決 Attention 失對問題;若品質要求更高(MOS > 4.3),改用 VITS 端對端模型接受 150ms 的延遲換取自然度。其次,聲碼器選 HiFi-GAN V1,167× 即時速度加上 MOS 4.2,是品質與延遲最佳平衡點,Vocos 是未來升級選項。第三,零樣本克隆架構以 ECAPA-TDNN 從 6 秒參考音訊提取 256-dim speaker embedding,透過 cross-attention 注入聲學模型,克隆 MOS 達 3.8;互動場景用 XTTS v2(2 秒推論),離線有聲書用 Tortoise(MOS 4.2)。整體端對端 P95 延遲 300ms,拆解為:G2P 15ms + FastSpeech2 50ms + HiFi-GAN 60ms + 串流首包 30ms,符合需求。持續改善音質的方式是以用戶播放完成率(而非 MOS)作為主指標,自動挑選低完成率段落進行人工標注後 fine-tuning。」


十一、系列導航

← 上一篇:Phase 6 Part 1:語音辨識(ASR)— 讓機器聽懂人話

→ 下一篇:Phase 7 Part 1:推薦系統工程基礎(即將推出)


系列索引

本文屬於「AI 工程從零開始」系列,涵蓋從基礎 ML 到生產級 AI 系統的完整工程路徑:

  • Phase 1:ML 基礎與特徵工程
  • Phase 2:深度學習訓練工程
  • Phase 3:LLM 應用與 RAG 系統
  • Phase 4:MLOps 與模型部署
  • Phase 5:電腦視覺工程
  • Phase 6:語音 AI 工程(本系列)
    • Part 1:語音辨識(ASR)
    • Part 2:語音合成與音訊模型(本文)
  • Phase 7:推薦系統工程(即將推出)
Yen

Yen

Yen