In audio signal processing, pre-echo, sometimes called a forward echo, (not to be confused with reverse echo) is a digital audio compression artifact where a sound is heard before it occurs (hence the name). It is most noticeable in impulsive sounds from percussion instruments such as castanets or cymbals.
It occurs in transform-based audio compression algorithms – typically based on the modified discrete cosine transform (MDCT) – such as MP3, MPEG-4 AAC, and Vorbis, and is due to quantization noise being spread over the entire transform-window of the codec.
Cause
The psychoacoustic component of the effect is that one hears only the echo preceding the transient, not the one following – because this latter is drowned out by the transient. Formally, forward temporal masking is much stronger than backwards temporal masking, hence one hears a pre-echo, but no post-echo.
Mitigation
In an effort to avoid pre-echo artifacts, many sound processing systems use filters where all of the response occurs after the main impulse, rather than linear phase filters. Such filters necessarily introduce phase distortion and temporal smearing, but this additional distortion is less audible because of strong forward masking.
Avoiding pre-echo is a substantial design difficulty in transform domain lossy audio codecs such as MP3, MPEG-4 AAC, and Vorbis. It is also one of the problems encountered in digital room correction algorithms and frequency domain filters in general (denoising by spectral subtraction, equalization, and others). One way of reducing "breathing" for filters and compression techniques using piecewise Fourier-based transforms is picking a smaller transform window (short blocks in MP3), thus increasing the temporal resolution of the algorithm at the cost of reducing its frequency resolution.
To better reproduce transient and eliminate pre-echo- lossy audio compression software such as open source Vorbis encoder (oggenc from vorbis-tools)- impulse noisetune or and bit reservoir can be used as an advanced option (-advanced-encode-option).