For 137Cs and 60Co gamma ray spectra, gamma ray energy is proportional to the amplitude of the pulse signal, and energy resolution can be improved by pulse signal processing with mathematical algorithms. Influenced by system measurement noise and baseline fluctuation, the pulse amplitude is difficult to calculate accurately. A method that combines the Kalman filter baseline estimation with the non-linear exponential fitting has been used. By this method, the pulse signal is divided into two parts: one is the raising edge before the pulse peak, and another is after the pulse peak. The pulse amplitude equals the difference between the pulse starting height and the pulse peak height. The pulse starting height is obtained by Kalman filter baseline estimation on the rising edge of the pulse starting point. The pulse peak height is calculated by nonlinear exponential fitting on the falling edge of the pulse highest point. When the sampling rate is 100 MHz, the pulse signals obtained from a Cd(Zn)Te detector are analyzed by this method. Results have shown that the processed pulses have a more distinguishable amplitude distribution; energy resolution for the 137Cs spectrum is approximately 2.97% at 662 keV (~19.66 keV FWHM), and for the 60Co spectrum it is 2.61% at 1,332 keV (~34.76 keV FWHM).