Formant Estimation With LPC Coefficients
1 次查看(过去 30 天)
显示 更早的评论
I'm utilizing this page: https://www.mathworks.com/help/signal/ug/formant-estimation-with-lpc-coefficients.html
I want to make it so I can read my own sound file (instead of loading the speech sample 'load mtlb') and produce the same output of 3 formant values. However, each time I try to do this I get the exact same formants as listed on the page below. Could someone please tell me what I am doing wrong.
[y1,Fs]=audioread('mysound.wav');
segmentlen = 100;
noverlap = 90;
NFFT = 128;
%spectrogram(mtlb,segmentlen,noverlap,NFFT,Fs,'yaxis')
spectrogram(y1,segmentlen,noverlap,NFFT,Fs,'yaxis')
title('Signal Spectrogram')
dt = 1/Fs;
I0 = round(0.1/dt);
Iend = round(0.25/dt);
x = y1(I0:Iend);
%%
x1 = x.*hamming(length(x));
preemph = [1 0.63];
x1 = filter(1,preemph,x1);
A = lpc(x1,8);
rts = roots(A);
rts = rts(imag(rts)>=0);
angz = atan2(imag(rts),real(rts));
[frqs,indices] = sort(angz.*(Fs/(2*pi)));
bw = -1/2*(Fs/(2*pi))*log(abs(rts(indices)));
nn = 1;
for kk = 1:length(frqs)
if (frqs(kk) > 90 && bw(kk) <400)
formants(nn) = frqs(kk);
nn = nn+1;
end
end
formants
0 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Signal Modeling 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!