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.
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- A reviewer listens to a cluster’s turns and compares them with the official record for that day.
- They attach the name the record supports. A second reviewer checks it before it shows.
- The chip changes from “Unconfirmed speaker” to the name, party letter and district.
- Citations made earlier stay valid. They show the name from then on.
- A wrong name is fixed as a correction and listed in the corrections log.
How search works
- Text in quotes matches those words in that order. Unquoted words must all be said by one speaker, within 8 words of each other, in any order.
- Case, accents and apostrophes are ignored (don’t = dont). Hyphens split words (COVID-19 = covid 19).
- Filler words (uh, um, er, ah, hmm) are dropped. Spelled-out numbers aren’t converted (twenty doesn’t match 20), and there is no fuzzy matching for misspellings.
- A match never spans two speakers. Each time the words were said is its own instance; overlapping instances form one passage.
- Videos come newest first. Counts are exact until 300 matching videos have been scanned; past that, they are shown as “at least”.
- A query can be up to 200 characters and 12 words. No results is an empty list, never an error.
- An instance plays from 5 seconds before the words. A video whose timing hasn’t been checked against the transcript isn’t played here; you can still read and cite it.
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.
| What | Value | Label | Scope | Source |
|---|---|---|---|---|
| Audio length, Sep 16, 2026 session | 47,296 s (13.14 h) | Measured | at ingest | docs/ingest.md, Measured so far |
| Audio length, Sep 17, 2026 session (pro forma) | 643.6 s | Measured | at ingest | docs/ingest.md, Measured so far |
| Words transcribed | 103,849 (Sep 16) · 333 (Sep 17) | Exact | count of indexed words | docs/ingest.md, Measured so far |
| Speaker labels | 198 (Sep 16, 27 chunks) · 3 (Sep 17) | Exact | count of clusters; not people | docs/ingest.md, Measured so far |
| Transcription speed, Sep 16 | 397 s, 119× real time | Measured | one run, Apple Silicon Mac, MLX | docs/ingest.md, Measured so far |
| Speaker separation speed, Sep 16 | 1,795 s, 26.4× real time | Measured | one run, pyannote on MPS | docs/ingest.md, Measured so far |
| Difference from the live House captions, Sep 16 | 7.7% word error rate | Measured | against real-time stenography, so it mixes our errors with the captioner’s; a drift alarm, not an accuracy figure | docs/ingest.md, Measured so far |
| Word error rate against a hand-edited transcript | 15.6% over 3,013 words | Measured | a 15.6-minute, two-speaker interview with cross-talk, not House floor audio | docs/research/asr-bakeoff-2026-10-03.md |
| “nation” in the Sep 16 session | 35 instances, 32 passages | Measured | Oct 5, 2026, local index, revision 1 | docs/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 yet | Open | House floor, one rater | docs/ingest.md, Gate G1 |
| Linking speaker labels across 30-minute chunks | not built yet | Open | — | docs/ingest.md |