SaidwireDevelopers

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.

MetricWire-1Coval rank
Time to final segment, mean35 ms1st of 29
Time to final segment, p5034 ms
Time to final segment, p9044 ms
Time to final segment, p9550 ms
Time to final segment, slowest sample246 ms
Time to first token, mean777 ms1st of 29
Time to first token, p50659 ms
Time to first token, p951,505 ms
Word error rate3.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 conditionMean time to final segment
Accented speech26 ms
Noise and gaps34 ms
Production voice-agent audio (Pipecat)34 ms
Clean speech36 ms
Clipped audio37 ms
Far-field microphone37 ms
Phone codec38 ms

How Coval measures

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):

MetricOur nightly run
Time to final, p5037 ms
Time to final, p9561 ms
Word error rate4.2%
Failed clips0

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

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.