Skip to content

Commit e69ec96

Browse files
READNE
1 parent 6e4347c commit e69ec96

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

platform_audio/README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,26 @@ export LIVEKIT_URL=wss://your-livekit-host
1919
export LIVEKIT_PLAYER_TOKEN=<player-token>
2020
export LIVEKIT_SENDER_TOKEN=<sender-token>
2121
```
22+
23+
## Test environments
24+
25+
The sender captures the mic and runs the AEC/NS/AGC front-end; the player drives
26+
hardware playout. The acoustic echo cancellation (AEC) reference is per Audio
27+
Device Module (ADM), so the sender can only cancel playout from *its own* ADM.
28+
Pick an environment based on what you want to prove out.
29+
30+
| Environment | What it proves | Notes |
31+
|-------------|----------------|-------|
32+
| **Two machines** (sender on A, player on B) | End-to-end capture → publish → subscribe → hardware playout over the network, like a real call. | Closest to a real LiveKit call. For full duplex (both apps on both boxes), use headphones or separate rooms to avoid feedback. |
33+
| **One machine + headphones** | Mic capture and ADM playout both work on one box, with no acoustic feedback path. | Best for confirming device selection and round-trip latency in isolation. |
34+
| **Noise suppression (NS)** | Steady background noise is attenuated while speech passes. | Add a fan / AC hum / typing near the mic. A/B by setting `noise_suppression = false` in `sender/main.cpp`. |
35+
| **Auto gain control (AGC)** | Quiet vs. loud / near vs. far speech is normalized on the player side. | A/B by setting `auto_gain_control = false` in `sender/main.cpp`. |
36+
| **`prefer_hardware = true`** | Platform hardware voice processing engages (e.g. macOS voice-processing I/O). | Set in the sender options; compare CPU and audio character vs. the software path. |
37+
| **Device / hot-plug sanity** | `recordingDevices()` / `playoutDevices()` reflect attached hardware and route correctly. | Plug/unplug a USB or Bluetooth mic/headset before launch and check the startup device logs. |
38+
39+
> **AEC caveat:** these split sender/player apps cannot demonstrate AEC against
40+
> each other on one machine over open speakers — the sender's AEC has no
41+
> reference to the player's separate ADM, so the speaker output is treated as
42+
> external sound and you get an echo/feedback loop. Genuine AEC requires a
43+
> single application that both plays remote audio and captures the mic through
44+
> the *same* ADM. Use headphones to avoid feedback with these examples.

0 commit comments

Comments
 (0)