Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Konuşma İşleme Konuşma dosyaları üzerinde yapılabilecekler hakkında bir çalışma.

Benzer bir sunumlar


... konulu sunumlar: "Konuşma İşleme Konuşma dosyaları üzerinde yapılabilecekler hakkında bir çalışma."— Sunum transkripti:

1

2 Konuşma İşleme Konuşma dosyaları üzerinde yapılabilecekler hakkında bir çalışma

3 Giriş  Rasgele istatistik sinyaller üzerinde yapılan işlemlerin konuşma sinyaline uygulanması  Konuşma (speech), ses (audio) değildir  f max(konuşma) = 3.4 kHz  f max(ses) = 20 kHz  Sinyal, hemen her zaman parçalara ayrılır ve işlemler stationary kabul edilen bu parçalar üzerinde yapılır

4 Uygulamalar  Bu doküman boyunca yapılacak uygulamalar aşağıdaki konuşma dosyası üzerinde olacaktır konusma.wav

5 Voiced vs. Unvoiced  Konuşma, voiced (ötümlü) ve unvoiced (ötümsüz) olarak ikiye ayrılır  Voiced, yüksek seslere; unvoiced, kısık seslere ya da gürültüye karşılık gelir  Stationary kabul edilen parçaların voiced/unvoiced olarak sınıflandırılması yapılacak diğer işlemler için önemlidir  Sınıflandırma:  Sinyalin enerjisi  Normalize otokorelasyon katsayıları  Sıfır geçişleri

6 V/UV Classification – Enerji metodu  Sinyalin toplam enerjisi belli bir threshold değerinden yüksekse voiced olur.  Burdaki m, alınan parçadaki sample sayısıdır

7 Uygulama  Dokümanın en başında verilen konuşma dosyası  Matlab’ta açılacak  Parçalara bölünecek  Tüm parçaların enerjilerinin bir değerden yüksek olup olmadığına bakılacak  İşlem tekrar kullanılabilir olması için bir fonksiyon olarak hazırlanacak

8 Uygulama function [ samples,vuv ] = vuv_energy( file_name ) %Verilen ses dosyasini voiced / unvoiced olarak siniflandirir % Fonksiyon oncelikle dosyayi acar ve 20 ms lik % parcalara boler. Eger dosya 20 ms olarak tam % bolunemiyorsa son 20 ms den kisa olan bolum % kullanilmaz. % % Daha sonra bolunen parcalarin enerjileri hesaplanir % enerjisi 1.5 ten az olan parcalar unvoiced kabul edilir [speech,fs,nbits] = wavread(file_name); window_ms = 20; threshold = 1.5; % alinacak parcalarin sample sayisi window = window_ms*fs/1000; % sinyal uzunlugu kontrolu speech = speech(1:(length(speech) - mod(length(speech),window)),1); samples = reshape(speech,window,length(speech)/window); energies = sqrt(sum(samples.*samples))'; vuv = energies > threshold;

9 Uygulama •Konuşma sinyalinin uzunluğu 500ms •20ms lik toplam 25 parça •Kırmızı ile gösterilen voiced / unvoiced data noktaları kendinden sonra gelen 20ms konuşma parçasının voiced ya da unvoiced olduğunu gösterir

10 LPC Analizi  Konuyla ilgili anahtar kelimeler  Linear Predictive Coding  Linear Regression  Time series analysis  All-pole filtering  Sistem kendi katsayılarını değiştirir  Giriş sinyaline göre sistem değişir  Sistem sinyali, önceki değerleriyle hesaplamaya çalışır

11 LPC Sistem  s[n] : işlenen sinyal  e[n] : hata sinyali  a i : LPC katsayıları  Sistem, katsayılarını e[n]’nin enerjisini minimum yapacak şekilde ayarlar

12 Uygulama - LPC  Görülebilir sonuçlar elde edebilmek için voiced bir parça üzerinde LPC analiz ve sentez işlemleri yapılacak  LPC sentez filtresinin genlik tepkesinin sinyalin genlik spektrumu ile olan ilgisi incelenecek.  V/UV sınıflandırma için vuv_energy kullanılacak

13 Uygulama - LPC  Bulunan voiced parçalardan ikincisi kullanılacak  vuv_energy’nin voiced olarak belirlediği ilk parçanın bir kısmı unvoiced olabilir  Matlab LPC katsayılarını direk verir ama e[n] i direk vermez

14 Uygulama - LPC function [ sample, lpc_coef, e ] = lpc_a( file_name, predictor ) %Basit lpc analizi % Verilen dosya icindeki voiced parcalar bulunur % Ikinci voiced parcanin lpc katsayilari ve bu lpc analizinin % hatasi hesaplanir [samples,vuv] = vuv_energy(file_name); % ikinci voiced pencere seçilir for i = 1:length(vuv) if i ~= 1 & vuv(i - 1) == 1 & vuv(i) == 1 sample = samples(1:length(samples),i); break end end %% lpc_coef = lpc(sample,predictor); e = filter(lpc_coef, 1, sample);

15 Uygulama - LPC LPC katsayıları:

16 Uygulama - LPC  Zaman bölgesi sinyallere bakarak  İletilmesi gereken veri miktarı ciddi miktarda azalmıştır  LPC Analiz işlemi aynı zamanda bir sıkıştırma işlemidir denebilir

17 Uygulama - LPC  Frekans bölgesi analiz %sinyal parcasinin frekans spektrumu sample_f = fft(sample,1024); %1/A(z) filtresinin durtu tepkesi ir = filter(1,lpc_coef,[1 zeros(1:1023,1)]); %1/A(z) filtresinin frekans tepkesi fr = fft(ir); %genlik spektrumunun yarisi cizdirilir cunku diger yarisi %cizilen yarinin simetrigidir semilogy(0:1/512:1-1/512,abs(sample_f(1:512))) hold; %genlik tepkesinin, sinyalin spekturumuna oturabilmesi %icin bir miktar yukseltilir plot(0:1/512:1-1/512,3*abs(fr(1:512)))

18 Uygulama - LPC  Mavi grafik sinyalin genlik spektrumu  Kırmızı grafik LPC Sentez (1/A(z)) filtresinin genlik tepkesi  1/A(z) filtresinin genlik tepkesinin tepe noktaları sinyalin formantlarıdır

19 LSF – LSP (Line Spectral Frequencies – Pairs)  LPC katsayıları özel bir işlemle LSF’lere dönüştürülür  Bu sayede elde edilen LSP’ler  0-1 ya da 0-pi aralığında  Pozitif  Küçükten büyüğe ya da büyükten küçüğe sıralı  İletimde kolaylık sağlar

20 LSF – LSP  P(z) ve Q(z) polinomlarının kökleri LSF’leri verir  Bu kökler  Birim çember üzerinde  Interlaced (Birbiri içine girmiş)  Buna karşılık 1/A(z) filtresinin kökleri  Fazlasıyla dağınık  Eğer otokorelasyon metoduyla hesaplanmışsa hepsi birim çember içinde

21 1/A(z) kökleri poles = roots(lpc_coef); zplane([],poles);

22 Uygulama – LSF % P(z) katsayilari p = [1,lpc_coef(2:end) + fliplr(lpc_coef(2:end)),1]; poles_P = roots(p); zplane([],poles_P); hold; % Q(z) katsayilari q = [1,lpc_coef(2:end) - fliplr(lpc_coef(2:end)),-1]; poles_Q = roots(q); zplane([],poles_Q);

23 Uygulama – LSF  0 ve 1 de işe yaramayan birer kök var  Bunlardan kurtulmak için P(z) ve Q(z) polinomlarını modifiye etmek gerekir

24 Uygulama – LSF 0 ve 1 deki kökler çizdirme esnasında kullanılmadı

25 LSF – LSP  P(z) polinomunun köklerinin gösterdiği frekanslar formantlardır  Q(z) polinomunun kökleri ise sinyalin genlik spektrumunun zarfının çizilmesini sağlar

26 Uygulama – LSF Sinyalin kendi genlik spektrumunun çizilmesi grafiği fazla karmaşıklaştırdığından sadece zarfı çizildi

27 Hidden Markov Model  Deterministik bir olayı stokastik bir şekilde modelleme  Modellenecek sistemin bir Markov chain olduğunu kabul ederek izlenebilir parametrelerden gizli parametrelerin hesaplanması

28 HMM - Örnek x: gizli durumlar y: izlenebilir çıktılar a: geçiş olasılıkları b: çıktı olasılıkları

29 HMM Kullanım Alanları  Pattern Recognition  Bioinformatics  Hand-written Word Recognition  Adaptive Power Management  Speech Recognition  …

30 HMM - Ergodic  Durumların her birinden tüm durumlara geçiş mümkün

31 HMM - LTR  Durum geçişleri soldan sağa yönde, ters yönde geçiş yok

32 HMM  Markov Chain  A = [a ij ] : state transition matrix Durumdan duruma geçme olasılığı  Π = π i : initial probabilities Başlangıç durumu olasılıkları  B = [b jot ] = [b jk ] : observation probability matrix j durumunda k çıktısının olma olasılığı

33 HMM - a ij a 11 a 12 a 13 a 14 a 15 a 16 a 21 a 22 a 23 a 24 a 25 a 26 a 31 a 32 a 33 a 34 a 35 a 36 a 41 a 42 a 43 a 44 a 45 a 46 a 51 a 52 a 53 a 54 a 55 a 56 a 61 a 62 a 63 a 64 a 65 a 66 = (# of states) X (# of states)

34 HMM - π i  Durum sayısı uzunluğunda bir vektör π1π1 π2π2 π3π3 π4π4 π5π5 π6π6

35 HMM - b jk b 11 b 21 b 31 b 41 b 51 b 61 b 12 b 22 b 32 b 42 b 52 b 62 ……………… b 1M b 2M b 3M b 4M b 5M b 6M  Durum sayısı X Görülebilecek çıktı sayısı (# of states) X (# of outputs)

36 HMM - Örnek  6 kutu içinde çeşitli renk toplar var  10 farklı renk var her kutuda her renkten eşit olmayan sayıda top var  Başlangıç kutusunu belirlemek için yazı-tura atılıyor (Yazı :1 Tura: 2)  50 kere  Zar atılıp bir kutu seçiliyor  Seçilen kutudan rasgele bir top alınıyor  Rengi kaydedilip top yerine konuyor

37 HMM  Çıktılara bakarak topların hangi kutulardan çekildiğinin bulunması  Her bir çıktı için olasılıkların hesaplanması  Baum-Welch gibi bir beklenti artırma (expectation maximization) algoritması kullanımı

38 HMM – Baum Welch  Bir HMM’in parametrelerinin (A,B)  maximum-likelihood tahminleri  maximum a posteriori tahminleri  HMM:ise  Baum-Welch, verilen çıktıların olma olasılığını maksimize eden HMM’i bulur

39 HMM – Baum Welch  Algoritma verilen başlangıç olasılığı ile başlatılır  t zamanında j durumunda olan, O 1, O 2, … O t çıktı sırasının olasılığını hesaplar (forward probabilities)

40 HMM – Baum Welch  Çıktı sırasının oluşmasının olasılığı bu değerlerin toplanmasıyla bulunabilir  Bu olasılığa Baum-Welch olasılığı denir  O çıktısının izlenme olasılığı, mümkün tüm durum sıraları üzerinden toplanmış olur

41 HMM – Viterbi  Çıktıyı oluşturmuş olabilecek maksimum olasılıklı durum sırasını verir  Baum-Welch toplama işlemi yaparken Viterbi maksimumunu alır  P V genelde P BW den küçüktür  P BW nin P V ye eşit olması sadece tek bir durum sırası mümkün olduğunda olur

42 HMM – Viterbi  En olası durum sırasını hesaplamak da mümkündür  t zamanında s 1 durumundayken t-1 zamanındaki en olası durumu kaydetmekle yapılır  Bu değerler tüm j ler için hesaplandıktan sonra en olası durum sırası data üzerinde geri giderek bulunur

43 HMM – Örnek  3 vazo, R G B toplar  O = RGGBRB b 1 (R) = 0.3b 2 (R) = 0.1b 3 (R) = 0.4 b 1 (G) = 0.5b 2 (G) = 0.4b 3 (R) = 0.1 b 1 (B) = 0.2b 2 (B) = 0.5b 3 (R) = 0.5 П(j) = {0.8, 0.2, 0.0}

44 HMM – Örnek function [ alfa, phi, mu ] = hmm( A, B, I, O ) alfa = zeros(length(O),length(I)); for i = 1:length(O) for j = 1:length(I) if i == 1 alfa(1,j) = I(j)*B(1,j); continue end for k = 1:length(I) alfa(i,j) = alfa(i,j) + alfa(i-1,k)*A(k,j); end alfa(i,j) = alfa(i,j)* B(O(i),j); end

45 HMM – Örnek

46 HMM – Örnek function [ alfa, phi, mu ] = hmm( A, B, I, O ) phi = zeros(length(O),length(I)); mu = zeros(length(O),length(I)); for i = 1:length(O) for j = 1:length(I) if i == 1 phi(1,j) = I(j)*B(1,j); continue end for k = 1:length(I) val = phi(i-1,k)*A(k,j); if val > phi(i,j) phi(i,j) = val; mu(i,j) = k; end phi(i,j) = phi(i,j)* B(O(i),j); end

47 HMM – Örnek

48 HMM – Training Baum Welch  Algoritma rasgele bir değerle başlatılır  t zamanında j durumunda olacak, O 1, O 2, … O t çıktı sırasının olasılığını hesaplar (forward probabilities)

49 HMM – Training Baum Welch  t zamanında j durumunda olan modelin, O t+1, … O T çıktı sırasıyla bitme olasılığını hesaplar (backward probabilities)

50 HMM – Training Baum Welch

51  Hesaplanan değerlerle A, B ve П hesaplanır ve yerlerine konup işlem tekrar gerçekleştirilir


"Konuşma İşleme Konuşma dosyaları üzerinde yapılabilecekler hakkında bir çalışma." indir ppt

Benzer bir sunumlar


Google Reklamları