Phase 2: Speech-to-Text (ASR) · 40 min · Python · Deepgram SDK · AssemblyAI SDK
Streaming vs Batch ASR: Partial vs Final Transcripts
Streaming partials are what make voice agents feel real. Batch is for after the call.
Hiring signal: Understanding streaming vs batch ASR and partial transcripts is essential for voice agent engineering.
What you will learn
- Explain the difference between streaming and batch ASR
- Understand partial vs final transcripts and how partials update
- Identify when to use streaming (voice agents) vs batch (post-call analysis)
- Reason about the streaming latency vs accuracy trade-off
The Problem
In a voice agent, ASR sends partial transcripts as the caller speaks. "I want to book a..." arrives as:
- Frame 10: "I"
- Frame 20: "I want"
- Frame 30: "I want to"
- Frame 40: "I want to book"
- Frame 50: "I want to book a flight" (final)
If you send the LLM on "I want to book a", you'll get a response about booking "a" (something). If you wait too long, you add latency. Knowing when to act is the endpointing problem — and it starts with understanding partial vs final transcripts.
The Concept
Streaming ASR Event Types
| Event | Description | When to Act |
|---|
Partial | Interim transcript, may change | Display only, don't act |
Final | Complete utterance, won't change | Send to LLM |
SpeechFinal | Speaker has finished (Deepgram) | Trigger LLM + TTS |
UtteranceEnd | Silence detected, utterance complete | Alternative trigger |
How Partials Work
Why shouldn't you send partial transcripts to the LLM?
Partials are always wrong
Batch ASR
Batch ASR processes the complete audio file at once:
- Input: Full audio file (WAV, MP3)
- Output: Complete transcript with timestamps
- Latency: 2-30 seconds (proportional to audio length)
- Use cases: Post-call transcription, voicemail, meeting recording
Streaming ASR
Streaming ASR processes audio in real-time:
- Input: Audio chunks (20ms frames via WebSocket)
- Output: Partial transcripts → final transcript
- Latency: 100-300ms TTFT
- Use cases: Voice agents, live captioning, real-time commands
When to Use Each
| Use Case | Mode | Why |
|---|
| Voice agent (real-time conversation) | Streaming | Need partials for UI + finals for LLM |
| Post-call transcription | Batch | Better accuracy, no latency constraint |
| Voicemail to text | Batch | Audio is complete, accuracy matters |
| Meeting recording | Batch | Full audio available, need diarization |
| Live captioning | Streaming | Must display text as people speak |
| Voice command (short) | Streaming | Need immediate response |
Unlock the full lesson
You've read the first 2 sections. The rest of this lesson covers Build It, Use It, Ship It, Evaluation, Key Terms, Common Pitfalls, Interview Framing — plus a hands-on lab, quiz, and project artifact.
Create a free account to unlock Phase 0 and Phase 1 of every course — no credit card.
Browse all courses · View pricing · DeVenture Academy