wq2012 commited on
Commit
a2288cd
Β·
verified Β·
1 Parent(s): 7bde94b

Upload pretrained vanilla_seq2seq_multi_interfering checkpoint, TFLite model, and Model Card

Browse files
README.md CHANGED
@@ -24,7 +24,7 @@ arxiv: 2008.06006
24
  Single-source sequence-to-sequence **Vanilla-Seq2seq (`NoSideInputMultiInterfering`)** baseline model trained on 24 kHz **LibriTTS** user speech mixed at 0 dB SNR with reverberant **CSTR VCTK** (109-speaker TTS interference). Takes only the noisy/reverberant microphone spectrogram (`SpeechEncoderV1`) with zero side input.
25
 
26
  - **GitHub Repository**: [https://github.com/wq2012/tec](https://github.com/wq2012/tec)
27
- - **PyPI Package**: [`textual-echo-cancellation` (v0.2.2)](https://pypi.org/project/textual-echo-cancellation/)
28
  - **Interactive Hugging Face Space Demo**: [https://huggingface.co/spaces/wq2012/tec](https://huggingface.co/spaces/wq2012/tec)
29
  - **Paper**: [Textual Echo Cancellation (IEEE SLT 2021, arXiv:2008.06006v4)](https://arxiv.org/pdf/2008.06006)
30
  - **Audio Demo Page**: [https://google.github.io/speaker-id/publications/TEC/](https://google.github.io/speaker-id/publications/TEC/)
@@ -47,31 +47,31 @@ Single-source sequence-to-sequence **Vanilla-Seq2seq (`NoSideInputMultiInterferi
47
 
48
  ### 1. Open-Source Reproduction Evaluation (`NoSideInputMultiInterfering`, N = 100 mixtures per split)
49
 
50
- Evaluated on 24 kHz **LibriTTS** (`test-clean`: N = 100 mixtures, 931 reference words; `test-other`: N = 100 mixtures, 991 reference words) mixed at 0 dB SNR under the **Multiple interfering voices (LibriTTS + VCTK)** condition, using `Qwen3-ASR-0.6B-F16` via `audio.cpp` for ASR WER scoring and 13-MFCC Dynamic Time Warping for MCD (with 10,000-resample non-parametric bootstrap 95% confidence intervals):
51
 
52
  | Metric | `test-clean` (N = 100) | `test-other` (N = 100) | Paper Reference (`Vanilla-Seq2seq`) |
53
  | :--- | :---: | :---: | :---: |
54
- | **WER (%) ↓** | **30.83%** (287/931, 95% CI [24.72, 37.89]) | **50.76%** (503/991, 95% CI [43.86, 58.31]) | 19.7% / 38.7% |
55
- | **MCD (dB) ↓** | **8.57 dB** (95% CI [8.34, 8.81]) | **8.76 dB** (95% CI [8.51, 9.01]) | 7.53 dB / 8.87 dB |
56
  | **Side Input Size (KB) ↓** | **0.000 KB** (padded: 0.000 KB) | **0.000 KB** (padded: 0.000 KB) | 0 KB |
57
- | **Complexity (GFLOPS) ↓** | **2.76 GFLOPS** | **2.66 GFLOPS** | 6.32 GFLOPS (401 frames) |
58
 
59
  ### 2. Full Comparison Across All Pretrained Models & Baselines (N = 100 per split)
60
 
61
  | Condition | Method | Hugging Face Model | WER (%) test-clean ↓ | WER (%) test-other ↓ | MCD (dB) test-clean ↓ | MCD (dB) test-other ↓ | Side Input test-clean (KB) ↓ | Avg Complexity (GFLOPS) ↓ |
62
  | :--- | :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: |
63
- | **Single interfering voice** *(LibriTTS + LJSpeech)* | `GroundTruth` | β€” | 3.52 [2.09, 5.12] | 5.19 [3.56, 7.06] | 0.00 | 0.00 | 0.000 | 0.00 |
64
- | | `MicrophoneSignal` | β€” | 30.67 [22.83, 39.70] | 56.94 [48.04, 66.46] | 7.19 [6.81, 7.60] | 8.35 [7.89, 8.80] | 0.000 | 0.00 |
65
- | | `NlmsAec` (AEC-NLMS) | β€” | 58.86 [51.17, 67.37] | 79.92 [73.98, 86.40] | 7.84 [7.54, 8.16] | 9.12 [8.70, 9.54] | 146.667 | 0.02 |
66
- | | `NoSideInputSingleInterfering` | [`wq2012/vanilla_seq2seq_single_interfering`](https://huggingface.co/wq2012/vanilla_seq2seq_single_interfering) | 30.88 [24.11, 38.88] | 58.54 [49.60, 67.69] | 8.34 [8.10, 8.58] | 9.27 [8.96, 9.58] | 0.000 | 2.79 |
67
- | | `AecSingleInterfering` | [`wq2012/aec_single_interfering`](https://huggingface.co/wq2012/aec_single_interfering) | 9.12 [6.59, 11.92] | 21.68 [17.73, 26.00] | 6.62 [6.44, 6.80] | 7.20 [6.96, 7.45] | 146.667 | 4.15 |
68
- | | **`TecSingleInterfering`** | **[`wq2012/tec_single_interfering`](https://huggingface.co/wq2012/tec_single_interfering)** | **20.31 [15.19, 26.71]** | **38.06 [31.47, 45.35]** | **7.00 [6.72, 7.29]** | **7.76 [7.40, 8.15]** | **0.048** | **3.08** |
69
- | **Multiple interfering voices** *(LibriTTS + VCTK)* | `GroundTruth` | β€” | 3.97 [2.58, 5.48] | 6.56 [4.69, 8.65] | 0.00 | 0.00 | 0.000 | 0.00 |
70
- | | `MicrophoneSignal` | β€” | 20.30 [14.89, 26.57] | 40.16 [33.27, 47.98] | 5.48 [5.14, 5.85] | 5.88 [5.51, 6.27] | 0.000 | 0.00 |
71
- | | `NlmsAec` (AEC-NLMS) | β€” | 34.48 [29.08, 40.35] | 55.70 [49.49, 62.39] | 6.89 [6.61, 7.18] | 7.68 [7.29, 8.08] | 136.043 | 0.02 |
72
- | | `NoSideInputMultiInterfering` | [`wq2012/vanilla_seq2seq_multi_interfering`](https://huggingface.co/wq2012/vanilla_seq2seq_multi_interfering) | 30.83 [24.72, 37.89] | 50.76 [43.86, 58.31] | 8.57 [8.34, 8.81] | 8.76 [8.51, 9.01] | 0.000 | 2.76 |
73
- | | `AecMultiInterfering` | [`wq2012/aec_multi_interfering`](https://huggingface.co/wq2012/aec_multi_interfering) | 9.77 [7.40, 12.39] | 24.52 [20.60, 28.74] | 5.93 [5.74, 6.15] | 6.16 [5.92, 6.41] | 136.043 | 4.03 |
74
- | | **`TecMultiInterfering`** | **[`wq2012/tec_multi_interfering`](https://huggingface.co/wq2012/tec_multi_interfering)** | **20.09 [16.11, 24.53]** | **39.25 [33.79, 45.29]** | **6.52 [6.34, 6.70]** | **6.84 [6.60, 7.09]** | **0.035** | **2.98** |
75
 
76
  ### 3. Text-Content Sensitivity Ablation (N = 100 per split)
77
 
@@ -79,23 +79,23 @@ Verifies that `TtsEncoderV2` actively exploits the semantic and phonetic content
79
 
80
  | Split | Side-Input Condition | WER (%) ↓ | MCD (dB) ↓ | Ξ”WER vs. `matched` | Paired p-value (Bootstrap / Wilcoxon) |
81
  | :--- | :--- | :---: | :---: | :---: | :---: |
82
- | `single_test_clean` (`TecSingleInterfering`) | **`matched` (true TTS transcript)** | **20.31%** | **7.00 dB** | β€” | β€” |
83
- | | `shuffled` (mismatched transcript) | 30.67% | 8.34 dB | +10.36% | p < 0.0001 / p = 1.94e-05 |
84
- | | `empty` (no text) | 31.09% | 8.61 dB | +10.78% | p < 0.0001 / p = 1.75e-05 |
85
- | | `Vanilla-Seq2seq` | 30.88% | 8.34 dB | +10.57% | p < 0.0001 / p = 1.28e-04 |
86
- | `multi_test_clean` (`TecMultiInterfering`) | **`matched` (true TTS transcript)** | **20.09%** | **6.52 dB** | β€” | β€” |
87
- | | `shuffled` (mismatched transcript) | 28.79% | 8.53 dB | +8.70% | p = 0.0002 / p = 8.30e-04 |
88
- | | `empty` (no text) | 29.97% | 8.59 dB | +9.88% | p < 0.0001 / p = 6.32e-05 |
89
- | | `Vanilla-Seq2seq` | 30.83% | 8.57 dB | +10.74% | p < 0.0001 / p = 3.10e-05 |
90
 
91
  ### 4. Input SNR Ablation on `single_test_clean` (N = 100 mixtures per SNR)
92
 
93
  | Input SNR | `MicrophoneSignal` WER / MCD | `NlmsAec` WER / MCD | `Vanilla-Seq2seq` WER / MCD | **`TecSingleInterfering` WER / MCD** | `AecSingleInterfering` WER / MCD |
94
  | :---: | :---: | :---: | :---: | :---: | :---: |
95
- | **+5 dB** | 12.23% / 6.09 dB | 44.04% / 7.29 dB | 14.92% / 7.45 dB | **10.16% / 6.14 dB** | 6.63% / 6.15 dB |
96
- | **0 dB** | 30.67% / 7.19 dB | 58.86% / 7.84 dB | 30.88% / 8.34 dB | **20.31% / 7.00 dB** | 9.12% / 6.62 dB |
97
- | **-5 dB** | 79.07% / 8.26 dB | 79.07% / 8.46 dB | 78.24% / 9.31 dB | **52.23% / 7.87 dB** | 18.86% / 7.34 dB |
98
- | **-10 dB** | 103.21% / 9.20 dB | 94.40% / 9.07 dB | 103.63% / 10.16 dB | **93.89% / 8.63 dB** | 53.06% / 8.11 dB |
99
 
100
  ---
101
 
 
24
  Single-source sequence-to-sequence **Vanilla-Seq2seq (`NoSideInputMultiInterfering`)** baseline model trained on 24 kHz **LibriTTS** user speech mixed at 0 dB SNR with reverberant **CSTR VCTK** (109-speaker TTS interference). Takes only the noisy/reverberant microphone spectrogram (`SpeechEncoderV1`) with zero side input.
25
 
26
  - **GitHub Repository**: [https://github.com/wq2012/tec](https://github.com/wq2012/tec)
27
+ - **PyPI Package**: [`textual-echo-cancellation` (v0.2.3)](https://pypi.org/project/textual-echo-cancellation/)
28
  - **Interactive Hugging Face Space Demo**: [https://huggingface.co/spaces/wq2012/tec](https://huggingface.co/spaces/wq2012/tec)
29
  - **Paper**: [Textual Echo Cancellation (IEEE SLT 2021, arXiv:2008.06006v4)](https://arxiv.org/pdf/2008.06006)
30
  - **Audio Demo Page**: [https://google.github.io/speaker-id/publications/TEC/](https://google.github.io/speaker-id/publications/TEC/)
 
47
 
48
  ### 1. Open-Source Reproduction Evaluation (`NoSideInputMultiInterfering`, N = 100 mixtures per split)
49
 
50
+ Evaluated on 24 kHz **LibriTTS** (`test-clean`: N = 100 mixtures, 979 reference words; `test-other`: N = 100 mixtures, 949 reference words) mixed at 0 dB SNR under the **Multiple interfering voices (LibriTTS + VCTK)** condition, using `Qwen3-ASR-0.6B-F16` via `audio.cpp` for ASR WER scoring and 13-MFCC Dynamic Time Warping for MCD (with 10,000-resample non-parametric bootstrap 95% confidence intervals):
51
 
52
  | Metric | `test-clean` (N = 100) | `test-other` (N = 100) | Paper Reference (`Vanilla-Seq2seq`) |
53
  | :--- | :---: | :---: | :---: |
54
+ | **WER (%) ↓** | **63.33%** (620/979, 95% CI [55.27, 71.69]) | **69.86%** (663/949, 95% CI [61.89, 78.18]) | 19.7% / 38.7% |
55
+ | **MCD (dB) ↓** | **8.26 dB** (95% CI [7.76, 8.76]) | **9.32 dB** (95% CI [8.77, 9.89]) | 7.53 dB / 8.87 dB |
56
  | **Side Input Size (KB) ↓** | **0.000 KB** (padded: 0.000 KB) | **0.000 KB** (padded: 0.000 KB) | 0 KB |
57
+ | **Complexity (GFLOPS) ↓** | **3.59 GFLOPS** | **3.28 GFLOPS** | 6.32 GFLOPS (401 frames) |
58
 
59
  ### 2. Full Comparison Across All Pretrained Models & Baselines (N = 100 per split)
60
 
61
  | Condition | Method | Hugging Face Model | WER (%) test-clean ↓ | WER (%) test-other ↓ | MCD (dB) test-clean ↓ | MCD (dB) test-other ↓ | Side Input test-clean (KB) ↓ | Avg Complexity (GFLOPS) ↓ |
62
  | :--- | :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: |
63
+ | **Single interfering voice** *(LibriTTS + LJSpeech)* | `GroundTruth` | β€” | 3.86 [2.43, 5.49] | 6.62 [4.66, 8.78] | 0.00 | 0.00 | 0.000 | 0.00 |
64
+ | | `MicrophoneSignal` | β€” | 80.32 [68.49, 93.55] | 102.77 [88.25, 119.32] | 9.92 [9.56, 10.27] | 10.74 [10.32, 11.16] | 0.000 | 0.00 |
65
+ | | `NlmsAec` (AEC-NLMS) | β€” | 58.38 [47.37, 71.05] | 85.77 [71.61, 102.19] | 9.51 [9.16, 9.86] | 10.33 [9.92, 10.75] | 235.403 | 0.24 |
66
+ | | `NoSideInputSingleInterfering` | [`wq2012/vanilla_seq2seq_single_interfering`](https://huggingface.co/wq2012/vanilla_seq2seq_single_interfering) | 39.08 [30.26, 48.91] | 54.35 [44.66, 64.93] | 7.07 [6.86, 7.29] | 7.38 [7.13, 7.64] | 0.000 | 4.17 |
67
+ | | `AecSingleInterfering` | [`wq2012/aec_single_interfering`](https://huggingface.co/wq2012/aec_single_interfering) | 7.91 [5.68, 10.48] | 17.29 [13.34, 21.76] | 4.97 [4.60, 5.35] | 4.96 [4.61, 5.31] | 235.403 | 6.36 |
68
+ | | **`TecSingleInterfering`** | **[`wq2012/tec_single_interfering`](https://huggingface.co/wq2012/tec_single_interfering)** | **29.76 [23.09, 36.97]** | **50.59 [41.96, 59.66]** | **5.52 [5.16, 5.89]** | **5.55 [5.18, 5.93]** | **0.074** | **4.62** |
69
+ | **Multiple interfering voices** *(LibriTTS + VCTK)* | `GroundTruth` | β€” | 3.06 [1.90, 4.35] | 6.85 [4.77, 9.16] | 0.00 | 0.00 | 0.000 | 0.00 |
70
+ | | `MicrophoneSignal` | β€” | 50.77 [40.86, 62.15] | 67.33 [56.40, 79.77] | 7.50 [7.13, 7.87] | 7.82 [7.41, 8.24] | 0.000 | 0.00 |
71
+ | | `NlmsAec` (AEC-NLMS) | β€” | 34.22 [25.72, 44.51] | 48.58 [39.15, 59.91] | 7.01 [6.67, 7.37] | 7.43 [7.04, 7.83] | 203.138 | 0.21 |
72
+ | | `NoSideInputMultiInterfering` | [`wq2012/vanilla_seq2seq_multi_interfering`](https://huggingface.co/wq2012/vanilla_seq2seq_multi_interfering) | 63.33 [55.27, 71.69] | 69.86 [61.89, 78.18] | 8.26 [7.76, 8.76] | 9.32 [8.77, 9.89] | 0.000 | 3.59 |
73
+ | | `AecMultiInterfering` | [`wq2012/aec_multi_interfering`](https://huggingface.co/wq2012/aec_multi_interfering) | 6.84 [4.98, 8.85] | 14.86 [11.25, 18.79] | 4.65 [4.28, 5.02] | 4.67 [4.28, 5.06] | 203.138 | 5.48 |
74
+ | | **`TecMultiInterfering`** | **[`wq2012/tec_multi_interfering`](https://huggingface.co/wq2012/tec_multi_interfering)** | **24.31 [18.94, 30.47]** | **36.25 [30.34, 42.52]** | **4.74 [4.42, 5.07]** | **4.91 [4.54, 5.30]** | **0.050** | **3.90** |
75
 
76
  ### 3. Text-Content Sensitivity Ablation (N = 100 per split)
77
 
 
79
 
80
  | Split | Side-Input Condition | WER (%) ↓ | MCD (dB) ↓ | Ξ”WER vs. `matched` | Paired p-value (Bootstrap / Wilcoxon) |
81
  | :--- | :--- | :---: | :---: | :---: | :---: |
82
+ | `single_test_clean` (`TecSingleInterfering`) | **`matched` (true TTS transcript)** | **29.76%** | **5.52 dB** | β€” | β€” |
83
+ | | `shuffled` (mismatched transcript) | 70.90% | 9.26 dB | +41.15% | p < 0.0001 / p = 2.61e-12 |
84
+ | | `empty` (no text) | 71.94% | 9.32 dB | +42.18% | p < 0.0001 / p = 4.89e-13 |
85
+ | | `Vanilla-Seq2seq` | 39.08% | 7.07 dB | +9.32% | p < 0.0001 / p = 6.69e-04 |
86
+ | `multi_test_clean` (`TecMultiInterfering`) | **`matched` (true TTS transcript)** | **24.31%** | **4.74 dB** | β€” | β€” |
87
+ | | `shuffled` (mismatched transcript) | 48.52% | 7.92 dB | +24.21% | p < 0.0001 / p = 9.10e-09 |
88
+ | | `empty` (no text) | 47.29% | 7.83 dB | +22.98% | p < 0.0001 / p = 1.41e-07 |
89
+ | | `Vanilla-Seq2seq` | 63.33% | 8.26 dB | +39.02% | p < 0.0001 / p = 1.99e-11 |
90
 
91
  ### 4. Input SNR Ablation on `single_test_clean` (N = 100 mixtures per SNR)
92
 
93
  | Input SNR | `MicrophoneSignal` WER / MCD | `NlmsAec` WER / MCD | `Vanilla-Seq2seq` WER / MCD | **`TecSingleInterfering` WER / MCD** | `AecSingleInterfering` WER / MCD |
94
  | :---: | :---: | :---: | :---: | :---: | :---: |
95
+ | **+5 dB** | 51.88% / 9.03 dB | 40.58% / 8.72 dB | 9.23% / 6.28 dB | **8.47% / 4.69 dB** | 5.65% / 4.33 dB |
96
+ | **0 dB** | 80.32% / 9.92 dB | 58.38% / 9.51 dB | 39.08% / 7.07 dB | **29.76% / 5.52 dB** | 7.91% / 4.97 dB |
97
+ | **-5 dB** | 119.02% / 10.73 dB | 90.30% / 10.28 dB | 96.80% / 7.82 dB | **87.76% / 6.34 dB** | 17.23% / 5.73 dB |
98
+ | **-10 dB** | 124.86% / 11.40 dB | 121.28% / 10.95 dB | 103.86% / 8.35 dB | **101.04% / 6.91 dB** | 49.25% / 6.33 dB |
99
 
100
  ---
101
 
best.ckpt.data-00000-of-00001 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:03bd97f03236d84ef4a143b86d7b5523c22e75a376b014aec8d8536d9c066c4e
3
- size 150145632
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9fdc3cae8a3940578c38b3da0cbad7d93bd76c2cc11ebd96a1cce6bbe617c982
3
+ size 50332376
best.ckpt.index CHANGED
Binary files a/best.ckpt.index and b/best.ckpt.index differ
 
best.ckpt.meta CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:1b875d2cb8a3eb026e651e259de79a6f3580076525b0b5357d469e7b3126581a
3
- size 220051
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2f12af394b5dcb6ef5b39e3997dd63e08d0f558826cb61ca4411f30764af2ce8
3
+ size 50618149
evaluation_metrics.json CHANGED
The diff for this file is too large to render. See raw diff
 
model.tflite CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:2dd15a0d74a01d7be1aa5a4164d91772b343f539adfc04f75822d31284b6bec3
3
- size 12863816
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:477b928382d7dd79789277c9de9b2512a20bf30179ff588f98dae68768bc7a3f
3
+ size 13145616