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.
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
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
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.
Clean audio hides the gap
Every provider looks alike on single-speaker clips. On real meetings with speaker labels, they spread apart.
When people talk over each other, most models drop the words. A5S Async keeps them.
Every AirCaps model runs through the AirCaps API and is benchmarked against the leading providers.
Independent leaderboards and public datasets, with the code, raw API responses and scores published for every result.
Public meeting benchmarks where A5S Async v1 has the lowest error: NOTSOFAR-1, AMI, CHiME-6, AISHELL-4 and AliMeeting.
Fewer errors than the next-best model across 5 public meeting benchmarks, in English and Mandarin.
Dataset recipes, provider adapters, raw API responses and scores are on GitHub and Hugging Face.
Benchmarks on GitHubAccurate transcripts through kitchen noise, street noise and crosstalk, so the LLM acts on what the caller actually said.
Streaming transcription, speaker labels and speaker ID behind a single integration.
Transcripts with speaker labels that keep the interruptions, asides and quick replies other models drop.
Captions that hold up when people talk over each other, credited to the right speaker.
Open harnesses, raw outputs and provider adapters for every result we publish.
Human-level voice AI
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.
Accurate through noise, distant microphones, crosstalk and many speakers.
Speaker labels, diarization and speaker ID from one family of models.
Models and inference engine built together: an hour-long meeting comes back in about 10 seconds.
Code, data recipes, raw outputs and scores for every result we publish.
Batch and streaming transcription, diarization and speaker ID over REST and WebSocket.
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']}")
import asyncio, json, os, websockets
async def main():
headers = {"Authorization": f"Bearer {os.environ['AIRCAPS_API_KEY']}"}
async with websockets.connect("wss://api.aircaps.com/v1/realtime",
additional_headers=headers) as ws:
await ws.send(json.dumps({
"type": "start", "providers": ["a5sv2"],
"encoding": "pcm_s16le", "sample_rate": 16000, "channels": 1,
"language": "en", "diarization": True,
}))
# send 20 ms PCM frames, then {"type": "finish"}
async for message in ws:
event = json.loads(message)
if event["type"] == "transcript" and event["is_final"]:
print(event["text"])
asyncio.run(main())
curl https://api.aircaps.com/v1/transcripts \
-H "Authorization: Bearer $AIRCAPS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "a5s-async-v1",
"audio_url": "https://example.com/meeting.mp3",
"webhook_url": "https://your.app/hooks/aircaps"}'
# → {"id": "tr_01k6z...", "status": "queued", ...}
# the webhook fires when the transcript is ready
Every account includes 5 free hours. Volume pricing for teams at scale.
Model notes with full methods, every chart's data and the code to rerun it.
Experiments from the AirCaps Voice Lab on noise, competing voices and overlapping speakers.
Run AirCaps on your own audio. Every account includes 5 free hours.