Benchmark · Measure it yourself
Measure it yourself: 50 ms p95 to final transcript
Wire-1, the model behind the Saidwire API, returns the final transcript 50 ms after the end of speech at the 95th percentile in Coval's STT benchmark. Ranked 1st of 29 on mean time to final segment (35 ms) in Coval's independent STT benchmark, 30-day window to Nov 9, 2026, 2,857 samples. Below: our row from Coval's public results, how Coval measures, and how to run the same open-source harness against your own free key.
Coval results for Wire-1
Model saidwire-en-2026-10-30, 30-day window to Nov 9, 2026, 2,857 samples. Ranks are Coval's, among the models Coval lists for that metric. Lower is better for every number.
| Metric | Wire-1 | Coval rank |
|---|---|---|
| Time to final segment, mean | 35 ms | 1st of 29 |
| Time to final segment, p50 | 34 ms | |
| Time to final segment, p90 | 44 ms | |
| Time to final segment, p95 | 50 ms | |
| Time to final segment, slowest sample | 246 ms | |
| Time to first token, mean | 777 ms | 1st of 29 |
| Time to first token, p50 | 659 ms | |
| Time to first token, p95 | 1,505 ms | |
| Word error rate | 3.8% |
Source: benchmarks.coval.ai/models/saidwire-en-2026-10-30, last run Nov 9, 2026. The full board, with every model Coval tests, is at benchmarks.coval.ai/stt. We show only our own row.
Time to final segment by audio condition
Coval tests every day on seven kinds of speech. Mean time to final segment for Wire-1 in the same window:
| Audio condition | Mean time to final segment |
|---|---|
| Accented speech | 26 ms |
| Noise and gaps | 34 ms |
| Production voice-agent audio (Pipecat) | 34 ms |
| Clean speech | 36 ms |
| Clipped audio | 37 ms |
| Far-field microphone | 37 ms |
| Phone codec | 38 ms |
How Coval measures
- Who runs it. Coval runs the test on its own schedule, from its own clients, against our public US-hosted endpoint. We don't choose the clips or the timing.
- What audio. Clean, accented, noisy, reverberant, far-field, clipped and phone-codec English speech, plus real voice-agent turns, streamed at real-time pace.
- Time to final segment (Coval's ranking metric): from the end of the audio to the final transcript of the last segment. It is the wait your voice agent has before it can answer.
- Time to first token: how long after the audio starts the first transcript text arrives.
- Word error rate: substitutions, deletions and insertions divided by reference words, after normalization.
- What it leaves out. Your network round trip to the US, and connection setup. Your own numbers will depend on where you call from, your audio and how your app ends a turn.
Measure it yourself
Coval's harness is open source at github.com/coval-ai/benchmarks and already includes a Saidwire provider. Get a free key at saidwire.com/dev (120 free hours with no card and no deadline, up to 4 streams at once, then $0.25 per audio hour, billed per second), then:
git clone https://github.com/coval-ai/benchmarks && cd benchmarks
cp .env.example .env # set SAIDWIRE_API_KEY=sk_live_... in .env
docker compose run --rm runner stt-smoke --provider saidwire \
--model saidwire-en-2026-10-30 --wav your-clip.wav # 16 kHz mono 16-bit WAV
That streams one clip the way Coval does and prints the transcript and timings. For the full dataset run, follow the runner instructions in the repository and select saidwire/saidwire-en-2026-10-30. Commands are as of Nov 9, 2026; if the repository changes, its README wins. Runs use your free hours like any other audio.
Prefer plain code? Stream a file yourself and time the gap between sending Finalize and the final result:
# pip install websockets (Python 3.10+)
import asyncio, json, os
from websockets.asyncio.client import connect
URL = ("wss://api.saidwire.com/v1/listen?encoding=linear16&sample_rate=16000"
"&interim_results=true&punctuate=true&endpointing=false")
async def run(frames): # frames: 20-100 ms chunks of 16-bit PCM
headers = {"Authorization": f"Token {os.environ['SAIDWIRE_API_KEY']}"}
async with connect(URL, additional_headers=headers) as ws:
async def read():
async for raw in ws:
m = json.loads(raw)
if m.get("type") == "Results":
text = m["channel"]["alternatives"][0]["transcript"]
print("final " if m["is_final"] else "interim", text)
reader = asyncio.create_task(read())
async for chunk in frames:
await ws.send(chunk)
# your turn detector says the user stopped: ask for the final now
await ws.send(json.dumps({"type": "Finalize"}))
await ws.send(json.dumps({"type": "CloseStream"}))
await reader
Add timing=true to the URL and each final carries server_ms, our own time on the server, so you can split our time from your network time.
Our own nightly run
Separately, we run the same open-source method every night on a test server against our own build, to catch regressions before they reach you. This is our own run, not Coval's and not independent. Latest (Nov 9, 2026, 3,162 clips, measured on the server, no internet hop):
| Metric | Our nightly run |
|---|---|
| Time to final, p50 | 37 ms |
| Time to final, p95 | 61 ms |
| Word error rate | 4.2% |
| Failed clips | 0 |
The nightly numbers differ from Coval's because the clip mix, the client and the server differ. Coval's figures are the ones we quote.
What these numbers don't tell you
- Add your own network round trip. The endpoint is hosted in the US.
- Fast finals need an end-of-turn signal. The times above apply when your app (or its voice detector) tells the API the user stopped, with a
Finalizemessage. With silence detection alone, a final waits for the pause you configure. - Your audio is different. Microphones, accents, cross-talk and vocabulary all change accuracy. The 120 free hours are there so you can test on your own audio.
- English only. Wire-1 transcribes English.
Our API terms allow benchmarking and publishing the results. If you publish one, send us the method and numbers at support@saidwire.com and we'll link it here.
Questions
Who ran these tests?
Coval runs its STT benchmark independently, on its own schedule, against our public endpoint. The figures and ranks come from Coval's model page for Wire-1, 30-day window to Nov 9, 2026.
What does 1st of 29 mean?
Among the 29 models Coval reports for time to final segment over that window, Wire-1 had the lowest mean (35 ms). Its p95 was 50 ms.
Can I reproduce it?
Yes. Clone Coval's open-source harness, put a free Saidwire key in .env and run the Saidwire provider. The commands are above.
Is the nightly run independent?
No. It is our own run on our own test server, used to catch regressions. We label it that way and quote Coval's numbers instead.
Questions or stuck? Email support@saidwire.com with the request ID from the failed call.
Pipecat, LiveKit, Vapi, OpenAI and the other names on this page belong to their respective owners. They are named only to describe compatibility; no partnership or endorsement is implied. Coval benchmark figures are from Coval's public model page; Coval does not endorse Saidwire.