| --- |
| language: |
| - bn |
| - de |
| - en |
| - es |
| - fr |
| - gu |
| - hi |
| - it |
| - mr |
| - ta |
| - te |
| - ur |
| tags: |
| - turn-detection |
| - end-of-utterance |
| - eou |
| - conversational-ai |
| - voice-agents |
| - multilingual |
| - speech |
| extra_gated_prompt: "Access to Echo Small is provided through Zero Runtime. Visit https://zeroruntime.ai/?utm_source=huggingface&utm_medium=referral&utm_campaign=huggingface to get started." |
| --- |
| |
| <div align="center"> |
|
|
|  |
|
|
| <p><b>Echo Small is the fastest way to stop your agent talking over people.<br/> |
| A verdict in under 10 ms, decided before the silence even registers.</b></p> |
|
|
| <p> |
| <a href="https://zeroruntime.ai/?utm_source=huggingface&utm_medium=referral&utm_campaign=huggingface"><img src="https://img.shields.io/badge/Get%20Access-zeroruntime.ai-2563EB?style=for-the-badge" alt="Get Access"></a> |
| |
| <a href="https://docs.zeroruntime.ai/build/turn-detection-and-interruptions/turn-detection?utm_source=huggingface&utm_medium=referral&utm_campaign=huggingface#turn-detection"><img src="https://img.shields.io/badge/Read%20the%20Docs-Turn%20Detection-0F2143?style=for-the-badge" alt="Documentation"></a> |
| </p> |
|
|
| </div> |
|
|
| Most turn detectors wait for silence and hope. A 500 ms gap looks identical whether someone finished a sentence, paused to think, or simply took a breath, so agents built on timers end up talking over people or leaving them hanging. |
|
|
| Echo Small does not guess. It reads the semantic meaning of what the user just said and decides whether the thought closed or trailed off mid-way. One prediction per turn, with a confidence score, returned before a silence timer would have finished counting. |
|
|
| It is the quick one in the **Echo family** and the default for most agents: 12 languages, four conversational states, and the lowest latency of the three. It also beats the proprietary turn detectors most voice stacks ship with. |
|
|
| --- |
|
|
| ## ๐ฏ What it does |
|
|
| Echo Small classifies every user turn into one of four states. Each state tells the agent exactly what to do next. |
|
|
|  |
|
|
| | State | What it means | What your agent should do | |
| |:--|:--|:--| |
| | **Complete** | The user has finished their turn | Hand the turn to the LLM and respond | |
| | **Incomplete** | The user is mid-sentence, just pausing | Keep listening. Do not take the floor | |
| | **Backchannel** | A short acknowledgement: "uh-huh", "okay okay" | Keep speaking. This is not an interruption | |
| | **Wait** | The user is asking you to hold: "wait a minute", "hold on" | Stop speaking immediately | |
|
|
| Most turn detectors only answer the first two. Backchannel and Wait are the states that make an agent feel polite instead of oblivious: not stopping every time someone says "mm-hm", and stopping the instant someone says "hold on". |
|
|
| --- |
|
|
| ## ๐ Input and output |
|
|
| **Echo Small works from semantic understanding alone.** |
|
|
|  |
|
|
| **Input**, per turn: |
|
|
| | Field | Description | |
| |:--|:--| |
| | **Utterance** | What the user just said | |
|
|
| **No language tag required.** Echo detects the language itself, so there is nothing to configure per call. |
|
|
| **Output**, one prediction per turn: |
|
|
| | Field | Description | |
| |:--|:--| |
| | **State** | `Complete`, `Incomplete`, `Backchannel` or `Wait` | |
| | **Confidence** | A score for the prediction, so you can tune how decisive your agent is | |
|
|
| No audio needed and no language to declare. It drops into any pipeline as-is, and that is why it answers fastest and costs least to run. |
|
|
| --- |
|
|
| ## ๐ Supported languages |
|
|
| **12 languages**, spanning Indian and European language families. Detected automatically, so you never pass a language code. |
|
|
| | Code | Language | Code | Language | Code | Language | |
| |:----:|:---------|:----:|:---------|:----:|:---------| |
| | `bn` | ๐ง๐ฉ Bengali | `de` | ๐ฉ๐ช German | `en` | ๐บ๐ธ English | |
| | `es` | ๐ช๐ธ Spanish | `fr` | ๐ซ๐ท French | `gu` | ๐ฎ๐ณ Gujarati | |
| | `hi` | ๐ฎ๐ณ Hindi | `it` | ๐ฎ๐น Italian | `mr` | ๐ฎ๐ณ Marathi | |
| | `ta` | ๐ฎ๐ณ Tamil | `te` | ๐ฎ๐ณ Telugu | `ur` | Urdu | |
|
|
| This is not a model that works well in English and degrades everywhere else. Accuracy holds across the full set. |
|
|
| --- |
|
|
| ## ๐ Performance |
|
|
| Benchmarked on [**TURNS2K**](https://huggingface.co/datasets/latishab/turns-2k), 2,000 English conversational samples labelled Complete or Incomplete, against a leading third-party turn detector shown here as **Baseline**. |
|
|
| | Metric | Echo Small | Baseline | |
| |:--|--:|--:| |
| | **Accuracy** | **93.60%** | 61.13% | |
| | **Recall (Complete)** | **97.31%** | 32.83% | |
| | **Specificity** | **88.91%** | 96.83% | |
| | **F1 Score (Complete)** | **0.9443** | 0.4851 | |
|
|
| **Echo Small beats the proprietary baseline by 32 points of accuracy and nearly 3x the recall.** Recall is the number to watch. **97.31% of finished turns are recognised as finished**, so the agent replies instead of leaving the user hanging. For every 100 times a user actually finished speaking, Echo Small responds 97 times. The baseline responds 33. |
|
|
| > Results are measured on the benchmark described above. Performance may vary depending on language, deployment configuration, user behaviour and application requirements. |
|
|
| --- |
|
|
| ## ๐ง Trained on data built for this problem |
|
|
| Echo Small is trained on a **proprietary, closed-source dataset built in-house**, purpose-made for conversational turn-taking across all 12 languages and all four states. |
|
|
| That dataset is the reason the rare states hold up. Backchannels and hold requests barely appear in off-the-shelf corpora, so a model trained on public data has almost nothing to learn them from. |
|
|
| --- |
|
|
| ## ๐๏ธ The Echo family |
|
|
| All three models return the same four states, so you can move between them without changing your agent logic. |
|
|
| | Model | Modality | Latency | Best for | |
| |:--|:--|:--:|:--| |
| | **`echo-small`** | **Semantic** | **5 to 10 ms** | The lowest latency. The default when responsiveness matters most | |
| | `echo-large` | Semantic | **10 to 20 ms** | Higher accuracy, when it matters more than raw speed | |
| | `echo-omni` | Audio + semantic | **60 to 80 ms** | The widest language coverage, with acoustic understanding on top of the semantics | |
|
|
| --- |
|
|
| ## ๐ Get access |
|
|
| Echo Small is served for you. There is nothing to download, host, or keep running. Plug it straight into your voice pipeline alongside your existing STT, LLM and TTS. |
|
|
| ```python |
| # Set ZERORUNTIME_AUTH_TOKEN in your environment. |
| |
| from zeroruntime.inference import TurnDetector |
| |
| # Lowest latency, the default choice |
| turn_detector = TurnDetector(model="echo-small") |
| ``` |
|
|
| <div align="center"> |
|
|
| <a href="https://zeroruntime.ai/?utm_source=huggingface&utm_medium=referral&utm_campaign=huggingface"><img src="https://img.shields.io/badge/Get%20access%20and%20start%20building-zeroruntime.ai-6C4CF1?style=for-the-badge" alt="Get Access"></a> |
| |
| <a href="https://docs.zeroruntime.ai/build/turn-detection-and-interruptions/turn-detection?utm_source=huggingface&utm_medium=referral&utm_campaign=huggingface#turn-detection"><img src="https://img.shields.io/badge/Turn%20detection%20%26%20interruptions-docs.zeroruntime.ai-1F2937?style=for-the-badge" alt="Documentation"></a> |
|
|
| </div> |
|
|
| --- |
|
|
| <div align="center"> |
|
|
|  |
|
|
| <sub><b>Echo Small</b> by <a href="https://zeroruntime.ai/?utm_source=huggingface&utm_medium=referral&utm_campaign=huggingface">Zero Runtime</a></sub> |
|
|
| </div> |
|
|