tooling/meeting-notes
Find a file
Joseph 7f1ce079f0 fix(pipeline): split STT/diarize into separate cached stages, fix pyannote 4.x itertracks
STT and diarization were a single "transcribe" stage — a diarization
segfault (uncatchable SIGSEGV on ROCm gfx1151) lost completed STT
results. Now STT saves to stt-raw.json independently, and diarization
gracefully degrades to single-speaker output on failure.

Also fixes pyannote 4.x DiarizeOutput.itertracks → getattr for
speaker_diarization Annotation, and pre-loads audio as waveform dict
via torchaudio.load() to bypass broken torchcodec.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 16:32:04 -05:00
src fix(pipeline): split STT/diarize into separate cached stages, fix pyannote 4.x itertracks 2026-03-26 16:32:04 -05:00
tests feat: add Lemonade API backend for STT on ROCm (avoids PyTorch segfault) 2026-03-25 13:14:59 -05:00
.gitignore chore: add .gitignore, remove cached files 2026-03-25 12:46:40 -05:00
frame-0001.png feat: add Lemonade API backend for STT on ROCm (avoids PyTorch segfault) 2026-03-25 13:14:59 -05:00
frame-0002.png feat: add Lemonade API backend for STT on ROCm (avoids PyTorch segfault) 2026-03-25 13:14:59 -05:00
frame-0003.png feat: add Lemonade API backend for STT on ROCm (avoids PyTorch segfault) 2026-03-25 13:14:59 -05:00
pyproject.toml feat: project scaffold + stage status tracking module 2026-03-25 12:21:28 -05:00
README.md docs: add diarize subcommand to README, remove empty templates dir 2026-03-25 12:46:06 -05:00

meeting-notes

Local pipeline for converting meeting video recordings into structured, speaker-labeled notes with visual context.

Requirements

  • Python 3.10+
  • ffmpeg
  • Tesseract OCR
  • AMD GPU with ROCm 7.x (for STT/diarization)
  • HuggingFace token (for pyannote model access)
  • Claude Code (for summarization step)

Install

git clone http://git.pctbin.com/PCT-INTERNAL/tooling/meeting-notes
cd meeting-notes
pip install -e ".[gpu,ocr,dev]"
export HF_TOKEN="your-token-here"

Usage

# Full pipeline
meeting-notes process meeting.mp4 --transcript teams-export.vtt

# Without Teams transcript (anonymous speakers)
meeting-notes process meeting.mp4

# With manual speaker names
meeting-notes process meeting.mp4 --speakers "SPEAKER_00=Darren,SPEAKER_01=Joseph"

# Then summarize with Claude Code
cd meeting-notes/
claude
> Read prompt.md and follow its instructions

Subcommands

meeting-notes extract-audio meeting.mp4 --output audio.wav
meeting-notes transcribe audio.wav
meeting-notes diarize audio.wav
meeting-notes extract-frames meeting.mp4 --output slides/ --threshold 0.3
meeting-notes ocr slides/
meeting-notes validate transcript.json teams.vtt