Minimum phase conversion with Cepstrum method, how to scale the result? I am trying to convert a zero phase spectrum (magnidue response curve with zero phases) to a minimum phase spectrum, because I need a totally causal impulse response for FFT spectral filtering, and having an IR devoid of anticausal components allows me to implement a zero latency partitioned scheme.
By now I experimented with two similar methods based on the real cepstrum but my question is inherent to the second method.
In the first method you compute the cepstrum by taking the ifft of the log of the magnitude curve, negate the second half of the cepstrum (actually I rather use a cosine function to have a more graceful transition and less ringing artifacts), take the fft of the result and then instead of computing the exp of the resulting spectrum I simply keep the phase combining it with the original magnitude. This method works well enough despite the resulting IR doesn't always fade to zero.
In the second method you zero the second half of the cepstrum instead of negating it (here too I rather prefer a rised cosine for a more graceful transition), double the result, take the fft and then exponentiate the result.
Here is the problem. The resulting spectrum is uniformly scaled by a variable amount which seems depending on the shape of the original magnitude spectrum, so I cannot compensate by scaling by a fixed value because I don't know the relationship between the resulting scaling factor and the original magnitude spectrum, and I can't definitely have a global level which is dependent on it! I searched but I found very little information around about the min phase cepstrum method. How can I scale the final result properly? I realize this may be a very specialistic topic. Thanks
One possibility is to take the FFT magnitude of both, run a linear regression between the two magnitude vectors, and adjust the gain until the slope of the regression fit is 1.