segment znělého signálu
frame_voiced.bin,
segment neznělého signálu
frame_unvoiced.bin,
(vše raw data
bez hlavičky, fs=16000 Hz, pro načtení do MATLABu
použijte funkci loadbin.m),
další vlastní on-line nahrané signály (různé vzorkovací kmitočty: 8 kHz, 16 kHz, 44.1 kHz)
Přečtěte např. následující věty:
"Všechny myši v šedé chýši šedý myšák vede." "Jezevec má hezký zvyk, provozuje tělocvik." "Jedna - dva - tři - čtyři - pět"
DOMÁCÍ PŘIPRAVA: (5 bodů)
Zakódování segmentu řeči na bázi LPC
Pro neznělý a znělý segment řečového signálu vypočítejte parametry autoregresního modelu řádu p=16, tj. autoregresní koeficienty a_k a výkon chyby predikce E_p. Pro výpočet použijte MATLABovské funkce lpc resp. arburg.
Pro znělý segment určete dle postupu z minulého cvičení hodnotu základní frekvence (periody), tj. f_0, T_0, resp. L_0 (perioda ve vzorcích).
Realizace LPC enkodéru pro dlouhý signál
Pro zvolený signál vypočítejte po segmentech hodnotu základního tónu (pitch)
včetně detekce neznělých úseků,
viz minulé cvičení.
Pro zvolený signál vypočítejte po segmentech parametry AR modelu
(autoregresní koeficienty a výkon chyby predikce)
a výsledky uložte do matice, kde řádky budou obsahovat parametry AR modelu pro jednotlivé segmenty.
Volte délku segmentu 30 ms a segmentujte bez překryvu v obou případech, tj. pro výpočet f_0 i parametrů AR modelu.
Výsledek DOMÁCÍ PŘIPRAVY:
funkce (skript) pro zakódování signálu s volitelnou délkou segmentu, kroku segmentace pro obecný vzorkovací kmitočet, jejímž výsledkem bude matice zakódovaných parametrů, kde na každém řádku uchovejte pro každý krátkodobý segment vektor autoregresních koeficientů a_k, výkon chyby predikce E_p a základní tón řeči f_0 pro znělé úseky (pro neznělé úseky nastavte f_0 = 10, pro neřečové segmenty f_0 = 0).
vytvořenou funkci (skript) odevzdejte přes WEBové rozhraní
na stránkách FEL Moodle (autorizovaný
přístup) do P0 20.3.2023, 12:45 .
Dekódování 1 segmentu na bázi AR modelu (LPC)
Vytvořte šumové buzení pro generování umělého neznělého segmentu, tj. Gaussovský bílý šum s nulovou střední hodnotou a jednotkovým výkonem.
Vytvořte umělý neznělý segment filtrací vytvořeného buzení pomocí syntetizujícího filtru AR modelu.
Výsledek:
pro jeden neznělý a znělý segment frame_unvoiced.bin zobrazte:
- v časové i spektrální oblasti následující signály: původní, buzení, uměle generovaný.
Vytvořte pulsní buzení pro generování umělého znělého segmentu, tj. sled pulsů s periodou odpovídající L_0 s celkovým jednotkovým výkonem, a
segment opět vygenerujte.
Výsledek:
pro jeden znělý segment frame_voiced.bin zobrazte:
- v časové i spektrální oblasti následující signály: původní, buzení, uměle generovaný.
Realizace LPC dekodéru
Dekódujte signál z uchovaných parametrů AR modelu. Při dekódování jednotlivých krátkodobých segmentů dejte pozor na následující kroky:
Filtraci realizujte vždy bez překryvu pro délky odpovídající kroku segmentace pri výpočtu parametrů.
Nezapomeňte na uchovávání
počátečních podmínek při filtraci na sebe navazujících segmentů, tj. u funkce filter používejte také čtvrtý vstupní a druhý výstupní parametr.
Použijte umělé buzení vygenerované na bázi informace o f_0 v
jednotlivých segmentech.
Při generování pulsního buzení nezapoměňte na správnou návaznost uměle generovaných
pulsů, tj. první pulz nemůže být vždy na prvním vzorku segmentu.
Výsledek:
dekódovaný signál z uchované matice zakódovaných parametrů pro promluvu SA106S06.CS0 - zobrazte časový průběh a spektrogram původního a dekódovaného signálu.
Vyzkoušejte umělé buzení pouze šumovým signálem (bez informace o f_0, tj. f_0 = 0)
Vyzkoušejte umělé buzení se změněnou hodnotou f_0 ve znělých úsecích (tj. pro f_0 = scale*f_0), kde scale je násobná konstanta v rozmezí 0.8 - 1.5.
Zakódujte a dekódujte vlastní on-line nahranou promluvu.