👥 語者分離 (Speech Separation)

解決「雞尾酒會問題」· TasNet・DPRNN・VoiceFilter・MossFormer

作者TonTon Huang Ph.D.投入時間:~150 天 (2020/08–2021/01)|更新:2026-07-28

語者分離 (Speaker Separation) 的目標是從混疊的聲音訊號中提取出每個說話人獨立的聲軌,解決經典的「雞尾酒會問題 (Cocktail Party Problem)」——在多人同時說話的場景下,精準拆開每個人的聲音。

💡 與語音增強的差異:增強是「去除非人聲雜訊」,分離是「把多個人聲拆開」。同一批 TasNet/DEMUCS 架構可以兩者通用,但訓練目標與數據完全不同。

~50K
完全重疊訓練集(筆)
~90K
部分重疊訓練集(筆)
~150 天
研發投入
+15dB
SIR 改善量(TasNet)
#語者分離 #TasNet #DPRNN #VoiceFilter #MossFormer #TOLD #SpeakerDiarization

TasNet 家族架構演進

TasNet
LSTM Separator
Conv-TasNet
TCN 取代 LSTM
DPRNN
Dual-Path RNN
DPT-Net
Transformer 版本
MossFormer
2023 SOTA
  • TasNet:Encoder(1D Conv)→ LSTM Separator(產生 mask)→ Decoder,奠定時域分離範式。
  • Conv-TasNet:把 LSTM 換成 WaveNet-based TCN,平行化程度更高,速度更快。
  • DPRNN(Dual-Path RNN):將長序列切成 chunks,用 intra-RNN 處理局部、inter-RNN 處理全域,解決 LSTM 長序列效率問題。
  • DPT-Net:把 DPRNN 中的 Feed-Forward 換成 RNN+activation+linear,引入 Transformer 的長距依賴能力,wsj0-2mix 上 SDR=20.6。
  • MossFormer(ICASSP 2023):Mamba + Transformer 混合架構,目前效能最強的開源單聲道分離模型之一。

六大關鍵模型

🏆 ClearVoice (阿里, 2024-12)
目前最推薦的一站式方案。整合語音增強與多人分離,能有效對付雞尾酒會效應,不需要手動串聯多個模型。
📘 VoiceFilter (Google, 2018)
官方頁面 | arXiv:1810.04826
以 d-vector(GE2E 訓練)作為說話人條件向量,混合訊號 → CNN → 與 d-vector 拼接 → LSTM → FC → mask → iSTFT,可精準提取「目標說話人」的聲軌。
📗 VoiceFilter-Lite (Google, 2020)
arXiv:2009.04323
VoiceFilter 的輕量化版本,以提升 ASR 效果為目標(而非感知音質);引入非對稱損失函數 (asymmetric loss) 補償過度抑制問題。
📙 DPRNN (2020)
Dual-Path RNN:將輸入切成 chunks,分別用 intra-chunk(局部)和 inter-chunk(全域)兩個 RNN 處理,高效建模任意長序列,是後續 DPT-Net / MossFormer 的基礎。
📕 TOLD (阿里 DAMO, ICASSP 2023)
Speaker Diarization 框架,能直接對重疊語音建模,解決傳統日誌系統無法處理多人同時說話的問題。FunASR 生態系一部分。
🆕 Speaker-Reasoner (2026-04)
首創「全域摘要 → 局部切片解碼 → 自主決策循環」架構,搭配說話人感知上下文快取。在 AISHELL-4、AliMeeting 等複雜多人會議基準上 DER 和轉寫精度強勢超越 Gemini-2.5-Pro。

完全重疊 vs 部分重疊:數據構建的藝術

📊 第一版:完全重疊
  • Train:~50,000 筆 / 32 小時
  • Val:~10,000 筆 / 10 小時
  • Test:~9,000 筆 / 6 小時
  • ⚠️ 真實場景大多是部分重疊
📊 第二版:部分重疊(推薦)
  • Train:~90,000 筆 / 112 小時
  • Val:~20,000 筆 / 26.3 小時
  • Test:~20,000 筆 / 29.4 小時
  • ✅ 更貼近實際部署場景
⚠️ 重疊程度的影響:「兩兩完全重疊」與「部分重疊」對模型效果有不小的影響!第一批完全重疊數據訓練的模型在真實錄音(說話人有停頓、輪流說話)上效果大打折扣,必須額外構建部分重疊版本。

非重疊分割 vs Mask-based 分離

🔇 非重疊語音日誌 (Diarization)

優點

  • ✅ 清晰的說話人輪次時間戳
  • ✅ 不需預設說話人數量

缺點

  • ❌ 無法處理重疊語音
  • ❌ K-means 聚類效果差
  • ❌ 說話人無停頓時無法切割
🎭 Mask-based 分離(推薦)

優點

  • ✅ 可處理重疊語音
  • ✅ 同一模型也能用於去噪
  • ✅ TasNet / VoiceFilter 均適用

缺點

  • ❌ 多數模型假設僅 2 人
  • ❌ 分離後仍有殘留串擾

150 天踩坑筆記

✅ 數據構建最省事:直接把乾淨的 AISHELL 語料打散,隨機挑選兩人的音訊做 Mix。若長度不同,選短者為基準長度(截斷長者),避免後補靜音造成模型偷懶。
⚠️ Loss 崩潰陷阱:網路架構參數調整時最常踩到「loss 突然壞掉」。根本原因通常是 PIT (Permutation Invariant Training) 的標籤分配不穩定,務必引入合適的標籤排列策略(如 SSL 預訓練穩定法)。
⚠️ WaveSplit (Google Brain):在多噪音 + 多說話人場景效果出色,但沒有開放源碼。發現後期待良久,始終無法直接復現,只能參考論文思路。
✅ CPU 落地是關鍵:如何在 CPU 上跑得又快又準,才是這個專案真正能落地的挑戰。深入研究 Data Parallel vs. Distributed Data Parallel (DDP) 的差異,並針對 CPU 推理路徑做專門優化。
✅ 李宏毅老師的 SSL 預訓練:台大電機李宏毅老師的 SSL-pretraining-separation 論文,透過自監督預訓練顯著降低了 PIT 的標籤排列不穩定性,是解決這個問題的關鍵。

實戰選型

✅ 最快開始:直接評估 ClearVoice,增強與分離合一,支援多人場景,有 HuggingFace DEMO 可快速驗證效果。
✅ 目標說話人提取(有參考音訊):VoiceFilter / VoiceFilter-Lite,以 d-vector 為條件精準提取指定說話人聲軌,適合客服中心「只要聽客戶說話」的場景。
✅ 會議自動分段轉寫:Speaker-Reasoner(2026 最新),端到端處理複雜多人重疊語音,超越 Gemini-2.5-Pro;或用 Whisper + CAM++(說話人聚類)組合降低部署複雜度。
✅ 學術研究基準:DPRNN / DPT-Net / MossFormer,在 wsj0-2mix 等標準基準上有完整可復現的結果可對比。
👥

繼續探索語音處理其他主題