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