Strona 1 z 2

Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: piątek 02 sty 2009, 12:39
autor: bofpandora
Witam,

moim celem jest ekstrakcja cech sygnału mowy (formantów) i użycie ich w problemie rozpoznawania mówcy. Formantami mają być współczynniki cepstralne MFCC. Algorytm wygląda następująco:



0. Preemfaza

1. Weź sygnał mowy i rozparaceluj go na segmenty (przyjmijmy 16ms),

2. Przemnóż każdy segment przez funkcję okna (najczęściej Hamminga),

3. Przeprowadź FFT na każdym segmencie,

4. Weź moduł z FFT,

5. Zastosuj na widmie bank filtrów melowych,

6. Zlogarytmuj,

7. Przeprowadź DCT



Jest tu wiele niejasności dla mnie, pomimo przeglądu wielu publikacji związanych z tematem. Pomińmy problem



klasyfikacji. Poniżej opiszę punkt po punkcie, co myślę o każdym z nich, ok? Jeśli coś będzie niejasne to to zaznaczę, jeśli jednak to co napiszę bez jakiegoś podkreślania i a w rzeczywistości wiedza ta jest błędna to proszę o wskazanie błędu. PS Do symulacji używam Mathcada 14.

Pkt 0. Powiedzmy, że dyskusję na ten temat sobie darujemy

Pkt. 1: Wgrywam do Mathcada (dalej jako MC) z WAVa słowo wypowiedziane przez danego mówcę i mam zamiar podzielić ten



sygnał na segmenty 16ms, bo sygnał mowy w takim czasie ma charakter stacjonarny a stacjonarność potrzebna mi jest...

#no włśnie do czego?



Pkt. 2: Żeby ograniczyć wyciek częsotliwości stosuję okno Hamminga, #dlaczego wyciek powstaje? #dlaczego akurat



Hamminga, jest przecież tyle różnych funkcji okna?



Pkt. 3: Przeprowadzam FFT na każdym segmenie,



^POwyższe trzy pnkty to jak mniemam po prostu analiza czasowo częstotliwościowa



PKt. 4. Biorę moduł FFT, bo modul to część #rzeczywista?, parzysta?



Pkt. 5. Melowych to znaczy przeskalowujących sygnał w skale naśladującą selektywność/percepcje ucha ludzkiego #czy to ma aż takie znaczenie dla komptera? Filtry te jak doczytałem są trójkątne, ale nie rozumiem do końca po co są stosowane te filtry, domyślam się: po 1. jest różna ilość tych filtrów, i jest różna ilość współczynników MFCC - myślę więc, że ilość filtrów jest ściśle związana z ilością współczynnikó MFCC (bez braw proszę). Prrzeczytałem, że do 1kHz odstęp pomiędzy tymi filtrami jest równy, natomiast za 1k są doległe w zależności logarytmicznej w zdłuż osi częstotliwości(*) #Dla czego trójkątne filtry, czy chodzi tu o wyłapanie prązka widma, który będize się znajdował w wierzchołku tego trójkąta? Przecież mógłbym równie dobrze wybrać prążki według schematu (*), więc chyba te filtry potrzebne są do czegoś jeszcze.

Pkt 6. Logarytmuje, bo to też ma związek z percepcją? #dlaczego jeszcze raz? #CZemu teraz logarytm a wtedy mel?



Dlaczego nie na odwrót?



Pkt7. Przerowadzam DCT. Podobno proces ten ma na celu dekorelacje parameterów - # co mam przez to rozumieć? #Dlaczego DCT a nie FFT? W stosownyh algorytmach przez inne osoby znajduje w tym etapie IDCT bądż IDFT - dlaczego?



NA koniec wybiera się 13 (przynajmiej według pyblikacji: Demonstrator for Automatic Text-independent Speaker Identification, Kristian Kroschel, Dirk Bechler - cały algorytm pochodzi od nich) największych parametrów MFCC i one stanowią wektor analizowanego segmentu, ale co dalej jeśli klasyfikatorem ma byc np. sieć neuronowa, mam jej dać powiedzmy 100 takich wektorów na jedno słowo jedego mówcy (mam przygotowanych 10 mówców po 5 pięc słów na głowę) i tyle? Czy coś jeszcze pominąłem jeśli chodzi o ekstrakcję cech?



Dziękuję za cierpliwość i pozdrawiam.

Re: Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: piątek 02 sty 2009, 13:59
autor: MB
Po pierwsze - niestety, to zupełnie zły adres. To jest forum muzyków i realizatorów dźwięku, a nie ludzi zajmujących się profesjonalnym przetwarzaniem sygnałów (od strony algorytmicznej). Spróbuję jednak odpowiedzieć na kilka Twoich pytań.


Pkt. 1: Wgrywam do Mathcada (dalej jako MC) z WAVa słowo wypowiedziane przez danego mówcę i mam zamiar podzielić ten
sygnał na segmenty 16ms, bo sygnał mowy w takim czasie ma charakter stacjonarny a stacjonarność potrzebna mi jest...

#no włśnie do czego?
****************************
Ponieważ tylko przy założeniu stacjonarności jakakolwiek analiza widmowa oparta na fragmencie sygnału ma sen fizyczny i daje się poprawnie intepretować. Taka analiza zakłada bowiem, że właściwości sygnału poza fragmentem, który wzięliśmy do analizy są identyczne jak wewnątrz fragmentu. To oczywiście nieprawda, ale to jedyny sposób na to, żeby uzyskać interpretowalne wyniki.


Pkt. 2: Żeby ograniczyć wyciek częsotliwości stosuję okno Hamminga, #dlaczego wyciek powstaje? #dlaczego akurat
Hamminga, jest przecież tyle różnych funkcji okna?
****************************
różne funkcje okna mają różne kryteria optymalizacji selektywności. Każde okno w jakimś stopniu rozmywa prążki składników sinusoidalnych w widmie FFT, jest to cena, którą płacimy za tłumienie tzw. listków bocznych (listki boczne to właśnie wyciek). Akurat okno Hamminga jest jednym z najpopularniejszych, choć wcale nie jest najlepszą opcją. Można stosować np. okno Blackmana albo Blackmana-Harrisa. Zapewniam Cię jednak, że dobór okna ma często drugorzędne znaczenie.


PKt. 4. Biorę moduł FFT, bo modul to część #rzeczywista?, parzysta?
********************************
moduł to długość wektora, którym jest liczba zespolona, czyli zgodnie z tw. Pitagorasa pierwiastek z sumy kwadratów części rzeczywistej i urojonej. Jeśli tego nie wiedziałeś, to jest to sygnał alarmowy, że projekt Cię przerasta.


Pkt. 5. Melowych to znaczy przeskalowujących sygnał w skale naśladującą selektywność/percepcje ucha ludzkiego #czy to ma aż takie znaczenie dla komptera? Filtry te jak doczytałem są trójkątne, ale nie rozumiem do końca po co są stosowane te filtry, domyślam się: po 1. jest różna ilość tych filtrów, i jest różna ilość współczynników MFCC - myślę więc, że ilość filtrów jest ściśle związana z ilością współczynnikó MFCC (bez braw proszę). Prrzeczytałem, że do 1kHz odstęp pomiędzy tymi filtrami jest równy, natomiast za 1k są doległe w zależności logarytmicznej w zdłuż osi częstotliwości(*)
****************************
Filtry w skali melowej naśladują (w dużym uproszczeniu) selektywność ludzkiego ucha. Dlaczego wykorzystywać to w analizie komputerowej? Otóż po to, żeby wykorzystać mechanizm wypracowany przez miliony lat przez ewolucję. Ta skala nie jest przypadkowa - skoro my dobrze radzimy sobie z rozpoznawaniem mowy, to znaczy, że natura się nie myli. Innymi słowy, celem analizy mel-cepstralnej jest uzyskanie w przybliżeniu takiego zestawu cech, jaki odbiera system nerwowy człowieka.


#Dla czego trójkątne filtry, czy chodzi tu o wyłapanie prązka widma, który będize się znajdował w wierzchołku tego trójkąta? Przecież mógłbym równie dobrze wybrać prążki według schematu (*), więc chyba te filtry potrzebne są do czegoś jeszcze.
********************************
Kształt charakterystyki jest mało istotny, trójkątne filtry są najprostsze w obliczeniu spośród wszystkich tych filtrów, których charakterystyki sąsiednie zazębiają się w sposób symetryczny. Hipotetycznie filtry mogłyby nawet mieć prostokątną charakterystykę, ale takie filtry mają znacznie wolniej gasnącą odpowiedź impulsową, więc reagują na szybkie zmiany krótkotrwałych cech mowy z większą bezwładnością.


Pkt 6. Logarytmuje, bo to też ma związek z percepcją? #dlaczego jeszcze raz? #CZemu teraz logarytm a wtedy mel?
*********************************
Skala melowa dotyczy częstotliwości a tu chodzi o logarytmowanie wartości współczynnika. Logarytmowanie wyniku FFT to istota obliczania cepstrum, jeśli tego nie wiesz, to znaczy, że kompletnie nie rozumiesz czym jest cepstrum. Jest to kolejny sygnał, że nie jesteś merytorycznie przygotowany do realizacji tego projektu.


Dlaczego nie na odwrót?
*********************************
ale co na odwrót?


Pkt7. Przerowadzam DCT. Podobno proces ten ma na celu dekorelacje parameterów - # co mam przez to rozumieć?
*********************************
Nie. To ma na celu przejście do dziedziny pseudoczasu (quefrency), czyli dziedziny, która jest istotą cepstrum


#Dlaczego DCT a nie FFT? W stosownyh algorytmach przez inne osoby znajduje w tym etapie IDCT bądż IDFT - dlaczego?
*********************************
wynik DCT matematycznie jest równoważny wynikowi FFT z sekwencji 2x razy dłuższej, której 2. część jest odbiciem lustrzanym 1. części. W punktach 2-4 przez obliczenie modułu i logarytmu doprowadziłeś de facto do takiej symetrii. Można więc użyć FFT dla całego bloku współczynników albo DCT dla połowy. Różnica jest tylko taka, że w DCT będzie 4 razy mniej operacji. Tak naprawdę to powinno być IDC lub IFFT, wynik będzie prawie identyczny, bo FFT i IFFT to arytmetycznie prawie ta sama operacja, z dokładnością do sprzężenia zespolonego. Można udowodnić, że IFFT(X) = conj(FFT(X))


NA koniec wybiera się 13 (przynajmiej według pyblikacji: Demonstrator for Automatic Text-independent Speaker Identification, Kristian Kroschel, Dirk Bechler - cały algorytm pochodzi od nich) największych parametrów MFCC i one stanowią wektor analizowanego segmentu, ale co dalej jeśli klasyfikatorem ma byc np. sieć neuronowa, mam jej dać powiedzmy 100 takich wektorów na jedno słowo jedego mówcy (mam przygotowanych 10 mówców po 5 pięc słów na głowę) i tyle? Czy coś jeszcze pominąłem jeśli chodzi o ekstrakcję cech?
**********************
Nie jestem ekspertem od sieci neuronowych, ale moim zdaniem tu jest trochę pomieszanie pojęć i operacji. Nie za bardzo zrozumiałem, co chcesz wykrywać - pojedynczy wzorzec (czyli wystąpienie kombinacji formantów oznaczające prawdopodobieństwo wypowiadania konkratnej zgłoski lub fonemu) czy też sekwencję takich wzorców. Do jednego i do drugiego używa się trochę innych narzędzi rozpoznawania i sieć neuronowa jest tylko jedną z opcji. Nie wiem czy projekt ma na celu uzyskanie jak najlepszych wyników (w tym przypadku zastanowiłbym się nad alternatywą lub rozszerzeniem dla sieci neuronowej) czy też na siłę chodzi o wykorzystanie sieci neuronowej (bo na przykład to konik osoby, która zleciła ten projekt). W tym drugim przypadku - poddaję się.

Re: Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: piątek 02 sty 2009, 14:12
autor: MB
Jeszcze mały komentarz odnośnie sieci neuronowych: to nie jest uniwersalne narzędzie do wszystkiego. Wbrew temu, co niektórym się wydaje, sieci neuronowe nie mają żadnych tajemniczych właściwości, których nie dałoby się uzyskać innymi metodami rozpoznawania wzorców.

Sieci neuronowe to po prostu narzędzie nieliniowej optymalizacji wielokryterialnej. One wcale nie naśladują sposobu funkcjonowania żywych orgranizmów, tylko zostały tak sformułowane, żeby można było posługiwać się nimi tak, jakby były zdolne do "myślenia", "uczenia się" i "generalizowania". Takie wykorzystanie jest atrakcyjne dla przeciętnego inżyniera, który może opierać się na intuicyjnym interpretowaniu tych pojęć i traktować sieć jak coś, co można wpierw nauczyć a potem oczekiwać odwalania czarnej roboty.

Pamiętajmy jednak, że sieć jest w stanie tylko "kojarzyć" tak daleko idące związki statystyczne na ile pozwala jej kaskada połączeń wewnętrznych. Innymi słowy, generalizacja wysokich rzędów (zauważanie powiązań statystycznych pomiędzy długimi sekwencjami wektorów) wymaga bardzo dużej liczby warstw wewnętrznych sieci. Dlatego właśnie napisałem, że do rozpoznawania sekwencji to lepiej inne narzędzia, np. Dynamic Time Warp albo alg. Viterbiego.

Re: Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: piątek 02 sty 2009, 16:13
autor: bofpandora
Dziękuje za szybką ripostę.Wypada nieco rozjaśnić ten projekt. Po pierwsze nazwijmy go projektem finalnym. Sory, że zajmuję głowę, ale nie znalazłem lepszego forum, a przynajmniej kogoś kto daje konkretne i oparte na rzetelnej wiedzy odpowiedzi. Jeśli pan Panie MB zna takowe, byłbym wdzięczny za skierowanie.


PKt. 4. Biorę moduł FFT, bo modul to część #rzeczywista?, parzysta?
********************************
moduł to długość wektora, którym jest liczba zespolona, czyli zgodnie z tw. Pitagorasa pierwiastek z sumy kwadratów części rzeczywistej i urojonej. Jeśli tego nie wiedziałeś, to jest to sygnał alarmowy, że projekt Cię przerasta.

Spokojnie... Mam wynik FFT w postaci zespolonej, ok. Robię moduł, czyli Re^2 + Im^2 i całość spierwiastkować i dostanę wtedy długość wektora każdej liczby zespolonej - tak jak w teorii obwodów. 'My fault' jak mówią amerykanie.


#Dla czego trójkątne filtry, czy chodzi tu o wyłapanie prązka widma, który będize się znajdował w wierzchołku tego trójkąta? Przecież mógłbym równie dobrze wybrać prążki według schematu (*), więc chyba te filtry potrzebne są do czegoś jeszcze.
********************************
Kształt charakterystyki jest mało istotny, trójkątne filtry są najprostsze w obliczeniu spośród wszystkich tych filtrów, których charakterystyki sąsiednie zazębiają się w sposób symetryczny. Hipotetycznie filtry mogłyby nawet mieć prostokątną charakterystykę, ale takie filtry mają znacznie wolniej gasnącą odpowiedź impulsową, więc reagują na szybkie zmiany krótkotrwałych cech mowy z większą bezwładnością.
---------------
Ok, a jak to jest z tym wyłapywaniem cech, poprzez filtrację, cze ja w rezultacie dostaję jeden prążek, czy jak?


Pkt 6. Logarytmuje, bo to też ma związek z percepcją? #dlaczego jeszcze raz? #CZemu teraz logarytm a wtedy mel?
*********************************
Skala melowa dotyczy częstotliwości a tu chodzi o logarytmowanie wartości współczynnika. Logarytmowanie wyniku FFT to istota obliczania cepstrum, jeśli tego nie wiesz, to znaczy, że kompletnie nie rozumiesz czym jest cepstrum. Jest to kolejny sygnał, że nie jesteś merytorycznie przygotowany do realizacji tego projektu.

Kompletnie, to może nie - inaczej nie byłoby tego postu, merytorycznie z pewnością - jeśli ma Pan na oku literaturę merytorycznie odpowiednią, to chętnie się z nią zapoznam, jak na razie nie mam dostępu do pozycji napisanej przez pionierów, niebawem owszem...

Dlaczego nie na odwrót?
*********************************
ale co na odwrót? Miałem na myśli kolejność przeprowadzania "melowania"
a potem logarytmowania - teraz już wiem :)

Pkt7. Przerowadzam DCT. Podobno proces ten ma na celu dekorelacje parameterów - # co mam przez to rozumieć?
*********************************
Nie. To ma na celu przejście do dziedziny pseudoczasu (quefrency), czyli dziedziny, która jest istotą cepstrum
----------------
O dekorelacji napisano w tej pracy... ale nie ma ludzi nieomylnych.

Pseudoczasu czy Pseudoczęstotliwości?


#Dlaczego DCT a nie FFT? W stosownyh algorytmach przez inne osoby znajduje w tym etapie IDCT bądż IDFT - dlaczego?
*********************************
(...)Tak naprawdę to powinno być IDC lub IFFT, wynik będzie prawie identyczny, bo FFT i IFFT to arytmetycznie prawie ta sama operacja, z dokładnością do sprzężenia zespolonego. Można udowodnić, że IFFT(X) = conj(FFT(X))
------------
To jest bardzo interesujące, bowiem ja rozumiem FFT jako przejście do dziedziny częstotliwości a IFFT z powrotem do dziedziny czasu. Rozumiem, że to transformacja i sens matematyczny jest taki a nie inny jednak przyznaję, że nikt nigdy mi o tym nie powiedział... może ma Pan rację jeśli powie, że może powinienem o tym przeczytać ;)

Tak czy inaczej, co to znaczy 'prawie identyczne' i co w rezultacie stosować IDCT czy DCT?


NA koniec wybiera się 13 (przynajmiej według pyblikacji: Demonstrator for Automatic Text-independent Speaker Identification, Kristian Kroschel, Dirk Bechler - cały algorytm pochodzi od nich) największych parametrów MFCC i one stanowią wektor analizowanego segmentu, ale co dalej jeśli klasyfikatorem ma byc np. sieć neuronowa, mam jej dać powiedzmy 100 takich wektorów na jedno słowo jedego mówcy (mam przygotowanych 10 mówców po 5 pięc słów na głowę) i tyle? Czy coś jeszcze pominąłem jeśli chodzi o ekstrakcję cech?
**********************
Nie jestem ekspertem od sieci neuronowych, ale moim zdaniem tu jest trochę pomieszanie pojęć i operacji. Nie za bardzo zrozumiałem, co chcesz wykrywać - pojedynczy wzorzec (czyli wystąpienie kombinacji formantów oznaczające prawdopodobieństwo wypowiadania konkratnej zgłoski lub fonemu) czy też sekwencję takich wzorców. Do jednego i do drugiego używa się trochę innych narzędzi rozpoznawania i sieć neuronowa jest tylko jedną z opcji. Nie wiem czy projekt ma na celu uzyskanie jak najlepszych wyników (w tym przypadku zastanowiłbym się nad alternatywą lub rozszerzeniem dla sieci neuronowej) czy też na siłę chodzi o wykorzystanie sieci neuronowej (bo na przykład to konik osoby, która zleciła ten projekt). W tym drugim przypadku - poddaję się....
-------------
Potrzebuję w taki sposób wyekstrachować cechy aby móc nauczyć sieć bądź inny system inteligenty (drzewa decyzyjne, logika rozmyta) aby móc użyć go w celu rozpoznania mówcy. Innymi słowy: powiedzmy, że mam bazę słów dwóch osób, dodajmy, że słów na głowę jest dziesięć. Biorę wypowiedziane słowo, wciskam je do maszynki, która pomoże mi wyekstrachować cechy (preprecesing), następnie wektorami cech uczę np. sieć. Biorę kolejne słowa, kolejnego mówcę... itd. Przyjmijmy, że sieć się nauczyła.

Czas więc na test, biorę tym razem trzy osoby i każda z nich wypowiada słowo (nie istotne jakie) ono przechodzi przez tę samą maszynkę do cech (preprocesing) a wektory cech zostają dostarczone na wejście sieci. Ona ma w zamian 'powiedzieć', że pierwszy to jest np. Jurek, drugi Stefan a trzeciemu drzwi nie zostaną otworzone.

Podsumowując ten punkt trochę na siłę będę jako klasyfikator wykorzystywał techniki sztucznej inteligencji, bo to po 1. konik promotora, po 2. interesują mnie one, a czy istotne są najlepsze wyniki? Odpowiedź jest jasna. Jednak z tego co wiem, to bardzo istotnym faktem jest tutaj preprocesing i nad nim mam się najbardziej skupić, klasyfikator jak wspomniałem w pierwszym poście można sobie darować, tak wiec sory za zamieszanie. Słyszałem, że MFCC so bardzo dobre, więc się za nie zabrałem, być może ma Pan na oku jakąś inną metodę - w preprocesingu mam tu pełną swobodę działania - byleby efekt był właściwy.

Re: Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: piątek 02 sty 2009, 17:35
autor: Sebastian-D16


Potrzebuję w taki sposób wyekstrachować cechy aby móc nauczyć sieć bądź inny system inteligenty (drzewa decyzyjne, logika rozmyta) aby móc użyć go w celu rozpoznania mówcy. Innymi słowy: powiedzmy, że mam bazę słów dwóch osób, dodajmy, że słów na głowę jest dziesięć. Biorę wypowiedziane słowo, wciskam je do maszynki, która pomoże mi wyekstrachować cechy (preprecesing), następnie wektorami cech uczę np. sieć. Biorę kolejne słowa, kolejnego mówcę... itd. Przyjmijmy, że sieć się nauczyła.

Czas więc na test, biorę tym razem trzy osoby i każda z nich wypowiada słowo (nie istotne jakie) ono przechodzi przez tę samą maszynkę do cech (preprocesing) a wektory cech zostają dostarczone na wejście sieci. Ona ma w zamian 'powiedzieć', że pierwszy to jest np. Jurek, drugi Stefan a trzeciemu drzwi nie zostaną otworzone.

Podsumowując ten punkt trochę na siłę będę jako klasyfikator wykorzystywał techniki sztucznej inteligencji, bo to po 1. konik promotora, po 2. interesują mnie one, a czy istotne są najlepsze wyniki? Odpowiedź jest jasna. Jednak z tego co wiem, to bardzo istotnym faktem jest tutaj preprocesing i nad nim mam się najbardziej skupić, klasyfikator jak wspomniałem w pierwszym poście można sobie darować, tak wiec sory za zamieszanie. Słyszałem, że MFCC so bardzo dobre, więc się za nie zabrałem, być może ma Pan na oku jakąś inną metodę - w preprocesingu mam tu pełną swobodę działania - byleby efekt był właściwy....
**********************


Witam,

Problem w tym ze wspolczynniki MFCC dobrze sie sprawdzaja w rozpoznawaniu mowy (jej tresci) a nie w rozpoznawaniu mowcow. To sa zupelnie inne podejscia. Wiec odrazu nasuwa sie wniosek ze nie beda to cechy dystynktywne z punktu widzenia problemu. Nalezy sie moze zastanowic nad ich zmiana, np na wpolczynniki predykcji liniowej LPC.

W przypadku rozpoznawania mowcow oczywiscie sieci neuronowe moga sie sprawdzic, poniewaz w takim przypadku nie musimy do tego podchodzic jak do procesu stochastycznego - jezeli nie liczy sie co wypowiada dany osobnik.

W przypadku rozpoznawania mowy (tresci) najbardziej rozsadnym wydaje sie zastosowanie ukrytych modeli markowa z ciaglymi funkcjami emisji (np rozklad wielowymiarowy wspolczynnikow MFCC, ktore w tym przypadku bylyby obserwacjami dla tych modeli). Estymacja modelu metoda Bauma-Welcha a ewaluacja jak kolega MB wspolmnial metoda Viterbiego.

Pozdrawiam,
Sebastian

Re: Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: piątek 02 sty 2009, 17:40
autor: Sebastian-D16
Jeszcze chcialem dodac, nie wiem czy jest sens sie katowac w pisanie tego w MathCADdzie o ile to miales na mysli, bo wydaje mi sie ze chodzilo o Matlab'a? jezeli jednak nie to przepraszam :) W kazdym razie istnieje biblioteka HTK (Hidden Markov ToolKit), rozwiaja od wielu lat, przez wielu ludzi, ktora wlasnie sluzy celom rozpoznawania mowy i mowcow. Mamy tam do dyspozycji cala palete algorytmow wykorzystywanych podczas rozpoznawania mowy, wiec chyba nie ma sensu wywazac otwarych drzwi, skoro praca ma byc z zalozenia naukowa, to chyba lepiej cos ulepszac niz pisac jeszcze raz :). HTK jest w calosci w C i przeznaczona dla C. Ale istnieje API dla Matlab'a.

Re: Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: piątek 02 sty 2009, 17:41
autor: MB
...Dziękuje za szybką ripostę.Wypada nieco rozjaśnić ten projekt. Po pierwsze nazwijmy go projektem finalnym. Sory, że zajmuję głowę, ale nie znalazłem lepszego forum, a przynajmniej kogoś kto daje konkretne i oparte na rzetelnej wiedzy odpowiedzi. Jeśli pan Panie MB zna takowe, byłbym wdzięczny za skierowanie.
*******************************
W Internecie wszyscy jesteśmy na "ty", więc MB, bez "pan"
Co do forum - po polsku niestety nie znam. Po angielsku: lista dyskusyjna (mailowa) music-dsp, grupa usenetowa comp.dsp


#Dla czego trójkątne filtry, czy chodzi tu o wyłapanie prązka widma, który będize się znajdował w wierzchołku tego trójkąta? Przecież mógłbym równie dobrze wybrać prążki według schematu (*), więc chyba te filtry potrzebne są do czegoś jeszcze.
********************************
Kształt charakterystyki jest mało istotny, trójkątne filtry są najprostsze w obliczeniu spośród wszystkich tych filtrów, których charakterystyki sąsiednie zazębiają się w sposób symetryczny. Hipotetycznie filtry mogłyby nawet mieć prostokątną charakterystykę, ale takie filtry mają znacznie wolniej gasnącą odpowiedź impulsową, więc reagują na szybkie zmiany krótkotrwałych cech mowy z większą bezwładnością.
---------------
Ok, a jak to jest z tym wyłapywaniem cech, poprzez filtrację, cze ja w rezultacie dostaję jeden prążek, czy jak?
********************************
Z każdego wyjścia filtru dostajesz sygnał przefiltrowany (sygnał pasmowy) zgodnie z jego charakterystyką, a że z całego wektora próbek wynikiem jest jedna liczba to tak jakby ten sygnał pasmowy został maksymalnie podpróbkowany, tzn zredukowano jego częstotliwość próbkowania w stosunku N:1 (N=długość wektora). To podpróbkowanie oczywiście traci nieodwracalnie sporą ilość informacji, ale przecież nie chcemy z powrotem rekonstruować sygnału. Zauważ, że FFT robi dokładnie to samo: na każdym wyjściu masz wynik wymnożenia sygnału przez funkcję exp(- j2pi nk/N), która przesuwa widmo w okolicach częstotliwości fs*k/N do zera, a potem mnożenie przez okno i wyliczenie sumy, które jest równoważne wyliczeniu 1 próbki z odpowiedzi łagodnego filtru uśredniającego (dolnoprzepustowego).

Czym jest prążek zwracany przez FFT? Z pewnością nie jest tym samym co prążek w widmie ciągłym sygnału sinus (czyli impulsem Diraca). Prążek w analizie FFT to tak naprawdę przedział częstotliwości o szerokości fs/N. To, że do rekonstrukcji danego bloku danych na każdą "częstotliwość" (a dokładniej - przedział częstotliwości) wystarczy jedna liczba (próbka) wynika z twierdzenia Shannona-Whitakera-Kotielnikowa oraz z zasady działania DFT. To co jest na wyjściu analizy melowej to też taki pseudo-"prążek", tylko o innej szerokości pasma i o innym kształcie pasma.



Skala melowa dotyczy częstotliwości a tu chodzi o logarytmowanie wartości współczynnika. Logarytmowanie wyniku FFT to istota obliczania cepstrum, jeśli tego nie wiesz, to znaczy, że kompletnie nie rozumiesz czym jest cepstrum. Jest to kolejny sygnał, że nie jesteś merytorycznie przygotowany do realizacji tego projektu.

Kompletnie, to może nie - inaczej nie byłoby tego postu, merytorycznie z pewnością - jeśli ma Pan na oku literaturę merytorycznie odpowiednią, to chętnie się z nią zapoznam, jak na razie nie mam dostępu do pozycji napisanej przez pionierów, niebawem owszem...
********************************
R. Tadeusiewicz, "Sygnał mowy",
Cz. Basztura, "Źródła, sygnały i obrazy akustyczne",
R.G. Lyons, "Wprowadzenie do cyfrowego przetwarzania sygnałów",
T.P. Zieliński, "Od teorii do cyfrowego przetwarzania sygnałów"



Pkt7. Przerowadzam DCT. Podobno proces ten ma na celu dekorelacje parameterów - # co mam przez to rozumieć?
*********************************
Nie. To ma na celu przejście do dziedziny pseudoczasu (quefrency), czyli dziedziny, która jest istotą cepstrum
----------------
O dekorelacji napisano w tej pracy... ale nie ma ludzi nieomylnych.

Pseudoczasu czy Pseudoczęstotliwości?
********************************
to już kwestia temperamentu słowotwórczego. Termin quefrency ukuł wynalazca cepstrum, Tukey (tak, ten od algorytmu Cooleya-Tukeya FFT). Zresztą samą nazwę też. Skoro wracamy z wymiaru częstotliwości przez odwrotne przekształcenie to logiczne, że wracamy do czegoś co ma wymiar czasowy (choć nie jest czasem).



(...)Tak naprawdę to powinno być IDC lub IFFT, wynik będzie prawie identyczny, bo FFT i IFFT to arytmetycznie prawie ta sama operacja, z dokładnością do sprzężenia zespolonego. Można udowodnić, że IFFT(X) = conj(FFT(X))
------------
To jest bardzo interesujące, bowiem ja rozumiem FFT jako przejście do dziedziny częstotliwości a IFFT z powrotem do dziedziny czasu. Rozumiem, że to transformacja i sens matematyczny jest taki a nie inny jednak przyznaję, że nikt nigdy mi o tym nie powiedział... może ma Pan rację jeśli powie, że może powinienem o tym przeczytać ;)
****************************8
Słusznie rozumiesz sens fizyczny wyniku FFT/IFFT. Jednak algebraicznie jest taka prosta zależność jak napisałem wyżej. Wynika to z właściwości symetrii przekształcenia Fouriera, które również dziedziczy FFT.


Tak czy inaczej, co to znaczy 'prawie identyczne' i co w rezultacie stosować IDCT czy DCT?
****************************
bez znaczenia dla wyniku rozpoznawania


Nie jestem ekspertem od sieci neuronowych, ale moim zdaniem tu jest trochę pomieszanie pojęć i operacji. Nie za bardzo zrozumiałem, co chcesz wykrywać - pojedynczy wzorzec (czyli wystąpienie kombinacji formantów oznaczające prawdopodobieństwo wypowiadania konkratnej zgłoski lub fonemu) czy też sekwencję takich wzorców. Do jednego i do drugiego używa się trochę innych narzędzi rozpoznawania i sieć neuronowa jest tylko jedną z opcji. Nie wiem czy projekt ma na celu uzyskanie jak najlepszych wyników (w tym przypadku zastanowiłbym się nad alternatywą lub rozszerzeniem dla sieci neuronowej) czy też na siłę chodzi o wykorzystanie sieci neuronowej (bo na przykład to konik osoby, która zleciła ten projekt). W tym drugim przypadku - poddaję się....
-------------
Potrzebuję w taki sposób wyekstrachować cechy aby móc nauczyć sieć bądź inny system inteligenty (drzewa decyzyjne, logika rozmyta) aby móc użyć go w celu rozpoznania mówcy. Innymi słowy: powiedzmy, że mam bazę słów dwóch osób, dodajmy, że słów na głowę jest dziesięć. Biorę wypowiedziane słowo, wciskam je do maszynki, która pomoże mi wyekstrachować cechy (preprecesing), następnie wektorami cech uczę np. sieć. Biorę kolejne słowa, kolejnego mówcę... itd. Przyjmijmy, że sieć się nauczyła.

Czas więc na test, biorę tym razem trzy osoby i każda z nich wypowiada słowo (nie istotne jakie) ono przechodzi przez tę samą maszynkę do cech (preprocesing) a wektory cech zostają dostarczone na wejście sieci. Ona ma w zamian 'powiedzieć', że pierwszy to jest np. Jurek, drugi Stefan a trzeciemu drzwi nie zostaną otworzone.

Podsumowując ten punkt trochę na siłę będę jako klasyfikator wykorzystywał techniki sztucznej inteligencji, bo to po 1. konik promotora, po 2. interesują mnie one, a czy istotne są najlepsze wyniki? Odpowiedź jest jasna. Jednak z tego co wiem, to bardzo istotnym faktem jest tutaj preprocesing i nad nim mam się najbardziej skupić, klasyfikator jak wspomniałem w pierwszym poście można sobie darować, tak wiec sory za zamieszanie. Słyszałem, że MFCC so bardzo dobre, więc się za nie zabrałem, być może ma Pan na oku jakąś inną metodę - w preprocesingu mam tu pełną swobodę działania - byleby efekt był właściwy....
**********************
widzę fundamentalny problem w podejściu opartym na MFCC takim jakie jest stosowane w rozpoznawaniu mowy - analiza mel-cepstralna pozwala na wyekstrachowanie cech charakterystycznych dla fonemów redukując zależność od mówcy. Po to się ją właśnie wykorzystuje, żeby uniezależnić skuteczność rozpoznawania od tego, kto mówi. Dzieje się tak, ponieważ cepstrum dzięki logarytmowi zamienia iloczyn charakterystyk odpowiedzialnych za źródło (tutaj: wyuczony wzorzec wymowy) oraz tor (tu: charakterystyka wokalna konkretnej osoby) zamieniając go na sumę, z której to sumy odrzuca się cechy mówcy. W tym sensie rozpoznawanie mówcy właśnie nie powinno się opierać na wynikach tej analizy (a przynajmniej - nie bezpośrednio), bo skuteczność będzie zerowa. Jednym słowem - stosując tę analizę de facto sam podcinasz swoją gałąź.

Inny preprocessing? - hmm, to jest dobre pytanie. Odpowiedź na szybko: można sprawdzić metodą statystyczną (np. PCA) czy istnieją w zbiorze cech MFCC jakieś takie, które mają przynajmniej 95% korelacji z tym, kto mówi, i wybrać właśnie te cechy, a nie najsilniejsze 13 cech, tak jak w rozpoznawaniu treści mowy. Jeśli okaże się, że te cechy są słabe, to do rozpoznawania będzie potrzebne głosowanie większościowe oparte na dużej ilości danych. Innymi słowy - będzie potrzebny spory fragment wypowiedzi.

Re: Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: piątek 02 sty 2009, 18:00
autor: bofpandora
Problem w tym ze wspolczynniki MFCC dobrze sie sprawdzaja w rozpoznawaniu mowy (jej tresci) a nie w rozpoznawaniu mowcow. To sa zupelnie inne podejscia. Wiec odrazu nasuwa sie wniosek ze nie beda to cechy dystynktywne z punktu widzenia problemu. Nalezy sie moze zastanowic nad ich zmiana, np na wpolczynniki predykcji liniowej LPC.
-------------------
Sory, ale w tym problemu nie ma zerknij choćby na: A Tutorial on Text-Independent Speaker Verification, pana D. A. Reynolds'a i innych, jeśli mówisz o LPC do mówców to się z Panem zgodzę, ale daje lipniejsze rezultaty od MFCC, można oczywiście połączyć i jest to realizowane, są także tzw. PLP (Perceptualna predykcja) i falki... ale na ich test jeszcze przyjdzie czas, po drugie to nie doktorat, wybrałem spośród mozliwych taką metodę, która jest najefektywniejsza jak na moje siły.

Re: Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: piątek 02 sty 2009, 19:55
autor: Sebastian-D16
...Problem w tym ze wspolczynniki MFCC dobrze sie sprawdzaja w rozpoznawaniu mowy (jej tresci) a nie w rozpoznawaniu mowcow. To sa zupelnie inne podejscia. Wiec odrazu nasuwa sie wniosek ze nie beda to cechy dystynktywne z punktu widzenia problemu. Nalezy sie moze zastanowic nad ich zmiana, np na wpolczynniki predykcji liniowej LPC.
-------------------
Sory, ale w tym problemu nie ma zerknij choćby na: A Tutorial on Text-Independent Speaker Verification, pana D. A. Reynolds'a i innych, jeśli mówisz o LPC do mówców to się z Panem zgodzę, ale daje lipniejsze rezultaty od MFCC, można oczywiście połączyć i jest to realizowane, są także tzw. PLP (Perceptualna predykcja) i falki... ale na ich test jeszcze przyjdzie czas, po drugie to nie doktorat, wybrałem spośród mozliwych taką metodę, która jest najefektywniejsza jak na moje siły....
**********************

Po pierwsze nie "Pan-ujmy" sobie :)

Jezeli miales na mysli publikacje:

F. Bimbot, J.F. Bonastre, C. Fredouille, G. Gravier, I.M. Chagnolleau, S. Meignier, T. Merlin, J.O. Garcıa, D.P. Delacretaz, D.A. Reynolds - "A Tutorial on Text-Independent Speaker Verification"

Wydana na lamach:

EURASIP Journal on Applied Signal Processing

To wcale ona nie dokonuje bezposredniego porownania LPC (dalej sie bede upieral ;)) z MFCC, co wiecej w tej publikacji wektor cech ktory jest budowany sklada sie zarowno ze wspolczynnikow LPC cepstralnych oraz MFCC. Na dodatek MFCC uzywa sie tam do badania dynamiki formantow, wartosci delta pierwszego i drugiego rzedu dla wektora MFCC. Niestety moja dzialka swego czasu bylo rozpoznawanie mowy a nie mowcow, ale moge stwierdzic ze dynamika formantow moze niesc ze soba jakies cechy osobniczne, moze sie to przyczynic do poprawy rozpoznania (na chlopski rozum) - to tylko moja spekulacja. Publikacja ta glownie koncentruje sie na zastosowaniu GMMow (Modeli zlozen rozkladow gaussowskich) i Bayesowskiego wnioskowania do stworzenia modelu mowcy.

Autorzy podkreslaja zalety analizy cepstralnej w ogole.

Oczywiscie moge sie mylic, jezeli masz dostep do danych porownawczych gdzie jest zestawienie eksperymentow dla danych testowych wykonanych na "czystym" MFCC (bez wspomagaczy) i LPC, to "odszczekam" wszystko ;)

Pozdrawiam

Re: Ekstrakcja formantów sygnału mowy (przypadek MFCC)

: sobota 03 sty 2009, 04:12
autor: paes
W analizie cepstralnej mowy to o ile pamiętam, to nie chodzi o dekorelację ale rozplot sygnału pobudzającego (tonu krtaniowego) i odpowiedzi częstotliwościowej traktu głosowego (czyli wydzielenie formantów).
PRawdopodobnie źle przetłumaczono słowo angielskie deconvolution (operacja odwrotna do convolution czyli splatania).

Ogólnie istota rzeczy w analizie cepstralnej ma się tak:

1. Zakłada się, że sygnał mowy jest splotem sygnału pobudzającego (krtaniowego) i odpowiedzi impulsowej traktu głosowego.

2. Z teorii przekształcenia Fouriera wynika, że jak potraktujemy nim sygnał będący wynikiem splotu to otrzymamy widmo będące iloczynem dwóch widm: sygnału pobudzającego i charakterystyki filtru (czyli toru głosowego

3. W sygnale mowy zależności fazowe grają małą rolę, więc rozpatrujemy tylko widmo amplitudowe czyli moduł widma zespolonego. Zakłada się także, że układ jest minimalnofazowy.

4. Logarytm z iloczynu dwóch wielkości jest sumą logarytmów tych wielkości, czyli po zlogarytmowaniu dostajemy sumę logarytmów dwóch widm amplitudowych: pobudzenia krtaniowego i odpowiedzi filtru traktu głosowego.

5. Odwrotna transformata Fouriera z widma z punktu czwartego daje nam cepstrum sygnału wejściowgo czyli przebieg czasowy będący sumą przebiegów pobudzenia i odpowiedzi toru głosowego.

6. Przebiegi związane z odpowiedzią toru są położone blisko zera na osi czasowej (czas jest tu odwrotnością częstotliwości przebiegów składowych, więc wyższe f daje mniejszy czas na osi) impulsy związane z tonem krtaniowym zaczynają się mniej więcej w okolicach okresu sygnału krtaniowego i powtarzają się co ten okres.


Co do rozróżniania mówców, to można by badać takie parametry:

- zakres częstotliwości tonu krtaniowego (min, max, średnia)

- widmo tonu krtaniowego (np. z cepstrum po wyzerowaniu składowych
odpowiedzi toru głosowego - okienkowanie przebiegu i znów FFT)

- średnie częstotliwości formantów dla poszczególnych samogłosek
tu jest konieczna detekcja samogłosek przez wykrycie czy formanty są w odpowiednich dla nich przedziałach
- położenie formantów wyższych od 4 (jest w miarę stałe ale charakterystyczne dla danej budowy toru mownego.

Formanty trzeba śledzić porównując wyniki z kolejnych ramek, bo mogą się pojawiać różne fałszywe formanty wynikające ze stanów przejściowych a ich poprawne określenie jest konieczne dla poprawnego rozpoznawania mowy

- średnie częstotliwości tonu krtaniowego dla wymawianych samogłosek
- szybkość zmian częstotliwości formantów przy mówieniu
- wzajemny czas trwania samogłosek w słowie
- czas trwania okresów ciszy np. przed t czy k
- względne głośności samogłosek na tle całego słowa
- uśredniony przebieg zmian amplitudy sygnału mowy (czyli modulację
amplitudy wargami


książka prof. Tadeusiewicza "Sygnał mowy" jest dzięki uprzejmości Autora dostępna on-line (lub do ściągnięcie) pod adresem

http://winntbg.bg.agh.edu.pl/skrypty/0004/