We propose a new adaptive speech noise removal algorithm based on a two-stage Wiener filtering. A first Wiener filter is used to produce a smoothed estimate of the a priori signal-to-noise ratio (SNR), aided by a classifier that separates speech from noise frames, and a second Wiener filter is used to generate the final output. Spectral analysis and synthesis is performed by a modulated complex lapped transform (MCLT). For noisy speech at a low 10 dB input SNR, for example, the proposed algorithm can achieve on average about 13 dB noise-to-mask ratio (NMR) reduction, or about 6 dB SNR improvement.