elektrik port üyelik servisleri elektrik port üyelik servisleri

MATLAB :
Ses Sinyali Analizi
[Dijital Sinyal İşleme] 3 |
Elektrikport Akademi

Matlab da Formant Frekansının nasıl tahmin edildiğini görelim.



A- A+
19.12.2012 tarihli yazı 13746 kez okunmuştur.
3.Formant Frekans Tahmini:

Genellikle Formant frekansı tahmin etmek temel frekansı tahmin etmekten daha zordur.Sorun Formant frekansların vokal bölümünün sistem özellikleri ve ses sinyalinin düzenlenmesinden ziyade sonuçlanmasına  ihtiyaç duyulur. Vokal bölümü uyaran spektral şekil,incelenen spektral zarf için güçlü bir etkidir. Öyle ki, ne tüm vokal bölme rezonanslarının gözlemlenen spektral zarf içerisinde piklere neden olacağını ne de spektral zarf içinde ki tüm piklerin vokal bölme rezonansları tarafından neden olacağını garanti edemeyiz.Formant frekans tahmini belli bir kaynak ve filtre ile oluşturulmuşsa burada ki baskın yöntem konuşma sinyali modellemesi üzerine kurulmuştur.






Bu tip analizlere kaynak-filtre ayrımı denir.Formant frekans tahmin durumunda örnek sistem ve rezonans frekansı ilgilendirmektedir. En uygun sistemi bulmak için kullandığımız analiz yöntemine Linear Prediction (doğrusal tahmin) deriz. Linear Prediction modelleri sanki yalnızca tekrarlanan IIR' dan geçirilerek minimum enerjili bir sinyal tarafından oluşturulan sinyallerdir.
Konuşma sinyalinin bir bölümünde en iyi IIR bulmak için LCP kullanarak sonrasında filtrenin frekans yanıtı çizilerek açıklanacaktır.

 


	
% get a section of vowel
[x,fs]=wavread('six.wav',[24120 25930]);

% resample to 10,000Hz (optional)
x=resample(x,10000,fs);
fs=10000;
%
% plot waveform
t=(0:length(x)-1)/fs;        % times of sampling instants
subplot(2,1,1);
plot(t,x);
legend('Waveform');
xlabel('Time (s)');
ylabel('Amplitude');

%

% get Linear prediction filter
ncoeff=2+fs/1000;           % rule of thumb for formant estimation
a=lpc(x,ncoeff);

%

% plot frequency response
[h,f]=freqz(1,a,512,fs);
subplot(2,1,2);
plot(f,20*log10(abs(h)+eps));
legend('LP Filter');
xlabel('Frequency (Hz)');
ylabel('Gain (dB)');

	







Filtreden formant frekansları bulmak için filtre oluşum rezonanslarının yerini bulmak gerekir. İşte LP filtre tahmin formant frekansları bulmak için kod:
 


% find frequencies by root-solving

r=roots(a);                  % find roots of polynomial a

r=r(imag(r)>0.01);           % only look for roots >0Hz up to fs/2

ffreq=sort(atan2(imag(r),real(r))*fs/(2*pi));

                             % convert to Hz and sort

for i=1:length(ffreq)

    fprintf('Formant %d Frequency %.1f\n',i,ffreq(i));

end




Bu da çıktıyı üretir.
 

Formant 1 Frekans 289.2
Formant 2 Frekans 2310,6
Formant 3 Frekans 2770,9
Formant 4 Frekans 3489,9
Formant 5 Frekans 4294,8

 

 


Aktif etkinlik bulunmamaktadır.
ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar