Release v0.2.2: Updated checkpoint, quantized TFLite model, and N=100 evaluation metrics
Browse files- README.md +29 -27
- best.ckpt.data-00000-of-00001 +2 -2
- best.ckpt.index +0 -0
- best.ckpt.meta +2 -2
- evaluation_metrics.json +0 -0
- model.tflite +2 -2
README.md
CHANGED
|
@@ -24,7 +24,7 @@ arxiv: 2008.06006
|
|
| 24 |
Single-source sequence-to-sequence **Vanilla-Seq2seq (`NoSideInputSingleInterfering`)** baseline model trained on 24 kHz **LibriTTS** user speech mixed at 0 dB SNR with reverberant **LJ Speech** (single-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.
|
| 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 (`NoSideInputSingleInterfer
|
|
| 47 |
|
| 48 |
### 1. Open-Source Reproduction Evaluation (`NoSideInputSingleInterfering`, N = 100 mixtures per split)
|
| 49 |
|
| 50 |
-
Evaluated on 24 kHz **LibriTTS** (`test-clean`: N = 100 mixtures,
|
| 51 |
|
| 52 |
| Metric | `test-clean` (N = 100) | `test-other` (N = 100) | Paper Reference (`Vanilla-Seq2seq`) |
|
| 53 |
| :--- | :---: | :---: | :---: |
|
| 54 |
-
| **WER (%) β** | **
|
| 55 |
-
| **MCD (dB) β** | **8.
|
| 56 |
| **Side Input Size (KB) β** | **0.000 KB** (padded: 0.000 KB) | **0.000 KB** (padded: 0.000 KB) | 0 KB |
|
| 57 |
-
| **Complexity (GFLOPS) β** | **
|
| 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` | β |
|
| 64 |
-
| | `MicrophoneSignal` | β |
|
| 65 |
-
| | `NlmsAec` (AEC-NLMS) | β |
|
| 66 |
-
| | `NoSideInputSingleInterfering` | [`wq2012/vanilla_seq2seq_single_interfering`](https://huggingface.co/wq2012/vanilla_seq2seq_single_interfering) |
|
| 67 |
-
| | `AecSingleInterfering` | [`wq2012/aec_single_interfering`](https://huggingface.co/wq2012/aec_single_interfering) |
|
| 68 |
-
| | **`TecSingleInterfering`** | **[`wq2012/tec_single_interfering`](https://huggingface.co/wq2012/tec_single_interfering)** | **
|
| 69 |
-
| **Multiple interfering voices** *(LibriTTS + VCTK)* | `GroundTruth` | β |
|
| 70 |
-
| | `MicrophoneSignal` | β |
|
| 71 |
-
| | `NlmsAec` (AEC-NLMS) | β |
|
| 72 |
-
| | `NoSideInputMultiInterfering` | [`wq2012/vanilla_seq2seq_multi_interfering`](https://huggingface.co/wq2012/vanilla_seq2seq_multi_interfering) |
|
| 73 |
-
| | `AecMultiInterfering` | [`wq2012/aec_multi_interfering`](https://huggingface.co/wq2012/aec_multi_interfering) | 9.
|
| 74 |
-
| | **`TecMultiInterfering`** | **[`wq2012/tec_multi_interfering`](https://huggingface.co/wq2012/tec_multi_interfering)** | **
|
| 75 |
|
| 76 |
### 3. Text-Content Sensitivity Ablation (N = 100 per split)
|
| 77 |
|
|
@@ -79,21 +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)** | **
|
| 83 |
-
| | `shuffled` (mismatched transcript) |
|
| 84 |
-
| | `empty` (no text
|
| 85 |
-
|
|
| 86 |
-
| | `
|
| 87 |
-
| | `
|
|
|
|
|
|
|
| 88 |
|
| 89 |
### 4. Input SNR Ablation on `single_test_clean` (N = 100 mixtures per SNR)
|
| 90 |
|
| 91 |
| Input SNR | `MicrophoneSignal` WER / MCD | `NlmsAec` WER / MCD | `Vanilla-Seq2seq` WER / MCD | **`TecSingleInterfering` WER / MCD** | `AecSingleInterfering` WER / MCD |
|
| 92 |
| :---: | :---: | :---: | :---: | :---: | :---: |
|
| 93 |
-
| **+5 dB** |
|
| 94 |
-
| **0 dB** |
|
| 95 |
-
| **-5 dB** |
|
| 96 |
-
| **-10 dB** |
|
| 97 |
|
| 98 |
---
|
| 99 |
|
|
|
|
| 24 |
Single-source sequence-to-sequence **Vanilla-Seq2seq (`NoSideInputSingleInterfering`)** baseline model trained on 24 kHz **LibriTTS** user speech mixed at 0 dB SNR with reverberant **LJ Speech** (single-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 |
|
| 48 |
### 1. Open-Source Reproduction Evaluation (`NoSideInputSingleInterfering`, N = 100 mixtures per split)
|
| 49 |
|
| 50 |
+
Evaluated on 24 kHz **LibriTTS** (`test-clean`: N = 100 mixtures, 965 reference words; `test-other`: N = 100 mixtures, 1,001 reference words) mixed at 0 dB SNR under the **Single interfering voice (LibriTTS + LJ Speech)** 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.88%** (298/965, 95% CI [24.11, 38.88]) | **58.54%** (586/1001, 95% CI [49.60, 67.69]) | 25.4% / 54.0% |
|
| 55 |
+
| **MCD (dB) β** | **8.34 dB** (95% CI [8.10, 8.58]) | **9.27 dB** (95% CI [8.96, 9.58]) | 7.85 dB / 8.84 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.79 GFLOPS** | **2.71 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 |
|
| 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 |
|
best.ckpt.data-00000-of-00001
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0a1d07e2783aa8bb222c82ffbbc67fc8f9e18761bf23c0d0c040aa52c695bb59
|
| 3 |
+
size 150145632
|
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:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1b875d2cb8a3eb026e651e259de79a6f3580076525b0b5357d469e7b3126581a
|
| 3 |
+
size 220051
|
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:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:dbc26fc93bb9f4f6327e422b51e710d75381388d1b8a218dd3526fc22f9bd042
|
| 3 |
+
size 12863816
|