Why ForgeBot can't hear Teams
CABLE In 16 Ch to CABLE Output. Two more VB-Audio driver entries report an error, likely an extra instance that didn't start, or one waiting on a restart. The "no cable" line below is out of date. The configuring agent is checking ChatGPT's per-app input first (H2), which is the right next check. H3's test is corrected: a moving meter with no reply does not by itself prove echo cancellation.What AREA51 actually has (measured 2026-10-22, read-only)
| Thing | Value on AREA51 |
|---|---|
| Running apps | Teams MSTeams 26260.1717 (new client) and ChatGPT desktop OpenAI.Codex 26.1016.6573 |
| Virtual audio cable (VB-Cable, VoiceMeeter) | None installed. Present: NVIDIA Broadcast (virtual mic + speaker), Realtek Stereo Mix, and DeskIn and Oculus virtual devices (both inactive) |
| Windows default playback | Media: 43S425 (CENTER), the TV over NVIDIA HDMI. Communications: Speakers (AOC ACT3512) |
| Windows default recording | Stereo Mix (Realtek), for both media and communications |
| Microphones present | Microphone (2- Logitech BRIO) is active. Microphone (AOC ACT3512) is not present right now |
| Saved per-app choice: ChatGPT 26.1016 | Output: NVIDIA HDMI (the TV). Input: AOC ACT3512 microphone, which isn't present, so Windows falls back |
| Saved per-app choice: Teams 26260 | Outputs: NVIDIA HDMI, Realtek Digital Output and NVIDIA Broadcast speaker. Input: AOC ACT3512 microphone, also absent |
| Status page (127.0.0.1:4317 #teams) | Outgoing works through shared computer audio. Incoming is missing: ForgeBot "hears the AREA51 room microphone". AREA51's speakers are off |
Per-app choices are from Windows' audio policy store (Settings > Sound > Volume mixer). Microsoft notes the new Teams uses its own Settings > Devices choices and can ignore the Windows per-app setting, so Teams' in-app speaker is the one that counts.
There is no wire from Teams' speaker to ForgeBot's microphone
Teams plays remote voices to an output (the TV over HDMI, NVIDIA Broadcast or Realtek digital). ForgeBot records from a different device: the room mic, or Stereo Mix. Stereo Mix only hears sound played through the Realtek chip, not the TV or NVIDIA outputs. With the speakers off, the remote voice never reaches any input ForgeBot is listening to.
Evidence
- No VB-Cable or VoiceMeeter on the machine. Stereo Mix is the only loopback, and it is tied to Realtek.
- Teams' saved outputs are mostly NVIDIA (TV) devices; ChatGPT's saved input is a microphone.
- That matches the status page exactly: outgoing works, incoming only hears the room.
Two-minute test
- In Teams, set Settings > Devices > Speaker = Realtek Digital Output. Have someone talk from another room. Watch the Stereo Mix level bar in Sound settings. If it moves and ForgeBot answers, H1 is confirmed, and Stereo Mix is a stop-gap wire.
Fix (the standard, loop-free route)
- Done since: VB-Audio Virtual Cable is installed (one cable).
- With one cable, use it for the missing direction only. Teams: Speaker = CABLE In. ForgeBot: Input = CABLE Output. Keep the outgoing route that already works, shared computer audio, and keep ForgeBot's output off CABLE In so it can't hear itself.
- A second cable (the A+B pair) is only needed if outgoing also moves onto a cable.
- To monitor locally, turn on "Listen to this device" on CABLE-A Output.
ForgeBot's microphone is chosen by a stale saved setting, not by us
The ChatGPT desktop app has no microphone picker. It takes Windows' choice, and Windows has a saved per-app choice of the AOC ACT3512 microphone for ChatGPT, carried across 40+ app updates. When that mic is plugged in, ForgeBot hears the room through it. When it's missing, as now, Windows falls back to the default, Stereo Mix. So which ear ForgeBot has changes with what's plugged in. That explains "hears the room" during the October 21 meeting, and why tests aren't repeatable.
Evidence
- Saved ChatGPT input = AOC ACT3512 mic, on every version since 26.707. That mic shows "not present" today.
- OpenAI's voice help page offers no microphone choice; the community advice is to change the Windows default.
- Teams also has a saved ACT3512 mic, so ForgeBot and Teams were sharing one physical microphone: the room.
Two-minute test
- Start a ForgeBot voice session. In Settings > System > Sound > Volume mixer, expand ChatGPT and read its Input device. Clap near the BRIO and the ACT3512 and see which one ForgeBot reacts to.
Fix
- In Volume mixer, set ChatGPT's Input device = CABLE-A Output, or Stereo Mix as a stop-gap, and its Output = CABLE-B Input. Pin both so plugging a monitor in or out can't change them.
- Leave the BRIO for people, not ForgeBot.
Once wired, echo cancellation could erase the remote voice
ForgeBot and Teams both play out of the same device (NVIDIA HDMI, the TV). Voice apps cancel "echo" by subtracting whatever plays on the output from what they hear. If Teams' remote voice plays on the same output ForgeBot uses for its own speech, ForgeBot's echo canceller can treat the remote person as its own echo and remove them. Teams' voice isolation and noise suppression can also cut ForgeBot's synthetic voice on the way out. That matches the "missing bot audio" notes from October 21.
Evidence
- Saved outputs: ChatGPT and Teams both have NVIDIA HDMI.
- Microsoft: voice isolation removes voices other than the signed-in speaker's. Noise suppression can be set to Off from the arrow next to the Mic button. High-fidelity music mode turns off echo cancellation and noise suppression.
- ChatGPT desktop's own audio processing can't be changed.
Two-minute test
- After the H1 wire is in, play the "capital of France" loop from another room. A moving meter with no reply only says sound arrived. It could also be the wrong input, a muted session or a turn-detection issue. To isolate echo cancellation, keep the route fixed and change only one thing: move ForgeBot's own output to a different device than Teams' speaker, and see whether replies start. Or record what ForgeBot's input actually receives (a CABLE Output recording) and compare it with what was played.
Fix
- Separate outputs: Teams speaker → CABLE-A, ForgeBot speaker → CABLE-B. Then neither app's playback is in the other's echo reference.
- In Teams: noise suppression Off, voice isolation off, "Automatically adjust mic sensitivity" off, or use high-fidelity music mode. Set every cable to 48 kHz to avoid crackle.
- If ChatGPT desktop still eats audio, move ForgeBot to a browser voice agent where echo cancellation can be switched off (
echoCancellation:false).
External
- Microsoft: manage audio settings in Teams meetings (speaker and mic picked inside Teams; noise suppression, auto sensitivity, spatial audio). support.microsoft.com (updated 2026-09-24)
- Microsoft: voice isolation in Teams. support.microsoft.com
- Microsoft: high-fidelity music mode (turns off echo cancellation and noise suppression). support.microsoft.com
- Microsoft Q&A: Windows per-app output ignored by some apps. learn.microsoft.com
- New Teams ignores the Windows defaults and keeps its own. superuser.com (2023, may be stale)
- VB-Audio Virtual Cable, Pack45 (Oct 2024, Windows 11 and Arm64). vb-audio.com
- OpenAI: ChatGPT voice help, with no microphone picker described. help.openai.com
- OpenAI community: change the system default mic. community.openai.com (2024)
- Chrome per-site microphone choice. support.google.com
Internal
- AREA51 live audio probe, read-only, 2026-10-22: devices, defaults, per-app policy store and running versions (table above).
- ForgeBot Teams status page, 127.0.0.1:4317 #teams: incoming bridge missing, outgoing working, speakers off, Streamlabs is not the bridge.
- Skill:
teams-forgebot/procedures/participate-as-forgebot.md. Oct 21 meeting test: join, screen share and outgoing replies ("Four", "Bingo") verified; the Hermes Teams app hassupportsCalling: false. - Earlier hypotheses in that runbook (route, voice filtering, transcription path) were about outgoing audio. These three are about incoming.
Recommended next step
Install VB-Cable, your one admin step, then wire Teams and ForgeBot as in H1 and H2, with Teams' noise suppression off (H3). Run the page's "capital of France" loop from another room. If that works, run the six done-checks. If ForgeBot hears but doesn't answer, H3 is the cause, and the move is a browser voice agent.
Confidence: H1 high (directly measured: no cable, defaults point elsewhere). H2 medium-high (saved setting measured; whether ForgeBot uses it in a live session is untested). H3 medium (plausible, sourced mechanism, untested on AREA51). Nothing here changed any setting on AREA51.