MATLAB :
Ses Sinyali Analizi
[Dijital Sinyal İşleme] 3 |
Elektrikport Akademi
Matlab da Formant Frekansının nasıl tahmin edildiğini görelim.
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
-
Dünyanın En Görkemli 10 Güneş Tarlası
-
Dünyanın En Büyük 10 Makinesi
-
2020’nin En İyi 10 Kişisel Robotu
-
Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
-
Üretimin Geleceğinde Etkili Olacak 10 Beceri
-
Olağan Üstü Tasarıma Sahip 5 Köprü
-
Dünyanın En İyi Bilim ve Teknoloji Müzeleri
-
En İyi 5 Tıbbi Robot
-
Dünyanın En Zengin 10 Mühendisi
-
Üretim için 6 Fabrikasyon İşlemi
-
Yıldırımdan Korunma Sistemleri | Amper Elektrik
-
Toprak Kaçak Akım Rölesi ve Toroid Akım Trafoları
-
EcoStruxure™ Automation Expert ile Tasarım Verimliliğini Artırın | Schneider Electric
-
60 Saniyede EcoStruxure™ Panel Server | Schneider Electric
-
60 Saniyede EVlink Pro AC | Schneider Electric
-
60 Saniyede EcoStruxure™ Power Operation | Schneider Electric
-
Kesintisiz Bağlantı Özelliği ile EcoStruxure™ Automation Expert | Schneider Electric
-
Yüksek Enerji Faturası Ödemek Kaderiniz Değil | Webinar
-
GoPact MCCB | Schneider Electric
-
Webinar I Otomatik Transfer Şalteri ile Kesintisiz Enerji