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
- Denizcilik Endüstri Uygulamaları ve Servis Bakım Süreçleri
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
- Röle ve Trafo Merkezi Testlerinin Temelleri | Webinar
- Chint Elektrik Temel DIN Ray Ürünleri Tanıtımı
- Sigma Termik Manyetik Şalterler ile Elektrik Devrelerinde Koruma
- Elektrik Panoları ve Üretim Teknikleri