Windows has a concept of communication audio streams. When an app (Skype, Signal, Discord, Phone Link, etc.) opens a communication audio stream, by default, the volume of audio from non-communication apps is significantly reduced. This includes NVDA. This effectively makes NVDA unusable for speech users while on a call with such an application.
There is a setting to disable this for all audio streams on the system: Sound Properties -> Communications -> WhenWindows detects communications activity: Do nothing. However:
This doesn't work properly, which seems to be a long standing Windowsbug.
Even if it did, I don't think we ever want NVDA's audio to be ducked by the system, regardless of this setting.
Description of user facing changes
When using applications such as Skype, Discord, Signal and Phone Link for audio communication, NVDA speech and sounds no longer decrease in volume.
Description of development approach
Windows allows this default ducking experience to be disabled for a WASAPI stream. This change calls the appropriate API methods in WasapiPlayer to opt out of this ducking.
Testing strategy:
I tested this with Phone Link. Before this change, making a phone call would cause NVDA speech to severely decrease in volume. After this change, NVDA's volume remains untouched.
Known issues with pull request:
None.
Code Review Checklist:
[x] Documentation:
Change log entry
User Documentation
Developer / Technical Documentation
Context sensitive help for GUI changes
[x] Testing:
Unit tests
System (end to end) tests
Manual testing
[x] UX of all users considered:
Speech
Braille
Low Vision
Different web browsers
Localization in other languages / culture than English
Link to issue number:
Fixes #17349.
Summary of the issue:
Windows has a concept of communication audio streams. When an app (Skype, Signal, Discord, Phone Link, etc.) opens a communication audio stream, by default, the volume of audio from non-communication apps is significantly reduced. This includes NVDA. This effectively makes NVDA unusable for speech users while on a call with such an application.
There is a setting to disable this for all audio streams on the system: Sound Properties -> Communications -> WhenWindows detects communications activity: Do nothing. However:
Description of user facing changes
When using applications such as Skype, Discord, Signal and Phone Link for audio communication, NVDA speech and sounds no longer decrease in volume.
Description of development approach
Windows allows this default ducking experience to be disabled for a WASAPI stream. This change calls the appropriate API methods in WasapiPlayer to opt out of this ducking.
Testing strategy:
I tested this with Phone Link. Before this change, making a phone call would cause NVDA speech to severely decrease in volume. After this change, NVDA's volume remains untouched.
Known issues with pull request:
None.
Code Review Checklist:
@coderabbitai summary