Spoken vs Whisper + Pyannote: skip the pipeline

The Whisper + Pyannote diarization pipeline is a popular DIY approach to podcast transcription. For published podcasts, Spoken replaces every step with one call.

Last updated June 2026

The Whisper + Pyannote pipeline is six steps you have to maintain. Spoken replaces it with one API call for published podcasts. Whisper transcribes audio, Pyannote runs speaker diarization, and you stitch the outputs together with a third pass to map "Speaker 0" and "Speaker 1" to real names. Spoken handles all of that and returns Markdown with real speaker names already attached.

The DIY pipeline

If you've built a podcast transcription pipeline before, this list is familiar:

  1. Locate the audio file: find the .mp3 URL for the episode
  2. Download and convert: pull 50–100 MB, normalize the sample rate
  3. Run Whisper: local model or paid API ($0.006/min)
  4. Run Pyannote diarization: separately, to get speaker turns
  5. Align outputs: match Whisper segments to Pyannote speaker labels, which rarely line up exactly
  6. Identify speakers: a second LLM pass to map "Speaker 0" and "Speaker 1" to real names from context
  7. Format and store: convert to Markdown, manage storage and cache invalidation

That is a week of plumbing for the first version, then maintenance for as long as you run it. Each step has its own failure modes: GPU availability, model versions, timing misalignment, speaker counts.

Side-by-side comparison

Whisper + Pyannote (DIY)Spoken
SetupMulti-step pipeline, GPU or paid APIOne curl command, no setup
Cost per 1-hour episode~$0.36 Whisper API + diarization + your time$0.08–$0.15 flat
Speaker names"Speaker 0", "Speaker 1", mapped by youReal names included
Timing alignmentManual; the two outputs are not aligned by defaultAlready aligned
LatencyAudio length + processing minutesUnder 30 seconds
OutputWhatever you buildMarkdown with bold names + timestamps
MaintenanceOngoing: model updates, infra, failuresNone
Works on your own audioYesNo
Works on published podcastsYes, after you fetch and host the audioYes, in one API call

When DIY is still the right call

There are real reasons to run the pipeline yourself:

  • You're transcribing your own audio (meetings, recordings, internal content), not published podcasts
  • You need full control over the model and parameters (custom vocabulary, fine-tuned models, custom languages)
  • You're processing audio at a scale where running models locally is cheaper than per-call pricing
  • You have data residency or compliance requirements that prevent calling external APIs

When to skip it

For published podcasts, the pipeline reproduces work that has already been done. The transcripts exist, and Spoken returns them in a usable shape.

# The same result, for a published episode
curl -H "x-api-key: pt_demo" https://spoken.md/transcripts/{episode_id}
# Markdown with real names and timestamps

FAQ

Is Spoken using Whisper under the hood?

Spoken serves transcripts that have already been produced and published by the shows themselves, then adds speaker name detection and clean Markdown formatting on top. No on-demand Whisper transcription happens per request.

Why is Spoken cheaper than running Whisper myself?

Spoken doesn't transcribe audio per request. It serves cached, processed transcripts. The cost is one fetch per episode rather than minutes of GPU or API time, plus the work of running and aligning Pyannote.

Can Whisper give me real speaker names?

Not directly. Whisper transcribes words; speaker identification requires a separate diarization model like Pyannote, and even then the output is anonymous ("Speaker 0", "Speaker 1"). Mapping those to real names from context typically requires another LLM call.

What about open-source pipelines like WhisperX or pyannote-whisper?

They're solid options if you need full control or are running at very high volume. For published podcasts at moderate volume, the per-episode cost and zero-maintenance trade-off usually favors Spoken.

Does Spoken work on YouTube podcast videos?

You can search by pasting a Spotify, YouTube, or other podcast app URL — Spoken matches it back to the podcast episode and returns the transcript.

TL;DR: Run Whisper + Pyannote when you need the control. For published podcasts, Spoken replaces the pipeline with one call and includes the speaker names.

"I used Spoken to add every My First Million episode to my knowledge base, with a cron to pull new ones. Now I can enjoy the podcast on a run, then chat with Claude about it later — every episode saved and accessible in my Claude sessions."
Marcus Taylor

Thousands of transcripts fetched by developers building summarizers, RAG pipelines, and podcast tools

No signup needed: the key pt_demo works on any endpoint.

Price my show's archive

$0.10 per transcript. Credits never expire.

Read next