MELPe - enhanced MELP

The MELPe codec can transcode its bitstream directly to another rate.

Suitable for band limited or efficiency limited communication systems such as satellite links and military applications.

Military Codec

MELP DoD standard specifies a 2400 bps mode of operation

MELPe is a triple-rate low codec that supports rates of 600 bps, 1200 bps, and 2400 bps

null

MELPe Military Standard

Adaptive Digital is the worldwide preferred provider of MELPe and GSM codecs!

MELP: Overview

MELP (Multi-Excited-Linear-Prediction) is a voice compression codec 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. Sampled at 8 kHz, MELPE achieves this by compressing digital speech to 2400 bps, 1200 bps or 600 bps.   

Adaptive Digital's MELPe Codec

Adaptive Digital’s highly optimized MELPe voice compression codec supports the following platforms: Texas Instruments’ TMS320C6000, TMS320C5000 | Arm Architectures (v5, v6, v7-A/R, Armv7E-M, Armv8-A, Armv8-R) | Linux 32-bit/64-bit | Windows x86 / x64.

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-calleble

  • Multiple channel capable

  • Improved postfilter to enhance speech quality

  • Optional noise preprocessing to reduce background noise
  • Transcodes between rates
  • 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 – Armv7 Cortex-A5/A7/A8 / A9 / A15, | Cortex-M3 / M4 / M7 | Cortex-R5 | Legacy Arm9E/Arm11
Arm ® Devices – Armv8-A Cortex-A53 / A57 | Cortex-A72 / A73
Texas Instruments – TI TMS320C6000 C64x/C64x+, C674x, TMS320C5000 C55x / C54x
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

MELPe Armv7 Cortex-A | Armv8 Cortex-A53

MEMORY REQUIREMENTS
All Memory usage is given in units of byte

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 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

MEMORY REQUIREMENTS
All Memory usage is given in units of byte
Cortex-M7ProgramChannelScratchTablesData
Encoder100k65606984148k63k
Decoder1376
NPP11968

MELPe Arm Cortex-M4 | Cortex-R5

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

MEMORY REQUIREMENTS
All Memory usage is given in units of byte
Cortex-M4 | R5ProgramChannelScratchTablesData
Encoder100k65606984148k63k
Decoder1376
NPP11968

MELPe Arm11/Arm9E

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

TMS320C6000

MELPe C64x+ / C66x | 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 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 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 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 »