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
      • Bluetooth profile management
      • Android SDK permission requirements
      • Android library requirements
      • Initialize Vivox Android services
      • Android speakerphone audio: Mono or stereo
      • Update the ProGuard rule file
      • Smart Platform Audio Management
      • Acoustic echo cancellation
      • Disable the Vivox SDK internal AEC
      • Hardware echo cancellation
      • Absolute paths for native libraries
      • Reduce Opus CPU load on low-powered Android devices
    • iOS app development
    • 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. Android app development

Reduce Opus CPU load on low-powered Android devices

How to reduce Open CPU load.
Read time 2 minutes
Last updated 8 months ago

Warning
Modifying Opus settings to reduce CPU load might negatively impact voice quality.
If you need to reduce the Vivox CPU load for lower-power Android devices, the Vivox SDK exposes the
vx_opus_set_complexity
method to set the algorithmic complexity of the codec to another value. The Vivox SDK uses a default complexity value of 9, but you can set this down to 0 to reduce the CPU usage. The lower the value, the more the audio quality is negatively affected. For example, in a speech signal test where the complexity value was decreased to 0, the encoding time decreased to 39% of the default settings (Complexity: 9, Bandwidth: Auto).
It is also possible to use the
vx_opus_set_bandwidth
method to change the audio bandwidth that Opus uses. If you pass the
vx_opus_bandwidth::opus_bandwidth_nb
value, this also reduces the CPU usage, but might have a significant negative impact on audio quality. Lowering the audio bandwidth makes the audio signal sound duller by discarding high frequency content.
Note that reducing complexity has more impact on CPU use reduction than changing the audio bandwidth. For example, a speech signal test with a complexity of 0 combined with
vx_opus_bandwidth::opus_bandwidth_nb
got the lowest CPU time of 27% of the CPU time of the default settings (Complexity: 9, Bandwidth: Auto).
If either of these methods do not reduce CPU use enough, you can use the Siren14 codec, which takes 14% of the CPU time of Opus at its default settings. To use the Siren14 codec, perform either of the following actions:
Note
These updates affect the audio quality for all session participants. This is because when you change the codec of a client, all participants also switch to that codec.
  • When you initialize the SDK, update
    vx_sdk_config_t
    to set the
    default_codecs_mask
    field to
    VIVOX_VANI_SIREN14
    .
  • When you create your connector object, update the
    vx_req_connector_create_t
    request to set
    default_codec
    to
    VIVOX_VANI_SIREN14
    .

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