複素ケプストラム-基本周波数推定
この例では,複素ケプストラムを使用して話者の基本周波数を推定する方法を説明します。また,この例ではゼロクロッシング法で基本周波数を推定後,結果を比較します。
音声信号を読み込みます。録音は,女性が" matlab "と発声しているものです。サンプリング周波数は7418 Hzです。次のコ,ドによって,音声波形mtlb
とサンプリング周波数Fs
がmatlab®ワクスペスに読み込まれます。
负载mtlb
スペクトログラムを使用して,解析する有声セグメントを識別します。
Segmentlen = 100;nonoverlap = 90;NFFT = 128;光谱图(mtlb segmentlen、noverlap NFFT, Fs,“桠溪”)
解析のために,0.1秒から0.25秒のセグメントを抽出します。抽出されたセグメントは" matlab "の最初の母音/æ/にほぼ対応します。
dt = 1/Fs;I0 =圆(0.1/dt);Iend = round(0.25/dt);x = mtlb(I0:Iend);
複素ケプストラムを求めます。
C = cceps(x);
周波数範囲約100 ~ 500 Hzに対応する時間範囲2 ~ 10 msを選択します。選択した範囲内のケプストラムの最も高いピ,クを特定します。ピ,クに対応する周波数を求めます。基本周波数の推定にピ,クを使用します。
T = 0:dt:长度(x)*dt-dt;TRNG = t(t>=2e-3 & t<=10e-3);CRNG = c(t>=2e-3 & t<=10e-3);[~,I] = max(crng);流('复倒谱F0估计为%3.2f Hz。\n'1 / trng (I))
复倒谱F0估计为239.29 Hz。
選択した時間範囲のケプストラムをプロットし,ピ,クを重ね合わせます。
情节(trng * 1 e3, crng)包含(“女士”)举行在情节(trng (I) * 1 e3, crng(我),“o”)举行从
ロ,パスフィルタ,処理が行われ,整流された母音の波形において,関数zerocrossrate
を使用して基本周波数を推定します。
[b0,a0] =黄油(2,325/(Fs/2));Xin = abs(x);Xin = filter(b0,a0, Xin);Xin = Xin -mean(Xin);Zc =零交叉率(xin);F0 = 0.5*Fs*zc;流('过零F0估计为%3.2f Hz。\n'F0)
过零F0估计为234.94 Hz。