--- title: Textual Echo Cancellation (TEC) emoji: 🎙️ colorFrom: blue colorTo: indigo sdk: static pinned: false license: apache-2.0 models: - wq2012/tec_single_interfering - wq2012/tec_multi_interfering - wq2012/aec_single_interfering - wq2012/aec_multi_interfering - wq2012/vanilla_seq2seq_single_interfering - wq2012/vanilla_seq2seq_multi_interfering short_description: Cancel TTS playback echo using source text and compare ASR --- # Textual Echo Cancellation (TEC) — Interactive Demo This Space demonstrates **Textual Echo Cancellation (TEC)** based on the IEEE SLT 2021 paper: > **Textual Echo Cancellation** > *Shaojin Ding, Ye Jia, Ke Hu, Quan Wang* > - **Paper**: [arXiv:2008.06006](https://arxiv.org/abs/2008.06006) > - **GitHub Repository**: [https://github.com/wq2012/tec](https://github.com/wq2012/tec) > - **PyPI Package**: [`textual-echo-cancellation`](https://pypi.org/project/textual-echo-cancellation/) (`pip install textual-echo-cancellation`) > - **Pretrained Models**: [`wq2012/tec_single_interfering`](https://huggingface.co/wq2012/tec_single_interfering) | [`wq2012/tec_multi_interfering`](https://huggingface.co/wq2012/tec_multi_interfering) | [`wq2012/aec_single_interfering`](https://huggingface.co/wq2012/aec_single_interfering) > - **Audio Demo Page**: [https://google.github.io/speaker-id/publications/TEC/](https://google.github.io/speaker-id/publications/TEC/) ## How It Works 1. **Upload an audio file** containing a microphone mixture (a user speaking while a device is playing back a Text-to-Speech response) or select one of the 4 built-in benchmark examples. 2. **Enter the interfering TTS text** (the source text of the device's TTS playback) and select a model (`TecSingleInterfering`, `TecMultiInterfering`, or `AecSingleInterfering`). 3. Click **Run Textual Echo Cancellation & Compare ASR**: - Runs **ASR on the user uploaded audio file** (Before TEC). - Runs **Echo Cancellation** (loading the exact Lingvo checkpoint outputs in `examples/sample_1..4_{tec_single,tec_multi,aec_single}.wav` generated by [`generate_examples.py`](generate_examples.py) for the built-in benchmark examples, or running an in-browser WebAudio text-conditioned spectral canceller for custom uploaded files). - Runs **ASR on the Echo Cancelled audio file** (After TEC) and prints out the recognition results for both approaches side by side. *(This repository also includes [`generate_examples.py`](generate_examples.py) and the standalone Python Gradio app in [`app.py`](app.py) + [`requirements.txt`](requirements.txt) for full Lingvo/TensorFlow checkpoint inference on arbitrary files via `python3 app.py`.)*