87 lines · 2.6 KB
json
| 1 | [ |
| 2 | { |
| 3 | "start": 0.8, |
| 4 | "end": 4.99, |
| 5 | "speaker": "tape_op", |
| 6 | "text": "This is what a Space looks like after space-tape runs." |
| 7 | }, |
| 8 | { |
| 9 | "start": 5.1, |
| 10 | "end": 13.08, |
| 11 | "speaker": "tape_op", |
| 12 | "text": "A replay is just a file. You do not need a browser, and you do not need an X API key." |
| 13 | }, |
| 14 | { |
| 15 | "start": 13.08, |
| 16 | "end": 21.52, |
| 17 | "speaker": "second_mic", |
| 18 | "text": "Whisper heard the words. Hydra tagged who was unmuted. About once a second, X writes that into the audio as ID3." |
| 19 | }, |
| 20 | { |
| 21 | "start": 21.52, |
| 22 | "end": 29.66, |
| 23 | "speaker": "tape_op", |
| 24 | "text": "HydraAudioLevel slot zero is the host. Everyone else on stage sits in HydraParticipants." |
| 25 | }, |
| 26 | { |
| 27 | "start": 29.66, |
| 28 | "end": 37.99, |
| 29 | "speaker": "second_mic", |
| 30 | "text": "If you remux to wav before you parse, those tags are gone. The transcript still has words. It has no speakers." |
| 31 | }, |
| 32 | { |
| 33 | "start": 37.99, |
| 34 | "end": 49.03, |
| 35 | "speaker": "tape_op", |
| 36 | "text": "So the pipeline is: yt-dlp, keep the mpegts, parse Hydra, then convert a copy for Whisper." |
| 37 | }, |
| 38 | { |
| 39 | "start": 49.03, |
| 40 | "end": 57.1, |
| 41 | "speaker": "second_mic", |
| 42 | "text": "Each Whisper cue gets the Hydra region covering its midpoint. That is the whole diarizer. We are not guessing voices." |
| 43 | }, |
| 44 | { |
| 45 | "start": 57.1, |
| 46 | "end": 66.93, |
| 47 | "speaker": "tape_op", |
| 48 | "text": "Overlaps stay labeled as both. The mix is one channel. Do not pretend Whisper can split two people talking at once." |
| 49 | }, |
| 50 | { |
| 51 | "start": 66.93, |
| 52 | "end": 77.26, |
| 53 | "speaker": "second_mic", |
| 54 | "text": "The product is cues.json. Start, end, speaker, text. Plus transcript.md and a small mp3 for a player." |
| 55 | }, |
| 56 | { |
| 57 | "start": 77.26, |
| 58 | "end": 85.51, |
| 59 | "speaker": "tape_op", |
| 60 | "text": "Always keep the original X URL. Playback on a site is a convenience. X is the source." |
| 61 | }, |
| 62 | { |
| 63 | "start": 85.51, |
| 64 | "end": 94.0, |
| 65 | "speaker": "second_mic", |
| 66 | "text": "Public recorded Spaces only. Replays expire, so the download is the archive. Listeners never appear in the tags." |
| 67 | }, |
| 68 | { |
| 69 | "start": 94.0, |
| 70 | "end": 105.63, |
| 71 | "speaker": "tape_op", |
| 72 | "text": "If yt-dlp finds no media, stop. The Space was not recorded, or the replay is gone. This tool does not join live." |
| 73 | }, |
| 74 | { |
| 75 | "start": 105.63, |
| 76 | "end": 114.05, |
| 77 | "speaker": "second_mic", |
| 78 | "text": "Drop a raw replay on the player page to parse Hydra in the browser. Nothing is uploaded. The file already had the speaker list." |
| 79 | }, |
| 80 | { |
| 81 | "start": 114.05, |
| 82 | "end": 120.81, |
| 83 | "speaker": "tape_op", |
| 84 | "text": "That is space-tape. Fork it. Run it on a shell. Host the git as a page." |
| 85 | } |
| 86 | ] |