echo-small / README.md
MeetJariwala100's picture
Add Echo Small model card and assets
27bce6e verified
|
Raw
History Blame Contribute Delete
7.6 kB
---
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">
![Echo Small. 93.60% accuracy, 12 languages, 4 states, verdict under 10 ms.](banner.svg)
<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>
&nbsp;
<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.
![Every turn resolves to one of four states: Incomplete, Complete, Backchannel or Wait, each with the action the agent should take.](states.svg)
| 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.**
![The utterance goes in, and one classified state comes back.](how-it-works.svg)
**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>
&nbsp;
<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">
![Echo Small](wordmark.svg)
<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>