Skip to content

berd-call: set the Spokesperson's advanced session options - #409

Closed
johnmatthewtennant wants to merge 1 commit into
mainfrom
jtennant/berd-call-spokesperson-options
Closed

johnmatthewtennant wants to merge 1 commit into
mainfrom
jtennant/berd-call-spokesperson-options

Conversation

@johnmatthewtennant

@johnmatthewtennant johnmatthewtennant commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Berd lets you tune the Spokesperson's realtime session under Advanced: the model, turn detection and eagerness, noise reduction, VAD timing, transcription and the rest. A standalone Berd Call couldn't set any of these, so it always used the defaults.

berd-call start and session now take --spokesperson-options JSON:

  • It uses the same camelCase fields and ranges as Berd's settings, for example {"turnDetection":"semantic_vad","eagerness":"low","noiseReduction":"near_field"}.
  • It refuses unknown fields, and it refuses the voice and speed, which already have their own flags.
  • The options apply when the Spokesperson's session starts. Fields left out keep their current defaults, including any environment overrides for the model.
  • Turning the Spokesperson off and on from the menu bar keeps them for the call.
  • Saved settings don't keep them. The caller owns them and passes them on each start, so clearing a setting there takes effect instead of reviving an old saved value.

Related issue

None.

Testing

A new test parses a berd-call session command line carrying the options and builds the Spokesperson's session.update from it, the same path a call takes when its Spokesperson session starts:

  • The update has semantic VAD with low eagerness, near-field noise reduction, a 512-token limit, the transcription hints and the chosen model. The transcription model and voice keep their configured values.
  • Unknown fields, the voice and speed, values outside Berd's ranges, a blank model and malformed JSON are each refused with the field named.
  • The arguments kept for saved settings drop the options, while the arguments used to turn the Spokesperson back on keep them.

The released berd-call rejects --spokesperson-options as an unknown argument. No live call was made with the flag.

Berd sets the Spokesperson's realtime session options (model, turn
detection, noise reduction and the rest of its Advanced settings), but
the standalone CLI always used the defaults. `--spokesperson-options
JSON` now takes the same camelCase fields and ranges, refuses unknown
ones and the voice and speed that have their own flags, and applies
them when the Spokesperson's session starts. Saved settings don't keep
it; the caller passes it on each start.

Signed-off-by: John Tennant <jtennant@block.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@johnmatthewtennant

Copy link
Copy Markdown
Contributor Author

🤖 Folded into #416 for review and merge.

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