docs(architecture): per-stream diarization via split channels in stop data flow (FR-SPK)

This commit is contained in:
iamdoubz committed 2026-07-14 12:22:57 -05:00
1 parent 3d183fdd7c
commit 0e0f3a09f1
1 file changed
+6 -6
+6 -6
View File
@@ -86,12 +86,12 @@ issues from feature briefs.
5. The notes view renders Markdown that updates as segments arrive (FR-NOTE-1, FR-NOTE-6).
6. On `stop_recording`: finalize the WAV; run `diarization`, align speaker IDs to segments,
apply name mappings; persist transcript JSON + metadata via `storage` (FR-STORE-1). When the mic
is on, attribution is **per-stream** (ADR-0005 Phase 3, FR-SPK): the mic-activity timeline that
`audio` recorded (in `audio.wav` frame time, where the mic is folded into the loopback writer) is
the user's "You" spans directly, and sherpa clusters only the far side — the recording diarized
with those ranges masked out. Blind whole-signal clustering + voiceprint is the mic-off fallback.
If "Record this meeting" is **off**, delete the working WAV **after** the transcript is finalized;
if **on**, keep it as `audio.wav` (ADR-0009, FR-REC-1/4).
is on, `audio.wav` is a **dual-channel split** (left = mic, right = loopback; ADR-0005 Phase 3.5,
FR-SPK), so attribution is **per-stream**: sherpa clusters the **right channel only** →
`Speaker N`, and "You" comes from **left-channel** voice activity. Blind whole-signal clustering
+ voiceprint is the mic-off (`summed`) fallback. If "Record this meeting" is **off**, delete the
working WAV **after** the transcript is finalized; if **on**, keep it as `audio.wav` (ADR-0009,
FR-REC-1/4).
7. If an LLM provider is configured: `llm` builds a prompt (transcript + metadata + template),
streams a summary/decisions/action-items into the summary panel (FR-LLM-2/4).
8. Action items are parsed and presented for confirmation; confirmed ones persist and may raise