Harmonic and Individual Lines and Noise


Harmonic and Individual Lines and Noise is a parametric codec for audio. The basic premise of the encoder is that most audio, and particularly speech, can be synthesized from only sinusoids and noise. The encoder describes individual sinusoids with amplitude and frequency, harmonic tones by fundamental frequency, amplitude and the spectral envelope of the partials, and the noise by amplitude and spectral envelope. This type of encoder is capable of encoding audio to between 6 and 16 kilobits per second for a typical audio bandwidth of 8 kHz. The framelength of this encoder is 32 ms.
A typical codec extracts sinusoid information from the samples by applying a short-time Fourier transform to the samples and using that to find the important harmonic content of a single frame. By matching sinusoids across frames, the encoder is capable of grouping them into harmonic lines and individual sinusoids. The matching can take amplitude, frequency and phase into account when trying to match sinusoids across frames. Differences between amplitude and frequency within a track can be coded with fewer bits than each individual single sinusoid would require, thus the longer a track the encoder can find, the better it will be able to reduce the final bitrate.
The decoder uses an add-and-overlap strategy: each frame in the bitstream contains parameters for 32 ms, however, the next frame starts halfway through the current frame. By filtering the synthesized segments with a Hanning filter, adding two overlapping frames together will produce a smooth transition between the two. This also applies to the encoder because the short Fourier transform gives better results when the data is pre-processed with a Hanning filter.
Synthesizing only the sinusoids sounds artificial and metallic. To mask this, the encoder subtracts the synthesized sinusoids from the original audio signal. The residual is then matched to a linear filter that is excited with white noise. The extracted parameters can then be quantized, coded and multiplexed into a bitstream.