Speex

Audio Speech Compression
Sampling Rate: Narrowband (8 kHz), wideband (16 kHz), and ultra-wideband (32 kHz) compression in the same bitstream.
Availability
| Platforms |
| Arm ® Devices – Cortex-A8 / A9 / A15 (Armv7-A, Armv8-A, Armv9-A) | Cortex-M4 || *Legacy – Cortex-M3/ARM9E/ARM11 |
| Texas Instruments – TI TMS320C6000 C64x / C64x+/ C66x, C674x |
| Win32 LIB / DLL |
| Linux i686 |
ADT Speex is available on the above Platforms:ย Other configurations are available upon request.
Features
- Perceptual Enhancement
- Packet loss concealment
- Constant, Average, and Variable bitrate operation
- Configurable complexity AND quality enables user to trade off between CPU utilization and voice quality
- Wide variety of user-specified bit rates
- Voice Activity Detection (VAD)
- Discontinuous Transmission (DTX)
Description
Speexย is anย audio compression formatย specifically tuned for the reproduction of human speech. It is a flexible speech compression algorithm that can be used in a wide variety of voice applications including Voice Over IP (VoIP).ย ย Since Speex was designed for VoIP instead of cell phone use, the codec must be robust to lost packets.
The features listed above are included in the Speex codec. These features can be configured by the
host application.
Specification Tables
NOTE: We specify MIPS (Millions of Instructions Per Second) as MCPS (Millions of Instruction Cycles Per Second). Unless otherwise specified, peak MIPS are indicated.
โย Click on links below to view specification tables.ย
ARM Devices
ARM Cortex-A8/A9/A15 Memory
MEMORY REQUIREMENTSAll Memory usage is given in units of byte.
| Function | Program Memory | Data Memory | Scratch |
| Encode | 152K | 12K | 32096 |
| Decode | 16096 |
Speex ARM Cortex-A8/A9/A15
Narrowband Mode (8 Khz) CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 24600 | 116 | 5 |
| 10 | 4 | 24600 | 65 | 5 |
| 4 | 10 | 8000 | 72 | 4 |
| 4 | 4 | 8000 | 41 | 4 |
Speex ARM Cortex-A8/A9/A15
Wideband Mode (16 Khz) CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 42400 | 298 | 13 |
| 10 | 4 | 42400 | 153 | 13 |
| 4 | 10 | 12800 | 129 | 11 |
| 4 | 4 | 12800 | 72 | 11 |
Speex ARM Cortex-A8/A9/A15
Ultra-Wideband Mode CPU Requirements (32 Khz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 44000 | 311 | 25 |
| 10 | 4 | 44000 | 166 | 25 |
| 4 | 10 | 22375 | 136 | 24 |
| 4 | 4 | 22375 | 86 | 24 |
Speex Arm Cortex-M4
MEMORY REQUIREMENTSAll Memory usage is given in units of byte.
| Function | Program Memory | Data Memory | Tables | Scratch |
| Encode | 152K | 12K | 19256 | 32096 |
| Decode | 16096 |
Speex NB Arm Cortex-M4
Narrowband Mode CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 24600 | 193.8 | 6.05 |
| 10 | 4 | 24600 | 85.4 | 5.95 |
| 4 | 10 | 8000 | 99.9 | 53.5 |
| 4 | 4 | 8000 | 59.2 | 5.3 |
Speex WB Speex Arm Cortex-M4
Wideband Mode CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 42400 | 371.1 | 14.6 |
| 10 | 4 | 42400 | 167.9 | 14.5 |
| 4 | 10 | 12800 | 153.2 | 13 |
| 4 | 4 | 12800 | 88 | 12.9 |
Speex Ultra-WB Arm Cortex-M4
Ultra-Wideband Mode CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 44000 | 387.9 | 28.1 |
| 10 | 4 | 44000 | 184.2 | 28.2 |
| 4 | 10 | 22375 | 193.4 | 27 |
| 4 | 4 | 22375 | 106.5 | 26.9 |
TI Processors
Speex C674x / C64x / C64x+ / C66x Memory
MEMORY REQUIREMENTSAll Memory usage is given in units of byte.
| Function | Program Memory | Data Memory | Tables | Scratch |
| Encode | 170K | 1508 | 19256 | 64080 |
| Decode | 32080 |
All memory requirements are in units of byte.
| Mode | Encoder | Decoder |
| Narrowband | 6461 | 5773 |
| Wideband | 7709 | 6840 |
| Ultra-Wideband | 9117 | 8067 |
Speex C674x / C64x / C64x+ / C66x
Narrowband Mode CPU Requirements (MIPS = MHz)| Current | Target | |||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS | Encode MIPS | Decode MIPS |
| 10 | 10 | 24600 | 175 | 8.3 | 58 | 3 |
| 10 | 4 | 24600 | 69 | 8.3 | 23 | 3 |
| 4 | 10 | 8000 | 75 | 7.5 | 25 | 3 |
| 4 | 4 | 8000 | 42 | 7.5 | 14 | 3 |
Speex C674x / C64x / C64x+ / C66x
Wideband Mode CPU Requirements (MIPS = MHz)| Current | Target | |||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS | Encode MIPS | Decode MIPS |
| 10 | 10 | 42400 | 363 | 14 | 121 | 4 |
| 10 | 4 | 42400 | 156 | 14 | 52 | 4 |
| 4 | 10 | 12800 | 129 | 14 | 43 | 4 |
| 4 | 4 | 12800 | 71 | 14 | 23 | 4 |
Speex C674x / C64x / C64x+ / C66x
Ultra-Wideband Mode CPU Requirements (MIPS = MHz)| Current | Target | |||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS | Encode MIPS | Decode MIPS |
| 10 | 10 | 44000 | 375 | 23 | 125 | 8 |
| 10 | 4 | 44000 | 167 | 23 | 55 | 8 |
| 4 | 10 | 22375 | 164 | 22 | 55 | 8 |
| 4 | 4 | 22375 | 85 | 22 | 28 | 8 |
Windows
Speex Win 32 (Dll and static lib)
Narrowband Mode CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 24600 | 130.36 | 2.65 |
| 10 | 4 | 24600 | 47.54 | 3.15 |
| 4 | 10 | 8000 | 53.17 | 2.65 |
| 4 | 4 | 8000 | 29.82 | 2.32 |
Win 32 (Dll and static lib)
Wideband Mode CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 24600 | 266.35 | 9.61 |
| 10 | 4 | 24600 | 109.45 | 7.45 |
| 4 | 10 | 8000 | 91.10 | 5.80 |
| 4 | 4 | 8000 | 47.04 | 6.63 |
Speex Win 32 (Dll and static lib)
Ultra-Wideband Mode CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 44000 | 270.66 | 12.59 |
| 10 | 4 | 44000 | 117.44 | 11.59 |
| 4 | 10 | 22375 | 120.59 | 15.4 |
| 4 | 4 | 22375 | 60.13 | 19.05 |
All Memory usage is given in units of byte.
| Function | Program Memory | Data Memory | Scratch |
| Encode | 66K | 12K | 32096 |
| Decode | 16096 |
Linux
Speex i686 Memory
MEMORY REQUIREMENTSAll Memory usage is given in units of byte.
| Function | Program Memory | Data Memory | Scratch |
| Encode | 152K | 12K | 32096 |
| Decode | 16096 |
Speex i686
Narrowband Mode CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 24600 | 86.7 | 2.55 |
| 10 | 4 | 24600 | 32.3 | 2.38 |
| 4 | 10 | 8000 | 35.02 | 2.04 |
| 4 | 4 | 8000 | 19.72 | 2.04 |
Speex i686
Wideband Mode (16 Khz) CPU Requirements (MIPS = MHz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 42400 | 182.9 | 5.95 |
| 10 | 4 | 42400 | 73.44 | 5.44 |
| 4 | 10 | 12800 | 59.5 | 3.74 |
| 4 | 4 | 12800 | 31.9 | 4.08 |
Speex i686
Ultra-Wideband Mode CPU Requirements (32 Khz)| Current | ||||
| Quality | Complexity | Bit Rate | Encode MIPS | Decode MIPS |
| 10 | 10 | 44000 | 182.9 | 8.33 |
| 10 | 4 | 44000 | 79.7 | 8.0 |
| 4 | 10 | 22375 | 79.9 | 10.2 |
| 4 | 4 | 22375 | 38.2 | 9.86 |
API Functions
API function call summary
SPEEX_ADT_initEncoder()
SPEEX_ADT_initDecoder()
SPEEX_ADT_encode()
SPEEX_ADT_decode()
SPEEX_ADT_deleteEncoder()
SPEEX_ADT_deleteDecoder()
SPEEX_ADT_getStatus()