refactor (untested)
This commit is contained in:
99
README.md
99
README.md
@@ -104,7 +104,7 @@ python process_meeting.py samples/meeting.mkv --embed-images --interval 3 --diar
|
||||
python process_meeting.py samples/meeting.mkv --embed-images --scene-detection --scene-threshold 10 --diarize
|
||||
|
||||
# Iterate on scene threshold (reuse whisper transcript)
|
||||
python process_meeting.py samples/meeting.mkv --embed-images --scene-detection --scene-threshold 5 --skip-cache-frames --skip-cache-analysis
|
||||
python process_meeting.py samples/meeting.mkv --embed-images --scene-detection --scene-threshold 5 --skip-cache-frames
|
||||
|
||||
# Re-run whisper only
|
||||
python process_meeting.py samples/meeting.mkv --embed-images --skip-cache-whisper
|
||||
@@ -150,7 +150,6 @@ The tool automatically reuses the most recent output directory for the same vide
|
||||
- `--no-cache`: Force complete reprocessing
|
||||
- `--skip-cache-frames`: Re-extract frames only
|
||||
- `--skip-cache-whisper`: Re-run transcription only
|
||||
- `--skip-cache-analysis`: Re-run analysis only
|
||||
|
||||
This allows you to iterate on scene detection thresholds without re-running Whisper!
|
||||
|
||||
@@ -169,7 +168,7 @@ python process_meeting.py samples/meeting.mkv --embed-images --scene-detection -
|
||||
python process_meeting.py samples/meeting.mkv --embed-images --scene-detection --scene-threshold 10 --diarize
|
||||
|
||||
# Adjust scene threshold (keeps cached whisper transcript)
|
||||
python process_meeting.py samples/meeting.mkv --embed-images --scene-detection --scene-threshold 5 --skip-cache-frames --skip-cache-analysis
|
||||
python process_meeting.py samples/meeting.mkv --embed-images --scene-detection --scene-threshold 5 --skip-cache-frames
|
||||
```
|
||||
|
||||
### Example Prompt for Claude
|
||||
@@ -186,42 +185,17 @@ Please summarize this meeting transcript. Pay special attention to:
|
||||
|
||||
## Command Reference
|
||||
|
||||
```
|
||||
usage: process_meeting.py [-h] [--transcript TRANSCRIPT] [--run-whisper]
|
||||
[--whisper-model {tiny,base,small,medium,large}]
|
||||
[--diarize] [--output OUTPUT] [--output-dir OUTPUT_DIR]
|
||||
[--interval INTERVAL] [--scene-detection]
|
||||
[--scene-threshold SCENE_THRESHOLD]
|
||||
[--embed-images] [--embed-quality EMBED_QUALITY]
|
||||
[--no-cache] [--skip-cache-frames] [--skip-cache-whisper]
|
||||
[--skip-cache-analysis] [--no-deduplicate]
|
||||
[--extract-only] [--format {detailed,compact}]
|
||||
[--verbose] video
|
||||
`process_meeting.py --help` is the source of truth for flags — run it rather than
|
||||
relying on a copy here. The essentials:
|
||||
|
||||
Main Options:
|
||||
video Path to video file
|
||||
--diarize Use WhisperX with speaker diarization
|
||||
--embed-images Add frame file references to transcript (recommended)
|
||||
- `--diarize` — WhisperX with speaker diarization (needs a HuggingFace token)
|
||||
- `--embed-images` — reference frames in the transcript for the LLM (default behavior)
|
||||
- `--scene-detection` / `--scene-threshold N` — frame extraction (lower = more frames)
|
||||
- `--interval N` — fixed-interval extraction instead of scene detection
|
||||
- `--transcript-formats srt,vtt,…` — extra transcript formats alongside JSON
|
||||
- `--no-cache` / `--skip-cache-frames` / `--skip-cache-whisper` — cache control
|
||||
|
||||
Frame Extraction:
|
||||
--scene-detection Use FFmpeg scene detection (recommended)
|
||||
--scene-threshold Detection sensitivity 0-100 (default: 15, lower=more sensitive)
|
||||
--interval Extract frame every N seconds (alternative to scene detection)
|
||||
|
||||
Caching:
|
||||
--no-cache Force complete reprocessing
|
||||
--skip-cache-frames Re-extract frames only
|
||||
--skip-cache-whisper Re-run transcription only
|
||||
--skip-cache-analysis Re-run analysis only
|
||||
|
||||
Other:
|
||||
--run-whisper Run Whisper (without diarization)
|
||||
--whisper-model Whisper model: tiny, base, small, medium, large (default: medium)
|
||||
--transcript, -t Path to existing Whisper transcript (JSON or TXT)
|
||||
--output, -o Output file for enhanced transcript
|
||||
--output-dir Directory for output files (default: output/)
|
||||
--verbose, -v Enable verbose logging
|
||||
```
|
||||
For batches, prefer `make batch IN=<dir>` (see [`INDEX.md`](INDEX.md)).
|
||||
|
||||
## Tips for Best Results
|
||||
|
||||
@@ -238,10 +212,6 @@ Other:
|
||||
- **Whisper** (`--run-whisper`): Standard transcription, fast
|
||||
- **WhisperX** (`--run-whisper --diarize`): Adds speaker identification, requires HuggingFace token
|
||||
|
||||
### Deduplication
|
||||
- Enabled by default - removes similar consecutive frames
|
||||
- Disable with `--no-deduplicate` if slides/screens change subtly
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Frame Extraction Issues
|
||||
@@ -274,44 +244,37 @@ Other:
|
||||
**Want to re-run specific steps**
|
||||
- `--skip-cache-frames`: Re-extract frames
|
||||
- `--skip-cache-whisper`: Re-run transcription
|
||||
- `--skip-cache-analysis`: Re-run analysis
|
||||
- `--no-cache`: Force complete reprocessing
|
||||
|
||||
## Experimental Features
|
||||
## Deprecated Features (kept for reference)
|
||||
|
||||
### OCR and Vision Analysis
|
||||
|
||||
OCR (`--ocr-engine`) and Vision analysis (`--use-vision`) options are available but experimental. The recommended approach is to use `--embed-images` which embeds frame references directly in the transcript, letting your LLM analyze the images.
|
||||
|
||||
```bash
|
||||
# Experimental: OCR extraction
|
||||
python process_meeting.py samples/meeting.mkv --run-whisper --ocr-engine tesseract
|
||||
|
||||
# Experimental: Vision model analysis
|
||||
python process_meeting.py samples/meeting.mkv --run-whisper --use-vision --vision-model llava:13b
|
||||
|
||||
# Experimental: Hybrid OpenCV + OCR
|
||||
python process_meeting.py samples/meeting.mkv --run-whisper --use-hybrid
|
||||
```
|
||||
OCR, Vision and Hybrid screen-text analysis were the original approach but went nowhere. They have been **removed from the CLI** (the `--ocr-engine` / `--use-vision` / `--use-hybrid` flags no longer exist) and now live, unwired, in `meetus/deprecated/` for reference only. The tool always references frames (`--embed-images`) so your LLM reads them directly. The realtime continuation of the idea is the separate `cht` project. See [`INDEX.md`](INDEX.md).
|
||||
|
||||
## Project Structure
|
||||
|
||||
See [`INDEX.md`](INDEX.md) for the full repo map. In brief:
|
||||
|
||||
```
|
||||
meetus/
|
||||
├── meetus/ # Main package
|
||||
│ ├── __init__.py
|
||||
├── process_meeting.py # Main CLI script (entry point)
|
||||
├── Makefile # `make batch` convenience wrapper
|
||||
├── meetus/ # Core package
|
||||
│ ├── workflow.py # Processing orchestrator
|
||||
│ ├── output_manager.py # Output directory & manifest management
|
||||
│ ├── cache_manager.py # Caching logic
|
||||
│ ├── frame_extractor.py # Video frame extraction (FFmpeg scene detection)
|
||||
│ ├── vision_processor.py # Vision model analysis (experimental)
|
||||
│ ├── ocr_processor.py # OCR processing (experimental)
|
||||
│ └── transcript_merger.py # Transcript merging
|
||||
├── process_meeting.py # Main CLI script
|
||||
├── requirements.txt # Python dependencies
|
||||
├── output/ # Timestamped output directories
|
||||
│ └── YYYYMMDD_HHMMSS-video/ # Auto-generated per video
|
||||
├── samples/ # Sample videos (gitignored)
|
||||
│ ├── frame_extractor.py # Frame extraction (FFmpeg scene detection)
|
||||
│ ├── transcript_merger.py # Transcript + frame-ref merging
|
||||
│ ├── output_manager.py # Run dirs (YYYYMMDD-NNN-<stem>) & manifest
|
||||
│ ├── cache_manager.py # Per-step caching
|
||||
│ └── deprecated/ # Old OCR/vision/hybrid analysis (reference only)
|
||||
├── ctrl/ # Control plane / operational scripts
|
||||
│ ├── batch.sh # Recursive batch runner
|
||||
│ ├── transcribe_oneoff.sh # High-quality re-transcription
|
||||
│ ├── summarize/ # Local-LLM summarization (WIP, on hold)
|
||||
│ └── cht/ # Bridge to the realtime `cht` project
|
||||
├── def/ # Design/decision notes
|
||||
├── output/ # Run directories (gitignored)
|
||||
├── samples/ # Sample inputs (gitignored)
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user