OPUS
INTERACTIVE SPEECH and AUDIO CODEC
The Opus interactive speech and audio codec is a flexible compression algorithm that can be used in a wide variety of interactive audio applications including Voice Over IP (VoIP), videoconferencing, in-game chat, and even live, distributed music performances.
Adaptive Digital’s Opus codec delivers high-quality, low-latency audio for real-time communication applications across a wide range of bitrates.
Platforms
Availability
| Platforms |
| Arm ® Devices – Armv7-A Cortex-A8 / A9 / A15 || Armv7-M Cortex-M4/M7 / Armv8-M || Armv8-A Cortex-A53 / A72 || Armv9-A |
| TI TMS320C7000 C7x | TMS320C6000 – C64x+ / C674x / C66x – contact Sales for current specs 610-825-0182 x120 |
ADT Opus is available on the above Platforms: Other configurations are available upon request.
Features
- Bit-rates from 6 kb/s to 510 kb/s
- Frame sizes from 2.5 ms to 60 ms
- Support for both constant bit-rate (CBR) and variable bit-rate (VBR)
- Audio bandwidth from narrowband to fullband
- Support for speech and music
- Dynamically adjustable bitrate, audio bandwidth, and frame size
- Good loss robustness and packet loss concealment (PLC)
- Floating point and fixed-point implementation
Description
Opus Audio Codec
Adaptive Digital’s Opus Codec is a high-performance audio codec designed for real-time voice and audio communications over IP networks. Developed for interactive Internet applications, Opus delivers exceptional audio quality across a wide range of bitrates while maintaining ultra-low latency, making it ideal for VoIP, video conferencing, WebRTC, unified communications, online collaboration, and streaming applications.
Opus combines the strengths of SILK speech coding and CELT low-latency audio coding technologies, allowing it to seamlessly adapt between speech and full-band audio. This flexible architecture enables efficient compression at both low and high bitrates while maintaining clear, natural-sounding voice and audio quality.
With a default algorithmic delay as low as 22.5 ms, Opus supports real-time, two-way communication with minimal latency, helping to create more natural conversations and improved user experiences in interactive applications.
Key Benefits
- Industry-standard Opus audio codec
- Ultra-low latency audio processing
- Excellent voice and audio quality across a wide bitrate range
- Combines SILK and CELT coding technologies
- Optimized for real-time IP communications
- Supports speech, music, and mixed audio content
- Ideal for VoIP, WebRTC, and video conferencing
- Efficient bandwidth utilization
- Available for DSP, ARM, and embedded platforms
Specification Tables
Spec Tables
ARM Devices
Opus Armv9-A
CPU Utilization| Frame Size | MIPs | |
| OPUS WB – Wideband | 10 | 30 |
| OPUS WB | 5 | 18 |
| OPUS WB | 3 | 13 |
| OPUS NB – Narrow Band | 10 | 17.4 |
| OPUS NB | 5 | 11.5 |
| OPUS NB | 3 | 9 |
OPUS Armv9A – No ASM, intrinsics enabled
Opus Armv7-A Cortex-A8/A9/A15
Memory requirements in units of byte.| Function | Program Mem | Data Mem | Scratch Mem | Channel Data Mem |
| Encode | Max: 100000 or call function OPUS_ADT_getEncScratchSize() | 41062 (1 channel) 45764 (2 channels) |
||
| Decode | Max: 100000 or call function OPUS_ADT_getDecScratchSize() | 17964 (1 channel) 26684 (2 channels) |
||
| Encode/Decode | 311K | 25K |
Opus Armv7-A Cortex-A8/A9/A15
CPU Utilization| Function | VBR | FEC | DTX | Complexity | Bit Rate (kbps) | Frame Size (ms) | Sampling Rate (kHz) | MIPS* |
| Wideband Silk Encoder | off | On | off | 3 | 25 | 10 | 16 | 38 |
| Wideband Silk Encoder | On | On | off | 3 | 25 | 10 | 16 | 26 |
| Fullband Celt Decoder | off | off | off | 3 | 64 | 10 | Input: 48 Output: 16 | 11 |
| Fullband Hybrid | off | off | off | 3 | 64 | 10 | Input: 48 Output: 16 | 15 |
Opus Armv7-M / Armv8-M Wideband (WB)
CPU Utilization and Memory Requirements| Function | MIPS | Program Mem | Data Mem (Channel + Scratch) |
| Encode – CELT Mode Only, Complexity 10, 32 kbps rate | 52 | 110k bytes | 25k bytes |
Opus Armv7-M / Armv8-M Wideband (WB)
CPU Utilization| VBR | Complexity | Bit Rate (kbps) | Frame Size (ms) | MIPS* | |
| WB CELT Encoder | off | 0 – 10 | 24 | 10 | 26-54 |
| WB CELT Decoder | off | 0 – 10 | 24 | 10 | 21 |
| WB CELT Encoder | off | 0 – 10 | 48 | 10 | 27-54 |
| WB CELT Decoder | off | 0 – 10 | 48 | 10 | 21 |
| WB CELT Encoder | off | 0 – 10 | 64 | 10 | 28-54 |
| WB CELT Decoder | off | 0 – 10 | 64 | 10 | 21 |
Opus Opus Armv7-M / Armv8-M Super Wideband (SWB)
CPU Utilization| VBR | Complexity | Bit Rate (kbps) | Frame Size (ms) | MIPS* | |
| SWB CELT Encoder | off | 0 – 10 | 48 | 10 | 31-57 |
| SWB CELT Decoder | off | 0 – 10 | 48 | 10 | 23 |
| SWB CELT Encoder | off | 0 – 10 | 64 | 10 | 33-59 |
| SWB CELT Decoder | off | 0 – 10 | 64 | 10 | 23 |
Opus Armv8-A Cortex-A35, A53, A57, A72 || Armv9-A
Memory requirements in units of byte.| Function | Program Mem | Data Mem | Scratch Mem | Channel Data Mem |
| Encode | Max: 100000 or call function OPUS_ADT_getEncScratchSize() | 41062 (1 channel) 45764 (2 channels) |
||
| Decode | Max: 100000 or call function OPUS_ADT_getDecScratchSize() | 17964 (1 channel) 26684 (2 channels) |
||
| Encode/Decode | 311k | 25k |
Opus Armv8-A Cortex-A35, A53, A57, A72 || Armv9-A
CPU Utilization| Function | VBR | FEC | DTX | Complexity | Bit Rate (kbps) | Frame Size (ms) | Sampling Rate (kHz) | MIPS* |
| Wideband Silk Encoder | off | On | off | 3 | 25 | 10 | 16 | 38 |
| Wideband Silk Encoder | On | On | off | 3 | 25 | 10 | 16 | 26 |
| Fullband Celt Decoder | off | off | off | 3 | 64 | 10 | Input: 48 Output: 16 | 11 |
| Fullband Hybrid | off | off | off | 3 | 64 | 10 | Input: 48 Output: 16 | 15 |
TI Processors
Opus C64x+ | C7x
CPU Utilization| Function | Peak MIPS | ||||
| Bit Rate | NB | MB | WB | SWB | FB |
| Encode/Decode | 11.93 | 15.79 | 18.08 | 20.18 | 42.81 |
Opus C64x+ | C7x
Memory requirements in units of byte.| Function | Program Mem | Data Mem | Stack Mem | Total Memory |
| Encode/Decode | 259.63k | 94.41k | 3k | 357.04k |
NB -Narrow Band
MB -Medium Band
WB -Wide Band
SWB -Super Wide Band
FB Full Band
Sampling Rate
OPUS coding algorithm for speech/music signals sampled at either 48kHz, 24 kHz, 16 kHz, 12 kHz or 8 kHz.
Operates on variable frame sizes of 2.5ms, 5ms, 10ms, 20ms, 40ms, and 60ms.
Supports bit rates ranging from 6 kbps to 510kbps
API Functions
API function call summary
Opus_ADT_initEncoder()
Opus_ADT_initDecoder()
Opus_ADT_encode()
Opus_ADT_decode()
Opus_ADT_deleteEncoder()
Opus_ADT_deleteDecoder()
Opus_ADT_getStatus()