Skip to content

serrebidev/NVDARemoteAudioClient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NVDARemoteAudioClient

NVDA add-on that streams system audio between two Windows machines using NVDARemoteAudioServer as a relay. NVDA Remote already carries NVDA speech — this carries everything else (music, games, browser, Discord, etc.) without re-sending NVDA's own output.

What's in here

  • addon/ — the NVDA add-on (Python, manifest, docs).
  • helper/ — a .NET 9 Windows helper EXE that does the actual capture, Opus encode, UDP, decode, and playback. Bundled into the add-on.
  • build.ps1 — builds the helper and packages a .nvda-addon.

The add-on is just a launcher and a settings UI. The helper does the audio work in a separate process so audio glitches and network jitter cannot stall NVDA.

Install (end users)

  1. On both machines, download remoteAudioClient-<version>.nvda-addon from Releases and open it. NVDA installs it.
  2. Restart NVDA.
  3. On the machine that will send audio: open NVDA menu > Tools > NVDA Remote Audio > Install audio server (this machine sends audio).... The add-on downloads NVDARemoteAudioServer from GitHub, installs it under C:\NVDARemoteAudioServer\ (or %LOCALAPPDATA%\NVDARemoteAudioServer\ if the first isn't writable), starts it, registers a per-user Startup shortcut so it auto-starts at sign-in, and prompts for UAC to add Windows Firewall inbound allow rules for TCP+UDP 6838. Decline UAC and the rest still installs; pick Add firewall rules for audio server... later if you want to retry.
  4. On both machines, open NVDA menu > Preferences > Settings > NVDA Remote Audio and set:
    • Server host — IP/hostname of the machine running the server.
    • Audio port — 6838 (default).
    • Key — same string on both sides. Required, no default.
  5. Restart NVDA, or pick Receive remote audio (client) / Send this computer's audio (server) from the Tools menu. Picking Send on a machine without the server installed offers to install it on the spot.

The add-on does not change anything in NVDA Remote. Use NVDA Remote on its usual port (6837) the same way you always have.

Required system

  • Windows 10 build 20348 or newer (process-loopback exclusion API). This includes Windows 10 22H2 with recent updates and all Windows 11.
  • NVDA 2025.1+.
  • Inbound TCP+UDP 6838 reachable on the server side.

How it sends "everything except NVDA"

In publisher mode the helper opens a WASAPI process loopback capture with PROCESS_LOOPBACK_MODE_EXCLUDE_TARGET_PROCESS_TREE against the running nvda.exe PID. NVDA's audio (speech, tones) is never read off the device, so it cannot be sent. Everything else playing on the default render endpoint goes through Opus and UDP to the server.

Latency

Wire format: 48 kHz stereo Opus, 15 ms packets (3 × 5 ms frames repacketized), with packet-loss concealment on the receiver. Receiver picks a jitter-buffer profile from the host you set:

Profile Picked when host is Prebuffer Output latency Buffer cap
LAN private/loopback IP 30 ms 40 ms 200 ms
Tailscale 100.64.0.0/10 or *.ts.net 90 ms 80 ms 450 ms
Internet anything else 150 ms 120 ms 800 ms

Override with Settings > NVDA Remote Audio > Latency profile.

"Automatic" startup

If C:\NVDARemoteAudioServer\NVDARemoteAudioServer.exe or %LOCALAPPDATA%\NVDARemoteAudioServer\NVDARemoteAudioServer.exe exists on the machine, the add-on starts as publisher (sends). Otherwise it starts as subscriber (receives). Override under Startup action in settings.

Build from source

You need the .NET 9 SDK. From an elevated-or-not PowerShell at the repo root:

.\build.ps1

That publishes the helper, stages it into addon/bin/, and produces remoteAudioClient-<version>.nvda-addon at the repo root. See helper/README.md and addon/README.md for details.

Security

Audio is sent unencrypted over UDP. Don't use this on the open internet without a VPN or Tailscale. The server's "key" is a shared identifier, not a secret — anyone who can reach port 6838 with the right key can join the channel.

License

MIT. See LICENSE.

Credit

Wire protocol and relay server: haitun001/NVDARemoteAudioServer. This repo only ships the client side; you still need to run that server somewhere.

About

NVDA add-on that streams system audio (excluding NVDA speech) between Windows machines via NVDARemoteAudioServer. Opus over UDP, low latency, LAN/Tailscale/Internet profiles.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors