AI Interview Copilot/Web Experience/Audio and permissions

Audio and permissions

Explain the permission chain, sharing flow, and fallback behavior based on the WebVoiceAssistant capture process.

Flow explanation

  • Startup order is fixed: create the session first, request microphone permission next, and request screen-sharing audio only when "system audio" is enabled.
  • System audio is not an independent device. It comes from the browser sharing stream: getDisplayMedia({ video: true, audio: true }).
  • When "system audio is enabled but the interviewer cannot be heard," check the sharing dialog checkbox first instead of assuming the recognition service failed.

Expected behavior, not failures

  • If "share system audio / tab audio" is not checked in the sharing dialog, the frontend automatically falls back to microphone-only capture.
  • If the shared object has no audio track, the frontend disables system audio and prompts that system audio is not enabled and only microphone will be captured.
  • Adding system audio midway through a session is limited. If the current session has not established the interviewer channel, it prompts you to stop and restart.
  • After an input-source toggle is turned off, clearing the draft is a protection behavior. It prevents old drafts from being committed by mistake.

Standard troubleshooting steps

  1. Check browser site permissions: whether microphone is allowed.
  2. Check system permissions: whether microphone and screen recording are allowed.
  3. Start the session and check "share system audio / tab audio" in the sharing dialog.
  4. If system audio is still missing, stop the session and restart fully instead of repeatedly switching toggles inside the session.

Acceptance criteria

  • 10-second system audio test: interviewer draft or committed text appears.
  • 10-second microphone test: your own speech commits continuously.
  • Enter a formal interview only after both channels are stable.

The system-audio toggle only means "start the sharing flow." Whether interviewer audio is actually connected depends on the sharing dialog checkbox and actual audio track.