MATCHING PURSUIT ALGORITHM IN MORSE DECODINGRecently I started doing some research on sparse representations of audio signals. There is a lot of research papers available in how to use sparse coding for machine learning purposes, such as computer vision and audio classification. There is also growing body of evidence that sparseness constitutes a general principle of sensory coding in the human nervous system.
There are also many algorithms designed to transform audio signals to sparse codes. One such algorithm is Matching Pursuit that decomposes any signal into linear expansion of waveforms that are selected from a redundant dictionary of functions. A matching pursuit isolates the signal structures that are coherent with respect to given dictionary. A classic paper that explains this approach was written by Stephane G. Mallat and Zhifeng Zhang in 1993.
Matching Pursuit Tool Kit (MPTK) provides a fast implementation of the Matching Pursuit algorithm for the sparse decomposition of multichannel signals. It comprises a C++ library, standalone command line utilities, and some scripts for running it and plotting the results through Matlab. This article explains the concept and the implementation details of the toolkit.
To experiment with sparse coding I selected a noisy WAV audio file that contains 1:15 long CW pileup example. I used Audacity to review the spectrum plot of the original audio file as shown on Fig 1. below. The audio sample contains some 13 ... 15 CW stations, some hardly audible under noise.
|Fig 1. Spectrum display - original audio file
The best initial results were obtained by using "dic_test.xml" dictionary that is composed of a combination of harmonic and gabor atoms. Figure 2. below shows the spectrum plot of reconstructed audio file and noise reduction is quite visible. The CW signals are highlighted with red and white colors whereas background noise has almost disappeared.
|Fig 2. Spectrum display - reconstructed audio file
I am also enclosing the reconstructed audio file. It sounds quite different from the original, noisy audio. The higher frequency signals sound like echo (perhaps too much harmonics) and at 900 Hz IN3NJB is clear but dits and dahs could have more sharp edges (perhaps too long gabor wavelet?).
This experiments shows that Matching Pursuit is a very powerful signal processing tool that could be used to improve Morse decoder capabilities, especially with pileups and noisy signals. However, more work is needed to build an optimized dictionary of "atoms". For example the modified Morlet wavelet discussed in this article might improve the reconstruction accuracy.
If you find this article interesting please provide your comments and feedback below.