MELPe - enhanced MELP
optimized voice compression codec suitable for low bit-rate communication systems
Suitable for band limited or efficiency limited communication systems such as satellite links and military applications.
MELP DoD standard specifies a 2400 bps mode of operation
MELPe is a triple-rate low bitrate codec that supports rates of 600 bps, 1200 bps, and 2400 bps
Object Code Evaluation
Fill out the form to receive more information
MELP/MELPe: Overview
MELPe (Multi-Excited-Linear-Prediction enhanced) is an optimized voice compression codec suitable for low bit-rate communication systems such as satellite links, VoIP, and military applications. Sampled at 8 kHz, MELPe achieves this by compressing digital speech to 2400 bps, 1200 bps or 600 bps. MELP was originally developed for and standardized by the U.S. Department of Defense (DoD) as MIL-STD-3005 in 1997 and superseded LPC-10 as the low bit rate DOD standard. Furthering the codec’s development, enhancements were incorporated into the MELP standard. As a result MELPe (Enhanced MELP (Multi-Excited-Linear-Prediction) was adopted in 2001 as the new standard. MELPe incorporates lower bit rates (1200 bps, and 600 bps) and includes a noise preprocessor (NPP) which is intended to reduce many types of background noise. Additionally, MELPe’s decoder incorporates a postfilter to improve voice quality. MELPe was standardized across NATO platforms (STANAG 4591) in 2002.
DOD’s primary goal was to develop a digitally narrowband codec that could perform well in adversarial jamming conditions.
Adaptive Digital's MELPe Codec
Adaptive Digital’s highly optimized MELPe voice compression codec supports the following platforms: Texas Instruments’ TMS320C7000, TMS320C6000, TMS320C5000 | Arm Architectures (v5, v6, v7-A/R, Armv7E-M, Armv8-A/R, Armv9-A) | Linux 32-bit/64-bit | Windows x86 (32-bit) / x64 (64-bit) | iOS | Android.
Adaptive Digital has optimized MELPe to run on the Xilinx MicroBlaze™ Soft Processor Core. A first in the industry, Adaptive Digital is opening new doors by giving our clients the opportunity to consider FPGAs as platforms for the codec requirements.
Features List
Functions are C-callable
Multiple channel capable
Improved postfilter to enhance speech quality
- Optional noise preprocessing to reduce background noise
- Interoperable with the legacy MELP systems, enhancing speech quality of both ends
Coding Rates: 2400, 1200, and 600 bps
Sampling Rate: 8 kHz
FRAME SIZE
The MELPe coder frame size is dependent on the Encode/Decode rate
Rate | Frame Size (Samples) | Frame Size (msec) |
600 bps | 720 | 90.0 |
1200 bps | 540 | 67.5 |
2400 bps | 180 | 22.5 |
Availability
Platforms / Operating Systems / Core |
Arm ® Devices – Armv7A Cortex – A5 / A7 / A8 / A9 / A15 / A17 || Armv8A Cortex – A32 / A35 / A53/ A55 / A57 / A72 / A73 || Armv7EM – Cortex-M4 / M7 | Armv8M Cortex – M33 / M35 || Armv8.1-M Cortex M53 / M55 / M85 || Armv7-R Cortex R4 / R5 || Legacy Arm9E / Arm11 || Legacy ARMv7M – Cortex M3 |
Texas Instruments – TI TMS320C7000 C7x , TI TMS320C6000 C66x / C64x / C64x+, C674x, TMS320C5000 C55x / C54x (2400 bps only) |
Windows x86 (32-bit) / x64 (64-bit) |
Linux 32-bit / 64-bit |
FPGA – Xilinx MicroBlaze 32-bit RISC Harvard architecture soft processor core |
ADT MELPe is available on the above Platforms: Other configurations are available upon request.
Specifications
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.
MELPe Armv7 Cortex-A
CPU UTILIZATIONMIPS | MIPS (600bps) | MIPS (1200 bps) | MIPS (2400 bps) |
Nonlinear Preprocessor (NPP) | 14 | 14 | 14 |
Encoder | 46 | 44 | 27 |
Decoder | 17 | 17 | 17 |
MEMORY REQUIREMENTS
All Memory usage is given in units of byte
Cortex-A | Program | Channel | Tables | Data |
Encoder | 192k | 6560 | 170k | 6k |
Decoder | 1376 | |||
NPP | 11968 |
MELPe Armv8A Cortex-A53 | Armv9-A
CPU UTILIZATIONMIPS | MIPS (600bps) | MIPS (1200 bps) | MIPS (2400 bps) |
Nonlinear Preprocessor (NPP) | 16.4 | 17.2 | 17.9 |
Encoder | 39.7 | 40.8 | 39.1 |
Decoder | 12.2 | 12.2 | 12.6 |
MEMORY REQUIREMENTS
All Memory usage is given in units of byte
Cortex-A | Program | Channel | Scratch | Tables | Data |
Encoder | 225k | 12008 | 7008 | 170k | 4k |
Decoder | 6640 | ||||
NPP | 1600 |
Note: Melpe ARM Cortex-A53 specification numbers measured on ARTIK 710 board (64-bit ARM® Cortex® A-53 processor)
MELPe Arm Cortex-M7
CPU UTILIZATIONMIPS | MIPS (600bps) | MIPS (1200 bps) | MIPS (2400 bps) |
Nonlinear Preprocessor (NPP) | 15 | 15 | 15 |
Encoder | 32.4 | 31.2 | 25.8 |
Decoder | 12.6 | 13.2 | 13.2 |
Total | 60 | 59.4 | 54 |
MELPe Arm Cortex-M33/M35 – Estimate
CPU UTILIZATIONMIPS | MIPS (600bps) | MIPS (1200 bps) | MIPS (2400 bps) |
Nonlinear Preprocessor (NPP) | 21 | 21 | 31 |
Encoder | 45.4 | 43.7 | 36.1 |
Decoder | 17.6 | 18.5 | 18.5 |
Total | 84 | 83.2 | 75.6 |
MEMORY REQUIREMENTS
All Memory usage is given in units of byte
Cortex-M7 | Program | Channel | Scratch | Tables |
Encoder | 100k | 6560 | 6984 | 148k |
Decoder | 1376 | |||
NPP | 11968 |
MELPe Arm Cortex-M4 | Cortex-R5
CPU UTILIZATIONMIPS | MIPS (600bps) | MIPS (1200 bps) | MIPS (2400 bps) |
Nonlinear Preprocessor (NPP) | 25 | 25 | 25 |
Encoder | 49 | 49 | 43 |
Decoder | 21 | 22 | 22 |
Total | 100 | 99 | 90 |
MEMORY REQUIREMENTS
All Memory usage is given in units of byte
Cortex-M4 | R5 | Program | Channel | Scratch | Tables |
Encoder | 100k | 6560 | 6984 | 148k |
Decoder | 1376 | |||
NPP | 11968 |
MELPe Arm11/Arm9E *Legacy
CPU UTILIZATIONMIPS | MIPS (600bps) | MIPS (1200 bps) | MIPS (2400 bps) |
Nonlinear Preprocessor (NPP) | 35 | 35 | 35 |
Encoder | 493 | 489 | 81 |
Decoder | 27 | 27 | 27 |
TMS320C6000
MELPe C64x+ / C66x | TI TMS320C7000 C7x | OMAP C674
CPU UTILIZATIONMIPS | MIPS (600bps) | MIPS (1200 bps) | MIPS (2400 bps) |
Nonlinear Preprocessor (NPP) | 11.4 | 11.5 | 13.7 |
Encoder | 23.4 | 23.5 | 24.8 |
Decoder | 15.1 | 15.1 | 17.4 |
MEMORY REQUIREMENTS
All Memory usage is given in units of byte
C64x+ | Program | Channel | Scratch | Tables | Data |
Encoder | 191k | 6560 | 6984 | 163k | 70k |
Decoder | 1376 | ||||
NPP | 11968 |
MELPe C64x
MEMORY REQUIREMENTSAll Memory usage is given in units of byte
C64x | Program | Channel | Scratch | Tables | Data |
Encoder | 188.4k | 6560 | 5672 | 148k | 63k |
Decoder | 1376 | ||||
NPP | 11968 |
MELPe C6416
CPU UTILIZATIONMIPS (C6416) | MIPS (600bps) | MIPS (1200 bps) | MIPS (2400 bps) |
Nonlinear Preprocessor (NPP) | 12.2 | 12.2 | 13.3 |
Encoder | 23.7 | 27.5 | 24.8 |
Decoder | 15.7 | 22.5 | 17.4 |
TMS320C5000
MELPe C55x
CPU UTILIZATIONSoftware – MELPePlus | 600 bps | 600 bps | 1200 bps | 1200 bps | 2400 bps | 2400 bps |
Max | Average | Max | Average | Max | Average | |
Encode | 34.2 | 32.5 | 46.5 | 41.3 | 29.7 | 26.6 |
Decode | 12.7 | 10.7 | 14.4 | 11.2 | 14.8 | 13.3 |
Noise Preprocessor (NPP) | 19.6 | 18.7 | 20 | 19 | 21.8 | 20.5 |
MEMORY REQUIREMENTS
All Memory usage is given in units of byte
C55x | Program | Channel | Scratch | Tables | Data |
Encoder | 78.3k | 6560 | 6984 | 162k | 5k |
Decoder | 1600 | ||||
NPP | 11968 |
MELPe C54x 2400 bps Only
All Memory usage is given in units of 16-bit word.Channel data is included with Data Memory (only 1 instance is supported)
Function | MIPS (Peak) 2400 bps only | Program Memory | Data Memory |
Encoder | 20.75 | — | — |
Decoder | 17.4 | — | — |
Encode/Decode | 38.15 | 12997 | 16245 |
Noise Preprocessor (NPP) | 19.59 | 4376 | 9534 |
MELPe Windows x86 (32-bit)*
CPU UTILIZATION
*Contact sales for 64-bit specifications.MIPS MIPS (600bps) MIPS (1200 bps) MIPS (2400 bps) Nonlinear Preprocessor (NPP) 84 83 85 Encoder 250 279 237 Decoder 70 68 72
MELPe Linux (32-bit)*
CPU UTILIZATION
*Contact sales for 64-bit specifications.MIPS MIPS (600bps) MIPS (1200 bps) MIPS (2400 bps) Nonlinear Preprocessor (NPP) 76 78 78 Encoder 214 238 207 Decoder 71 71 71
MELPe Xilinx | MicroBlaze
CPU UTILIZATIONMIPS MicroBlaze | MIPS (600bps) | MIPS (1200 bps) | MIPS (2400 bps) | |||
Function | Peak | Avg | Peak | Avg | Peak | Avg |
Nonlinear Preprocessor (NPP) | 28 | 26 | 28 | 26 | 28 | 26 |
Encoder | 113 | 109 | 116 | 97 | 96 | 84 |
Decoder | 39 | 36 | 42 | 36 | 52 | 37 |
Total | 178 | 171 | 180 | 159 | 176 | 150 |
MEMORY REQUIREMENTS
All Memory usage is given in units of byte.
MicroBlaze | Program | Channel | Scratch | Tables | Data |
Encoder | 349k | 6560 | 7000 | 820 | 377k |
Decoder | 1376 | ||||
NPP | 11968 |
Description
The MELP Vocoder uses a mixed-excitation model that can produce more natural-sounding speech because it can represent a richer ensemble of possible speech characteristics. The MELPe enhanced speech coders’ quality surpasses that of the original MELP vocoder. The MELPe software is capable of running multi streams (multi-channel) together, either encoding and decoding concurrently.
The MELPe codec supports three different vocoder bitrates: 2400, 1200, and 600 bps. The basic 2400 bps bitrate vocoder uses a 22.5 ms frame of speech consisting of 180 8000-Hz, 16-bit speech samples. The 1200 and 600 bps bitrate vocoders each use three and four 22.5 ms frames of speech, respectively.
These reduced-bitrate vocoders internally use multiple 2400 bps parameter sets with further processing to strategically remove redundancy. The payload sizes for each of the bitrates are 54, 81, and 54 bits for the 2400, 1200, and 600 bps frames, respectively.
The MELPe algorithm distinguishes between voiced and unvoiced speech and encodes each differently. Unvoiced speech can be coded with fewer information bits for the same quality.
Commercial applications have arisen because of the low-bitrate property of MELPe with its (relatively) high intelligibility. Because of this, MELPe is being used in a variety of wired and radio communications systems.
Function API's
API function call summary
MELPE_ADT_initEncode (…) Initializes the MELPe encoder
MELPE_ADT_initDecode (…) Initializes the MELPe decoder
MELPE_ADT_encode (…) Executes the MELPe encoder
MELPE_ADT_decode (…) Executes the MELPe decoder
NPP_ADT_init (…) Initializes the Melpe noise pre-processor
NPP_ADT_process (…) Executes the Melpe noise pre-processor