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

Konuşma İşleme

  • Upload
    emory

  • View
    119

  • Download
    1

Embed Size (px)

DESCRIPTION

Konuşma İşleme. Konuşma dosyaları üzerinde yapılabilecekler hakkında bir çalışma. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: Konuşma İşleme

Konuşma İşleme

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

Page 2: Konuşma İşleme

Giriş

Rasgele istatistik sinyaller üzerinde yapılan işlemlerin konuşma sinyaline uygulanması

Konuşma (speech), ses (audio) değildir fmax(konuşma) = 3.4 kHz fmax(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

Page 3: Konuşma İşleme

Uygulamalar

Bu doküman boyunca yapılacak uygulamalar aşağıdaki konuşma dosyası üzerinde olacaktır

konusma.wav

Page 4: Konuşma İşleme

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

Page 5: Konuşma İşleme

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

ThixEm

im

1

0

2

Page 6: Konuşma İşleme

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

Page 7: Konuşma İşleme

Uygulamafunction [ 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 sayisiwindow = window_ms*fs/1000;% sinyal uzunlugu kontroluspeech = speech(1:(length(speech) - mod(length(speech),window)),1);samples = reshape(speech,window,length(speech)/window);

energies = sqrt(sum(samples.*samples))';vuv = energies > threshold;

Page 8: Konuşma İşleme

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

Page 9: Konuşma İşleme

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

Page 10: Konuşma İşleme

LPC Sistem

s[n] : işlenen sinyal e[n] : hata sinyali ai : LPC katsayıları Sistem, katsayılarını e[n]’nin

enerjisini minimum yapacak şekilde ayarlar

Page 11: Konuşma İşleme

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

Page 12: Konuşma İşleme

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

Page 13: Konuşma İşleme

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çilirfor i = 1:length(vuv)    if i ~= 1 & vuv(i - 1) == 1 & vuv(i) == 1        sample = samples(1:length(samples),i);        break    endend%%%%

lpc_coef = lpc(sample,predictor);e = filter(lpc_coef, 1, sample);

Page 14: Konuşma İşleme

Uygulama - LPC

LPC katsayıları: 1.0000 -1.2920 0.2980 -0.1749 0.5167 0.1699 -0.4452 -0.0797 0.1563 0.0553 0.0033

Page 15: Konuşma İşleme

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şlemidirdenebilir

Page 16: Konuşma İşleme

Uygulama - LPC

Frekans bölgesi analiz%sinyal parcasinin frekans spektrumusample_f = fft(sample,1024);%1/A(z) filtresinin durtu tepkesiir = filter(1,lpc_coef,[1 zeros(1:1023,1)]);%1/A(z) filtresinin frekans tepkesifr = fft(ir);%genlik spektrumunun yarisi cizdirilir cunku diger yarisi%cizilen yarinin simetrigidirsemilogy(0:1/512:1-1/512,abs(sample_f(1:512)))hold;%genlik tepkesinin, sinyalin spekturumuna oturabilmesi%icin bir miktar yukseltilirplot(0:1/512:1-1/512,3*abs(fr(1:512)))

Page 17: Konuşma İşleme

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

Page 18: Konuşma İşleme

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

Page 19: Konuşma İşleme

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

)()()(

)()()(1)1(

1)1(

zAzzAzQ

zAzzAzPp

p

Page 20: Konuşma İşleme

1/A(z) kökleri

poles = roots(lpc_coef);zplane([],poles);

Page 21: Konuşma İşleme

Uygulama – LSF

1110110

292

1101

110

92

101

111010

22

11

1010

221

)1(1010

22

11

1)1(

...1)(

......1)(

...1...1)(

)()()(

zzaazaazaazP

zazazazzazazazP

zazazazzazazazP

zAzzAzPp

p

1110110

292

1101

110

92

101

111010

22

11

1010

221

)1(1010

22

11

1)1(

...1)(

......1)(

...1...1)(

)()()(

zzaazaazaazQ

zazazazzazazazQ

zazazazzazazazQ

zAzzAzQp

p

% P(z) katsayilarip = [1,lpc_coef(2:end) + fliplr(lpc_coef(2:end)),1];poles_P = roots(p);zplane([],poles_P);hold;% Q(z) katsayilariq = [1,lpc_coef(2:end) - fliplr(lpc_coef(2:end)),-1];poles_Q = roots(q);zplane([],poles_Q);

Page 22: Konuşma İşleme

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

Page 23: Konuşma İşleme

Uygulama – LSF

0 ve 1 deki kökler çizdirme esnasında kullanılmadı

Page 24: Konuşma İşleme

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

Page 25: Konuşma İşleme

Uygulama – LSF

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

Page 26: Konuşma İşleme

Hidden Markov Model

Deterministik bir olayı stokastik bir şekilde modelleme

Modellenecek sistemin bir Markov chain olduğunu kabul ederek izlenebilir parametrelerden gizli parametrelerin hesaplanması

Page 27: Konuşma İşleme

HMM - Örnek

x: gizli durumlary: izlenebilir çıktılara: geçiş olasılıklarıb: çıktı olasılıkları

http://en.wikipedia.org/wiki/Image:MarkovModel.png

Page 28: Konuşma İşleme

HMMKullanım Alanları

Pattern Recognition Bioinformatics Hand-written Word Recognition Adaptive Power Management Speech Recognition …

Page 29: Konuşma İşleme

HMM - Ergodic

Durumların her birinden tüm durumlara geçiş mümkün

Page 30: Konuşma İşleme

HMM - LTR

Durum geçişleri soldan sağa yönde, ters yönde geçiş yok

Page 31: Konuşma İşleme

HMM

Markov Chain A = [aij] : state transition matrix

Durumdan duruma geçme olasılığı Π = πi : initial probabilities

Başlangıç durumu olasılıkları B = [bjot] = [bjk] : observation

probability matrixj durumunda k çıktısının olma olasılığı

Page 32: Konuşma İşleme

HMM - aij

0.3 0.5 0.2 0 0 00 0.4 0.3 0.3 0 00 0 0.4 0.2 0.4 00 0 0 0.7 0.2 0.10 0 0 0 0.5 0.50 0 0 0 0 1.0

a11 a12 a13 a14 a15 a16

a21 a22 a23 a24 a25 a26

a31 a32 a33 a34 a35 a36

a41 a42 a43 a44 a45 a46

a51 a52 a53 a54 a55 a56

a61 a62 a63 a64 a65 a66

=

(# of states) X (# of states)

Page 33: Konuşma İşleme

HMM - πi

0.5 0.5 0 0 0 0

Durum sayısı uzunluğunda bir vektör

π1 π2 π3 π4 π5 π6

Page 34: Konuşma İşleme

HMM - bjk

b11 b21 b31 b41 b51 b61

b12 b22 b32 b42 b52 b62

… … … … … …

b1M b2M b3M b4M b5M b6M

Durum sayısı X Görülebilecek çıktı sayısı

(# of states) X (# of outputs)

Page 35: Konuşma İşleme

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

Page 36: Konuşma İşleme

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ı

Page 37: Konuşma İşleme

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

),,( BA

)|(max* OP

Page 38: Konuşma İşleme

HMM – Baum Welch

Algoritma verilen başlangıç olasılığı ile başlatılır

t zamanında j durumunda olan,O1, O2, … Ot çıktı sırasının olasılığını hesaplar (forward probabilities)

1,...,2,1),(.)()(

)(}{)(,...,2,1}, | t at time j state,,...,,Pr{)(

11

1

11

21

TtObaij

ObjjNjMOOOj

tj

N

iijtt

j

tt

Page 39: Konuşma İşleme

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

N

jt

BW jP1

)(

Page 40: Konuşma İşleme

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

PV genelde PBW den küçüktür PBW nin PV ye eşit olması sadece tek bir

durum sırası mümkün olduğunda olur

)(

1,...,2,1),(.)()( 11

jMaxP

TtObajMaxj

tV

tjijtt

Page 41: Konuşma İşleme

HMM – Viterbi

En olası durum sırasını hesaplamak da mümkündür

t zamanında s1 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

)(.)(Argmax)( 11 tjijtt Obajj

Page 42: Konuşma İşleme

HMM – Örnek

3 vazo, R G B toplar O = RGGBRB

b1(R) = 0.3 b2(R) = 0.1 b3(R) = 0.4b1(G) = 0.5 b2(G) = 0.4 b3(R) = 0.1b1(B) = 0.2 b2(B) = 0.5 b3(R) = 0.5

П(j) = {0.8, 0.2, 0.0}

Page 43: Konuşma İşleme

HMM – Örnekfunction [ 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); endend

Page 44: Konuşma İşleme

HMM – Örnek)( jt

1 2 31 0.240000000 0.020000000 0.0000000002 0.036000000 0.070400000 0.0012000003 0.005400000 0.021344000 0.0043440004 0.000324000 0.006158800 0.0085752005 0.000029160 0.000269030 0.0049082006 0.000001750 0.000064012 0.002534800

Page 45: Konuşma İşleme

HMM – Örnekfunction [ 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 end phi(i,j) = phi(i,j)* B(O(i),j); endend

Page 46: Konuşma İşleme

HMM – Örnek

)( jt

1 2 31 0.240000000 0.020000000 0.0000000002 0.036000000 0.067200000 0.0012000003 0.005400000 0.010752000 0.0040320004 0.000324000 0.002150400 0.0032256005 0.000029160 0.000086016 0.0012902006 0.000001750 0.000017203 0.000645120

)( jt

1 2 31 0 0 02 1 1 23 1 2 24 1 2 25 1 2 36 1 2 3

Page 47: Konuşma İşleme

HMM – Training Baum Welch

Algoritma rasgele bir değerle başlatılır t zamanında j durumunda olacak,

O1, O2, … Ot çıktı sırasının olasılığını hesaplar (forward probabilities)

1,...,2,1),(.)()(

)(}{)(,...,2,1}, | t at time j state,,...,,Pr{)(

11

1

11

21

TtObaij

ObjjNjMOOOj

tj

N

iijtt

j

tt

Page 48: Konuşma İşleme

HMM – Training Baum Welch

t zamanında j durumunda olan modelin,Ot+1, … OT çıktı sırasıyla bitme olasılığını hesaplar (backward probabilities)

)()()(

1)(

11

1

tjij

N

jtt

T

Obajj

j

Page 49: Konuşma İşleme

HMM – Training Baum Welch

N

i

N

jtjjiji

tjjijiij

ij

N

jjj

jjt

Obtat

Obtatt

Ot

tt

ttOj

1 11

1

1

)()1()(

)()1()()(

},|1j@t state i@t, statePr{)(

)()(

)()(},|j@t statePr{)(

Page 50: Konuşma İşleme

HMM – Training Baum Welch

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

T

ti

T

tioO

i

T

ti

T

tij

ij

ii

t

tkb

t

ta

kt

1

1,

1

1

1

1

)(

)()(

)(

)(

)1(