AirCaps Voice Lab
New A5S Async v1: 29% fewer errors on real meetings

Voice AI that hears what other models miss.

Speech-to-text, speaker diarization and speaker ID that stay accurate through noise, distance, crosstalk and many speakers. One API, with an open benchmark behind every result.

Every account includes 5 free hours

Hear the difference.

Real meetings from public benchmarks. Press play, choose another provider, and follow both transcripts word by word against the human reference.

Loading the listening demo…

Benchmarked head to head against

  • AssemblyAI
  • Deepgram
  • ElevenLabs
  • Google
  • Meta
  • Microsoft
  • NVIDIA
  • OpenAI
  • xAI

AI learned to talk. We're teaching it to listen.

Voice agents, notetakers and captions all depend on one step: hearing people correctly. Real speech makes that hard. People interrupt and talk at once, speak through noise and far from the microphone.

Most speech models are graded on clean audio, so their mistakes surface in production, and every step after the transcript inherits them. AirCaps models are built and tested on the hard audio.

What other models miss

When people talk over each other, most models drop the words. A5S Async keeps them.

7.9%of words dropped by A5S Async
9.5–39.8%dropped by the 8 other providers
Each bar is 2% of the words people saidLeft out of the transcript

Measured in the open.

Independent leaderboards and public datasets, with the code, raw API responses and scores published for every result.

5 of 5

Public meeting benchmarks where A5S Async v1 has the lowest error: NOTSOFAR-1, AMI, CHiME-6, AISHELL-4 and AliMeeting.

29%

Fewer errors than the next-best model across 5 public meeting benchmarks, in English and Mandarin.

Rerun it

Dataset recipes, provider adapters, raw API responses and scores are on GitHub and Hugging Face.

Benchmarks on GitHub

Built for products that have to listen.

Voice agents

Hear the caller, not the background.

Accurate transcripts through kitchen noise, street noise and crosstalk, so the LLM acts on what the caller actually said.

Voice-agent platforms

One API your customers can switch on.

Streaming transcription, speaker labels and speaker ID behind a single integration.

Meeting notetakers

Every speaker, every aside.

Transcripts with speaker labels that keep the interruptions, asides and quick replies other models drop.

Media and captioning

Captions that keep up.

Captions that hold up when people talk over each other, credited to the right speaker.

Evaluation and benchmarking

Results you can rerun.

Open harnesses, raw outputs and provider adapters for every result we publish.

Something else

Building with voice? Talk to us.

Talk to sales

Human-level voice AI

Voice AI that listens as well as people do.

People follow a conversation through noise, distance and crosstalk without effort. That is the bar for every AirCaps model, and we measure against it in public.

Hears what others miss

Accurate through noise, distant microphones, crosstalk and many speakers.

Knows who's speaking

Speaker labels, diarization and speaker ID from one family of models.

Fast and efficient

Models and inference engine built together: an hour-long meeting comes back in about 10 seconds.

Measured in the open

Code, data recipes, raw outputs and scores for every result we publish.

One API. A few lines of code.

Batch and streaming transcription, diarization and speaker ID over REST and WebSocket.

  • Speaker labels and word timestamps on every transcript
  • Live transcripts over WebSocket, with optional live speaker labels
  • Subtitles, webhooks and names from enrolled voices
  • No training on your data
import os, time, requests

API = "https://api.aircaps.com/v1"
H = {"Authorization": f"Bearer {os.environ['AIRCAPS_API_KEY']}"}

job = requests.post(f"{API}/transcripts", headers=H, json={
    "model": "a5s-async-v1",
    "audio_url": "https://example.com/meeting.mp3",
}).json()

while job["status"] in ("queued", "processing"):
    time.sleep(3)
    job = requests.get(f"{API}/transcripts/{job['id']}", headers=H).json()

for u in job["utterances"]:
    print(f"[{u['start']:.1f}s] {u['speaker']}: {u['text']}")

Pay per audio hour.

Separating voices from noise.

Experiments from the AirCaps Voice Lab on noise, competing voices and overlapping speakers.

Background noiseSpeech pulled out of a loud, noisy mixture.
Competing voicesOne target voice kept, nearby talkers suppressed.
Overlapping speakersSeveral voices split into speaker-consistent streams.
More demos
Home roboticsA voice interface that hears its user over the household.
Wake wordTriggered by the user, not by background speech.
Multi-user machinesKnows which of several people is speaking.
In-car voiceThe driver heard over passengers and road noise.

Hear what other models miss.

Run AirCaps on your own audio. Every account includes 5 free hours.