Ekstrakcja formantów sygnału mowy (przypadek MFCC)
: piątek 02 sty 2009, 12:39
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.
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.