Algoritmy zpracování SIgnálů

Semestrální práce - stránka k výkladu

připravil Petr Fousek

Zadání

Proveďte zakódování řečového signálu po segmentech s nulovým překryvem, tj. určete koeficienty odrazu, výkon          chyby predikce.
Určete základní periodu řeči.
Proveďte zpětnou syntézu řečového signálu - použijte křížovou strukturu syntetizujícího filtru.

 
- paramentry všech signálů : fs=8kHz, 16bitů kvantováno, mono
- parametry segmentace     : 1 segment = 20ms, tj. 160vzorků, bez překryvu
- parametry metody           : LPC 10.řádu, Burgův algoritmus (minimalizace součtu chyby dopředné
                                            a zpětné predikce), křížový filtr (syntetizující a analyzující), základní perioda
                                            řeči odhadována autokorelační funkcí vstupního signálu upraveného v každém
                                            segmentu funkcí na eliminaci malých hodnot
                                            (segmentace proměnné délky segmentu podle délky zákl. periody
                                            a zvolené průměrné délky segmentu)
-parametry zakódovaného signálu :
                                            1. znělost / neznělost
                                            2. pitch - výška základního tónu
                                            3. úroveň - odmocnina z výkonu chyb. signálu
                                            4. parametry AR modelu - koeficienty odrazu
                                            popř. ještě délky segmentů

1. k segmentaci, nalezení popisujících parametrů v segmentu

- ke každému segmentu nalezneme výše uvedené parametry...
prostřední graf je odmocnina z výkonu chyby predikce,
spodní graf je odhad zákl. frekvence či neznělý segment (pokud f=0)

 

2. - ukázka znělé hlásky "á", odhadnutá frekvence 148Hz

 

3. ukázka neznělého úseku řeči (šepot), odhadnutá frekvence=0 - neznělý úsek

 

4. zpětná rekonstrukce
Nejprve vygenerujeme buzení (spodní graf) znělé či neznělé, pak filtrujeme syntetizujícím
filtrem (zde funkce filtap.m - FilterAllPoles-křížová struktura) - prostřední obrázek.

 


5. signál pohad.wav

6. pokud použijeme "tvrdou" návaznost segmentů, vznikne toto
-i na spektrogramu je patrný rozdíl - zkreslení syntetizovaného signálu

7. Nyní postupujeme tak, že na jeden segment připadne celistvý počet period buzení,
segment má proměnnou délku, zpětnou syntézou vznikne toto
- spektrogram vypadá na první pohled podobnější původnímu signálu


8. signály 28.wav a 28f.wav
Tyto signály se liší tím, že první je omezen horní propustí na 300Hz, druhý nikoliv.

Syntetizované signály jsou 28_s.wav a 28f_s.wav.
 


9. signál septat.wav
Tento signál obsahuje promluvu "musíme šeptat", kde první slovo je proneseno nahlas a druhé
šeptem. Po segmentaci vypadá průběh úrovně a odhadu základní frekvence takto:
- je zřejmé, že pro "šeptat" zůstává frekvence, resp. znělost nulová

10. Spektrogram vypadá následovně:
- je zřejmá větší zastoupení vyšších kmitočtů pro neznělé hlásky či úseky

Poslechnout si zakódovaný a dékodovaný signál lze zde.
U tohoto signálu je zajímavé i grafické zobrazení syntézy, které je na obr. 4.


Další zajímavé signály:
1. Vstup je promluva "jedna", viz 1.wav, syntetický signál je pak 1_s.wav. Je možné se podívat
    na SPEKTROGRAM a na parametry.
2. Vstupní signál je od jiného mluvčího, telefonní pásmo, promluva "devět",
    9.wav, syntetický signál je 9_s.wav.
3. Delší signál s "normální" promluvou lpc.wav. Jeho syntéza je lpc_s.wav, spektrogram, který
    není ve stejném měřítku, je zde.

Napsal jsem k tomu soubory koder.m a dek.m pro zjednodušenou syntézu a kódování a dále
o něco lepší koder.m a dek.m. Dále jsem použil soubor burg.m od Ing.Petra Polláka.


Odtud jsem čerpal:
http://www.kt.tu-cottbus.de/speech-analysis/course.html,
http://amber.feld.cvut.cz/user/Cmejla/ada/ada.htm
a další.