feat(nb): group transcripts into paragraphs and label speakers #254
No reviewers
Labels
No labels
bug
enhancement
in-progress
needs-info
needs-triage
p0
ready-for-agent
ready-for-human
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/nixos!254
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/nb-transcribe-speakers"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Transcribing a meeting produced one unbroken line of text. The cause is in whisper-cli, not the recording:
-ntsuppresses the timestamp prefix and the trailing newline (cli.cpp:447only emits\nwhen timestamps or speakers are on). Switching to-ojJSON output fixes it at the root and supplies the millisecond offsets everything else here needs.What changed
--speakers=Nlabels who is talking, viasherpa-onnx(pyannote segmentation-3.0 + NeMo TitaNet-large embeddings). ONNX only, so ~200 MB and no gated HuggingFace token, versus the multi-gigabyte PyTorch closurepyannote.audiowould need. whisper.cpp's own--diarizeis stereo-channel guessing and--tinydiarizeis English-only.--names A,B,Cnames speakers in order of first appearance and implies the count.--timestampsnow stamps each paragraph, not each segment.The count is required, deliberately
Auto-detection was measured against a real 4-person meeting and is not usable:
An auto mode emitting 22 labels reads as broken; guessing N and re-running converges. Bare
--speakerstherefore errors and points at--speakers=N.Cost
Diarization is CPU-only, roughly 40 minutes per hour of audio, so it is opt-in. It also forces VAD off — the speaker join needs timestamps on the real timeline — which carries the same slowdown and occasional silence hallucination already documented for
--timestamps.Verification
Built standalone and exercised against a real 69-minute German meeting recording (slices of it). Turn-taking is coherent:
Checked by hand: default mode,
--timestamps,--speakers=N,--names, name-count inference,--speakersoverriding--names, and the rejection paths (bare--speakers,--speakers=1,--speakers=abc,--nameswith no value, missing file, unknown flag).nbdry-build passes.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.