B2M31ZRE cvičení
Odhad základního tónu řečového signálu
Doporučená příprava z minulých cvičení:
- segmentační algoritmus pro zpracování signálu v krátkodobých
segmentech (viz blokový výpočet výkonu)
- výpočet výkonu a četnosti průchodů nulou pro delší promluvu
- postup pro interaktivní nahrání promluvy
Úkoly k vypracování:
- Odhad základní frekvence (základní periody) pro znělý
segment řečového signálu.
Pro vybraný znělý segment řečového
signálu muz1-AA-frame.CS0
(vše raw data bez hlavičky, fs=16000 Hz, pro načtení do MATLABu
použijte funkci loadbin.m) odhadněte
základní frekvenci v následujících krocích:
- sledujte průběh odhadu autokorelační funkce (vychýlený odhad - xcorr)
- základní periodu hledejte jako první postranní maximum odhadu
autokorelace
- z nalezené pozice maxima určete základní periodu ve
vzorcích (L_0), základní periodu v sekundách (T_0) a hodnotu
základního frekvence v Hz (f_0)
- omezte interval hledání maxima na rozsah, který odpovídá základnímu tónu v rozmezí 60-260 Hz.
- Výsledek: pro jeden znělý segment
muz1-AA-frame.CS0 zobrazte:
- časový průběh signálu spolu s napočítanou autokorelační funkcí
- meze pro hledání maxima autokorelace
- nalezené maximum a z něj určené hodnoty L_0, T_0 a f_0.
- Výpočet opakujte také pro analogické znělé segmenty od různých
mluvčích a sledujte variabilitu signálu i výsledného
odhadu:
- muz2-AA-frame.CS0,
muz3-AA-frame.CS0,
muz4-AA-frame.CS0,
zena1-AA-frame.CS0,
zena2-AA-frame.CS0,
zena3-AA-frame.CS0
(raw data bez hlavičky, fs=16000 Hz)
- Výpočet opakujte také pro různé znělé segmenty od dvou různých mluvčích
a sledujte variabilitu signálu i i stabilitu odhadu f0 pro
jednotlivé mluvčí:
- muz3-AA-frame.CS0,
muz3-EE-frame.CS0,
muz3-II-frame.CS0,
muz3-OO-frame.CS0,
muz3-UU-frame.CS0
- zena3-AA-frame.CS0,
zena3-EE-frame.CS0,
zena3-II-frame.CS0,
zena3-OO-frame.CS0,
zena3-UU-frame.CS0
- Výpočet opakujte také pro vybraný neznělé segmenty řečového
signálu muz1-SS-frame.CS0, zena3-SS-frame.CS0
(raw data bez hlavičky, fs=16000 Hz) a srovnejte zejména rozdílné
průběhy signálů v časové oblasti i autokorelační funkce pro neznělou
řeč.
- MOŽNÁ VYLEPŠENÍ: - vypočítejte sami jednostranný odhad autokorelační funkce pro
požadované rozmezí základní frekvence
- zvažte možnost snížení chyby
odhadu autokorelace při práci se vzorky vně daného segmentu
- Odhad průběhu základní frekvence v delší promluvě
- Odhad základního tónu implementujte pro celý signál v jednotlivých
krátkodobých segmentech (viz výpočet výkonu na minulém cvičení) a
počítejte pro každý frame (rámec) segmentovaného signálu. Délku
segmentu volte minimálně 32 ms, posuv segmentu 16 ms
(tj. segmentujte s 50% překryvem).
- Výsledek: Časový průběh
signálu a nalezená hodnota f_0 ve všech jednotlivých segmentech pro promluvu
SA176S01.CS0 (raw data bez
hlavičky, fs=16000 Hz) a pro vámi on-line nahraný signál.
- Aplikace detekce znělých řečových segmentů při výpočtu
základního tónu řeči
- Detekujte neznělé řečové segmenty detekujte na bázi ZCR počítané v
jednotlivých analyzovaných segmentech (jako segmenty s velmi vysokou
četností průchodů nulou). V tomto případě
nastavte hodnotu f_0 = 10 Hz.
- Detekujte také řečovou pauzu na bázi výpočtu energie (jako
segmenty s velmi nízkou energií) a pro
neřečové segmenty nastavte hodnotu f_0 = 0 Hz.
- Výsledek: Časový průběh
signálu a nalezená hodnota f_0 pouze pro znělé segmenty
v on-line nahraném signálu
(je možné i pro analyzovanou promluvu SA176S01.CS0).
- MOŽNÉ VYLEPŠENÍ - zvažte možnost vyhlazení odhadu f_0 mediánovou filtrací (použijte
následující funkci pro mediánovou filtraci - med.m )
- Výsledek: Pro vámi nahraný signál určete průměrnou hodnotu f_0 vašeho hlasu.
- Další signály ke zpracování
- mc20bc116016.ils_a - raw data bez hlavičky, fs=44100 Hz,
- a30650b1.wav - wav format,
fs=8000 Hz
- vaše vlastní promluvy z databáze zreratdb v souborech *.CS0
(fs = 16000 Hz), pro hromadné stažení jsou vaše promluvy k disposici v následujícím archivu zrerat_block200_2025_cs0.zip
- POZNÁMKA - Pro načtení dat v raw-formátu (bez hlavičky) do MATLABu
použijte funkci loadbin.m, pro načtení
dat ve wav-formátu použijte standardní funkci MATLABu audioread.