The standard interface for ASR inference
Standard ASR defines a vendor-neutral protocol between applications and speech-recognition engines. Applications integrate speech-to-text once and gain every compliant engine; engines implement it once and reach every application. Think USB-C for ASR.
Pre-releaseBreaking changes may occur before v1.0.0. Try it out and tell us what you think.
Implement once. Interoperate with everything.
Like the OpenAI Chat Completion API did for LLMs: once a protocol is the common language, both sides of it stop writing adapters.
from standard_asr import discover_models
registry = discover_models()
engine = registry.create("faster-whisper/large-v3")
result = engine.transcribe("meeting.wav")
print(result.text)
# Switching engines is a one-line change:
engine = registry.create("std-openai/gpt-4o-transcribe")from standard_asr.engine import EngineBase, PreparedAudio
class MyEngine(EngineBase):
# Declare properties, capabilities, and a typed config...
def _transcribe(self, prepared: PreparedAudio, params):
audio = prepared.array # 16 kHz float32 mono, per your Properties
return my_model_infer(audio)
# One interface -> CLI, HTTP/WebSocket server, and a
# compliance test suite, for free.One event protocol for every streaming engine
Real-time ASR is the most fragmented part of the ecosystem: some engines rewrite interim results, some never revise a token, some merge segments after a second pass. Standard ASR unifies all of it under six event types with explicit stability guarantees — designed against a survey of 30+ real engine APIs.
Interim text may change with every event until the segment goes final.
The right panel runs the documented core reduce — the same logic as reduce_event in the streaming guide.
The plumbing, standardized
Audio negotiation
Hand over a path, bytes, an array, or a URL. The standard layer negotiates the form your engine accepts, deterministically.
Capability discovery
engine.supports("batch.word_timestamps") answers before you call. Fail-closed: an absent declaration means unsupported.
Structured diagnostics
Lossy conversions and degraded paths surface as structured diagnostics. Silent wrong results are the cardinal sin.
Compliance suite
standard-asr compliance run verifies an implementation against the specification, one command.
Reference server
Expose any compliant engine over HTTP and WebSocket, so non-Python applications get the same capabilities.
Plugin discovery
Entry-point based: install a plugin and it appears in discover_models(). Zero application-side configuration.
Who is it for?
Application developers
One integration that works with every compliant engine. Zero vendor lock-in. Automatic discovery of whatever the user installs.
Discover & UseASR engine developers
Focus on the model. Implement one interface and get a CLI, a reference server, and a compliance test suite for free.
Adapt an ASR SystemEnd users
Install the plugin whose engine fits your language or domain and use it immediately, without waiting for the app author to add support.
Quickstart