You said Saoirse.
It heard Sirsha.
Dictation gets everyday words right and fails on the ones that are slowest to type: names, tools, jargon. Quorum sends each recording to AssemblyAI four ways at once, each copy altered slightly, and lets the words vote. On real speech it makes 45% fewer errors than sending the recording as it is.
fewer word errors than sending the recording untouched
word error rate on 20 real recordings, against 30.5% for untouched audio
the wait of a single call. All four lanes are sent at the same time.
The words that matter most are the ones it gets wrong.
A dictation model handles "check the overlay" perfectly. It stumbles on Saoirse, kubectl, Ngozi: the colleague's name, the tool you use every day. Those are exactly the words you'd otherwise type by hand, so each miss costs the most.
The usual fix is to tell the model what to expect. We tried that first. AssemblyAI's Dictation beta accepts vocabulary hints and ignores them: the output is byte-identical with or without, even on the exact word you hinted. So Quorum takes a different route. Instead of telling the model what to hear, it lets the model hear the same sentence more than once.
One recording, four ears, one vote.
Transform
Your clip is copied four ways: untouched, with faint noise, padded with 200 ms of silence, and slowed by 5%. You'd barely hear the difference. The model does.
Transcribe in parallel
All four copies go to AssemblyAI at the same moment, so you wait about as long as for one. A lane that times out, or answers in the wrong language, sits out.
Vote
The transcripts are lined up word by word. Where they disagree, the phrase with the most support and the highest confidence wins. It can pick among what the lanes heard, but it never invents a word.
On real speech, the vote beats every single lane.
Word error rate, lower is better. 20 real recordings, one speaker, a laptop mic, each sentence loaded with rare names and niche tools. Quorum ties the best lane on 19 of 20 clips, but the best lane changes from clip to clip, so across the set it beats any fixed choice. Adding a list of names you're known to use takes it to 16.1%. The lanes were picked with a screen on this same audio that never looked at accuracy. Even so, treat these numbers as optimistic until they hold for new voices.
Three things the API documentation doesn't tell you.
Vocabulary hints are accepted, and ignored.
keyterms, prompt, word_boost and invented field names all return 200. The transcript doesn't change, even for the exact word you hinted. A success code proved nothing. Comparing transcripts did.
It switches language on its own.
On an accented voice, the model sometimes answers in Devanagari script, spelling the English phonetically. No language setting stops it. Quorum notices when a lane has switched scripts and leaves it out of the vote.
जाओ मारा फ्लैग डी रिग्रेशन इन डी क्यूब फ्लो पाइपलाइन
“Xiomara flagged a regression in the Kubeflow pipeline”, as the API returned it
It's deterministic.
The same audio gives the same words and the same confidences, every time. So when the four lanes disagree, the transform is the cause, not chance. That's the property the whole idea rests on.
Already using AssemblyAI? Change one URL.
Quorum accepts the Dictation API's own request, with the same audio field and the same headers, and replies in the same format. An app built on AssemblyAI switches over by changing its address, and nothing else. Your key is passed straight through, so each caller pays for their own calls.
Same command. Only the host changes.
- curl https://dictation.assemblyai.com/transcribe \
+ curl http://localhost:5173/transcribe \
-H "Authorization: $ASSEMBLYAI_API_KEY" \
-H "X-AAI-Model: universal-3-5-pro" \
-F "audio=@clip.wav;type=audio/wav"
What comes back, from a real recording
The speaker said "Siobhan". Quorum's reply has the same fields as the API's
(text, words, confidence, audio_duration_ms)
plus a quorum block your app can ignore.
Hear it on your own voice.
Hold a key, say a sentence with a name in it, and watch four transcripts settle into one.