Title: Mixed-Excitation Linear Predictive Coder - MELP
1Mixed-Excitation Linear Predictive Coder - MELP
- MELP codec demonstration
- Subject Voice Coding
- Scientific Postgraduate Study of Electronics,
FESB, University of Split - Professor dr. sc. Dinko Begušic Student Zoran
Sambol
2Voice coding Study Subject
- Subject program
- Literature
- Digital Telephony J. Bellamy
- Speech Coding Tutorial Review A. S. Spanias
- E-mail Communication
- Professor in Texas and students permanent
employment - Three phases
- Voice Coding overall Contents
- MELP algorithm - Seminar document
- MELP demonstration Real coding
3MELP web resources
- US DoD Voice Processor Consortium
- DDVPC Homepage
- MELP at 2.4 Kbps
- Performance Measures
- Sound Samples
- Source Code
- Non-real-time fixed and floating point versions
- Real-time C50 DSP version software development
- ASPI Digital web site copy Polycom
- MELP Demo for Windows 95
- Texas Instruments
- Embedded development
- Noam Amir Educational web site copy
4MELP speech compression
- New 2400 bps Federal Standard
- Selection test (DDVPC)
- Intelligibility, Voice quality, Talker
recognizability and Communicability - Hardware parameters
- Processing power
- Memory usage
- Delay
- Commercial and military use
- Robust in difficult noise environments
- Efficient in computational requirements
5MELP speech
- Traditional LPC parametric model includes four
additional features - Mixed-excitation
- Aperiodic pulses
- Pulse dispersion
- Adaptive spectral Filtering
- Introduction (ASPI)
- Atlanta Signal Processor, Inc.
- Specifications (May 28, 1998 - Draft)
- Specifications for the Analog to Digital
Conversion of Voice by 2,400 Bit/Second Mixed
Excitation Linear Prediction - MELP at lower bit rates
Lets code!
6Waves and formats
- How to get pure samples for MELP?
- Learn about wave files understand technology
- Get programming routines
- Make applications
- Books Programming Knowledge base
- Petzold Chapter 22 Sound Music
- Waveform audio device (.WAV)
- API low level (wave, midi) and high level
(mci) interfaces - MIDI, CD Audio, MCI
- Leinecker, Archer Chapter 16 - Sound
- Waveform, MIDI, CD Audio
- MSDN Library Audio Samples Platform SDK - ACM
- Utilities RIFF Walk and RIFF Add
7Wave format RIFF
Waveopt
Bit digging
8Files and Extensions
Name Description Ext Usage
Wave WAVE_FORMAT_PCM But with RIFF header For MELP input must be nChannels1, nSamplesPerSec 8000, nAvgBytesPerSec16000, nBlockAlign2 Wav Original wave file which can be recorded and played on PC sound card. Check with RiffWalk utility RiffWalk.Exe -f2 -j .wav Input file for Waveopt program Waveopt.exe .wav
Binary Pure voice samples. File without RIFF header which has additional 48 bytes Bin I/O for ConsoleMelp(A/S) ConsoleMelp a i .bin o.ccl ConsoleMelp s i .ccl o.bin
CCL MELP Channel Coded Long MELP is MELP file but depending on OS (4bytes for short) is 4 times longer. Bit rate 43200 bit/s. Ccl Input for CCRemover CCRemover.exe .ccl Output from CCInserter
CCS MELP Channel Coded Short MELP file is real Channel Coded MELP file. Bit rate 3200 bit/s. Ccs Input for CCInserter CCInserter.exe .ccs Output from CCRemover
MELP Real MELP file with bit rate 2400 bit/s. It is used only as a secondary output in additional Synthesis. Mlp Internal produced with ConsoleMelp s i .ccs o AS.ccs See melp.c, melp_syn.c and melp_chn.c files! melp_syn() and melp_chn_read() methods.
9Waveopt utility
- C Console application
- Waveform structure (RIFF)
- Analysis
- Synthesis
- Stream I/O routines
Analysis
Synthesis
What with binary file?
10Non-real time TI MELP demo
- Link Texas Instruments - Self-Extracting MELP 1.2
Source Code (97KB)! - Operating system SunOS4 MELP Read me
- My development
- OSs Win 95, Win 98SE, WinNT
- Compilers IDEs
- Borland C for DOS Char 8, Short Integer 16,
Long 32 - Microsoft Visual C Char 8, Short 16, Integer
32, Long 32 - Hardware resources
- Sound card Creative Sound Blaster Audio PC128
- Microphone, Processor (Pentium3 450 MHz), RAM
(192 MBy) - Console application floating point
ConsoleMelp - Input and output files
ConsoleMelp application
11ConsoleMelp outputs
- What Ive got?
- File which produces back playable Wave file
after Analysis and Synthesis procedure - Synthesized file has great number of zeros
(silence) and every 54 bit is frame bit (0x80) - Bit rate is 10 times least than original wave
- What I want to get?
- MELP file which bit rate is 2400 bit/s and can be
used for Synthesis procedure to produce playable
Wave file
CCRemover CCInserter
See CCL file!
12CCRemover utility
- What I get with it?
- File which can be used after bit insertion
(CCInserter) for Synthesis procedure to produce
playable Wave file - Bit rate of generated file is 3200 bit/s which
leads to conclusion that this is channel coded
MELP algorithm!! - More about channel coding for 1.6 Kb/s MELP Coder
For Wireless Communications
Channel Coded Short - CCS
See CCS file!
13CCInserter utility
- What I get with it?
- CCL file which is input file for ConsoleMelp
application Synthesis - After RIFF header insertion produces playable
Wave file (Waveopt .bin)
Channel Coded Long - CCL
14My MELP at 2.4 Kbps
- Little trick with digging on original source
- New (real 2.4 kbps MELP) file with .mlp
extension - Inverse procedure MELP is produced during the
additional synthesis - melp_chn_read() method - accessing MELP bit
buffer - Cant be used for synthesis!
15Why Im using Synthesis?
- Subroutine UNPACK_CODE
- Unpack bit code from channel.
- Return 1 if erasure, otherwise 0.
- (melp_chn.c Line 319)
- There is no file for writing pure MELP!
- Additional code lines in melp_chn_read() method
after all unpack_code() methods calls (melp_chn.c
Line 154). - Additional file created in main (melp.c Line 82)
and synthesis procedure file (melp_syn.c)
16MELP flowchart
Run complete MELP?
17MLP file for Synthesis
Useful Effort?
Additional Synthesis
18Real MELP Processing
Analysis Synthesis
2 Analyses Syntheses
19Batch Console applications
- Four different console application integrated
using DOS Batch files - Waveopt, ConsoleMelp, CCRemover and CCInserter
- Console applications with input and output
parameters files - ConsoleMelp a i dam9.bin o dam9.ccl
- Waveopt syntax
- Waveopt.exe .bin .wav
- Easy deleting, renaming, directory creating(see
notes!)
20Windows MelpPlayer
- Statistics MOS, DAM, DRT measurement
- Database Connection Access, MySQL
- Internet Connection IP, Web based
- Visualization, Skins
- Opening WAV and MLP (CCS) files
- Playing files
- Recording and storing waves in MELP useful format
- Recording CCS and MLP files
- Size comparison - Explorer utility
21MelpCodec For
Education
- Laboratory exercise Voice Coding subject
- Gathering measurement results
- Symposium article (IEEE, SoftCOM, ELMAR, MiPRO)
- Experience for some other voice and no-voice LP
algorithms - Digital Signal Adaptive Processing - Subject
- My Postgraduate Work Theme
And
22Lets think farther!
Business
- Cooperation FESB University of Split and Siemens
d.d Croatia and Siemens AG - PSE PRO TCS RCD department
- Projects Signal Processing, Communication,
Software Development - Links
- PSE Siemens d.d
- Siemens AG
23Thanks for your attention!
- Contact
- Zoran Sambol, Siemens d.d. Put Brodarice 6, 21000
Split - Tel. 385 21 390 936
- zoran.sambol_at_st.tel.hr, zoran.sambol_at_siemens.hr