MemberJunction / MemberJunction/MJ
Realtime turn detection (VAD sensitivity) is not configurable — provider default fires on room noise
- Dominant language
- TSQL
- Stars
- 29
- Forks
- 6
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 323
Description
### Summary
`buildTurnDetection` returns turn-detection settings only when `disableAutoResponse` is set, and hardcodes them when it does:
```js
buildTurnDetection: (disableAutoResponse) => disableAutoResponse
? { type: 'server_vad', create_response: false, interrupt_response: true }
: undefined,
```
Otherwise the provider default applies and there is no way to tune it. In practice that default is hair-trigger: in a normal room the agent fires on background noise, a cough, or a nearby conversation, and starts answering nobody.
There is no Config-bag route to `threshold`, `prefix_padding_ms`, or `silence_duration_ms` — `ExtractRealtimeFeatures` doesn't recognise them, so they can only be reached by a raw `audio` override, which then has to reconstruct the whole block including the transcription model.
### Why it matters more than it sounds
This is deployment-specific, not app-specific. A kiosk in a busy office, a laptop in a quiet room, and a call-centre headset want different values, and none of them is a code change. Right now the only lever is patching the provider profile.
We also learned the hard way that it cuts both ways: we raised the threshold to 0.72 with a 900 ms silence window and made the agent **deaf** — it stopped registering the user entirely, which presents as "the voice agent is broken", not as "the mic gate is too high". Landing on something usable took measurement, and a deployment shouldn't have to do that by patching `node_modules`.
### Ask
Recognise turn-detection settings in the Config bag (alongside `voice`, `effortLevel`, etc.) and merge them over the profile default, so a deployment can tune sensitivity without touching the provider driver.
Found on 5.51.0.
Contributor guide
Research direction
Start by tracing buildTurnDetection and ExtractRealtimeFeatures, then find how Config-bag settings are passed to the provider profile. Confirm the existing disableAutoResponse behavior and profile defaults before adding the requested turn-detection configuration path. Done means threshold, prefix_padding_ms, and silence_duration_ms can be tuned without a raw audio override or provider-driver patch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- audio-video-rtc
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 70/100