Documentation

​
​

Development

User Acquisition

Monetization

Industry

Vivox Core SDK

Vivox Core SDK

Vivox
​
​
Vivox Core SDK
  • Overview
  • Before you begin
  • Get started
  • Release notes
  • Developer Guide
    • Client SDK basics
    • Channels
    • Presence management
    • Messaging
    • Manage audio
    • Couch co-op
    • Android app development
    • iOS app development
      • Required Info.plist settings for iOS apps
      • Acoustic echo cancellation
      • Initialize the AVAudioSession on app startup
      • AVAudioSessionModeVoiceChat
      • Disable the Vivox SDK internal AEC
      • iOS known limitations
    • macOS app development
    • Windows app development
    • Real-time recording
    • Speech-to-text audio transcription
    • Text-to-speech
    • Troubleshooting
  • Reference
  • Privacy overview
  1. Vivox Core SDK documentation
  2. iOS app development

Acoustic echo cancellation

Learn about acoustic echo cancellation on iOS.
Read time 2 minutes
Last updated 8 months ago

When an iOS device plays and records audio at the same time, there is the possibility that a capture device could pick up the audio that is playing. The Vivox SDK includes acoustic echo cancellation (AEC), which helps to prevent this type of audio capture from occurring.
By default, the Vivox SDK leverages the platform AEC provided by Apple, which is enabled or disabled by using dynamic voice processing switching (DVPS).
DVPS is enabled by default. To disable DVPS, perform either of the following actions:
Note
Disabling DVPS is not recommended.
  • When you initialize the Vivox SDK, configure the dynamic_voice_processing_switching parameter.
  • After the you initialize the Vivox SDK, call vx_set_dynamic_voice_processing_switching_enabled().
DVPS uses the following logic for enabling or disabling platform AEC:
  • When the client attempts to access the microphone (for example, when joining a session), platform AEC gets enabled.
  • When the client stops accessing the microphone (for example, when setting the capture device to “No Device” or when leaving all sessions), platform AEC gets disabled.
DVPS causes Vivox to play and record audio by using a Voice-Processing I/O audio unit. It also makes changes to the shared AVAudioSession instance to ensure that the right category and mode are selected. When platform AEC is enabled, the AVAudioSessionCategory is set to AVAudioSessionCategoryPlayAndRecord, and the AVAudioSessionMode is set to AVAudioSessionModeVoiceChat. After all Vivox voice sessions are removed, DVPS automatically switches back to the original AVAudioSession configuration. For optimal results, before you initialize the Vivox SDK, we recommend that you set the AVAudioSessionCategory to AVAudioSessionCategoryPlayback.
DVPS enforces the use of the Bluetooth Headset Profile (HSP) when accessing the microphone on a connected Bluetooth device. This ensures that the headset microphone is used instead of the device microphone to provide a better voice chat experience.
In some scenarios, it might be preferable to prevent the Vivox SDK from making changes to the shared AVAudioSession instance. To manually control platform AEC, disable dynamic voice processing switching (DVPS), and then use the
vx_set_platform_aec_enabled()
function to enable or disable platform AEC. This function reconfigures the audio unit in the Vivox SDK to Voice-Processing I/O or Remote I/O when enabled or disabled, respectively.

Copyright © 2026 Unity Technologies
LegalPrivacy PolicyCookiesDocumentation Terms of UseDo Not Sell or Share My Personal InformationYour Privacy Choices (Cookie Settings)

"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S and elsewhere (more info here). Other names or brands are trademarks of their respective owners.

Some pages are machine-translated for convenience, and may contain inaccuracies. In the event of conflicting information, the English version is authoritative.


    Report a problem with this page