Methodology

How GovTube works

Where the video comes from, how it becomes searchable words, and what we have and haven’t measured. If something here is wrong, it goes in the corrections log.

Where the video comes from

Today the archive holds U.S. House floor sessions, taken from the House Clerk’s official floor video. Floor video is a work of the U.S. Government (17 U.S.C. 105), so it is in the public domain; House rules still limit some uses. It also holds some U.S. Senate committee hearings, taken from the Senate’s own hearing video. Senate rules say recordings of Senate proceedings may not be used in a political campaign.

Before anything is fetched, the source is checked against GovTube’s source registry: who publishes it, what its terms allow, and which uses are restricted. Video on platforms such as YouTube is only ever shown through the platform’s own player, never downloaded or transcribed. The words keep the source’s clock, so a time in GovTube is the same time in the official video.

How the words are transcribed

The session audio is cut into 30-minute chunks with a 2-second overlap. Phonon-2 turns speech into words with a start and end time for each word. pyannote 3.1 separates the speakers into voice clusters (S0, S1, …). Both run on our own machine; no transcription service sees the audio.

This is a machine transcript and it contains errors, most often where people talk over each other and in proper names. Phonon-2 doesn’t report how sure it is of each word, so these sessions carry no low-confidence flags yet. Check the words against the video before you quote them.

The House’s and the Senate’s live captions are compared with each transcript as a rough agreement check only: they are typed in real time, in capitals, and lag the speech.

How speakers get confirmed

Every speaker starts as a voice cluster with no name. Only a person can confirm a name, and only by checking it against the official record. Party is shown as a letter, never as a colour.

In House floor video, some names are matched from the name shown on screen. They appear with the words “matched from on-screen name, not reviewed” until a person checks them. The speaker filter lists confirmed names only.

S10 Unconfirmed speakerJane Placeholder · D · XX-01(fictional example)

Clusters don’t yet link across the 30-minute chunks, so the same person gets a new label in each chunk. A 13-hour session can show far more labels than people (198 on Sep 16).

The review, step by step

Proposed process · pending confirmation
  1. A reviewer listens to a cluster’s turns and compares them with the official record for that day.
  2. They attach the name the record supports. A second reviewer checks it before it shows.
  3. The chip changes from “Unconfirmed speaker” to the name, party letter and district.
  4. Citations made earlier stay valid. They show the name from then on.
  5. A wrong name is fixed as a correction and listed in the corrections log.

Titles

Titles are neutral and follow one pattern: Speaker — Event — Date, as the official record gives them. GovTube doesn’t describe what was said or add labels to it. A title in the archive today:

Corrections and citations

Every instance has a citation link. When a transcript is corrected, it gets a new revision number, the change is listed in the corrections log, and every existing link is checked again:

  • Exact: the link still matches the current transcript.
  • Re-anchored or moved: the same words were found again, so the link and timecode still point at them.
  • Replaced: the correction changed the cited words. The link keeps the original quote and points to what is there now.

Measured so far

Exact means counted. Measured means observed once, in the scope given. Open means not known yet.

WhatValueLabelScopeSource
Audio length, Sep 16, 2026 session47,296 s (13.14 h)Measuredat ingestdocs/ingest.md, Measured so far
Audio length, Sep 17, 2026 session (pro forma)643.6 sMeasuredat ingestdocs/ingest.md, Measured so far
Words transcribed103,849 (Sep 16) · 333 (Sep 17)Exactcount of indexed wordsdocs/ingest.md, Measured so far
Speaker labels198 (Sep 16, 27 chunks) · 3 (Sep 17)Exactcount of clusters; not peopledocs/ingest.md, Measured so far
Transcription speed, Sep 16397 s, 119× real timeMeasuredone run, Apple Silicon Mac, MLXdocs/ingest.md, Measured so far
Speaker separation speed, Sep 161,795 s, 26.4× real timeMeasuredone run, pyannote on MPSdocs/ingest.md, Measured so far
Difference from the live House captions, Sep 167.7% word error rateMeasuredagainst real-time stenography, so it mixes our errors with the captioner’s; a drift alarm, not an accuracy figuredocs/ingest.md, Measured so far
Word error rate against a hand-edited transcript15.6% over 3,013 wordsMeasureda 15.6-minute, two-speaker interview with cross-talk, not House floor audiodocs/research/asr-bakeoff-2026-10-03.md
“nation” in the Sep 16 session35 instances, 32 passagesMeasuredOct 5, 2026, local index, revision 1docs/search-semantics.md, Passages
Word-start timing: at least 95% within 250 ms of the true start (gate G1)200 words sampled Oct 4; not scored yetOpenHouse floor, one raterdocs/ingest.md, Gate G1
Linking speaker labels across 30-minute chunksnot built yetOpen—docs/ingest.md