Odhad lokálního SNR bez referenčního signálu

1. Analýza chyby

Pro analýzu chyby výkonu byl použit signál s0001.bin a bílý šum s globálním SNR = 0 dB. Celková chyba výkonu však není závislá na globálním SNR.

SNR = 10 log (Ps/Pn).


Obr. Vstupní signál a signál se šumem s globálním SNR = 0 dB.

Výkon obou signálů byl spočítán podle následujícího schématu:


Obr. Schéma výpočtu výkonu signálu a výkonu signálu se šumem.

Pro výpočet tohoto dávkového odhadu bylo použito okno s velikosti 128 vzorků. Výkon obou signálů je znázorněno na následujícím obrázku.


Obr. Výkon referenčního signálu a signálu se šumem

Chyba výkonu, která vzniká přímým odečítáním výkonu šumu od výkonu řečového signálu, je dána vztahem: 10log(Ps/Ps') a je znázorněna na následujícím obrázku:


Obr. Chyba výkonu v řečových signálech s0001.bin. (délka okna: 128)

Chyba výkonu je závislá na velikosti okna. Pro menší velikost okna klesá chyba výkonu.

okno průměrná chyba
[dB]
256 -7,2488
128 -6,1159
64 -4,4446
32 -2,6656

Lokální SNR tohoto signálu je znázorněno na následujícím obrázku:


Obr. Lokální SNR signálu s0001.bin.

Chyba výkonu a lokální SNR dalších signálů:

s2.gif (12928 bytes)chyba_s2.gif (8167 bytes)snr_s2.gif (10371 bytes)
Signál, chyba výkonu a lokální SNR signálu s0002.bin, (s0002.det)

s3.gif (12832 bytes)chyba_s3.gif (9075 bytes)snr_s3.gif (10340 bytes)
Signál, chyba výkonu a lokální SNR signálu s0003.bin, (s0003.det)

s4.gif (13181 bytes)chyba_s4.gif (8747 bytes)snr_s4.gif (10232 bytes)
Signál, chyba výkonu a lokální SNR signálu s0004.bin, (s0004.det)

Matlab:
analýza chyby s0001.bin: chyba_s1.m
analýza chyby s0002.bin: chyba_s2.m
analýza chyby s0003.bin: chyba_s3.m
analýza chyby s0004.bin: chyba_s4.m

2. Výpočet lokálního SNR

2.1. Výpočet lokálního SNR, v případě, že známe rozdělení signálu a pauz.

Na Obr. je znázorněn signál s0001.bin s detekcí signál - šum (s0001.det). Tento signál je tedy rozdělen na 4 řečové signály a na 5 pauz.


Obr. Signál s detekcí řeči.

Pro výpočet lokálního SNR je použito výpočtu průběžného odhadu energie (exponencionální zapomínání):

Px[n]=lambda*Px[n-1] + (1-lambda)*x^2[n]

Konstanta lambda byla zvolena: 0,995.

Na následujícím obrázku je znázorněna první pauza a její průběžný odhad energie. Dále pak první řečový signál a lokální SNR tohoto prvního řečového signálu. pro výpočet lokálního SNR je použito okno s délkou 256 vzorků a překryvem 50%. Hodnota šumového pozadí se bere poslední hodnota šumového signálu.


Obr. První pauza, výpočet energie šumu, vstupní řečový signál a lokální SNR.


Obr. Lokální SNR prvního řečového signálu.

Na následujících obrázcích jsou znázorněny druhé, třetí a čtvrté pauzy a signály a jejich průběžný odhad energie a lokální SNR.

s0001_2.gif (9784 bytes)s0001_2a.gif (4897 bytes)
Obr. Druhá pauza, výpočet energie šumu, druhý vstupní řečový signál a lokální SNR.

s0001_3.gif (9147 bytes)s0001_3a.gif (4556 bytes)
Obr. Třetí pauza, výpočet energie šumu, třetí vstupní řečový signál a lokální SNR.

s0001_4.gif (8371 bytes)s0001_4a.gif (5086 bytes)
Obr. Čtvrtá pauza, výpočet energie šumu, čtvrtý vstupní řečový signál a lokální SNR.

Matlab:
výpočet lokálního SNR signálu s0001.bin: snr1.m
výpočet lokálního SNR signálu s0002.bin: snr2.m
výpočet lokálního SNR signálu s0003.bin: snr3.m
výpočet lokálního SNR signálu s0004.bin: snr4.m

2.2. Výpočet lokálního SNR, v případě, že neznáme rozdělení signálu a pauz.

Tato úloha je podobná jako 2.1.,ale před výpočtem lokálního SNR se nejprve musí určit detekce řeči - signálu. Pro detekci byla použita jednoduchá metoda pomocí dávkového odhadu výkonu.

Pro signály s0001.bin, s0002.bin, s0003.bin, s0004.bin je řeč - signál detekována tehdy, je-li velikost dávkového odhadu energie s velikostí okna 256 a překryvem 50 %, větší než 0,5 %. Detekovaná řeč se dále rozšíří o 4 vzorky vpřed a 3 vzorky za, aby se postihl nárůst energie tehdy, kdy energetická detekce stále detekuje šum.


Obr. Signál s energetickou detekcí řečí.

Pro výpočet lokálního SNR je použito, jako v předešlém případě, průběžný odhadu energie (exponencionální zapomínání) s koeficientem lambda = 0,995. Délka okna je opět 256 vzorků s překryvem 50 %.


Obr. První pauza, výpočet energie šumu, vstupní řečový signál a lokální SNR s energetickou detekcí řeči.


Obr. Lokální SNR prvního řečového signálu (energetická detekce).

 


Obr. Srovnání lokálního SNR prvního řečového signálu s0001.bin s energetickou detekcí signálu a detekcí signálu podle s0001.det.

Odchylka průměrné hodnoty lokálního SNR podle energetické detekce je v tomto případě 2,33 %.

s1_e1.gif (9434 bytes)s1_esnr2.gif (4954 bytes)
Obr. Druhá pauza, výpočet energie šumu, druhý vstupní řečový signál a lokální SNR.

s1_e3.gif (8721 bytes)s1_esnr3.gif (4796 bytes)
Obr. Třetí pauza, výpočet energie šumu, třetí vstupní řečový signál a lokální SNR.

s1_e4.gif (7300 bytes)s1_esnr4.gif (4435 bytes)
Obr. Čtvrtá pauza, výpočet energie šumu, čtvrtý vstupní řečový signál a lokální SNR.

Odchylky průměrných hodnot lokálního SNR s0001

signál s0001.bin průměrná hodnota lokálního SNR [dB] odchylka

%

podle s0001.det podle energetické detekce
1.(dva) 45,3956 44,3381 2,33
2.(osm) 43,7039 39,9286 8,64
3.(jedna) 48,9565 45,9936 6,05
4.(šest) 31,2639 31,5002 0,76

 

Odchylky průměrných hodnot lokálního SNR s0002

signál s0002.bin průměrná hodnota lokálního SNR [dB] odchylka

%

podle s0002.det podle energetické detekce
1.(nula) 50,5197 48,9229 3,16
2.(sedm) 42,6501 43,3709 1,69
3.(pět) 37,0369 42,4747 14,68
4.(dva) 42,1560 43,6557 3,56
5.(čtyři) 36,0848 36,9262 2,33

 

Odchylky průměrných hodnot lokálního SNR s0003

signál s0003.bin průměrná hodnota lokálního SNR [dB] odchylka

%

podle s0003.det podle energetické detekce
1.(tři) 41,5281 37,3856 9,98
2.(pět) 37,6578 42,8341 13,75
3.(sedm) 43,8341 43,0625 1,76
4.(osm) 40,5421 33,1875(15)+37,6669(31)
36,2062
10,69
5.(dva) 44,1451 44,1659 0,05

Pozn.: V tomto signálu byl řečový signál číslo OSM detekován jako dva řečové signály kvůli neznělé souhlásce S.

 

Odchylky průměrných hodnot lokálního SNR s0004

signál s0004.bin průměrná hodnota lokálního SNR [dB] odchylka

%

podle s0004.det podle energetické detekce
1.(čtyři) 42,4847 41,8297 1,54
2.(tři) 41,3632 32,9074 20,44
3.(nula) 49,6587 46,9521 5,45
4.(nula) 46,8866 45,4259 3,12
5.(dva) 44,2767 43,0821 2,70

 Největší odchylka průměrných hodnot je 20,44 %. Je to způsobeno tím, že energetická detekce signálu není dostatečně přesná a tam, kde již podle *.det měl být signál, energetická detekce stále detekuje šum. Výkon šumu pak roste a způsobuje chybu výpočtu lokálního SNR.

Matlab:
výpočet detekce det1.m a lokálního SNR snre1.m signálu s0001.bin
výpočet detekce det2.m a lokálního SNR snre2.m signálu s0002.bin
výpočet detekce det3.m a lokálního SNR snre3.m signálu s0003.bin
výpočet detekce det4.m a lokálního SNR snre4.m signálu s0004.bin

Další funkce:
loadbin.m

Signály:
s0001.bin, s0001.det
s0002.bin, s0002.det
s0003.bin, s0003.det
s0004.bin, s0004.det