Skip to content

berd-call: tune listening and interruption per audio setup - #421

Closed
johnmatthewtennant wants to merge 11 commits into
mainfrom
zack/interruption-threshold
Closed

johnmatthewtennant wants to merge 11 commits into
mainfrom
zack/interruption-threshold

Conversation

@johnmatthewtennant

@johnmatthewtennant johnmatthewtennant commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Summary

False local speech detections can hold an agent reply before playback or pause it while it plays. Conventional calls now have independent listening and interruption thresholds, with optional experimental tuning for macOS speech recognition. Each enabled threshold moves one 0.01 tick after each qualifying unmatched detection/transcript outcome, without a cooldown, within bounds of 0.10 to 0.95. Manual values retain the full 0 to 1 range.

The standalone macOS host saves applied values and dynamic choices by stable microphone/output device UID pair, restoring them on startup and device changes. Explicit CLI flags override only their matching profile choices. Input epochs and ambiguous mode changes discard stale evidence; conditional writes protect manual edits from late learning. Session protocol 6 reports applied values and evidence counters and requires a matching host. Realtime Spokesperson VAD is unchanged. No architectural laws change.

Related issue

Related speech activity work: #419.

Testing

The runtime feedback regression drives an unmatched detection through the production controls and observes listening change from 0.50 to 0.51. A transcript-only outcome during playback change interruption from 0.65 to 0.64 while listening stays at 0.51. These updates apply without replacing the runtime. Manual mode, dynamic bounds and stale input epochs have separate coverage.

A framed-host regression switches between two saved device UID pairs, checks the corresponding settings requests, and rejects old learning until the new profile is acknowledged. Explicit-override coverage verifies that threshold and dynamic flags override only matching saved profile choices while unspecified choices retain their saved values.

The built native CLI queried the current device pair and saved/restored both settings in an isolated temporary directory without starting capture. Live microphone tuning and physical device switching remain unverified.

Apple recognition also has configurable onset (16–1000 ms) and release (16–3000 ms), defaulting to 16 ms and 300 ms. They persist with each audio setup; old profiles receive defaults. Continuous recognition still receives every frame, and finalized transcripts are forwarded immediately. Session protocol 7 carries the timing fields. Frame-sequence tests cover onset filtering and release; the native profile CLI round trip preserves 48 ms onset and 160 ms release. Live microphone timing acceptance remains unverified.

Zack added 6 commits October 21, 2026 21:35
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
@johnmatthewtennant johnmatthewtennant changed the title berd-call: make local interruption detection adjustable berd-call: tune listening and interruption per audio setup Oct 22, 2026
Zack and others added 5 commits October 22, 2026 07:25
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
Signed-off-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz>
Signed-off-by: Nora <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
@johnmatthewtennant

Copy link
Copy Markdown
Contributor Author

🤖 Consolidated into #426 with capture and replay. Device profiles and VAD timing are preserved, with the accepted unused saved-argument cleanup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant