Audio Codec Improvement Through Noise Substitution

This is the companion site for the AES Paper "Using Noise Substitution for Backwards-Compatible Audio Codec Improvement", which describes the method used in the row-mp3 codec to increase a coded audio file's perceived quality. Roughly speaking, this technique involves representing the residual caused by the coding process as colored noise. Preliminary results indicate that listeners prefer coded files with accompanying noise at equivalent data rates. Further information can be found in the aforementioned paper.

Sound Examples

Below are a collection of files meant to demonstrate the results of the noise substitution algorithm. Each of five audio files are given in a variety of formats meant for quality comparison (all are stereo with a 44.1 kHz sampling rate): The latter group of files are those augmented with the proposed algorithm. They are presented in a 16-bit PCM format to allow the inclusion of the residual representation. This makes their filesize rather large, please allow some time for them to load!

Dance musicLossless audio64 kbps MP380 kbps MP3Unmodulated cepstrum estimateModulated cepstrum estimateUnmodulated flux estimateModulated flux estimate
Electric GuitarLossless audio64 kbps MP380 kbps MP3Unmodulated cepstrum estimateModulated cepstrum estimateUnmodulated flux estimateModulated flux estimate
Acoustic DrumsLossless audio64 kbps MP380 kbps MP3Unmodulated cepstrum estimateModulated cepstrum estimateUnmodulated flux estimateModulated flux estimate
Hip-hop musicLossless audio64 kbps MP380 kbps MP3Unmodulated cepstrum estimateModulated cepstrum estimateUnmodulated flux estimateModulated flux estimate
ViolinLossless audio64 kbps MP380 kbps MP3Unmodulated cepstrum estimateModulated cepstrum estimateUnmodulated flux estimateModulated flux estimate

Code

Here is a Python of the noise substitution techniques discussed herein. The required modules are Creation of the requisite MP3 files should be done outside of the programs, preferably using LAME with the commands given by the program, eg lame --resample 44.1 --cbr -b 64 -h filename.wav. This particular encoding format is recommended so that the error extraction and analysis works properly. The files contained are Please contact me if you have any troubles running the code!