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.

MELPe Military Codec

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

The demonstration software is available for ARM, TI DSP, and x86_64 architectures.

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
The MELPe voice channel is show in the block diagram above.

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

RateFrame Size (Samples)Frame Size (msec)
600 bps72090.0
1200 bps54067.5
2400 bps18022.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 UTILIZATION

MIPSMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)141414
Encoder464427
Decoder171717

MEMORY REQUIREMENTS
All Memory usage is given in units of byte

Cortex-AProgramChannelTablesData
Encoder192k6560170k6k
Decoder1376
NPP11968

MELPe Armv8A Cortex-A53 | Armv9-A

CPU UTILIZATION

MIPSMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)16.417.217.9
Encoder39.740.839.1
Decoder12.212.212.6

MEMORY REQUIREMENTS
All Memory usage is given in units of byte

Cortex-AProgramChannelScratchTablesData
Encoder225k120087008170k4k
Decoder6640
NPP1600

Note: Melpe ARM Cortex-A53 specification numbers measured on ARTIK 710 board (64-bit ARM® Cortex® A-53 processor)

MELPe Arm Cortex-M7

CPU UTILIZATION
MIPSMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)151515
Encoder32.431.225.8
Decoder12.613.213.2
Total6059.454

MELPe Arm Cortex-M33/M35 – Estimate

CPU UTILIZATION
MIPSMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)212131
Encoder45.443.736.1
Decoder17.618.518.5
Total8483.275.6

MEMORY REQUIREMENTS
All Memory usage is given in units of byte

Cortex-M7ProgramChannelScratchTables
Encoder100k65606984148k
Decoder1376
NPP11968

MELPe Arm Cortex-M4 | Cortex-R5

CPU UTILIZATION
MIPSMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)252525
Encoder494943
Decoder212222
Total1009990

MEMORY REQUIREMENTS
All Memory usage is given in units of byte

Cortex-M4 | R5ProgramChannelScratchTables
Encoder100k65606984148k
Decoder1376
NPP11968

MELPe Arm11/Arm9E *Legacy

CPU UTILIZATION
MIPSMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)353535
Encoder49348981
Decoder272727

TMS320C6000

MELPe C64x+ / C66x | TI TMS320C7000 C7x | OMAP C674

CPU UTILIZATION
MIPSMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)11.411.513.7
Encoder23.423.524.8
Decoder15.115.117.4

MEMORY REQUIREMENTS
All Memory usage is given in units of byte

C64x+ProgramChannelScratchTablesData
Encoder191k65606984163k70k
Decoder1376
NPP11968

MELPe C64x

MEMORY REQUIREMENTS
All Memory usage is given in units of byte
C64xProgramChannelScratchTablesData
Encoder188.4k65605672148k63k
Decoder1376
NPP11968

MELPe C6416

CPU UTILIZATION
MIPS (C6416)MIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)12.212.213.3
Encoder23.727.524.8
Decoder15.722.517.4

TMS320C5000

MELPe C55x

CPU UTILIZATION
Software – MELPePlus600 bps600 bps1200 bps1200 bps2400 bps2400 bps
MaxAverageMaxAverageMaxAverage
Encode34.232.546.541.329.726.6
Decode12.710.714.411.214.813.3
Noise Preprocessor (NPP)19.618.7201921.820.5

MEMORY REQUIREMENTS
All Memory usage is given in units of byte

C55xProgramChannelScratchTablesData
Encoder78.3k65606984162k5k
Decoder1600
NPP11968

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)
FunctionMIPS (Peak)
2400 bps only
Program MemoryData Memory
Encoder20.75
Decoder17.4
Encode/Decode38.151299716245
Noise Preprocessor (NPP)19.5943769534

MELPe Windows x86 (32-bit)*

CPU UTILIZATION
*Contact sales for 64-bit specifications.
MIPSMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)848385
Encoder250279237
Decoder706872

MELPe Linux (32-bit)*

CPU UTILIZATION
*Contact sales for 64-bit specifications.
MIPSMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
Nonlinear Preprocessor (NPP)767878
Encoder214238207
Decoder717171

MELPe Xilinx | MicroBlaze

CPU UTILIZATION
MIPS MicroBlazeMIPS (600bps)MIPS (1200 bps)MIPS (2400 bps)
FunctionPeakAvgPeakAvgPeakAvg
Nonlinear Preprocessor (NPP)282628262826
Encoder113109116979684
Decoder393642365237
Total178171180159176150

MEMORY REQUIREMENTS
All Memory usage is given in units of byte.

MicroBlazeProgramChannelScratchTablesData
Encoder349k65607000820377k
Decoder1376
NPP11968

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

Translate »