How TalkMuch measures a conversation

What the percentage actually means, how we work out who the host is, and where the measurement is weakest.

Every number on this site comes out of the same pipeline: fetch the episode audio, transcribe it, separate the voices, decide which voice is the host, remove the advertising, then measure what is left. Only the transcription step costs money. The interesting part, and the part that is genuinely ours, is deciding which speaker is the host, because that is the one thing the transcription service cannot tell us.

The problem nobody warns you about

Speaker diarization gives you speakers labelled A, B and C. It does not give you names. It has no idea which of them is the host, and for a site whose entire purpose is "how much did the host talk", getting that backwards inverts every number on the page.

The obvious approach is to use the transcription service's own speaker identification, which tries to attach real names. We tried it and stopped using it. On interview shows it kept anchoring the host's name to whoever spoke over the intro jingle, and it was wrong close to half the time. The failure is structural rather than random: on plenty of episodes the guest's voice gets clustered together with the cold open, so the confident, named answer it hands back is confidently inverted.

Anchoring on the ad read

The idea that fixed it is simple. On a host-read show, the host reads the sponsor copy. Not the guest, not a narrator: the host. So instead of asking who sounds like the host, we ask who is holding the microphone during the adverts, and that speaker is the host.

This works where the positional heuristics fail because it is grounded in what is being said rather than when it is said. The intro-jingle failure mode has no effect on it at all: whichever cluster the cold open landed in, the sponsor read still belongs to the host.

The anchor refuses to answer unless it is confident:

  • The episode must contain at least 20 seconds of identified ad copy. Below that we are reading noise.
  • One speaker must hold at least 65% of that ad time. Two people trading sponsor lines is not evidence.
  • The show must be configured as host-read. Some podcasts run programmatically inserted ads voiced by an actor who never appears in the episode, and on those the anchor is meaningless, so it is switched off entirely.

When none of those hold, it returns nothing and the next method gets a turn. A detector that declines to guess is worth more than one that is confidently wrong half the time, which is exactly the lesson the named-speaker experiment taught us.

How we validated it before trusting it

A heuristic that sounds right is not evidence. Before enabling the ad anchor on any show, we replayed it over every episode of that show we had already corrected by hand, and required that on every single one it either agreed with the human answer or stayed silent. One contradiction disqualified the whole podcast.

Because transcripts are cached, that replay cost nothing: we could re-resolve entire back catalogues as many times as we wanted without paying to transcribe anything again. That is the reason the validation could be exhaustive rather than a spot check.

Shows that failed, or that were too ambiguous to call, simply did not get the anchor. Today it is enabled on 14 of the 27 podcasts we track, and it is the single largest source of host identifications on the site.

The full ladder

The anchor is one rung. Each method runs in turn and the first one that produces an answer wins, so the strongest available evidence decides. In order:

  1. One speaker only. A solo episode. Nothing to disambiguate.
  2. Who reads the ads. The anchor described above.
  3. A guest opener. Somebody in the first few exchanges says "thanks for having me", so they are the guest and the other speaker is the host. A handful of narrative shows quote that phrase inside a teaser, so they switch this off.
  4. The host introduces themselves. Matched against phrases configured per show, because every podcast says it differently.
  5. Who never says the host's name. Guests say the host's name; hosts rarely say their own. Inverted, this identifies the host by absence.
  6. Who asks the most questions. The last resort, and treated as such.

Across the 807 episodes currently published from 27 shows, this is how the host was actually identified:

How the host was identifiedEpisodesShare
Who reads the ads29336.3%
Host introduces themselves28935.8%
Who asks the most questions (fallback)658.1%
Guest opener ("thanks for having me")485.9%
Who never says the host name324%
Who never says the co-host name192.4%
Co-host introduces themselves10.1%
Corrected by hand after review607.4%

Every identification carries a confidence score. The median across the catalogue is 0.92, and 85.3% of episodes were resolved at 0.9 or above. The 67 episodes below 0.75 are flagged automatically and reviewed by hand.

What the percentage actually measures

The host share is a percentage of conversation, not of episode length. Before anything is counted we remove:

  • The pre-roll. The intro block before the episode proper begins, detected from per-show marker phrases. We only look for those markers in the first five minutes, because the same phrases turn up in the end credits and matching them there would truncate the entire episode.
  • Every ad break. Not just the pre-roll: mid-roll, post-roll and dynamically inserted ads too, found by what they say rather than where they sit. Sponsor reads are usually pure host monologue, so leaving them in would inflate every host's share.

So an 80/20 split means that of the actual talking, the host did 80% of it. Silence, music and advertising are not in the denominator.

On panel shows the individual hosts are measured separately and then combined, with a guard against a mislabelled speaker inheriting an absent host's name, and a floor below which a stray fragment is folded back into the hosts rather than displayed as a phantom guest.

Where this is weakest

The honest section. These are known limitations, not hypothetical ones.

  • Speaker separation makes mistakes, and they are not random. The common one is a host monologue or an ad read being attributed to the guest. It inflates guest talk time and, worse, inflates guest question counts.
  • Question counts overstate real questions. We count question marks in the transcript, and a comedian telling a story produces a great many of them: "and I was like, what?" is punctuated as a question but nobody asked anything. On storytelling shows the rhetorical rate runs somewhere between 60% and 80%, so every batch gets reviewed by hand and the rhetorical ones are removed before the ratio is published.
  • The question-count fallback is unreliable. When it is the only method left, the episode is by definition one where nothing else fired. On an evenly balanced conversation it is close to a coin flip, which is why it carries the lowest confidence on the site and why those episodes are flagged for review.
  • Some shows defeat us. A host who says their own name constantly breaks the name heuristic. Narrative and documentary formats blur the host and guest roles until the question stops being meaningful. Where a show is structurally unmeasurable we would rather leave it out than publish a number we do not believe.
  • Advertiser detection is good, not perfect. It finds sponsor blocks by phrasing and known brand names, which means a novel sponsor read in an unusual format can slip through and stay in the talk-time count.

Corrections

Every episode is checked automatically against a set of tripwires: low confidence, a host share high enough to look suspicious, a question ratio low enough to suggest an inversion, or resolution by the weakest fallback. Anything that trips one is logged and reviewed, and the log accumulates across runs, so a show that keeps failing the same way tells us to fix its configuration rather than patch episodes one at a time.

Corrections made by hand are recorded as such, which is why they appear as their own row in the table above. If you think a figure is wrong, tell us and we will re-check it against the stored transcript.