Seirenes 語音 Pipeline — 演進史
從 batch Whisper 到流式多麥克風陣列 + 神經 TTS,10 天完成
場景成功率
22 場景測試
17 改善 · 3 退化 · 2 持平
測試覆蓋率
46 個單元測試通過
Stage 1→3 + 流式架構
音訊延遲
首音 2.5ms
罐頭開場句,p95
V0 原型
mic → Whisper-large-v3 → LLM → canned TTS
- 僅 batch 處理
- 首音約 700ms
- 無麥克風陣列
- 雞尾酒會場景全爆
Performance Metric
基準線,無 DSP
V1 Stage 1 最小可行版
4mic → DSB beamform → noisereduce → silero VAD
- 第一版麥克風陣列 pipeline 部署
- 7/7 測試通過
- DSB SNR 增益: +4.7dB
Performance Metric
D/G/F 場景仍很差
V2 Stage 2 多源 DOA
SRP-PHAT × MUSIC top-K → loudest-peak BF
adaptive_denoise + spatial_wiener_mic0 + GTCRN_voice_mask
- D 場景全自動增強: +3.82dB(達到 oracle DOA 上限)
- 14/14 測試通過
Performance Metric
D 場景自動修復
V3 Stage 3 首語者鎖定 + AEC
[Mic Array] --(NLMS AEC)--> [Robust DOA]
|
[WeSpeaker ResNet34] --(Lock)--> [Spatial Wiener BF]
|
[WeSpeaker ResNet34] --(Lock)--> [Spatial Wiener BF]
- 22 場景 / 17 改善 / 3 退化 / 2 持平
- WeSpeaker 26MB ONNX (sim≥0.65 speaker lock)
- 指標: D +3.82, G +5.71, C +5.74
Performance Metric
G 與 D 同時修復
V3.5 流式架構 + 原生函式庫
chunk-online MUSIC alpha=0.95
- 測試從 35 增加到 46
- 依賴項: bin/rnnoise.dll, bin/speexdsp.dll
- TTS 首音 p95 858ms, 總延遲 1188ms
Performance Metric
流式架構就緒
V4 VibeVoice TTS(最新 PoC)
規劃中
- 已測 3 個聲音預設(Carter 男聲、Emma 女聲、Grace 女聲)
- 官方宣稱首音 300ms
- 3 段樣本已生成並做響度正規化
Performance Metric
取代串接式 TTS
下一步規劃
architecture
演算法混合方案
混合 DSP + DNN 勝過純 DNN(業界標準,Apple/Google/Amazon 都這樣做)。我們先使用確定性的 beamforming 和 AEC 處理,再進入神經網絡掩碼。
memory
計算異構性
GTCRN (流式)CPU 0.84ms vs CUDA 41.8ms 慢 50 倍
WeSpeaker (批次)CPU 132ms vs CUDA 3.9ms 快 34 倍
check_circle
Bypass 作為一項功能
Bypass 是 feature 不是 bug — A/E(乾淨環境)和 K(耳語)場景直接讓 mic-0 過去,省下 40dB 退化,同時保留自然諧波並達成零延遲吞吐量。
三個工程教訓
| 里程碑 | 優先級 | 預期影響 | 預計日期 |
|---|---|---|---|
| VibeVoice 整合 | P0 Critical | VibeVoice 整合進 SeirenesFE Stage 4(規劃中) | W42 |
| 中文微調 | P1 High | VibeVoice 中文微調(待定,README 僅保證英文) | W44 |
| 零樣本情緒鎖定 | P2 Med | F 場景 4mic 雞尾酒+回音退化 -8dB(無源分離神經網路無法修復) | W46 |
| 動態 Beamforming++ | P2 Med | I 場景移動目標離線 -16dB(已支援 chunk-online MUSIC,benchmark 未接上) | W48 |