In this paper an improved method of speech enhancement using Power Spectral Density (PSD) codebooks of clean speech and several types of noise, is proposed. The proposed algorithm estimates the PSDs of speech and noise of unknown nature and evaluates the input Signal-to-Noise Ratio (SNR) by solving an over-determined set of equations as in the previous version. However, the search method used for the estimation of speech and noise PSDs is improved to assure the best match. In the former algorithm every branch in speech and noise codebooks was tracked until the lowest node (centroid) was reached. It was then used in the construction of the Wiener filter. In this improved proposed algorithm the centroids, from speech and noise codebooks, whose combination results in the best match of the noisy speech frame PSD, are selected no matter their locations in the corresponding code-book trees. Experiments show that better results are always obtained in comparison to the previous algorithm. However, other methods are tried to smooth further the PSD of speech and noise prior to their use in the Wiener filter for speech enhancement to confirm that best results are obtained by using the best match with no smoothing.