logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Synteza mowy LPC + FIR. Zamiast mowy jest szum.

nekro82 29 Lis 2006 20:15 3119 9
REKLAMA
  • #1 3276959
    nekro82
    Poziom 10  
    Witam

    Pisze aktualnie prace mgr Zastosowanie predykcji liniowej w procesie syntezy mowy i mam juz algorytmy do analizy LPC i filtr FIR. Jednak cos nie dziala tak jak powinno. Czyli zamiast ladnej mowy mam szum :).

    Dla kazdej gloski wykonuje analize LPC ( kazda gloske dziele na segmenty 240 probek i dla nich licze wspolczynniki LPC) Po analizcie wrzucam kolejne dane do FIR (generuje szum oraz pobieram kolejne wspolczynniki predykcji i liczy mi sie kolejna probka wyjsciowa). Tak w skrocie:) W wyniku (przebieg) mozna zauwazyc pewne podobienswo do wyniku w ktorym sklejam kolejne gloski nic z nimi nie robiac:)

    Czy prosty filtr FIR wysarcza do syntezy??

    class FIR2
    {
    private int length;
    private double[] delayLine;
    private double[] impulseResponse;
    private int count = 0;

    public FIR2(double[] coefs)
    {
    length = coefs.Length;
    impulseResponse = coefs;
    delayLine = new double[length];
    }

    public double getOutputSample(double inputSample)
    {
    delayLine[count] = inputSample;
    double result = 0.0;
    int index = count;
    for (int i=0; i<length; i++)
    {
    result += impulseResponse[i] * delayLine[index--];
    if (index < 0) index = length-1;
    }
    if (++count >= length) count = 0;
    return result;
    }
    }
  • REKLAMA
  • #2 3277007
    koodłaty
    Poziom 14  
    LPC10 to całkiem przyjemny temat pracy magisterskiej ;)
    Kilka pytań: czy robiłeś filtrację filttrami preemfazy/deemfazy? Czy mnożyłeś 240 próbek z oknem Hamminga? Jaką metodą wyznaczałeś współczynniki LPC (zakładam, że Durnbina-Levinsona)?
    Jeśli chodzi o szum to na początku prac nad kodekiem LPC10 też miałem podobny problem. Okazało się, że filtr syntezy (filtr IIR) był skopany - źle pobierałem poprzednie próbki. Konkretnie chodziło o to, że w filtrze IIR na samym początku wykorzystuje się niezainicjalizowane próbki - a jak z IIR bywa - wiadomo. Mogą się same wzbudzać generując śmieci na wyjściu.
    Aha, odpowiedź na ostatnie pytanie - nie. Filtr FIR nie wystarczy do syntezy. Syntezuje się filtrem odwrotnym do filtra traktu głosowego czyli IIRem.
  • REKLAMA
  • #3 3277186
    nekro82
    Poziom 10  
    Juz nawet nie chodzi o LPC10 tylko o standartowy podstawowy LPC. Odpowiedz na pytania:
    1) Nie robilem
    2) hmmmm. Po prostu dzielilem kazda gloske na przedzialypo 240 probek i z tych przedzialow liczylem wspolczynniki predykcji
    3) LPC wyznaczam metoda Autocorelacji

    Fajnie ze IIR..moj opiekun mowil ze lepiej zrobic na FIR po prosciej ;)
    Chetnie bym nawiazal z kims kontakt mailowy.. poslal zrodla do przejzenia ;) Bo juz troche nad tym siedze i zaczynam sie wkurzac :/
    Chetnie bym zobaczyl Twoj IIR....

    P.S Dziekuje za pomoc!!
  • #4 3280517
    koodłaty
    Poziom 14  
    Poszukaj na początek książki "Od teorii do cyfrowego przetwarzania sygnałów" Tomasza P. Zielińskiego, AGH 2002 (nowe wydanie ma chyba inny tytuł). Jest tam rozdział bardzo ładnie opisujący podstawy kompresji mowy metodą LPC10 jak i omówioną filtrację cyfrową.
  • #5 3282260
    piter_2000
    Poziom 14  
    Miałem kiedyś angielską książkę o LPC - mogę pokopać jak wrócę z pracy, bo gdzieś była na płytce. A z panem Zieliński miałem zajęcia... :D
  • #6 3285507
    nekro82
    Poziom 10  
    Bardzo mile widziana wszelka pomoc i materialy;)
    Mam takie pytania:
    1) Probki glosek ktore poddajemy analizie to zwykle nagrane do mikrofonu pojedyncze gloski czy trzeba wycinac je z kilku wyrazow i wyciagnac srednia ?? (wiadomo ze gloski w kazdym wyrazie brzmia inaczej)
    2) Dzielenie sygnalu na przedzialy po 240 probek wystarczy ??(gdzies wyczytalem ze to jest gorna granica) Potem podajemy to analizie i mamy dla kazdego przedzialy coef.
    3) Przed filtracja wystarzcy zrobic analize LPC metoda Autocorelacji??
    4) no i sama filtracja na ktrej temat narzie najmniej wiem :/

    Pytam sie bo ostatnio sie przekonalem ze moj opiekun mowi cos innego niz na necie czytam, albo co tu mi na forum zdazyliscie napisac.

    Chcialbym nadmienic ze chodzi mi o najprostrza LPC bo chodzi tu o jej zastosowanie, a nie o to by sygnal wynikowy byl jak najlepszej jakosci.
    Moze pozniej jak mi sie bedzie chcialo to popracuje nad jakoscia. Narazie musze zrobic podstawy:)

    Dodano po 1 [godziny] 11 [minuty]:

    Jeszcze jedno pytanko mi sie nasunęło. Jak to jest z ta dźwięcznością ?? Jakimi sygnałami pobudzamy gloski dźwięczne a jakimi bezdźwięczne??
  • REKLAMA
  • #7 3289814
    koodłaty
    Poziom 14  
    @piter_2000
    Czyżby teorię sygnałów? ;)

    A co do pytań:

    Ad. 1
    Tak - na wejściu masz dokładnie takie same dane jak wewnątrz pliku wav (8/16bit, 8 kHz). Analizie poddajesz każde 20 ms z danych wejściowych - dla 8 kHz jest to dokładnie 160 próbek (50 analizowanych fragmentów daje sekundowy dźwięk).

    Ad. 2
    Dzielimy na 160 próbek, ale uwzględniamy dodatkowo 80 próbek z poprzedniej ramki (co daje razem 240 próbek) - taki sygnał wymnażamy z oknem Hamminga o długości 240 próbek. Nie widziałem nigdzie by konieczne było dłuższe okno Hamminga. Wymnożony sygnał filtrujemy filtrem o częstotliwości odcięcia 900 Hz i dopiero wtedy poddajemy sygnał autokorelacji.

    Ad. 3
    O której filtracji mówisz?

    Ad. 4
    Polecam przejrzenie elektrody pod kątem cyfrowych filtrów.

    Dodatkowo załączam najbardziej uproszczony schemat analizy LPC w załączniku. Poniżej krótki opis:
    1 - sygnał wejściowy w postaci omówionej w Ad1. Warto wspomnieć, że usunięcie składowej stałej (wartości średniej) z tego fragmentu sygnału może poprawić estymacje.
    2 - filtr uwydatniający wyższe częstotliwości; uzasadnienie jego obecności znajdziesz np. w książce "sygnał mowy" R. Tadeusiewicza (1988), AGH - o ile się nie mylę była legalnie dostępna do ściągnięcia w sieci
    3 - okno Hamminga o długości 240 próbek omówione w Ad 2
    4 - filtr FIR (np. o 64 współczynnikach) ograniczający sygnał do zakresu częstotliwości w której może znaleźć się częstotliwość tonu podstawowego
    5 - autokorelacja, która jest podstawą do oceny dźwięczności/bezdźwięczności. Często stosuje się przed nią tzw. progowanie sygnału ale myślę, że póki co nie musisz sobie tym zawracać głowy
    6 - na podstawie maksimum z autokorelacji w przedziale 20 - 160 próbek ocenia się czy sygnał jest dźwięczny czy bezdźwięczny. Dodatkowo jeśli jest to sygnał dźwięczny ustala się częstotliwość tonu podstawowego.

    Pytasz o sygnał pobudzenia. Jeśli jest to pobudzenie bezdźwięczne, jest to szum biały (nie zauważyłem różnicy między użyciem szumu o rozkładzie normalnym a równomiernym). Sygnał dźwięczny jest to sygnał z zerami oraz jedynkami oddalonymi od siebie o ilość próbek odpowiadających częstotliwości tonu podstawowego.
  • #8 3291714
    piter_2000
    Poziom 14  
    @ koodłaty: Tak :D
    @ nekro82: Na razie nie mogę odkopać tej książki, ale może się uda. Pozdrawiam...
  • #9 3391772
    kaminski_12
    Poziom 11  
    Ja szukam angorytmu do analizy LPC!! Mozecie mi pomóc... Z góry dzięki
  • REKLAMA
  • #10 3445123
    nekro82
    Poziom 10  
    Jestem na etapie syntezy. Moze by ktos poradzil jak przejsc ten etap?? Podal jakis filtr do syntezy (algorytm slowny albo nawet kody).
    Szukam porady bo nie umie sobie poradzic z tym etapem :/
    Za wszelka pomoc z gory dziekuje...
REKLAMA