# cceps (complex cepstrum) function in Matlab

My doubt is in regards to the usage of the function cceps in Matlab.

The function is giving me the cepstrum for the entire speech signal of 3 or 4sec. This works well when I play back the signal after taking the inverse (using theicceps function). However, in order to analyze the given speech signal, we are supposed to only consider 20ms frame.

Is taking the complex cepstrum throughout the signal valid? Why is it working out here?

• Matlab cceps provided two ways to calculate the ceptrum, the default way is to use fft and phase unwrap， But I found it, at least in my condition, it often gave the wrong answer and the second method is also unreliable. I doulbt if using 20-30ms can solve this problem? I mean neither long signal nor short signal is reliable for cceps in matlab. – QZHua Jan 8 '18 at 3:49

## 1 Answer

You should split the signal up into overlapping chunks of 20 to 30 ms. It is certainly valid to take the complex cepstrum on the 4 second signal. But, since the frequency characteristics of speech are constantly varying the complex cepstrum on the 4 second signal will average all of these together and you won't know what happened when. If you take it in each 20 ms window then you can see how the properties of the signal change over time.

• If my purpose of using complex cepstrum is not to analyze signal change every frame, but to use it only for compression of the entire speech signal, then is it correct to cceps function over the entire .wav file? – Shabaz Dec 27 '13 at 2:47
• You should still do it in small chunks. The reason is that because the frequencies in speech are constantly changing when you do it over the whole file you are, in a sense, averaging these together. In order to do the compression you are going to want to remove some of the frequencies that are not perceived by humans and this is dependent on the other frequencies present at that same time. – Aaron Dec 27 '13 at 4:33
• The compression technique will not require such removal of frequency components. I require my complex cepstrum to be as sparse as possible for which I consider that it is advantageous if I use it over the entire file. I observed that using 'icceps' function over the averaged complex cepstrum for the whole wav file does give proper speech back to me. So, having such a purpose, is it correct to use 'cceps' over the entire file? – Shabaz Dec 29 '13 at 19:54
• Your complex cepstrum will be more sparse if you break it up into small chunks for the same reason I said in my previous comment. – Aaron Dec 29 '13 at 20:50
• I understand your point (As it is a LTI systems in short frames). But by using the 'cceps' function in Matlab, I find it a lot sparser by utilizing it over the entire wav file. That is why I am doubtful of utilizing it although I get the functionality done. – Shabaz Dec 29 '13 at 22:52