我正在尝试使用 rceps 函数在 Matlab 中计算录制的电话音频的真实倒谱系数。
在某些音频帧上(每帧 480 个样本——8kHz 的 60ms 音频),我得到一个 Matlab 错误:“rceps:ZeroInFFT”。倒谱不存在,因为某些 DFT 系数为 0。所讨论的帧不为零,任何样本值也不复数。根据帧的 RMS,许多有错误的帧具有显着的能量。我大约 10% 的帧会出现这个错误,所以这似乎是一个比侥幸更大的问题。
我很困惑,因为这种类型的分析很常见,特别是对于语音分析,但我找不到其他人有这个问题的记录。
任何建议将不胜感激。
audio % is a 236000x1 vector of doubles containing PCM audio data at 8kHz
window_size = 3 %Working with multiples of 20-ms frames
errs = zeros(N_frames,1);
for i=0:N_frames-window_size
%% Cepstral analysis
s = audio((i*160+1):((i+window_size)*160)); %Grab 60ms of audio -- 480x1 matrix
try
c = rceps(s);
catch err
errs(i+1) = 1;
end
end