Overview table, engine evolution notes, and per-version caveats. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.2 KiB
sing_detect
Consolidated history of my singing/music-segment detection tools, gathered from across several projects and ranked by technical & functional evolution (not by file timestamp). The goal of every version is the same:
Take a long live-stream recording, find the segments where someone is singing, and export markers (CSV / EDL / JSON) for fast editing in DaVinci Resolve.
Each version lives in its own folder and was committed as a separate step so the git history reads as the evolution story.
| Version | Folder | Engine | Interface | Leap |
|---|---|---|---|---|
| v1 | v1_svd_prototype/ |
HuggingFace matthijs/svd (torch.jit) |
tkinter file picker | First prototype — single file, proves the idea |
| v2 | v2_transformers_gui/ |
transformers pipeline + pyannote |
CustomTkinter GUI | Overlapping-chunk inference, CSV timecode export |
| v3 | v3_inaseg_cli/ |
inaSpeechSegmenter | CLI (argparse) | Robust pipeline: gap-merge, min-duration, EDL+CSV |
| v4 | v4_inaseg_batch/ |
inaSpeechSegmenter | CLI batch | Process whole folders, --recursive, --auto-cut |
| v5 | v5_stream_tools_app/ |
inaSpeechSegmenter | CustomTkinter multi-tab app | Refactored into modular core/ engine + UI tab, JSON + ffmpeg-script export |
| v6 | v6_stream_studio_tauri/ |
inaSpeechSegmenter (Python sidecar) | Tauri (Rust + TS) | Cross-platform rewrite; Python reduced to a thin ML sidecar emitting line-JSON |
Engine evolution
svd model → transformers pipeline → inaSpeechSegmenter (settled from v3 on,
which classifies singing voice as "music").
Notes per version
- v4 includes a copy of
detect_singing.pybecausebatch_detect.pyimports it at runtime. - v5 keeps the original package layout (
core/,ui/,utils/) so the relative imports resolve; it was extracted from the largerstream_toolsapp. - v6 is the detection slice only (
sidecar_detect.py,detect.rs,detect.ts), extracted from thestream-studioTauri app —detect.tsstill references the app's../dom,../ui,../apimodules.
Excluded
song_detection_cn.py (an ACRCloud-style fingerprint song-identification API client)
was not included — it identifies/names a track rather than detecting singing segments.