DIPLOMOVÁ PRÁCE

Transkript

DIPLOMOVÁ PRÁCE
České vysoké učení technické v Praze
Fakulta elektrotechnická
Katedra teorie obvodů
DIPLOMOVÁ PRÁCE
Potlačování akustického echa a šumu prostředí
v mobilním telefonu
Praha, 2012
Autor:
Vedoucí práce:
Bc. Jan Klapuch
Doc. Ing. Petr Pollák, CSc
Prohlášení
Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze literaturu
uvedenou v přiloženém seznamu.
Nemám závažný důvod proti užití tohoto školního díla ve smyslu § 60 Zákona č.121/2000 Sb.,
o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů
(autorský zákon).
V Praze dne 9. května 2012
Bc. Jan Klapuch
i
ii
Poděkování
Mé poděkování směřuji především svému vedoucímu práce, panu Doc. Ing. Petru Pollákovi, CSc,
za jeho podporu, cenné rady, připomínky a metodické vedení práce. Dále pak panu Jiřímu Králi,
jednateli společnosti ACROBITS s.r.o., za poskytnutí nahrávek reálných signálů pro testování.
iii
iv
Abstrakt
Tato diplomová práce se zabývá potlačením akustického echa a šumu prostředí v mobilních
telefonech. Jedná se o nežádoucí jevy v telefonní komunikaci známé již od počátku používání
klasického analogového telefonu. V dnešní době je v popředí zájmu především mobilní komunikace. Při používání konferenčních systémů, handsfree a hlasitého odposlechu telefonu je na
systémy potlačující tyto nežádoucí složky komunikace kladen velký důraz.
Byly analyzovány algoritmy ve frekvenční oblasti, jež se lišily ve výpočtu cyklické konvoluce
(OLS a OLA), která je hlavním problémem těchto algoritmů. Frekvenční algoritmy byly porovnávány s časovými a závěry se shodovaly s teoretickými předpoklady, tj. rychlostí konvergence,
dosaženou úrovní ERLE a výpočetní náročností algoritmu.
Pro účely vývoje byl sestaven koncept modelování telefonní komunikace s rušivými vlivy a konkrétní postup výpočtu. Z něho byla vytvořena databáze řečových signálů simulující telefonní
hovor v obou kanálech. Pro reálnější rysy těchto signálů byly analyzovány nahrávky z mobilních telefonů a vytvořeny modely pro simulaci echa a šumu prostředí. Databáze byla vytvořena
pomocí promluv z české verze SPEECON databáze a reálné signály byly dodány společností
Acrobits s.r.o. Vytvořené signály sloužily jako data pro analyzování algoritmů potlačování akustického echa a šumu prostředí.
V programovém systému MATLAB byly vytvořeny jednoduché aplikace využívající grafické
uživatelské rozhraní (GUI), které umožňují uživatelsky snadnou realizaci analýzy algoritmů
potlačování echa i tvorbu databáze signálů simulujících reálnou komunikaci. Tyto aplikace
představují jeden z významných přínosů této práce. Dílčí algoritmy jsou dostupné i ve formě
samostatných funkcí v systému MATLAB.
Klíčová slova:
Potlačování akustického echa, potlačování sumu prostředí, frekvenční LMS,
overlap-save, overlap-add, ERL, ERLE
v
vi
Abstract
This master thesis engages in techniques for a cancellation of acoustic echo and environmental
noise, which is typically present in mobile communications. These unpleasant effects appeared
already within analog phone communication. Nowadays, the mobile communication is at forefront of an interest. The cancellation system must be included in applications as conference
communication systems, handsfree devices or when speaker-phone mode in a mobile phone is
used.
The main part of this work was focused on frequency algorithms differing in a calculation
of circular convolution (OLS & OLA), which is the main problem of these algorithms. These
algorithms were compared with a time domain algorithm and achieved results corresponded
with theoretical assumptions, i.e. speed of convergence, achieved ERLE and computational
complexity.
For development purposes, the concept of phone communication modelling with undesirable
effects was designed. As the result of this part of the work, the database of simulated phone
call was created. Models for simulations of acoustic echo and noise environment were created
from real recordings of conversations in a mobile phone. The database of simulated signals
was created using utterances from Czech SPEECON database and real signals were supplied
from Acrobits s.r.o. company. Created signals were used for analyzing algorithms of acoustic
echo cancellation or noise background suppression.
Graphical user interface (GUI) applications allowing easy realization of above mentioned analyses and easily controlled creation of simulated signals were created in MATLAB. These
applications represent one of the important outputs of this thesis. Particular algorithms are
available also in the form of separate functions in MATLAB.
Keywords:
Acoustic echo cancellation, noise environment cancellation, frequency LMS,
overlap-save, overlap-add, ERL, ERLE
vii
viii
Obsah
Seznam symbolů
xi
Seznam zkratek
xiii
1 Úvod
1
2 Akustické echo a šum prostředí
5
2.1
Popis prostředí a vznik nežádoucích vlivů . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Modelování prostředí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3 Potlačení echa a šumu prostředí
11
3.1
Adaptivní filtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.2
Algoritmy pro adaptaci koeficientů . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.2.1
LMS algoritmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.2.2
Algoritmus ve frekvenční oblasti . . . . . . . . . . . . . . . . . . . . . . . . .
15
Metody potlačení šumu prostředí . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.3.1
Spektrální odečítání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.3.2
Wienerova filtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.3.3
Rozšířené spektrální odečítání . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Detekce společné promluvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.3
3.4
ix
4 Analyzované algoritmy a zpracování signálů
23
4.1
Zpracování reálných signálů a vytvoření akustických modelů . . . . . . . . . . . .
24
4.2
Vytvořené algoritmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.3
Blokový návrh systému . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4.4
Příprava pro implementaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
5 Implementace algoritmů
31
5.1
Vytvořené skripty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
5.2
Grafické rozhraní . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
5.3
GUI - Generování signálů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
5.4
GUI - Testování algoritmů potlačování echa a šumu . . . . . . . . . . . . . . . . .
36
6 Simulace a vyhodnocení
39
6.1
Vytvoření databáze signálů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
6.2
Provedené simulace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
6.2.1
Použitá kritéria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
Vyhodnocení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
6.3
Závěr
53
Literatura
55
Přílohy
59
x
Seznam symbolů
.̂
odhad
.∗
konvoluce
.∗
komplexně sdružené číslo
·T
vektorová transpozice
. (t)
spojitý čas
. [n]
diskrétní čas
∂·
∂·
parciální derivace
E{.}
operátor střední hodnoty
log(·)
operátor dekadického logaritmu
ε
konstanta pro potlačení dělení nulou
δw
gradient funkce w
λ
parametr zapomínání
λmax
největší vlastní číslo matice R
µ
konvergenční konstanta LMS
µc
konvergenční konstanta NLMS
ω
úhlová frekvence
Ω
úhlová frekvence DFT
σs2
rozptyl chybového signálu, parametr AR modelu
σ̂s2
σ̂n2
σ̂x2
odhad výkonu šumu
odhad výkonu signálu
odhad výkonu vstupního signálu
ξ
funkce MSE
ak
koeficienty AR modelu
d[n]
digitální signál mikrofonu
e[n]
chybový signál
fs
vzorkovací frekvence
h[n]
impulzní odezva
m
pořadové číslo, počet bloků při průměrování
n(t), n[n]
šumový signál prostředí
p
řád AR modelu
p
vektor křížové korelační funkce
s(t), s[n]
signál blízkého mluvčího
u1 [n], u2 [n]
bílý šum
xi
wi
koeficienty filtru
w0
ideální nastavení koeficientů filtru
∆w
přírůstek koeficientů filtru po iteraci
x(t), x[n]
signál vzdáleného mluvčího
x’[n]
signál samostatného echa
y[n]
výstup adaptivního filtru
z−k
komplexni proměnná Z-transformace
A(z)
přenosová funkce analyzujícího filtru v LPC
B(z)
přenosová funkce filtru pro modelování echa
E[k]
spektrum chybového signálu
F(e[n])
účelová funkce chybového signálu
F[k]
vektor aktualizačních parametrů
G, Gn
zisk analyzujícího filtru
H(z)
přenosová funkce syntetizujícího filtru v LPC
H[k]
přenosová funkce systému
J
energie chybového signálu
M
délka bloku FFT ve frekvenčním algoritmu
N
délka zpracovávaného segmentu ve vzorcích
N[k]
spektrum šumu
N[k]
průměrné spektrum šumu
P[k]
výkonové spektrum
Pn
výkon šumu
Ps
výkon signálu
Pxy (ω)
spektrální výkonová hustota
R
autokorelační matice
R[k]
koeficient autokorelační matice
S̃[k]
spektrum signálu po odstranění šumu
Txy
odhad přenosová funkce prostředí mobilního telefonu
W[k]
spektrální koeficienty filtru
X[k]
spektrum vstupního signálu
Y[k]
spektrum výstupního signálu AF, spektrum odhadu echa
xii
Seznam zkratek
A/D
Analog / Digital
analogově / digitální (převodník)
AEC
Acoustic Echo Cancellation
potlačení akustického echa
AF
Adaptive Filter
adaptivní filtr
API
Application Programming Interface
programové rozhraní aplikací
AR
Autoregressive model
autoregresní model
CPSD
Cross Power Spektral Density
vzájemná spektrální hustota
D/A
Digital / Analog
digitálně / analogový (převodník)
DFT
Discrete Fourier Transformation
Diskrétní Fourierova Transformace
DTD
Double Talk Detection
detekce společné promluvy
ERL
Echo Return Loss
míra utlumení echa akustickým prostředím
ERLE
Echo Return Loss Enhancement
míra potlačení echa
FFT
Fast Fourier Transformation
Rychlá Fourierova Transformace
FIR
Finite Impulse Response
konečná impulsní odezva
FRLS
Fast RLS
algoritmus adaptace
GUI
Graphical User Interface
uživatelské grafické rozhraní
IDFT
Inverse DFT
Inverzní DFT
IFFT
Inverse FFT
Inverzní FFT
IIR
Infinite Impulse Response
nekonečná impulsní odezva
IP
Internet Protocol
protokol síťově vrstvy
LMS
Least Mean Squares
algoritmus adaptace
LPC
Linear Predictive Coding
lineární prediktivní kódování
LTE-A
Long Term Evolution - Advanced
technologie mobilních sítí
LTI
Linear Time-Invariant
lineární, časově invariantní systém
MSE
Mean Squared Error
střední kvadratická chyba
NC
Noise Cancellation
potlačování šumu
NLMS
Normalized LMS
algoritmus adaptace
OLA
OverLap - Add
metoda sčítání přesahu
OLS
OverLap - Save
metoda uložení přesahu
OS
Operating System
operační systém
RLS
Recursive Least Squares
algoritmus adaptace
SDK
Software Development Kit
vývojové prostředí aplikací
SNR
Signal-to-Noise Ratio
úroveň odstupu signálu od šumu
VAD
Voice Activity Detection
detekce řečové aktivity
VoIP
Voice over Internet Protocol
přenos hlasu po IP sítích
WF
Wiener Filter
Wienerův filtr
xiii
xiv
1. Úvod
Dálková komunikace se v posledních 2 dekádách výrazně rozšířila díky mobilní telekomunikační
síti. Ta nabízí široké uplatnění nejen v hovorové komunikaci, ale i v multimediálním a datovém
přenosu. Vývoj neustále pokračuje a nyní je zaměřen především na chytré telefony (smartphones) a rychlé mobilní sítě (LTE, LTE-A) [1]. Mobilní zařízení je možné používat v mnoha
různých prostředích: v dopravních prostředcích, na ulicích či v přírodě, v kancelářích a dílnách,
atd. Tedy za přítomnosti odlišných šumů prostředí a prostorových uspořádání, která definují
parametry akustické ozvěny, čili akustického echa [2]. Použitím handsfree sad, konferenčních
systémů a hlasitého odposlechu telefonu se do popředí zájmu dostává potřeba potlačení akustického echa, které má velmi nepříjemný vliv na kvalitu hovoru. A proto systém na potlačení
těchto nepříjemných efektů je obvykle standardní součástí každého zařízení a je mu věnována
velká část vývoje.
Vývoj potlačování echa začíná již u velmi známého hybridního (elektrického) echa v analogových pevných telefonních sítích, které vzniká impedančním nepřizpůsobením telefonní vidlice
(hybrid). Funkcí tohoto zařízení je oddělení směrů přenosu telefonních signálů jdoucích po 2drátovém vedení přístupové síti. Potřeba oddělit směry signálu je závislá na přenosu signálu
na dlouhé vzdálenosti, při němž se používá pro nižší útlumy dvojice vedení na každý směr
přenosu, čili 4-drátové vedení pro obousměrnou komunikaci. Hybridní echo se zpočátku odstraňovalo pomocí “odrušovače” echa (echo suppressor) [3], který při přítomnosti pouhého echa
v signálu přeruší smyčku a nepřenáší ve směru od blízkého mluvčího žádný signál.
Po spuštění prvního telekomunikačního satelitu Telstar 10. července 1962 společností AT&T,
vyvinutého v AT&T Bellových laboratořích, se poprvé objevil problém několik set milisekund
zpožděného echa [3]. Takto dlouhé echo vzniká kvůli velké přenosové vzdálenosti od Země
k satelitu, od odeslaného signálu do vráceného echa je tato trasa absolvována 4x a odpovídá
jí doba zpoždění kolem 500 ms pro geostacionární satelit . Pro odstranění takto zpožděného
signálu bylo třeba použít metodu, která nebude přerušovat linku a potlačí i echo obsažené
v užitečném signálu blízkého mluvčího. Proto se vývoj začal ubírat směrem k potlačování echa
(echo cancellation) pomocí adaptivních filtrů. První na této myšlence pracoval John L. Kelly,
Jr., a dále s ním Benjamin F. Logan a Man Mohan Sondhi v Bellových laboratořích [4]. První
analogová implementace byla vytvořena v roce 1966 [5]. Do komerčního použití se dostal systém potlačení echa až v 80. letech 20. století, vyvinutý Duttweilerem a Chenem v roce 1980,
2
Kapitola 1. Úvod
realizovaný integrovaným obvodem [3]. V současné době jsou tato zařízení integrovaná v telefonních, pobočkových či VoIP ústřednách, kde dokáží eliminovat elektrické a v určité míře
i akustické echo.
Akustické echo vzniká pomocí akustické vlny směřující z reproduktoru do mikrofonu telefonního
přístroje. Nejčastěji vzniká při konferenčních hovorech, kdy je zvuk z reproduktoru zesílen, aby
jej mohlo slyšet více lidí, aniž by museli mít přístroj u ucha. Tento hlasitý signál se odráží
od okolních objektů, stěn místností a vrací se pomocí mikrofonu zpět do telekomunikačního
řetězce, kde na opačné straně u vzdáleného mluvčího způsobuje nepříjemné echo. Akustické
echo se od elektrického výrazně liší. Jeho parametry nejsou konstantní, přenosová charakteristika se s časem mění. Míra echa se může velmi lišit, zpětný signál je zkreslený, utlumený
a zašuměný okolním prostředím. Rychlost konvergence, čili doba, za kterou se filtr adaptuje
na nové podmínky vzniku echa, je mnohem pomalejší než u elektrického echa a je nutné se
důkladněji zabývat metodami adaptace koeficientů filtru, které mohou tento proces urychlit.
Nejčastěji používanou metodou je minimalizace výkonu chybové funkce pomocí LMS (Least
Mean Square) algoritmu [6] a algoritmy postavené na této základní metodě.
Další častou metodou je RLS (Recursive Least Squares), pro použití ve stereo konferenčních
systémech ji požívají ve své práci autoři článku [7]. Ve své práci ukazují, že navržený algoritmus FRLS (Fast RLS) dosahuje lepších výsledků v dolním frekvenčním pásmu než NLMS
(Normalized LMS). Další možností využití systému pro potlačení echa může být komunikace
přes hlasové rozhraní mobilního robota, kterým se zabývají autoři článku [8] a využívají k tomu
mikrofonní síť.
Algoritmy potlačující akustické echo prostředí dokáží eliminovat i šum vzdáleného mluvčího,
který se dostává zpět akustickou vazbou stejně jako řeč. Problém vzniká se šumem blízkého
mluvčího vznikajícím v jeho okolí. Ten nelze pomocí AF potlačit, jelikož algoritmus nemá potřebné informace o tomto šumu a nedokáže jej odlišit od užitečného signálu blízkého mluvčího.
Proto se pro potlačení šumu v prostředí blízkého mluvčího používají jiné metody, nejčastěji
Wienerova filtrace nebo spektrální odečítání [9].
Rozvojem IP sítí a možností připojení k Internetu pomocí mobilního telefonu se do popředí
dostává VoIP (Voice over IP), služba umožňující hlasovou komunikaci po paketových sítích,
zejména Internetu. V rámci internetu je většinou volání zdarma a propojování do ostatních
sítí je velmi levné, proto je při přístupu k Internetu tato varianta komunikace velmi zajímavá
a v současné době se rychle rozšiřuje. Ve smartphone zařízeních je tato služba implementovaná
softwarovou aplikací, která používá hardwarové prostředky telefonu pomocí API (Application
Programming Interface) a připojení k Internetu. Adaptivní filtr s určitým algoritmem pro potlačení echa lze jednoduše naprogramovat pomocí SDK (Software Development Kit) a začlenit
3
Kapitola 1. Úvod
do aplikace pro VoIP telefonování. Trh s aplikacemi pro operační systémy chytrých telefonů
je otevřený pro kohokoliv a kvůli vysokým cenám hotových řešení potlačování echa a šumu
prostředí se snaží společnosti samy vyvíjet vlastní systémy pro své VoIP služby.
Tato diplomová práce se zaměřuje na analýzu základních algoritmů pro potlačování echa ve
smartphone zařízeních a šumu prostředí převážně pomocí frekvenčních metod a jejich testování
na různých namodelovaných signálech. Významná část práce je věnována přípravě dat a vytvoření akustických modelů echa a šumu prostředí z reálných nahrávek. Pomocí těchto modelů
byla vytvořena nová databáze řečových signálů pro testování algoritmů potlačování akustického echa. Pro zde navržené systémy a případné další algoritmy vznikla aplikace grafického
simulačního prostředí, popsaná v kapitole 5, umožňující přehledné zpracování a vyhodnocení
algoritmů na připravené databázi. V závěrečné kapitole 6 jsou popsány realizované simulace
a získané výsledky.
2. Akustické echo a šum prostředí
Před popisem potlačování nežádoucích jevů v telefonu bude vhodné si nejprve popsat prostředí,
ve kterém tyto jevy vznikají. V následující kapitole je proto stručně popsáno, jak akustické echo
a šum prostředí vznikají. Konkrétním výsledkem této části je pak vytvoření modelů různých
prostředí, které byly následně použity v experimentální části.
2.1. Popis prostředí a vznik nežádoucích vlivů
Akustické echo vzniká vazbou mezi reproduktorem a mikrofonem. Vysílaný signál je zkreslen
v závislosti na pohybu prostředím. Akustickou cestu utváří mnoho faktorů, které mají vliv na
šíření zvuku, zejména faktory ovlivňující tlak vzduchu a překážky způsobující odrazy či rozptyl.
Samotné echo se neskládá jen z řeči vzdáleného mluvčího, ale také z jeho šumového pozadí.
Výsledný signál obsahuje díky tomu široké spektrum frekvencí a prostředí, utvářející akustickou
cestu, může každou frekvenci pohlcovat jiným způsobem. Tím tedy deformovat šířící se zvukový
signál. Většinou se zvuková vlna dostane do mikrofonu po více cestách, díky odrazům od blízkých
překážek, při nichž tyto několikanásobné odrazy vznikají. V impulzní odezvě, reprezentující
prostředí jako neznámý systém, jsou odrazy patrné z více maxim, viz obrázek 2.1.
0.4
amplituda (−)
0.2
0
−0.2
−0.4
−0.6
0
2
4
6
8
cas (ms)
10
12
14
Obrázek 2.1: Příklad impulzní odezvy prostředí mobilního telefonu
6
Kapitola 2. Akustické echo a šum prostředí
Deformovaný signál lze popsat několika parametry, z nichž jsou nejdůležitější zpoždění, tedy
doba, za kterou zvuková vlna překoná trasu mezi reproduktorem a mikrofonem, dále zpětný
útlum (ERL), čili pokles výkonu signálu vzdáleného mluvčího, a délka zkreslení, která je definovaná délkou impulzní odezvy. Tyto parametry se však průběžně mění podle změn v akustické cestě signálu, způsobených například při pohybu mluvčího, při změně teploty blízkých
předmětů nebo povětrnostních podmínek, které souvisí s tlakem vzduchu v okolí. Nejčastější
způsob potlačení nežádoucího echa je založen na bázi adaptivního filtru (AF), jelikož je nutné
se změnám podmínek neustále přizpůsobovat. Hlavní roli v adaptaci hraje především adaptační
algoritmus, který vyhodnocuje předchozí iterační krok a upravuje podle toho parametry filtru,
více v kapitole 3.1. Systém potlačení nežádoucích složek signálu může být obecně znázorněn
dle obrázku 2.2. Blok adaptivního filtru zde, je ve skutečnosti doplněn dalšími podpůrnými
a post-zpracujícími systémy, jako jsou například potlačení zbytkového echa, potlačení šumu,
detektory řečové aktivity atd.
x[n]
D/A
x(t)
příjem a
vysílání
signálu
Adaptivní filtr
(AF)
x'(t)
e[n]
n(t)
y[n]
d[n]
d[n]=s[n]+x'[n]+n[n]
potlačení echa
mobilní telefon
A/D
blízký
mluvčí
s (t)
n(t)
volný prostor
Obrázek 2.2: Obecné schéma vzniku nežádoucích složek v telekomunikaci
Přímá cesta mezi reproduktorem a mikrofonem je vyznačena přerušovanou zelenou šipkou
(obr. 2.2), která ovšem symbolizuje i přítomnost množství odrazů od stěn místnosti, překážek
v okolí, ale i odrazů od blízkého mluvčího atd. Výsledný signál x 0 [n] představuje nežádoucí
akustické echo. K signálu blízkého mluvčího s[n] je ještě přičten aditivní šum prostředí n[n]
a vytváří společně s x 0 [n] výstupní signál akustického prostředí blízkého mluvčího d[n]. Signál
d[n] pokračuje do korekčního (rozdílového) bloku společně s výstupem adaptivního filtru y[n]
a dává vznik nového signálu e[n], který by ideálně měl obsahovat jen signál blízkého mluvčího
s[n]. Tzv. chybový signál e[n] je veden zpět do AF a hraje hlavní roli v adaptaci parametrů
použitého AF.
7
Kapitola 2. Akustické echo a šum prostředí
Další významná nežádoucí složka v hlasové komunikaci je šum prostředí, skládající se z aditivního a konvolučního šumu [9]. Konvoluční šum vzniká konvolucí signálu s impulzní odezvou
prostředí y[n] = x[n] ∗ h[n], kterým signál prochází, v našem případě se tedy jedná o akustické
echo, a dále o šum vzniklý přenosovou cestou v telekomunikačním kanále. Aditivní šum je pouze
přičten k užitečnému signálu y[n] = x[n]+n[n], jak na straně vzdáleného, tak na straně blízkého
mluvčího, a reprezentuje šum prostředí v okolí mobilního telefonu.
Významné zdroje rušení jsou většinou ve venkovním prostředí či v dopravních prostředcích.
V knize [10] autor popisuje šum v prostředí automobilu, spektrální parametry šumu jsou zde
snadno patrné; širokopásmové spektrum s klesající tendencí k vyšším kmitočtům. Například
u stroje, jakým může být motor automobilu, je patrný vyšší výkon u kmitočtů základní frekvence
motoru a vyšších harmonických. Největší vliv na rušení v případě mobilní komunikace má vítr,
hovořící lidé v okolí a aktivní elektro-mechanické stroje.
2.2. Modelování prostředí
Modelování prostředí blízkého mluvčího je významnou úlohou ve fázi vývoje systému pro potlačování echa. Na obrázku 2.3 je blokové schéma reprezentující postup modelování akustického
echa a šumu prostředí mobilního telefonu. Tyto dvě nežádoucí složky komunikace jsou modelovány zvlášť, viz barevné ohraničení v obrázku 2.3, a přičítány k užitečnému signálu blízkého
mluvčího.
Akustická cesta signálu tvoří neznámý systém s přenosovou funkcí B(z), který může být modelován s určitou přesností analogickým lineárním systémem [10]. Obecně je tento neznámý
systém časové variantní, protože se akustická cesta při pohybu mluvčího nebo objektů kolem
něj neustále mění. Struktura filtru modelující neznámý systém je předpokládána jako FIR (Finite Impulse Response), kde je výstup počítán pomocí konvoluce impulsní odezvy h[n] a buzení
x[n] podle rovnice (2.1) [11].
d[n] =
N−1
X
hi [n]x[n − i] = hT [n]x[n]
(2.1)
i=0
Řád filtru je N, definující dimenzi vstupního vektoru x[n] a vektoru impulzní odezvy hT [n]. Obdobný vztah platí i pro modelování šumu, který je aplikován na obecný bílý šum u1 [n], u2 [n].
Parametry echa, jako jsou zpoždění a zpětný útlum ERL, jsou modelovány zpožďovacím členem,
který posouvá signál o k vzorků, čili o k ·
1
fs
sekund, kde fs je vzorkovací frekvence (8 kHz),
a multiplikativního bloku ovládaného hodnotou ERL (2.2). Hodnotu ERL není možné vypočítat
8
Kapitola 2. Akustické echo a šum prostředí
model
šumu
H1 (z)
SNR1
n1[n]
s1[n]
u1[n]
x[n]
u2[n]
echo
model B(z)
zpoždění
model
šumu
H2 (z)
z-k
SNR2
ERL
d[n]
n2[n]
x'[n]
Modelování akustického echa
s2[n]
Modelování šumu pozadí
Obrázek 2.3: Blokové schéma modelování neznámého systému
z reálných signálů přesně, jelikož signál x 0 [n] je obsažen v signálu celého prostředí vstupujícího
do mikrofonu. Dle obr. 2.3 se jedná o signál d[n] = s2 [n] + x 0 [n] + n2 [n]. Proto se ve skutečnosti
jedná o odhad ERL, vztah (2.3), kde σ̂s2 je odhad výkonu signálu blízkého mluvčího, σ̂d2 je odhad
výkonu signálu z mikrofonu a σ̂n2 je odhad výkonu šumového pozadí [12]. Odhady se většinou
provádí v pauzách řeči blízkého mluvčího a je tedy možné σ̂s2 vynechat.
ERL = 10 log
ERL = 10 log
E{x[n]2 }
E{x’[n]2 }
σ̂x2
σ̂d2 − σ̂s2 − σ̂n2
(2.2)
(2.3)
Hlavní úlohou modelování echa je odhad impulsní odezvy systému, pomocí níž je možné vytvořit FIR filtr s koeficienty odpovídajícími této odezvě. Při odhadu odezvy je možné vycházet
přímo z přenosové funkce reálného systému definované jako podíl Fourierových obrazů výstupní a vstupní posloupnosti vzorků systému. V digitálních aplikacích jsou jednotlivé obrazy
vypočteny Diskrétní Fourierovou Transformací a přenosová funkce se získá dle vztahu (2.4) [11].
9
Kapitola 2. Akustické echo a šum prostředí
Vstupní a výstupní signály systému jsou získány měřením daného prostředí mobilního telefonu.
Výsledná impulsní odezva je zpětnou transformací přenosové funkce (2.5).
N−1
X
H[k] =
Y [k]
n=0
=
N−1
X [k]
X
y[n]e−jkn N
2π
(2.4)
−jkn 2π
N
x[n]e
n=0
h[n] =
N−1
2π
1 X
H[k]e−jnk N
N
(2.5)
k=0
Jednou z možností odhadu impulsní odezvy akustické cesty je výpočet pomocí křížové spektrální hustoty (CPSD) vstupního a výstupního signálu. Výpočet se provádí Welchovou metodou
[13] dle obrázku 2.4 a odpovídajícím vztahem (2.6), kde N je délka vstupního segmentu signálu, Rxy korelační funkce. Dle [14] se jedná o známý vztah mezi korelační funkcí a spektrální
hustotou.
x[n]
Pxx[f]
CPSD
Txy[f]
/P
Pxx
Pxy[f]
CPSD
hxy[n]
IFFT
xy
y[n]
Obrázek 2.4: Blokové schéma výpočtu impulzní odezvy
Pxy (ω) =
N
X
m=−N
N
X
−jωm
Rxy e
=
E x[n + m]y[n] e−jωm
(2.6)
m=−N
Šumové pozadí je modelováno pomocí AR modelu, jenž je získán na bázi LPC analýzy [9], [15].
Parametry tohoto modelu jsou koeficienty ak a rozptyl σe2 , nejvíce rozšířenou metodou pro jejich
výpočet je autokorelační metoda [16], [17]. Výpočet koeficientů ak je založen na minimalizaci
energie chybového signálu (2.7), jenž je definován jako rozdíl skutečného a predikovaného
signálu. Podle tohoto kritéria, při němž se hledá minimum funkce dle parciálních derivací
jednotlivých koeficientů (2.8), je možné sestavit tzv. Yule-Walkerovy rovnice ve tvaru (2.9), kde
R je autokorelační koeficient dle (2.10) a p řád modelu.
10
Kapitola 2. Akustické echo a šum prostředí
N+p−1
J=
X
e [n] = R(0) +
2
p
X
ai R(i)
(2.7)
i=1
n=0
∂J
=0
∂ak
p
X
R[|i − j|]aj = −R[j]
(2.8)
pro
j = 1, 2, ..., p
(2.9)
i=1
N−k−1
1 X
R[k] =
x[n]x[n + k]
N
(2.10)
n=0
Konkrétní výpočet koeficientů již probíhá rekurzivním Levinson-Durbinovým algoritmem [16].
Výpočet AR modelu je možné provádět pomocí funkce lpc v MATLABu [18], která pracuje dle
výše zmíněné metody.
Šum je modelován z bílého šumu syntetizujícím filtrem s přenosovou funkcí (2.11), jenž reprezentuje převrácenou hodnotu přenosové funkce A(z) analyzujícího filtru s koeficienty ak
a ziskem G, který upravuje výkonovou úroveň bílého šumu na úroveň analyzujícího signálu dle
p
rozptylu chybového signálu G = σe2 .
H(z) =
G
=
A(z)
G
p
X
1+
ak z −k
(2.11)
k=1
V modelu dle obrázku 2.3 je možné úrovně šumu upravovat pomocí SNR1 , SNR2 , tyto parametry vyjadřují odstup signálu od šumu. Multiplikativní konstanta vycházející z této hodnoty
je dána vztahem (2.12), obsahující výkon signálu mluvčího Ps a výkon generovaného šumu Pn .
Z reálných měření je možné úroveň šumu blízkého mluvčího odhadnout pomocí vztahu (2.13).
s
Ps
Gn =
10
SNR = 10 log
σ̂s2
σ̂n2
SNR
10
(2.12)
Pn
= 10 log
σ̂d2 − σ̂n2
σ̂n2
(2.13)
3. Potlačení echa a šumu prostředí
Základním prvkem při potlačování echa, nebo obecně při použití adaptivního filtru, je algoritmus adaptace koeficientů filtru. Mezi základní algoritmy patří LMS (Least Mean Square nejrozšířenější algoritmus, hledající gradient účelové fce), RLS (Recursive Least Square - rekursivní výpočet pomocí odhadu autokorelační matice vstupního signálu), Kalman (minimalizace
odhadu kvadratické chyby nestacionárních signálů, filtrace na základě stavového modelu) [6].
Tyto základní algoritmy jsou modifikovány v mnoha různých variantách vedoucích ke zlepšení
odhadu koeficientů, konvergenční rychlosti a stability.
3.1. Adaptivní filtrace
V signálových aplikacích je často používaná definice LTI systémů, jenž jsou popsány úplně pomocí impulsní odezvy [11]. Tyto systémy jsou časově invariantní, mají pevnou strukturu a parametry, výstup není závislý na poloze časové osy a je lineární funkcí vstupního signálu. Naproti
tomu jsou adaptivní filtry (AF) obecně nelineární, ovšem při zmrazení parametrů v časovém
okamžiku je většina z nich lineárních, výstup je lineární funkcí vstupu. Nejčastěji se používají
v uspořádáních systémové identifikace, kanálové ekvalizaci, zvýraznění signálu a predikci.
Při měnících se podmínkách filtrace, kdy se v průběhu času mění parametry signálu a je proto
nutné průběžně upravovat parametry filtru, je potřeba použít adaptivní filtr. Ten se snaží přizpůsobit novým podmínkám a podle svého algoritmu upravit parametry filtru. Důvodem pro použití
adaptivního filtru při potlačování echa je právě jeho vlastnost časové variantnosti. Akustické
prostředí se kolem telefonního zařízení neustále mění, hovořící nebo jeho okolí se pohybuje
a tím mění akustickou cestu echa.
Struktury adaptivních filtrů mohou být rozděleny podle délky impulsní odezvy na FIR (Finite
Impulse Response) a na IIR (Infinite Impulse Response). FIR je tvořen nerekurzivní formou,
a proto není třeba řešit problém stability, tyto filtry jsou stabilní vždy. IIR je naopak tvořen
rekurzivní formou a může být nestabilní. Nejčastěji používaným základem AF je FIR filtr [6];
následující algoritmy se váží k této struktuře. Na obrázku 3.1 je jednoduché schéma zařazení
adaptivního filtru v úloze potlačování echa. AF se snaží modelovat neznámý systém a z rozdílu
svého odhadu e[n] aktualizovat parametry pro přesnější odhad.
12
Kapitola 3. Potlačení echa a šumu prostředí
x[n]
e[n]
adaptace
z-1
z-1
w1
w2
…
…w
Neznámý
systém
?
z-1
k
FIR
n[n]
x´[n]
y[n]
d[n]
s[n]
Obrázek 3.1: Použití adaptivního filtru v systémové identifikaci.
Adaptivní filtrace se provádí podle vztahu (3.1), kde x[n] = [x[n], x[n − 1], ..., x[n − N]]T je vektor
vstupního signálu a w = [w0 [n], w1 [n], ..., wN [n]]T je vektor vah (koeficientů) filtru. Důležitým
krokem v adaptivní filtraci je adaptace koeficientů filtru (3.2) dle chybového signálu e[n], reprezentující rozdíl mezi potřebným signálem x 0 [n] a signálem vytvořeným adaptivním filtrem
y[n].
y[n] =
N
X
wi [n]x[n − i] = wT [n]x[n]
(3.1)
i=0
w[n + 1] = w[n] + ∆w
(3.2)
3.2. Algoritmy pro adaptaci koeficientů
Algoritmy lze rozdělit podle oblasti, ve které pracují, na časové a frekvenční. Do nynější doby
se používaly zejména algoritmy v časové oblasti z důvodu jejich jednoduchého principu a minimálního zpoždění signálu při zpracování. Naproti tomu ve frekvenční oblasti je potřeba mnohem
méně výpočetních operací zatěžujících systém, a tudíž je zde prostor pro další systémové úlohy.
13
Kapitola 3. Potlačení echa a šumu prostředí
Adaptivní algoritmus se skládá ze 3 základních prvků:
• definice minimalizačního algoritmu
• definice formy účelové (objektivní) funkce F (e[n])
• definice chybového signálu e[n]
Minimalizační algoritmus je hlavní část algoritmu, která určuje adaptaci koeficientů podle minimalizace účelové funkce, jenž definuj tvar chybového signálu.
Nejrozšířenější algoritmy pro hledání minima jsou Newtonova metoda (hledání minima pomocí
aproximace derivací druhého řádu účelové funkce (Hessian matice)), Quasi-Newtonovy metody
(zjednodušení předchozích metod pomocí rekurzivního odhadu Hessian matice), metody strmého sestupu (Steepest-descent method, hledání minima pomocí záporného gradientu účelové
funkce) [6].
3.2.1. LMS algoritmus
LMS (Least Mean Square) je algoritmus pro adaptaci koeficientů adaptivního filtru. Jedná se
o metodu strmého sestupu, která při hledání minima účelové funkce používá odhad gradientu
této funkce. Filtrace se provádí odečtením výstupu filtru y[n] od hledaného signálu d[n], kde
y[n] = wT [n]x[n] je lineární kombinace vstupního signálu s koeficienty adaptivního filtru (3.3).
Pro jednodušší představu a výpočty jsou vektory signálů obecně sloupcové, vstupní signál
x[n] = [x[n], x[n − 1], ..., x[n − N]]T , vektor koeficientů filtru w = [w0 [n], w1 [n], ..., wN [n]]T , kde N
je řád filtru definující počet uchovávaných minulých vzorků signálu x[n] [6], [19].
e[n] = d[n] − y[n] = d[n] − wT [n]x[n]
(3.3)
Aktualizace parametrů w[n + 1] by měla vést k minimalizaci kvadratické aproximace účelové
funkce F {e[n]} a pro tento typ algoritmů je definována dle vztahu (3.4).
w[n + 1] = w[n] − µδ w {F (e[n])}
(3.4)
Jako účelovou funkci využívá MSE (Mean-Square Error) (3.5). Velmi často se popisuje takzvaná “mean square error surface”, tedy plocha této funkce. Pro 2 koeficienty tvoří konvexní
paraboloid, jehož dno je hledané minimum.
14
Kapitola 3. Potlačení echa a šumu prostředí
MSE = F [e[n]] = E[|e[n]|2 ] = ξ
(3.5)
Odhad minima je zatížen chybou ∆w[n] = w[n] − w0 , tvořící rozdíl mezi ideálním nastavením
koeficientů, Wienerovo řešení w0 , a vypočtených koeficientů v daném iteračním kroku w[n].
Účelovou funkci ξ lze vyjádřit substitucí dle vztahu (3.6) do upraveného tvaru dle vztahu (3.7).
Pro pevné koeficienty w[n] lze střední kvadratickou chybu ve stacionárním prostředí vyjádřit
pomocí vztahu (3.8), kde R = E[x[n]xT [n]] je autokorelační matice vstupního signálu a p =
E[d[n]x[n]] je vektor korelační funkce vstupního signálu a signálu požadovaného [6].
e2 [n] = [d[n] − y[n]]2 = [d[n] − wT [n]x[n]]
(3.6)
ξ = E[d2 [n]] − 2E[d[n]wT [n]x[n]] + E[wT [n]x[n]w[n]xT [n]]
(3.7)
ξ = E[d2 [n]] − 2wT p + wT wR
(3.8)
Gradient δw se rovná parciální derivaci MSE funkce podle koeficientů w, postupným derivováním vztahu (3.8) dostaneme výsledné vyjádření gradientu (3.9).
δ w [n] =
∂ξ
= −2p + 2Rw
∂w
(3.9)
V minimu funkce ξ je gradient nulový, můžeme tedy vztah (3.9) položit rovný nule a vyjádřit
ideální nastavení koeficientů w0 , čemuž říkáme Wienerovo řešení (3.10).
w0 = R−1 p
(3.10)
Pro případ adaptivní filtrace nestacionárního prostředí, pro které neznáme přesné hodnoty R
a p, musíme uvažovat jejich odhady R̂ = E[x[n]xT [n]] a p̂ = E[d[n]x[n]], které můžeme dosadit
do rovnice (3.9) a získat tím odhad gradientu (3.11).
δˆw [n] = −2e[n]x[n]
(3.11)
Výsledný vztah (3.12) vyjadřuje aktualizaci koeficientů dle LMS algoritmu. Pro inicializaci algoritmu se počáteční hodnoty koeficientů nastavují nulové.
15
Kapitola 3. Potlačení echa a šumu prostředí
w[n + 1] = w[n] + 2µe[n]x[n]
(3.12)
Nezávislým prvkem výpočtu je tzv. konvergenční konstanta µ, která ovlivňuje rychlost konvergence, tedy dobu nebo počet iteračních kroků potřebných k nalezení minima funkce ξ,
a s tím související nalezení optimálních koeficientů w[n]. Dolní omezení pro tuto konstantu
plyne z faktu, že pro nulovou hodnotu je zastavena aktualizace koeficientů, horní omezení
(3.13), kde λmax je největší vlastní číslo korelační matice R a je odvozeno například v [6], vychází ze střední hodnoty optimální chyby aktualizace koeficientů.
0<µ<
1
λmax
(3.13)
NLMS
Pro urychlení konvergence základního LMS algoritmu byl vytvořen algoritmus NLMS (Normalized LMS - normalizovaný LMS), který používá variabilní konvergenční konstantu každé
iterace, vypočtenou pomocí výkonu vstupního signálu. Tím jsou koeficienty nastavovány rychleji při vyšších hodnotách výkonu, tedy rychleji při řeči než při pauzách. Adaptace je poté dána
vztahem (3.14), kde µc je nová konvergenční konstanta pro úpravy adaptace a ε je velmi malá
konstanta pro případné potlačení chyby dělení nulou [6].
w[n + 1] = w[n] +
µc
e[n]x[n]
ε + xT [n]x[n]
(3.14)
3.2.2. Algoritmus ve frekvenční oblasti
LMS ve frekvenční oblasti je obdobný jako v časové s tím rozdílem, že pracuje najednou se
segmentem dat místo jednotlivě po vzorcích signálu. Blokové schéma algoritmu je na obrázku 3.2. Transformace do frekvenční oblasti je prováděna pomocí DFT [11], X[k] = DF T {x[n]},
E[k] = DF T {e[n]} . Nejprve definujeme rozměry veličin, vstupním vektorem je zde X[k] =
{X1 [k], X2 [k], ..., XN [k]}T a vektorem vah (koeficientů) W[k] = {W1 [k], W2 [k], ...., WN [k]}, index k
značí pořadové číslo zpracovávaného segmentu o délce N vzorků. Odhad echa x 0 [n], jenž je
výstupem filtru y[n] a ve spektrální reprezentaci Y[k], se provádí konvolucí vstupního signálu
a koeficientů filtru. Konvoluce ve spektrální oblasti reprezentuje operaci násobení (3.15).
Y[k] = X[k]W[k]
(3.15)
16
Kapitola 3. Potlačení echa a šumu prostředí
x[n]
λ
ε
Segmentace
ܺ
Výpočet
výkonu
1
௞ e[n]
‫ܧ‬
ܺ ∗
FFT
Conj.
ܺ
ܹ
ܹ
FFT
μ
ܻ
z-1
IFFT
Filtrace
Aktualizace koeficientů
y[n]
Obrázek 3.2: Blokové schéma frekvenčního LMS algoritmu
Aktualizace koeficientů vychází pro rychlejší konvergenci přímo z NLMS a lze ji vyjádřit vztahem
(3.16), kde výkonové spektrum P[k] je vypočteno pomocí vztahu (3.17), λ je parametr zapomínání z rozsahu <0;1>, X∗ [k] je komplexně sdružený vektor spektra vstupního signálu a E[k] je
spektrum chybového signálu předchozího iteračního kroku [20], [21].
W[k + 1] = W[k] +
µE[k]X∗ [k]
P[k] + ε
P[k] = λP[k − 1] + (1 − λ)|X[k]X∗ [k]|
(3.16)
(3.17)
Odečtení odhadu od skutečného echa se provádí v časové oblasti a chybový signál je tudíž také
generován v časové oblasti, proto je výstup filtru Y[k] převeden zpětnou transformací (3.18) na
y[n]. Jelikož se jedná o blokové zpracování, tak jsou veličiny e[n], d[n] a y[n] vektory o délce
zpracovávaného segmentu.
e[n] = d[n] − y[n] = d[n] − IDFT {Y[k]}
(3.18)
17
Kapitola 3. Potlačení echa a šumu prostředí
Subband LMS
Frekvenční algoritmus je možné rozdělit na více pásem a vytvořit analyzující a syntetizující
banky filtrů. Výsledkem je nezávislá adaptace pro definovaná frekvenční pásma a lepší vlastnosti celkového algoritmu. Nevýhodou je větší složitost systému, ale v porovnání s LMS v časové
oblasti se i přesto jedná o menší výpočetní náročnost algoritmu. Více o této metodě a návrhu
banky filtrů je možné nalézt například v [6].
Cyklická konvoluce
Hlavní problém v adaptivním filtru je provádění konvoluce, nejčastěji se používá výpočet pomocí
FFT (3.19). Vlivem segmentace signálu pro blokové zpracování ve frekvenční oblasti zde vzniká
cyklická konvoluce. Správný výpočet cyklické konvoluce se provádí metodou sčítání přesahů
(OLA - Overlap Add) nebo metodou uložení přesahů (OLS - Overlap Save) [11].
y[n] = IFFT {FFT {x[n]} · FFT {h[n]}}
(3.19)
Cyklická konvoluce je definována pro periodické posloupnosti s periodou N. Rovnice (3.20)
vyjadřuje tuto operaci, od lineární konvoluce se liší horní mezí sumace, která je určena dle
periody posloupností.
y[n] =
N
0 −1
X
x[n]h[n − k]
(3.20)
k=0
Pro správný výpočet je tedy nutné vždy daný segment signálu doplnit nulami tak, aby se
vypočetla lineární konvoluce segmentů a vzájemně se opakovaně neovlivňovaly prvky segmentu.
Pro metodu OLA se vstupní segment a impulsní odezva doplní nulami na délku N+M−1 (součet
délky segmentu a délky impulzní odezvy filtru minus 1). Přesah M −1 předchozí iterace je třeba
uložit a přičíst k výsledku další operace, aby byl zajištěn korektní výsledek. Tento přesah
je přičítán ke vzorkům na stejné pozici. Výsledný signál poté odpovídá lineární konvoluci.
U metody OLS jsou nuly doplněny jen za impulsní odezvu a před segment vstupního signálu
se doplní předcházející vzorky. Po výpočtu daného segmentu je správný výsledek obsažen
v segmentu, který odpovídá pozici nové části vstupního segmentu. Aplikace těchto postupů je
více přehledná v kapitole 4.2.
18
Kapitola 3. Potlačení echa a šumu prostředí
3.3. Metody potlačení šumu prostředí
Aditivní šumové pozadí se většinou potlačuje ve frekvenční oblasti spektrálním odečítáním nebo
metodou Wienerovy filtrace [10].
3.3.1. Spektrální odečítání
Vychází z vlastností Fourierovy transformace, která je lineární, a proto podle zašuměného
signálu x[n] = s[n] + n[n] platí vztah obrazu X [k] = S[k] + N[k]. Odhad spektra šumu N[k] ze
signálu x[n] je základním prvkem této metody, na kterém závisí účinnost potlačení šumu a míra
zkreslení užitečného signálu. Provádí se pomocí detektoru řečové aktivity pouze v pauzách
mezi řečí a průměrováním Welchovou metodou (3.21), kde |Ni | značí amplitudové spektrum
šumu i-tého segmentu.
|N[k]| =
1
m
X
m
|Ni [k]|
(3.21)
i=1
Odečtení amplitudového spektra šumu se provádí s ohledem na typ metody, který se liší podle
nahrazení záporných hodnot spektrálních složek, jež vznikají, pokud některé spektrální složky
šumu mají hodnotu vyšší než příslušné spektrální složky celého signálu. Existují 3 typy: jednocestné - v případě záporného výsledku je složka nulována (3.22), dvoucestné - uvažují se
absolutní hodnoty po odečtení (3.23), a maskování širokopásmovým šumem, kdy je záporná
složka nahrazena uměle generovaným šumem se spektrem |B[k]| (3.24), kde c je konstanta
upravující výkonovou úroveň šumu [17].
|S̃[k]| =


|X [k]| − |N[k]|



pro
|X [k]| ≤ |N[k]|,
(3.22)




0
pro
|X [k]| > |N[k]|
|S̃[k]| = ||X [k]| − |N[k]||
|S̃[k]| =


|X [k]| − |N[k]|



pro
(3.23)
|X [k]| > |N[k]|,
(3.24)




c · |B[k]|
pro
|X [k]| ≤ |N[k]|
19
Kapitola 3. Potlačení echa a šumu prostředí
xi[n]
FFT
|Xi[k]|
ϕx[k]
pauza
|Xi[k]|
+
VAD
1
𝑚
𝑚
|𝑋𝑖 𝑘 |
𝑗=1
|𝑁i[k]|
-
|𝑆i[k]|
IFFT
𝑠i[n]
Obrázek 3.3: Blokové schéma spektrálního odečítání
3.3.2. Wienerova filtrace
Další častou metodou je Wienerova filtrace. Obdobně jako u spektrálního odečítání se vychází
z nekorelovaného aditivního šumu v signálu, který lze vyjádřit jako součet výkonových spekter
užitečného a šumového signálu (3.25). Potlačení šumu probíhá v tzv. Wienerově filtru (WF)
s přenosovou funkcí H[k] (3.26) a výsledný signál je dán vztahem (3.27).
|X [k]|2 = |S[k]|2 + |N[k]|2
(3.25)
|Xi [k]|2 − |N i [k]|2
|Xi [k]|2
(3.26)
|Si [k]|2 = |Hi [k]|2 · |X i [k]|2
(3.27)
|Hi [k]|2 =
20
Kapitola 3. Potlačení echa a šumu prostředí
3.3.3. Rozšířené spektrální odečítání
Rozšířené spektrální odečítání je spojením dvou předchozích metod [22]. Wienerův filtr odhaduje výkonové spektrum šumu, které je odečítáno od výkonového spektra zašuměného signálu.
Výhodou je, že není potřeba využít detektor řeči a že aktualizace probíhá i v řečových segmentech. Přenosová funkce je tvořena odhadem řečového signálu ze spektrálního odečítání
a vyhlazeným odhadem šumu z průměrování šumu (3.28).
|Hi [k]|2 =
|Ni−1 [k]|2
(3.28)
|Si−1 [k]|2 + |Ni−1 [k]|2
xi[n]
FFT
|Xi[k]|2
|𝑆i-1[k]|2
z-1
W.F.
|𝐻 i[k]|2 |𝑁i-1[k]|2
ϕx[k]
Spektrální
odečítání
|𝑁i[k]|2
Průměrování
šumu
|Xi[k]|2
+
|𝑁𝑖 𝑘 |2
-
|𝑆i[k]|2
IFFT
𝑠i[n]
Obrázek 3.4: Blokové schéma rozšířeného spektrálního odečítání
21
Kapitola 3. Potlačení echa a šumu prostředí
3.4. Detekce společné promluvy
Při situaci, kdy je v mikrofonním signále obsažen řečový signál blízkého mluvčího i echo vzdáleného mluvčího, je v hodné adaptaci AF vypnout. Tento signál může koeficienty výrazně ovlivnit
a způsobit divergenci algoritmu. Detektor společné promluvy (DTD) je důležitý prvek v systémech potlačování echa. Problematika DTD není součástí této diplomové práce, avšak je zde
použita ideální detekce z přesného označení řečové aktivity v použitých signálech pro testování. Pro více informací o jedné z metod DTD je možné odkázat na následující články [23] a [24],
kde autoři používají k detekci koherenční detektory. Koherence udává míru vzájemné korelovanosti mezi dvěma signály ve frekvenční oblasti. Pro šum je koherenční funkce výrazně nižší
než pro řeč a tudíž je možné ji velmi dobře využít pro detekci řeči. Volbou vyššího frekvenčního
pásma pro výpočet je možné zvýšit účinnost detektoru, jelikož šum prostředí více maskuje dolní
frekvenční pásmo.
4. Analyzované algoritmy a zpracování
signálů
Pro vyhodnocování algoritmů je nutné mít k dispozici databázi signálů reprezentující mobilní
komunikaci. Nahrávání reálných signálů zahrnující různé varianty hovorů je časově i technicky
náročné, proto se většinou při testování algoritmů pracuje s uměle nasimulovanými daty. Často
se jedná o ideální případy, které neobsahují šum pozadí a další reálné zkreslení, díky čemuž
jsou výsledky testování velmi dobré, ale spjaté s těmito ideálními podmínkami. Pro reálnější
případy hovorů byly analyzovány reálné signály, ze kterých byly vytvořeny modely pro simulaci
většího počtu nových signálů.
Hlavním zdrojem pro databázi se simulacemi akustického echa a šumu prostředí byla česká
verze SPEECON databáze [25], z níž byly použity nahrávky promluv sloužících jako řečové
signály telefonních hovorů. Nahrávek bylo celkem 240, pro každého z vybraných 8 mluvčí bylo
k dispozici 30 promluv. Mužské a ženské nahrávky byly doplněny ručním označením řečové
aktivity, která je klíčová pro testování a která může sloužit jako ideální DTD a VAD detekce
pro řízení algoritmů. Ke každé promluvě byly vytvořeny soubory “*.ndet” s vyznačením začátku
či konce řečové aktivity, respektive pauzy. Pro použití v algoritmech je vhodné mít tuto detekci
ve formě posloupnosti 0 a 1 vztaženou k jednotlivým vzorkům signálu. K tomuto účelu byly
vytvořeny funkce v MATLABu i2ndet.m a n2idet.m, provádějící potřebnou operaci. Pro automatické spojování promluv do delších hovorů simulujících rozhovor 2 osob byla v MATLABu
vytvořena aplikace, popsaná v kapitole 5, v níž je možné spojovat různý počet vět od jednoho
mluvčího s různou délkou mezer mezi promluvami. Společně s těmito promluvami jsou spojovány
i soubory obsahující informace o řečové aktivitě. Základní šum v pauzách mezi promluvami je
generován pomocí AR modelu z analýzy šumu na konci předcházející a na začátku následující
promluvy. Tyto dva šumy jsou překryty, aby rozdíly šumů nebyly posluchačem slyšitelné. Díky
tomu je možné vytvářet pauzy libovolné délky.
24
Kapitola 4. Analyzované algoritmy a zpracování signálů
4.1. Zpracování reálných signálů a vytvoření akustických modelů
Pro doplnění promluv vyšší hladinou šumu a zejména akustickým echem byly analyzovány
reálné nahrávky od společnosti Acrobits s.r.o. [26]. V několika verzích nahrávek se zpracovávaly
záznamy z kanceláře s různým šumem okolí, byly tvořeny jak syntetickým, tak přirozeným
hlasem, nebo obsahovaly i hudební nahrávky.
Metoda získávání modelu z reálných dat je popsána v kapitole 2.2, kde byl pro výpočet DFT
použit algoritmus rychlé Fourierovy transformace (FFT) [11]. Pro získání impulsní odezvy akustického systému vytvářející echo byly použity segmenty a jejich překryv v závislosti na délce
použitého úseku signálu tak, aby výsledná odezva co nejlépe modelovala zkoumané prostředí.
Analýzou reálných signálů byly vypočteny impulsní odezvy různých variant nahrávání a bylo
vytvořeno několik modelů reprezentovaných impulsními odezvami.
Zpracovávané úseky pro výpočty se pohybovaly od 1 do 3 sekund a výsledné impulsní odezvy
byly řešeny o délce 1024 vzorků, přičemž jejich hlavní část byla vyselektována pomocí Hannova
okna [11], viz obrázek 4.1. Reálné zpoždění se pohybovalo kolem 50 ms, které ovšem bylo následně eliminováno pomocí kruhového posunu vzorků tak, aby bylo zpoždění minimální a mohlo
se dále v simulacích konkrétně nastavovat na potřebnou délku, opět pomocí kruhového posunu
vzorků (v MATLABu funkce circshift). Reálné echo bylo potlačeno prostředím přibližně o 8 12 dB, dle vztahu (2.3). Bez nastavení nového zpoždění je vygenerovaný signál echa zpožděn
implicitně o přibližně 5 ms, z důvodu přirozeného náběhu impulsní odezvy.
Šumové prostředí reálných signálů bylo analyzováno pomocí LPC a následně vytvořený AR
model poskytoval parametry pro umělé generování různých šumů potřebné délky. AR model
p
obsahoval p = 12 koeficientů ak a zisk G = σe2 , kde σe2 je rozptyl chyby predikce z analýzy.
Analýzou bylo vytvořeno několik modelů pro generování šumu potřebné délky. Reálný šum měl
SNR v rozsahu 10 - 15 dB, podle nastavení hlasitého odposlechu u mikrofonu, výpočet byl
proveden pomocí vztahu (2.13). Na obrázku 4.2 je příklad spektrogramu namodelovaného šumu.
25
Kapitola 4. Analyzované algoritmy a zpracování signálů
← posun
amplituda (−)
0.1
Impulsni odezva
Hannovo okno
0.05
0
−0.05
−0.1
0
0.02
0.04
0.06
cas (s)
0.08
amplituda (−)
0.1
0.1
0.12
Nova impulsni odezva
0.05
0
−0.05
−0.1
0
0.02
0.04
0.06
cas (s)
0.08
0.1
0.12
Obrázek 4.1: Aplikace Hannova okna na odhad impulsní odezvy
Obrázek 4.2: Spektrogram namodelovaného šumu (model č. 2)
26
Kapitola 4. Analyzované algoritmy a zpracování signálů
4.2. Vytvořené algoritmy
Algoritmy vytvořené v MATLABu provádějí kromě adaptace koeficientů filtru i samotnou filtraci,
výstupem jsou tedy koeficienty pro příští iteraci w[n + 1] a výstupní signál e[n], vstupem jsou
koeficienty w[n] a signály x[n] a d[n]. Algoritmus v časové oblasti byl vytvořen pro porovnávání
s frekvenční oblastí. Adaptační algoritmus je možné volit mezi LMS a NLMS. Ve frekvenční
oblasti byly analyzovány 2 algoritmy, lišící se v použité metodě řešení cyklické konvoluce:
přičtení přesahu a uložení přesahu (OLA, OLS). U obou metod je nutné si pamatovat předchozí
blok signálu, u overlap-save metody je tento blok uložen v časové oblasti a u overlap-add
v oblasti frekvenční.
Overlap Save
V metodě uložení přesahu je algoritmus vytvořen tak, aby pracoval vždy se 2 segmenty signálu (aktuální a předchozí). U těchto segmentů provede lineární konvoluci a použije výsledek
odpovídající délce druhého segmentu, v dalším kroku je načten segment použitý v minulém
kroku a segment nový. Na obrázku 4.3 je rozkreslený postup algoritmu a filtrace ve stejném
uspořádání jako předchozí bloková schémata.
x[n]
𝜇 . 𝑋 ∗𝑘
𝐹𝑘 =
𝑃𝑘 + 𝜀
ε
μ
λ
Xk-1 Xk
𝑋
Výpočet pro
aktualizaci
𝐸𝑘
𝐹𝑘
𝐻𝑘
FFT
∗
𝑘
Segmentace
FFT
Conj.
𝑋𝑘
𝑋𝑘
𝑊𝑘+1
IFFT
h[n]
𝑊𝑘
FFT
Nulování 2. segmentu
h
h
z-1
0
IFFT
e[n]
Vložení
segmentu
Adaptivní filtr
0
e
y
Odstranění 1.
segmentu
y[n]
d[n]
Obrázek 4.3: Blokové schéma frekvenčního algoritmu OLS
27
Kapitola 4. Analyzované algoritmy a zpracování signálů
Overlap Add
Metoda přičítání přesahu je založena na přičtení přesahu předchozího segmentu po provedení
konvoluce. Ve frekvenční oblasti je vhodné počítat se dvěma segmenty a jako výsledek použít
segment, který odpovídá lineární konvoluci a není k němu potřeba přičítat přesah. Druhý
segment se nepoužije. V předchozí metodě se nový segment přidával k předchozímu a byla
k tomu potřeba paměť pro časovou oblast. Někdy je ovšem vhodné předchozí segment uložit
v oblasti frekvenční, protože může být použit i v dalších blocích zpracování, jako je například
potlačování šumu. Proto se při úvodní transformaci do frekvenční oblasti tento výsledek uloží
a při následující operaci využije. Pro správné použití je nutné provést časové posunutí o jeden
segment. Tato operace odpovídá ve spektrální doméně násobení vektorem J dle vztahu (4.1), kde
k je číslo spektrální čáry, N je délka segmentu, M je délka spektra FFT, která odpovídá délce
2 segmentů a np je počet vzorků potřebného posunu (np = N). Další výhodou této metody je
méně výpočetních operací, jelikož je vstupní blok tvořen z poloviny nulovým segmentem a při
výpočtu FFT se provede méně operací.
J = e−jΩnp = e−j M kN = e−j 2N kN = (−1)k
2π
2π
, k = 1, 2, ..., N
(4.1)
x[n]
𝜇 . 𝑋 ∗𝑘
𝐹𝑘 =
𝑃𝑘 + 𝜀
Xk
ε
μ
λ
𝑋∗𝑘
Výpočet pro
aktualizaci
𝐸𝑘
𝐹𝑘
𝐻𝑘
FFT
Segmentace
0
FFT
Conj.
z-1
𝑋𝑘
𝑋𝑘
𝑊𝑘+1
IFFT
h[n]
𝑊𝑘
𝐽
FFT
Nulování 2. segmentu
h
h
z-1
0
IFFT
e[n]
Vložení
segmentu
Adaptivní filtr
e
0
y
Odstranění 2.
segmentu
y[n]
d[n]
Obrázek 4.4: Blokové schéma frekvenčního algoritmu OLA
28
Kapitola 4. Analyzované algoritmy a zpracování signálů
4.3. Blokový návrh systému
Jak již bylo řečeno dříve, adaptivní algoritmus hraje klíčovou roli v potlačování echa, pro správnou funkci je ale nutné přiřadit další systémy pro ovládání. Nejdůležitější z nich je detektor
společné promluvy (DTD), jenž rozhoduje o tom, kdy je potřeba vypnout aktualizaci koeficientů
filtru, aby nedošlo k nesprávnému nastavení a aby následná adaptace mohla proběhnout rychleji. Výsledkem této práce je navržený systém, obr. 4.5, pro potlačování akustického echa a šumu
prostředí, včetně vytvořené databáze pro testování a aplikace pro vyhodnocování algoritmů pro
potlačení echa, šumu a detekci DTD, viz kapitola 5.
Navržený systém se skládá z DTD, VAD, potlačení akustického echa (AEC) a potlačení šumu
(NC). Blok VAD je detektor řeči pro vzdáleného mluvčího, pomocí něhož je adaptivní algoritmus
vypínán v době, kdy vzdálený mluvčí nemluví. Dle [27] je vhodné umístit blok potlačení šumu
za odečítání echa (d[n] − y[n]), jelikož operace potlačování šumu je v tomto případě nelineární
a snižovala by účinnost AF, který je lineární.
x[n]
x[n]
detf[n]
VAD
Adaptivní
algoritmus
detdtd[n]
DTD
w[n]
Adaptivní filtr
(AF)
e[n]
Potlačení
šumu
y[n]
Navržený systém
Obrázek 4.5: Blokové schéma navrženého systému
d[n]
29
Kapitola 4. Analyzované algoritmy a zpracování signálů
4.4. Příprava pro implementaci
Algoritmy vytvořené pro potlačování echa a šumu prostředí by měly být implementovány do
chytrých mobilních telefonů. V těchto přístrojích však existuje několik operačních systémů,
pro které se musí dané algoritmy naprogramovat. Těmi jsou například Android, iPhone OS,
Symbian, Windows Mobile atd. Pro každý z těchto operačních systémů je nutné vytvořit aplikaci
pro telefonování samostatně, v daném programovacím jazyku, a implementovat do ní navržené
algoritmy.
MATLAB umožňuje vyvíjení algoritmů ve vlastním programovacím jazyce, který je mnohem
úspornější než běžné jazyky JAVA či C/C++. Například není třeba deklarovat proměnné, specifikovat jejich datový typ či alokovat paměť. To vše je ale nutné zpětně doplnit při programování
algoritmu do aplikace pro mobilní telefony. MATLAB využívá vlastní knihovny s již vytvořenými
funkcemi. Obsah těchto funkcí není přímo součástí vytvořeného algoritmu, proto je potřeba tyto
funkce vytvořit pro vlastní algoritmy dodatečně.
Zde navržené systémy (algoritmy) může programátor podle zdrojového kódu z MATLABU s přehlednými komentáři a blokovým schématem implementovat do aplikace pro mobilní telefony
podle jeho specializace. Algoritmy jsou upraveny pro zpracování v reálném čase, pracuje se
segmenty dat, které je možné definovat při volání těchto algoritmů v podobě procedury či
funkce.
5. Implementace algoritmů
Pro generování signálů a testování algoritmů bylo vytvořeno grafické uživatelské rozhraní (GUI
- Graphical User Interface) v programovém systému MATLAB. V tomto prostředí byly postupně
vytvořeny všechny skripty a algoritmy. Tyto funkce (moduly) lze použít samostatně, avšak byly
zakomponovány do GUI aplikace pro interaktivní práci a lepší vyhodnocování.
Vytvořená aplikace je rozdělena na dvě hlavní části, v první je možné vytvářet signály pro
testování. Signály tvoří dvojice kanálů, každý v jednotlivém souboru ’*.CS0’, a k nim odpovídající
detekce řečové aktivity, ’*.ndet’ soubory. Jeden kanál obsahuje signál vzdáleného mluvčího
a druhý kanál obsahuje signály blízkého mluvčího s echem a bez echa1 . Druhá část aplikace je
věnována potlačování akustického echa, potlačování šumu prostředí a vyhodnocování použitých
algoritmů.
5.1. Vytvořené skripty
Vytvořené skripty či funkce umožňují spojování jednotlivých promluv do delších signálů, přidávání definované úrovně šumu a echa podle uložených modelů. Dále sestavené algoritmy
umožňují potlačení echa a šumu s různým nastavením parametrů výpočtu, s nebo bez využití
detekce řeči a s definováním délky zpracovávaného segmentu.
Všechny tyto skripty jsou implementovány do vytvořené aplikace skládající se primárně ze dvou
částí: generování signálů a potlačování nežádoucích vlivů. Druhá část je komplexnější, lze z ní
otevřít i generování signálů a vytvořit signály podle aktuální potřeby bez ukládání do souboru.
Výsledek je přímo načten zpět a je možné s ním rovnou pracovat. Přehledné, ale zjednodušené
blokové schéma je na obrázku 5.1.
Seznam všech vytvořených skriptů či funkcí lze nalézt v příloze této diplomové práce. Algoritmy
pro potlačování lze snadno používat v MATLABu v různých situacích, ostatní funkce či skripty
jsou více specifické a pro použití v jiných řešeních by bylo potřeba je pro danou situaci upravit.
Programový kód algoritmů pro potlačování nežádoucích jevů je opět v příloze.
1
Pro možné porovnávání signálu bez echa a signálu s potlačeným echem
32
Kapitola 5. Implementace algoritmů
spojování
generování
gen_signals.m
Pauza na začátku a
mezi větami
Generování
šumu
přidání
šumu
přidání
echa
Databáze
mluvčích
Modely
šumu
potlačování
DTD
Modely
echa
cancel_signals.m
AEC
Algoritmy
NC
Vygenerované
signály
Signály
po
potlačení
Výsledky
testování
Obrázek 5.1: Zjednodušené blokové schéma aplikace
5.2. Grafické rozhraní
Vytvořené skripty či funkce v MATLABu lze používat i pomocí grafického rozhraní. Jedná se
o vizualizaci koncové aplikace, která je uživatelsky přívětivá a jednodušší pro ovládání. Uživatel
se nemusí seznamovat s kódem a hledat, kde a jak se dané parametry mění. Výsledky práce
jsou přehledně zobrazeny v jednom okně, ve kterém uživatel pracuje po celou dobu2 . Jeden
z návodů lze nalézt v publikaci Graphics and GUIs with MATLAB [28]. Tvorba začíná v průvodci
grafického rozhraní GUIDE, kde je nejprve nutné navrhnout design a rozmístění objektů jednoduchým umisťováním (tlačítka, zaškrtávací boxy, textové pole), viz obrázek 5.2. Objektům je
možné nastavit množství parametrů, které lze samozřejmě měnit i pomocí příkazů ve vytvářené
aplikaci, tedy je přizpůsobovat při spuštěné aplikaci. Průvodce při uložení současně vygeneruje “*.m” soubor, do kterého jsou automaticky vloženy základní inicializační funkce a funkce
odkazující na jednotlivé funkční prvky v GUI.
Například v následujícím kódu je nastaveno, jaká operace se provede při vybrání řádku z roz2
Kromě situací, při nichž daná aplikace otevírá jiné aplikace či je rozdělena do několika GUI prostředí
33
Kapitola 5. Implementace algoritmů
Obrázek 5.2: Návrhové prostředí GUIDE grafického rozhraní MATLABu
balovacího menu dle obrázku 5.3. Do globální proměnné (a) se vloží textový řetězec definující
číslo mluvčího. Číslo je obsaženo v názvu souboru, který se následně načte, proto je třeba do
proměnné vložit i předřazené nuly v čísle. Nejjednodušší je načíst text řádku (c, d) rozbalovacího
menu, který uživatel vybere, podle pořadového čísla řádku (b).
% SPEAKER FAR
function menu_speaker_f_Callback(hObject, eventdata, handles)
(a) global speaker_f;
(b) val=get(hObject,’Value’);
(c) string_list=get(hObject,’String’);
Obrázek 5.3: Roz-
(d) speaker_f = string_list{val};
balovací menu pro
výběr mluvčího
5.3. GUI - Generování signálů
Aplikace pro generování delších promluv byla vytvořena, aby sloužila k rychlejšímu vytváření
databáze určené k testování algoritmů, zejména pro potlačování echa a šumu prostředí, avšak
lze ji využít i pro jiné oblasti zpracování řeči. Grafické rozhraní je možné vidět na obrázku 5.4
a seznam hlavních grafických prvků s popisem obsahuje tabulka 5.1.
Levá horní část okna je složena ze 3 sekcí pro zadávání parametrů tvorby signálů. V první se
vybírají mluvčí, počet promluv, délky pauz atd. V druhé je možné přidávat šum k blízkému či
vzdálenému mluvčímu výběrem modelu šumu a úrovně SNR. Poslední část je určena k mode-
34
Kapitola 5. Implementace algoritmů
lování echa, opět je zde možný výběr typu modelu, úrovně ERL a délky zpoždění. Pravá část
přehledně zobrazuje vytvořené signály v čase nebo frekvenci a toto zobrazení je možné uložit
do grafického formátu souboru. Ve spodní části vlevo lze signály uložit na disk či si je přehrát
pro subjektivní kontrolu.
Nástroj je možné spouštět přímo v MATLABu nebo volat jako funkci z jiného MATLAB skriptu
či funkce, přičemž vytvořené signály jsou jako výstup vráceny po stisku tlačítka “Transfer”.
Tabulka 5.1: Přehled tlačítek aplikace pro generování signálů
Název tlačítka
Popis
END
Ukončí aplikaci
PLAY
Spustí přehrávání signálu dle výběru
SAVE
Uloží vybrané signály do souborů
SAVE
Uloží grafy
STOP
Vypne aktuální zvukové přehrávání
TRANSFER
Přenese vytvořené data do GUI - potlačování nežádoucích složek
UPDATE
Vytvoří signály dle zadaných parametrů
Obrázek 5.4: Grafické rozhraní aplikace pro generování signálů
35
Kapitola 5. Implementace algoritmů
36
Kapitola 5. Implementace algoritmů
5.4. GUI - Testování algoritmů potlačování echa a šumu
Pro analyzování algoritmů potlačování echa a šumu byla vytvořena další aplikace, která umožňuje výběr aktuálně použitého algoritmu, jeho parametry a délku zpracovávaného segmentu.
Při testování je možné modifikovat systém zapojením či odpojením bloku s detektory a bloku
s potlačením šumu. Aplikace se skládá z těchto základních částí:
DTD
Tento blok obsahuje detektor společné promluvy (DTD) a detektor řeči (VAD). Při detekci pauzy v kanále vzdáleného mluvčího nebo detekci společné promluvy je aktualizace parametrů filtru zmrazena pro rychlejší konvergenci při následující aktualizaci.
Při vypnutém DTD je aktualizace neustále aktivní.
AEC
Blok potlačení echa. Základní část aplikace, ve které je vybírán algoritmus potlačování a jeho parametry.
NC
Blok potlačení šumu nabízí možnosti nastavení parametrů rozšířeného spektrálního
odečítání, jimiž jsou délka segmentu a délka překryvu segmentů. Při vypnutém NC
je potlačování šumu prostředí vypnuto.
Vstupní signály, které jsou potřeba pro správnou funkci aplikace, jsou vzdálený mluvčí, blízký
mluvčí včetně echa a šumu prostředí a případně blízký mluvčí bez akustického echa pro vyhodnocování. Signály lze vytvořit přímo tlačítkem “Creation of signals”, které otevře předchozí
aplikaci pro generování signálů, nebo vložením signálů uložených v počítači. Ty lze vkládat buď
po jedné trojici signálů “Put signals” nebo hromadně při použití hromadného zpracování “Bulk
Signals Processing”. Zároveň se signály se vkládají i soubory s ideální detekcí pro správnou
funkci algoritmů. Po vložení signálů se zobrazí dané průběhy v pravé části aplikace a je možné
začít zadávat parametry pro zpracování.
Výsledný signál s potlačeným akustickým echem a případně šumem prostředí je možné analyzovat stiskem tlačítka “Analyze”. Tím se otevře nové interaktivní okno, obrázek 5.6, a provedou
se výpočty ERLE. Po výpočtech se zobrazí 2 grafy, horní s vypočteným průběhem ERLE přes
celý signál a druhý s průběhem ERLE jen v místech výpočtu průměrné hodnoty, tedy s výjimkou míst promluvy blízkého mluvčího a pauz vzdáleného mluvčího. Napravo od grafů je tabulka
s vypočtenými hodnotami ERLE: průměr, maximální hodnota, medián, rozptyl, směrodatná odchylka a variační koeficient. Pro zobrazení histogramu či grafu ve vlastním okně slouží tlačítka
“Histogram” respektive “Figure”.
V grafické části je možné analyzované signály zobrazit v časové i frekvenční doméně, včetně
zobrazení detekce řeči. Pro subjektivní vyhodnocení je zde opět možné signály přehrávat.
Obrázek 5.5: Grafické rozhraní aplikace pro potlačování nežádoucích vlivů, testování algoritmů
37
Kapitola 5. Implementace algoritmů
38
Kapitola 5. Implementace algoritmů
Tabulka 5.2: Přehled tlačítek aplikace pro potlačování nežádoucích složek signálů
Název tlačítka
Popis
Analyze
Otevře grafické okno s vypočtenými parametry výsledného signálu
End
Ukončí aplikaci
Gen. signals
Otevře GUI - Generování signálů
Figure
Zobrazení grafu ve vlastním okně
Histogram
Zobrazení histogramu vypočtených hodnot ERLE
Insert signals
Možnost vložení více signálů najednou
Play
Spustí přehrávání vybraného signálů
Put signals
Možnost vložení signálů jednotlivě
Start
Spustí hromadné zpracování
Start All
Spustí individuální zpracování
Stop
Vypne přehrávání aktuálního signálu
Obrázek 5.6: Vyhodnocení potlačení nežádoucích jevů
6. Simulace a vyhodnocení
Studované algoritmy ve frekvenční oblasti byly analyzovány na simulovaných datech, která reprezentovala reálné situace při komunikaci s mobilním telefonem. Byly provedeny experimenty
porovnávající algoritmy ve frekvenční oblasti s algoritmy v časové oblasti, vliv délky zpoždění
a úrovně obsaženého šumu v jednotlivých kanálech. Vyhodnocovanými parametry byly úrovně
potlačení akustického echa a šumu prostředí, výpočetní náročnosti, doby konvergence algoritmů.
6.1. Vytvoření databáze signálů
Výsledná databáze signálů byla vytvořena z promluv databáze SPEECON a z modelů vytvořených dle reálných nahrávek mobilních hovorů, viz kapitola 4. Promluvy byly spojovány do
delších signálů a doplněny šumem. Šum byl generován filtrací bílého šumu dle parametrů zvoleného AR modelu a násobením konstantou Gn dle (2.12), která upravuje výkonovou úroveň
dle zvoleného SNR. Dále bylo akustické echo, generované filtrací signálu vzdáleného mluvčího
dle zvoleného modelu echa, přičteno k signálu blízkého mluvčího. Pro vytvoření databáze byly
tímto způsobem vygenerovány 4 kategorie včetně podkategorií (skupin) s množstvím signálů.
V následujících odstavcích a tabulkách jsou popsány parametry jednotlivých kategorií.
Hlavní rys kategorie I je, že se signál echa se signálem blízkého mluvčího nepřekrývají. V následující tabulkách je blízký mluvčí značen písmenem N (Near) a vzdálený mluvčí písmenem
F (Far) s počtem promluv1 . V této variantě není systém potlačování závislý na účinnosti DTD,
jelikož tu žádná společná promluva není. Kategorie se dělí na podkategorie označené skupinou
1-9, popis parametrů jednotlivých skupin je v tabulce 6.1. Kategorie I obsahuje v každé skupině
42 signálů.
Kategorie II již obsahuje náhodné překryvy mluvčích, reprezentující, jak si mohou volající tzv.
“skákat do řeči”. Popis 4 podkategorií, skupina 1-4, je v tabulce 6.2. Kategorie II obsahuje
v každé skupině 42 signálů.
1
např. F10 značí 10 promluv u vzdáleného mluvčího
40
Kapitola 6. Simulace a vyhodnocení
Tabulka 6.1: Parametry databáze - Kategorie I
Kategorie I, F10 - N10, bez překryvu mluvčích
Skupina
ERL (dB)
zpoždění (ms)
šum F (dB)
šum N (dB)
1
8
35
30
30
2
8
35
20
20
3
8
35
15
15
4
8
35
10
10
5
6
35
30
30
6
15
35
30
30
7
8
50
30
30
8
8
80
30
30
9
8
200
30
30
Tabulka 6.2: Parametry databáze - Kategorie II
Kategorie II, F10 - N10, s náhodným překryvem mluvčích
Skupina
ERL (dB)
zpoždění (ms)
šum F (dB)
šum N (dB)
1
8
35
30
30
2
10
35
30
30
3
15
35
30
30
4
15
35
15
15
Třetí kategorie (III) simuluje případ, kdy vzdálený mluvčí soustavně mluví a občas promluví
i blízký mluvčí. Počet vět vzdáleného mluvčího je 10 a blízkého 2-4. Parametry jsou u všech
signálů v této kategorii stejné, viz tabulka 6.3.
Poslední kategorie (IV) umožňuje testovat algoritmy pro různé úrovně šumu blízkého mluvčího
(typ a), vzdáleného mluvčího (typ b) nebo pro různé délky zpoždění (typ c). Skupiny se dělí na 2
části: u první se jedná o signály bez blízkého mluvčího v průběhu řeči vzdáleného, blízký mluvčí
se objeví až po přibližně 40 s hovoru, druhá část obsahuje signál blízkého mluvčího v průběhu
celého hovoru. Parametry jsou popsány v tabulce 6.4. Rozsah šumů je SNR = 30-0 dB a rozsah
zpoždění je 20 - 80 ms s krokem 5 ms, 90 - 150 ms s krokem 10 ms a 200 - 500 ms s krokem
50 ms.
41
Kapitola 6. Simulace a vyhodnocení
Tabulka 6.3: Parametry databáze - Kategorie III
Kategorie III, různé počty vět, s náhodným překryvem mluvčích
Skupina
ERL (dB)
zpoždění (ms)
šum F (dB)
šum N (dB)
1
12
35
15
15
Tabulka 6.4: Parametry databáze - Kategorie IV
Kategorie IV
Skupina
ERL (dB)
zpoždění (ms)
šum F (dB)
šum N (dB)
1-a
10
35
30
30-0
1-b
10
35
30-0
30
1-c
8
20-500
30
30
2-a
10
35
30
30-0
2-b
10
35
30-0
30
2-c
8
20-500
30
30
6.2. Provedené simulace
Simulace byly prováděny s vhodně nastavenými parametry, získanými experimentálně, aby
u všech signálů testované kategorie byly výstupy přijatelné a aby adaptivní algoritmus nedivergoval. Těmito parametry byly konvergenční konstanta µ a parametr zapomínání λ, délka
segmentu závisela na zpoždění akustického echa. Tyto parametry jsou uvedeny v tabulce 6.5.
Při simulacích byl vždy zapnut DTD ve své ideální podobě pomocí detekcí vytvořených ručně
při tvorbě databáze. V následujících kapitolách jsou uvedeny získané výsledky se zhodnocením.
6.2.1. Použitá kritéria
Akustické echo je vyhodnocováno pomocí ERLE (Echo Return Loss Enhancement) [10] udávající
výkonový poměr (v dB) mezi původním signálem a signálem s potlačeným echem (6.1). Kvůli
vysoké úrovni šumu oproti úrovni echa nebylo možné získat výkon pouhého echa bez šumu.
Proto výsledné ERLE nebylo bez použití NC úměrné skutečnému potlačení, jelikož byl původní
signál porovnáván s určitou úrovní šumu, která byla vyšší než úroveň potlačeného echa. Odhad
ERLE byl proveden podle vztahu (6.2), kde VAD[n] obsahuje informaci o řečové aktivitě blízkého a vzdáleného mluvčí. Pokud blízký mluvčí mluvil a nebo vzdálený mluvčí mlčel, výpočet
neprobíhal.
42
Kapitola 6. Simulace a vyhodnocení
Tabulka 6.5: Použité parametry při simulacích
délka segmentu
OLA/OLS
LMS
NLMS
48 ms
µ = 0,03
µ = 0,025
µc = 0,4
λ = 0,95
64 ms
µ = 0,03
λ = 0,995
µ = 0,020
λ = 0,95
96 ms
µ = 0,03
λ = 0,995
µ = 0,015
λ = 0,95
220 ms
µ = 0,03
µc = 0,2
λ = 0,995
µ = 0,005
λ = 0,95
256 ms
µc = 0,3
µc = 0,01
λ = 0,995
µ = 0,03
λ = 0,95
ERLE = 10 log
ERLE = 10 log
E{x’2 [n]}
E{e2 [n]}
E{d2 [n]}
E{e2 [n]}
!
(6.1)
!
· VAD[n]
(6.2)
Průběh ERLE byl vyhlazen pomocí vztahu (6.3), kde L je délka analyzovaného signálu. Z měřených hodnot byly navíc odstraněny části, které časově odpovídaly pauze vzdáleného mluvčího
a promluvě blízkého mluvčího, jelikož v těchto částech nebylo možné potlačení vyhodnocovat.
Výsledky byly průměrovány přes celý signál, mimo již zmíněné části, a pro lepší představu
o souboru výsledků byly dále vypočteny hodnoty mediánu, maximální hodnoty a směrodatné
odchylky.
ERLEsm [n] = 0.995 · ERLE [n − 1] + ERLE [n], n = 2, 3, ...L
ERLEsm [1] = ERLE [1]
(6.3)
Další vyhodnocovaným parametrem byla doba zpracování, která je relativní vzhledem k použitému počítači a spuštěným aplikacím operačního systému. V množství testovaných signálů je
ovšem doba zpracování průměrována a chyba způsobená spuštěnými aplikacemi OS je snížena.
Samozřejmě doba zpracování nebo její hodnota vztažená k délce signálu neodpovídá výpočetní
náročnosti algoritmu v mobilním telefonu, ale může dát určitou představu, pokud je vztažena
k jinému algoritmu.
43
Kapitola 6. Simulace a vyhodnocení
40
ERLE (dB)
30
20
10
ERLE
non−det−near & det−far
0
−10
0
10
20
30
40
50
cas (s)
60
70
80
90
100
40
ERLE (dB)
30
20
10
ERLE
ERLE
0
mean
−10
0
5
10
15
cas (s)
20
25
30
Obrázek 6.1: Příklad zobrazení výsledků pomocí vytvořeného GUI v MATLABu
6.3. Vyhodnocení
Analyzované algoritmy ve frekvenční oblasti byly testovány na nové databázi a pro porovnání
byly společně v simulacích použity i základní algoritmy v časové oblasti (LMS, NLMS). Získaná
data byla analyzována a jsou popsána v této kapitole. Pro označení analyzovaných algoritmů
byl použito následující značení:
kategorie
I - IV
skupina
1-9
oblast
T - Časová oblast
F - Frekvenční oblast
algoritmus
OLA/OLS/LMS/NLMS
potlačení šumu
-/NC - bez/s potlačením šumu
44
Kapitola 6. Simulace a vyhodnocení
Naměřené hodnoty parametru ERLE neodpovídaly přesně normálnímu (Gaussovu) rozložení,
viz histogram na obrázku 6.2. Proto ve výsledných hodnotách byla průměrná hodnota ERLE
pro lepší popis doplněna mediánem, maximální hodnotou a standardní odchylkou.
4
2.5
x 10
cetnost (−)
2
1.5
1
0.5
0
−5
0
5
10
15
20
25
ERLE (dB)
30
35
40
45
Obrázek 6.2: Histogram vypočteného ERLE pro jeden signál
Sumarizaci výsledků hlavních kategorií signálů databáze odpovídá tabulka 6.6, která ukazuje
průměrné hodnoty útlumu akustického echa a šumu prostředí pro jednotlivé algoritmy se zapnutým (NC) či vypnutým (-) potlačováním šumu prostředí. Jak je z naměřených dat patrné,
analyzované frekvenční algoritmy vykazovaly obdobné výsledky, což se předpokládalo, jelikož
se lišily ve výpočtu konvoluce a ne ve způsobu aktualizace koeficientů. Frekvenční algoritmy
dosahovaly mnohem lepších výsledků než algoritmy v časové oblasti. Dle tabulky 6.6 jsou
útlumy (ERLE) pro OLS nebo OLA o přibližně 4 dB vyšší než pro časový algoritmus LMS,
v průměrných hodnotách celé databáze. Při potlačování šumu pomocí rozšířeného spektrálního odečítání jsou rozdíly ještě výraznější. Ukázku naměřených hodnot jednotlivých signálů
ze skupiny 2 kategorie II je možné nalézt v příloze, stejně tak výsledné tabulky všech skupin.
Na obrázku 6.3 jsou zobrazeny spektrogramy signálů z mikrofonu blízkého mluvčího před (nahoře) a po (dole) potlačení akustického echa a šumu prostředí. Použit byl algoritmus ve frekvenční oblasti s metodou výpočtu cyklické konvoluce OLA. Na horním obrázku je echo patrné
mezi promluvami blízkého mluvčího, který má ve spektrogramu výraznější formantové frekvence.
Dle dolního obrázku je echo potlačeno během první promluvy na minimum a v dalších částech
se již téměř nevyskytuje.
45
Kapitola 6. Simulace a vyhodnocení
Tabulka 6.6: Průměr získaných dat (ERLE) kategorií I-III pro všechny testované algoritmy.
Algoritmus
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
F-OLA
11,73
12,09
25,45
4,62
F-OLS
11,65
12,04
25,43
4,70
T-LMS
7,85
7,82
21,75
3,92
T-NLMS
10,35
10,49
25,99
4,78
F-OLA-NC
26,17
27,02
43,10
6,81
F-OLS-NC
26,11
26,98
43,08
6,90
T-LMS-NC
17,72
17,75
36,86
6,39
T-NLMS-NC
22,13
22,71
42,01
7,41
Obrázek 6.3: Spektrogram signálu z mikrofonu d[n] (nahoře) a spektrogram signálu s potlačenými nežádoucími složkami e[n] (dole)
46
Kapitola 6. Simulace a vyhodnocení
Pro malý rozdíl v potlačení akustického echa mezi frekvenčními algoritmy s metodami OLA
a OLS jsou v tabulkách 6.7 a 6.8 pro přehlednost uvedeny výsledky jen pro algoritmus metodou
OLA. Tabulka 6.7 ukazuje hodnoty ERLE bez potlačování šumu a tabulka 6.8 s potlačením šumu.
Pro skupiny 1-4 první kategorie je klesající tendence výsledků, ovšem pro tyto skupiny platí
narůstající šum v obou kanálech. Šum velice ovlivňuje výslednou hodnotu odhadu ERLE, jelikož
je obsažen v signále s echem. Při potlačení šumového prostředí jsou výsledné hodnoty více
odpovídající popisovanému algoritmu. Algoritmus s metodou OLA dosáhl nejvyšší míry potlačení
ve skupině 5 první kategorie a to hodnotou 51,88 dB. Bez potlačení šumu tato hodnota dosahuje
34,42 dB. Ze skupin 7-9 je patrné, že i doba zpoždění má vliv na výslednou míru potlačení, při
změně o 30 ms poklesne ERLE o 0,15 dB a při dalším zpoždění o 120 ms klesne o 1,08 dB.
Tabulka 6.7: Přehled naměřených výsledků frekvenčního algoritmu OLA
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
S.odchylka(dB)
I-1_F-OLA
17.12
17.79
32.41
5.81
I-2_F-OLA
10.60
10.65
24.51
4.14
I-3_F-OLA
7.27
7.17
19.70
3.19
I-4_F-OLA
4.43
4.34
14.19
2.45
I-5_F-OLA
18.82
19.64
34.42
6.11
I-6_F-OLA
11.24
11.46
25.85
4.81
I-7_F-OLA
16.93
17.63
32.51
5.95
I-8_F-OLA
16.88
17.64
32.93
6.08
I-9_F-OLA
15.80
16.68
32.83
6.67
II-1_F-OLA
15.22
15.86
30.49
5.56
II-2_F-OLA
13.76
14.28
28.49
5.25
II-3_F-OLA
10.13
10.37
23.95
4.50
II-4_F-OLA
2.81
2.67
11.59
1.91
III_F-OLA
3.31
3.12
12.46
2.24
Doba konvergence byla u frekvenčních algoritmů velmi krátká a pohybovala se kolem 5 - 7 s.
Pro LMS algoritmus byla doba konvergence i 30 s a více, upravený algoritmus NLMS měl lepší
výsledky, díky normování pomocí výkonu vstupní veličiny se doba konvergence snížila až na
10 s.
Výpočetní náročnost byla vyhodnocena jako poměrová veličina v závislosti na délce signálů.
Tedy hodnota 0,38 %, která platí pro algoritmus s metodou OLA, znamená, že průměrný výpočet
trval 0,38 % z celkové délky signálu. Hodnota je ovšem velmi spjatá s výpočetním hardwarem
počítače, na kterém byly simulace prováděny. Je tedy samozřejmé porovnávat tyto hodnoty mezi
47
Kapitola 6. Simulace a vyhodnocení
Tabulka 6.8: Přehled naměřených výsledků frekvenčního algoritmu OLA s potlačením šumu
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
S.odchylka(dB)
I-1_F-OLA-NC
31.35
32.56
50.02
7.93
I-2_F-OLA-NC
25.32
25.87
41.76
6.16
I-3_F-OLA-NC
22.20
22.62
37.35
5.28
I-4_F-OLA-NC
19.62
20.04
32.94
4.68
I-5_F-OLA-NC
32.97
34.33
51.88
8.32
I-6_F-OLA-NC
25.80
26.37
43.40
6.55
I-7_F-OLA-NC
31.01
32.19
49.96
8.12
I-8_F-OLA-NC
31.19
32.46
50.48
8.38
I-9_F-OLA-NC
29.62
30.87
50.30
9.24
II-1_F-OLA-NC
28.77
29.98
47.83
8.03
II-2_F-OLA-NC
27.46
28.52
45.82
7.60
II-3_F-OLA-NC
24.25
24.87
40.89
6.56
II-4_F-OLA-NC
18.23
18.59
30.20
4.05
III_F-OLA-NC
18.71
19.11
30.68
4.51
sebou, nikoliv však samostatně jako absolutní hodnotu. Dle následující tabulky 6.9 je patrné,
že algoritmus OLA je výpočetně méně náročný, což odpovídá výpočtu FFT, kde se u vstupního
signálu počítá z poloviční délky než u OLS. Výpočetní náročnost algoritmů v časové oblasti
je pro LMS 5-10krát vyšší a pro NLMS 10-20krát vyšší oproti frekvenčním algoritmům. Tento
rozdíl odpovídá množství výpočtů pro každý vzorek signálu, zatímco ve frekvenční oblasti se
výpočty provádějí po celých segmentech dat. Algoritmus NLMS je ještě výpočetně složitější
díky normalizaci pomocí výpočtu výkonu vstupních vzorků.
Pro správnou funkčnost algoritmů je nutná správně nastavená délka segmentu. Pokud je echo
zpozděné o více vzorků než kterým odpovídá zpracovávaný segment, tak se algoritmus nedokáže
adaptovat na takto zpožděné echo a výsledné potlačení je nulové. Obrázek 6.4 reprezentuje
vliv použité délky segmentu na míru potlačení echa (ERLE) pro různá zpoždění.
48
Kapitola 6. Simulace a vyhodnocení
Tabulka 6.9: Střední doba trvání výpočtů algoritmu v závislosti na délce signálů
OLA
OLS
LMS
NLMS
Skupina
%
Skupina
%
Skupina
%
Skupina
%
I-1
0,39
I-1
0,73
I-1
4,29
I-1
8,58
I-2
0,40
I-2
0,74
I-2
4,49
I-2
8,95
I-3
0,39
I-3
0,72
I-3
4,37
I-3
8,76
I-4
0,39
I-4
0,72
I-4
4,40
I-4
8,79
I-5
0,40
I-5
0,73
I-5
4,41
I-5
8,81
I-6
0,39
I-6
0,73
I-6
4,42
I-6
9,74
I-7
0,40
I-7
0,74
I-7
4,67
I-7
9,31
I-8
0,33
I-8
0,61
I-8
5,03
I-8
10,09
I-9
0,29
I-9
0,54
I-9
7,08
I-9
14,38
Průměr
0,38
0,70
4,80
9,71
16
14
12
ERLE (dB)
10
32 ms
64 ms
128 ms
256 ms
8
6
4
2
0
−2
0
50
100
zpozdeni (ms)
150
200
Obrázek 6.4: Průběhy ERLE pro různě dlouhé zpracovávané segmenty algoritmu OLA v závislosti na době zpoždění echa
Pro prezentaci vlivu zpoždění byly algoritmy testovány na IV. kategorii vytvořené databáze.
Stejně tak i pro simulaci vlivu šumu v jednotlivých kanálech na samostatný algoritmus potlačování echa. Průběhy na obrázcích 6.5 a 6.6 ukazují, že při zvyšujícím se šumu (klesajícím
SNR) v signále blízkého mluvčího míra potlačení klesá. Důvodem je opět vysoký šum, jehož
výkonová úroveň je vyšší než úroveň samotného echa. Opačný výsledek má zvyšování šumu
v kanále vzdáleného mluvčího. Šum přicházející zpětnou vazbou z reproduktoru do mikrofonu
je potlačován adaptivním filtrem stejně jako řečový signál. Proto při zvyšujícím se šumu míra
potlačení roste, viz obrázky 6.7 a 6.8.
49
Kapitola 6. Simulace a vyhodnocení
14
12
10
ERLE (dB)
8
6
4
2
OLA
OLS
LMS
NLMS
0
−2
0
5
10
15
20
SNR v kanále blízkého mluvèího (dB)
25
30
Obrázek 6.5: Závislost ERLE na SNR v kanále blízkého mluvčího, bez bloku potlačení šumu
35
ERLE (dB)
30
25
20
15
10
OLA
OLS
LMS
NLMS
0
5
10
15
20
SNR v kanále blízkého mluvèího (dB)
25
30
Obrázek 6.6: Závislost ERLE na SNR v kanále blízkého mluvčího, s blokem potlačení šumu
50
Kapitola 6. Simulace a vyhodnocení
28
26
24
ERLE (dB)
22
20
18
16
OLA
OLS
LMS
NLMS
14
12
0
5
10
15
20
SNR v kanále vzdáleného mluvèího (dB)
25
30
Obrázek 6.7: Závislost ERLE na SNR v kanále vzdáleného mluvčího, bez bloku potlačení šumu
42
40
38
ERLE (dB)
36
34
32
30
28
26
OLA
OLS
LMS
NLMS
24
22
0
5
10
15
20
SNR v kanále vzdáleného mluvèího (dB)
25
30
Obrázek 6.8: Závislost ERLE na SNR v kanále vzdáleného mluvčího, s blokem potlačení šumu
51
Kapitola 6. Simulace a vyhodnocení
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
S.odchylka(dB)
I-5_F-OLA
18.82
19.64
34.42
6.11
I-5_F-OLS
18.74
19.59
34.38
6.21
I-5_T-LMS
11.69
11.81
27.81
5.29
I-5_T-NLMS
17.09
17.55
34.57
5.86
I-5_F-OLA-NC
32.97
34.33
51.88
8.32
I-5_F-OLS-NC
32.92
34.30
51.85
8.38
I-5_T-LMS-NC
19.37
19.25
41.95
7.90
I-5_T-NLMS-NC
28.68
29.71
50.92
8.71
Tabulka 6.10: Hodnoty ERLE v kategorii I a skupině 5
Nejlepší výsledky dosahovaly algoritmy v Kategori I - skupina 5, viz tabulka 6.10. Z popisu této
skupiny je patrná nejvyšší úroveň akustického echa a nejnižší šum prostředí. Na následujících
obrázcích 6.9 a 6.10 jsou průběhy ERLE pro jednotlivé algoritmy bez a s potlačením šumu.
Frekvenční algoritmy pro případ bez potlačení šumu dosahovaly míry potlačení více než 18
dB a při potlačení šumu byla výsledná úroveň o téměř 33dB (maximální hodnota téměř 52dB)
nižší.
Rychlost i úroveň potlačení závisí na konvergenčních konstantách daných algoritmů. Použité
hodnoty byly nalezeny jako nejvhodnější pro celou databázi signálů. Pokud by se konvergenční konstanta nastavovala zvlášť pro jednotlivé signály, dosahovaly naměřené výsledky
vyšších hodnot. Proto by bylo vhodné dále navrhnout a analyzovat možné varianty algoritmů
s variabilní konvergenční konstantou.
52
Kapitola 6. Simulace a vyhodnocení
30
25
ERLE (dB)
20
15
10
5
OLA
OLS
LMS
NLMS
0
−5
0
5
10
15
cas (s)
20
25
30
Obrázek 6.9: Vyhlazený průběh ERLE pro signál z Kategorie I a skupiny 5 bez potlačení šumu
45
40
35
ERLE (dB)
30
25
20
15
10
OLA
OLS
LMS
NLMS
5
0
0
5
10
15
cas (s)
20
25
30
Obrázek 6.10: Vyhlazený průběh ERLE pro signál z Kategorie I a skupiny 5 s potlačením šumu
Závěr
Hlavním cílem diplomové práce bylo analyzovat systémy potlačující akustické echo a šum prostředí ve frekvenční doméně, pro které je charakteristická nízká výpočetní náročnost. Algoritmy
pro potlačení akustického echa se lišily v použité metodě výpočtu konvoluce, overlap-add (OLA)
a overlap-save (OLS). Na základě analýz byla navržena struktura systému obsahující detektory
řečové aktivity, adaptivní filtr potlačující akustické echo a šum vzdáleného prostředí a rozšířené
spektrální odečítání pro potlačení šumu blízkého mluvčího a částečně i potlačení residuálního
echa.
Algoritmy byly testovány na vytvořené databázi řečových signálů simulující telefonní komunikaci v obou kanálech. Frekvenční algoritmy dosáhly míry potlačení vyšší o přibližně 4 dB oproti
LMS a o 1 dB oproti NLMS algoritmu, při potlačení šumu byla hodnota ERLE o téměř 9 dB
(LMS) a o 4 dB (NLMS) vyšší pro průměrné hodnoty analyzovaných signálů celé databáze.
Nejlepších výsledků dosahoval frekvenční algoritmus s metodou cyklické konvoluce OLA se
střední hodnotou ERLE 32,97 dB, maximální hodnotou 51,88 dB a směrodatnou odchylkou
8,32 dB. Tyto hodnoty byly naměřeny pro skupinu 5 kategorie I vytvořené databáze. Odpovídající hodnoty dané skupiny a kategorie pro algoritmus s OLS jsou: střední hodnota 32,92 dB,
maximální hodnota 51,85 dB a směrodatná odchylka 8,38 dB.
Výpočetní náročnost frekvenčních algoritmů byla 5 - 10krát nižší než u LMS a 10 - 20krát
nižší než u algoritmu NLMS v oblasti časové. V porovnání frekvenčních algoritmů mezi sebou
dosahoval menší výpočetní náročnosti algoritmus s metodou OLA. Doba konvergence analyzovaných signálů se pohybovala kolem 5 - 7 s pro frekvenční algoritmy, kolem 10 s pro NLMS a
30 s pro LMS algoritmus v oblasti časové.
Dostupnost většího množství reálných nahrávek je problematická, a proto byla vytvořena databáze simulovaných signálů. Pro reálnější podobu těchto signálů byly použity vytvořené modely
akustického echa a šumu pozadí. Modelování bylo realizováno pomocí analýzy množství reálných nahrávek, ze kterých bylo vytvořeno 5 akustických modelů echa a 10 modelů šumu
prostředí. Databáze obsahuje 4 hlavní kategorie obsahující několik podskupin, celkové množství nasimulovaných variant signálů dosahuje počtu přibližně 1080.
Požadavky na implementaci výsledných algoritmů jsou takové, aby systém mohl pracovat v
reálném čase s rozumnou zátěží procesoru telefonu, tedy co nejnižší výpočetní náročnost algoritmů. Implementace se provádí v podobě naprogramované aplikace v jazyce odpovídajícím
operačnímu systému telefonu (IOS - Objective-C, Android - JAVA atd.). Algoritmy jsou sestaveny
z jednoduchých matematických operací s výjimkou algoritmu FFT, který je snadno realizovatelný nebo může být již implementován jako knihovna v telefonu.
Konkrétní výsledky je možné shrnout v následujících bodech:
• souhrn výsledků porovnávající analyzované algoritmy,
• vytvoření nových programových nástrojů v systému MATLAB,
• propojení vytvořených nástrojů do GUI MATLABu,
• analýza reálných signálů a vytvoření modelů akustického echa a šumu prostředí pro účely
simulací telefonních hovorů,
• vytvoření nové databáze simulovaných telefonních hovorů v mobilní síti obsahující různou
úroveň echa a šumu prostředí.
Výzkumné aktivity v této oblasti budou dále pokračovat a v dalších etapách bude řešení zaměřeno především na návrh vhodného DTD detektoru pro potlačování echa pracujícího v reálném
čase a na návrh řešení automatického nastavení délky segmentu v LMS algoritmech pracujících
ve frekvenční oblasti.
Literatura
[1] JAHAN, Pierre a Denis DEGIOANNI. 3GPP - Setting the Standard for Mobile Broadband: Long Term Evolution [online]. 2012 [cit. 2012-04-15]. Dostupné z:
http://www.3gpp.org/article/lte
[2] ITU-T, G.168. Digital network echo cancellers. [online]. 03/2009. Dostupné z:
http://www.itu.int/rec/T-REC-G.168-200903-I
[3] SONDHI, Man Mohan. The history of echo cancellation. IEEE Signal Processing Magazine.
2006, roč. 23, č. 5, s. 95-102. ISSN 1053-5888. DOI: 10.1109/MSP.2006.1708416. Dostupné
z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1708416
[4] SONDHI,
loop
tent].
Man
adaptive
USA.
M.
echo
3
499
BELL
TELEPHONE
canceller
999.
using
Uděleno
LABORATORIES.
generalized
10.
březen
filter
1970.
Closed
networks
Dostupné
[paz:
http://www.google.cz/patents/US3499999?printsec=description&dq=an+adaptive+echo+
canceler,+M.M.Sondhi#v=onepage&q&f=false
[5] SONDHI, Man M. a A.J. PRESTI. A Self-Adaptive Echo Canceller. Bell Syst. Tech. J. 1966,
roč. 45, č. 12, s. 1851-1854. Dostupné z: http://lucent.com/bstj/vol45-1966/articles/bstj4510-1851.pdf
[6] DINIZ, Paulo Sergio Ramirez. Adaptive filtering: algorithms and practical implementation.
3rd ed. New York: Springer, 2008, 625 s. ISBN 978-0-387-31274-3.
[7] ENEROTH, P., S.L. GAY, T. GANSLER a J. BENESTY. A real-time implementation of
a stereophonic acoustic echo canceler. IEEE Transactions on Speech and Audio Processing. roč. 9, č. 5, s. 513-523. ISSN 10636676. DOI: 10.1109/89.928916. Dostupné z:
http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=928916
[8] BEH, J., T. LEE, I. LEE, H. KIM, S. AHN a H. KO. Combining acoustic echo cancellation
and adaptive beamforming for achieving robust speech interface in mobile robot. IEEE/RSJ
55
56
Literatura
International Conference on Intelligent Robots and Systems, September 22-26, 2008, Acropolis Convention Center, Nice, France. s. 1693-1698. DOI: 10.1109/IROS.2008.4650897.
[9] UHLÍŘ, J. et al. Technologie hlasových komunikací. ed. 1. Prague: CTU, 2007, 276 p. ISBN
978-80-01-03888-8
[10] HANSLER, E., SCHMIDT, G. Acoustic echo and noise control: a practical approach. Hoboken: John Wiley, 2004, 444 s. ISBN 04-714-5346-3
[11] OPPENHEIM, A.V.,SCHAFER, R.W., BUCK, J.R. Discrete-Time Signal Processing. ed. 2.
New Jersey: Prentice hall, 1999.
[12] VONDRÁŠEK, M.,POLLÁK, P. Methods for Speech SNR estimation: Evaluation Tool and
Analysis of VAD Dependency. Radioengineering. April 2005, Vol. 14, No. 1, 6-11 s.
[13] Welch, P.D. The Use of Fast Fourier Transform for the Estimation of Power Spectra: A Method Based on Time Averaging Over Short, Modified Periodograms. IEEE Trans. Audio
Electroacoustics, Vol. AU-15. June 1967. P. 70-73.
[14] HUANG, Xuedong. Spoken language processing: a guide to theory, algorithm, and system
development. Vyd. 1. New Jersey: Prentice-Hall, 2001. ISBN 01-302-2616-5.
[15] PSUTKA, Josef. et al. Mluvíme s počítačem česky. Vyd. 1. Praha: Academia, 2006, 746 s.
ISBN 80-200-1309-1.
[16] RABINER, L. R. a R. W. SCHAFER. Introduction to digital speech processing. Boston,
Mass.: Now, c2007, 200 s. ISBN 16-019-8070-1.
[17] SOVKA, Pavel a Petr POLLÁK. Vybrané metody číslicového zpracování signálů. Vyd. 1.
Praha: Vydavatelství ČVUT, 2001, 206 s. ISBN 80-01-02416-4.
[18] MATLAB
software:
A
programming
environment
for
algorithm
development,
data analysis, visualization, and numerical computation. The academic licence.
http://www.mathworks.com/products/matlab/
[19] WIDROW, Bernard a Samuel D STEARNS. Adaptive signal processing. Englewood Cliffs,
N.J.: Prentice-Hall, 1985, 474 s. ISBN 01-300-4029-0.
[20] SHYNK, J.J. Frequency-domain and multirate adaptive filtering. IEEE Signal Processing
Magazine. 1992, roč. 9, č. 1, s. 14-37. ISSN 1053-5888. DOI: 10.1109/79.109205. Dostupné
z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=109205
[21] SOMMEN, P.C.W. a J.A.K.S. JAYASINGHE. On frequency domain adaptive filters using the
overlap-add method. Circuits and Systems, 1988., IEEE International Symposium on 7-9
Jun. 1988, č. 1, 27 - 30.
57
Literatura
[22] SOVKA, P., P POLLÁK a V. DAVÍDEK. Extended Spectral Subtraction. Signal processing
VIII, theories and applications: proceedings of EUSIPCO-96, Eighth European Signal Processing Conference, Trieste, Italy, 10-13 September 1996. Trieste: Lint, 1996, s. 963-966.
ISSN 88-86179-83-9.
[23] BERIESTY, J., D.R. MORGAN a J.H. CHO. A new class of doubletalk detectors based on
cross-correlation. IEEE Transactions on Speech and Audio Processing. 2000, roč. 8, č. 2,
s. 168-172. ISSN 10636676. DOI: 10.1109/89.824701.
[24] GANSLER, T., M. HANSSON, C.-J. IVARSSON a G. SALOMONSSON. A double-talk detector based on coherence. IEEE Transactions on Communications. 1996, roč. 44, č. 11, s.
1421-1427. ISSN 00906778. DOI: 10.1109/26.544458.
[25] SPEECON Homepage. [online]. 26th january, 2004. [cit. 2012-03-08]. Dostupné z:
http://www.speechdat.org/speecon/index.html
[26] ACROBITS s.r.o., IČ:28487923, se sídlem Korunní 769/24, 12000 Praha 2 - Vinohrady.
http://www.acrobits.cz
[27] BRODSKÝ, Miroslav. Kombinovaný systém potlačování šumu a echa pro komunikační účely
v automobilu. Praha, 2005. Disertační práce. ČVUT - FEL.
[28] MARCHAND, Patrick a O HOLLAND. Graphics and GUIs with MATLAB. 3rd ed. Boca
Raton: Chapman, 2003, 518 s. ISBN 15-848-8320-0.
Přílohy
Obsah přílohy:
Seznam obrázků
Seznam tabulek
Přehled vytvořených skriptů v MATLABu
Algoritmus ve frekvenční oblasti (OLA)
Algoritmus ve frekvenční oblasti (OLS)
Algoritmus LMS/NLMS v časové oblasti
Algoritmus rozšířeného spektrálního odečítání
Naměřená data jednotlivých kategorií I-III
Ukázka naměřených dat signálů jedné skupiny
59
Seznam obrázků
2.1
Příklad impulzní odezvy prostředí mobilního telefonu . . . . . . . . . . . . . . . .
5
2.2
Obecné schéma vzniku nežádoucích složek v telekomunikaci . . . . . . . . . . . .
6
2.3
Blokové schéma modelování neznámého systému . . . . . . . . . . . . . . . . . . .
8
2.4
Blokové schéma výpočtu impulzní odezvy . . . . . . . . . . . . . . . . . . . . . . . .
9
3.1
Použití adaptivního filtru v systémové identifikaci. . . . . . . . . . . . . . . . . . .
12
3.2
Blokové schéma frekvenčního LMS algoritmu . . . . . . . . . . . . . . . . . . . . .
16
3.3
Blokové schéma spektrálního odečítání . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.4
Blokové schéma rozšířeného spektrálního odečítání . . . . . . . . . . . . . . . . .
20
4.1
Aplikace Hannova okna na odhad impulsní odezvy . . . . . . . . . . . . . . . . . .
25
4.2
Spektrogram namodelovaného šumu (model č. 2) . . . . . . . . . . . . . . . . . . .
25
4.3
Blokové schéma frekvenčního algoritmu OLS . . . . . . . . . . . . . . . . . . . . . .
26
4.4
Blokové schéma frekvenčního algoritmu OLA . . . . . . . . . . . . . . . . . . . . . .
27
4.5
Blokové schéma navrženého systému . . . . . . . . . . . . . . . . . . . . . . . . . .
28
5.1
Zjednodušené blokové schéma aplikace . . . . . . . . . . . . . . . . . . . . . . . . .
32
5.2
Návrhové prostředí GUIDE grafického rozhraní MATLABu . . . . . . . . . . . . .
33
5.3
Rozbalovací menu pro výběr mluvčího . . . . . . . . . . . . . . . . . . . . . . . . . .
33
5.4
Grafické rozhraní aplikace pro generování signálů . . . . . . . . . . . . . . . . . .
35
60
5.5
Grafické rozhraní aplikace pro potlačování nežádoucích vlivů, testování algoritmů 37
5.6
Vyhodnocení potlačení nežádoucích jevů . . . . . . . . . . . . . . . . . . . . . . . .
38
6.1
Příklad zobrazení výsledků pomocí vytvořeného GUI v MATLABu . . . . . . . . .
43
6.2
Histogram vypočteného ERLE pro jeden signál . . . . . . . . . . . . . . . . . . . .
44
6.3
Spektrogram signálu z mikrofonu d[n] (nahoře) a spektrogram signálu s potlačenými nežádoucími složkami e[n] (dole) . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4
45
Průběhy ERLE pro různě dlouhé zpracovávané segmenty algoritmu OLA v závislosti na době zpoždění echa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.5
Závislost ERLE na SNR v kanále blízkého mluvčího, bez bloku potlačení šumu .
49
6.6
Závislost ERLE na SNR v kanále blízkého mluvčího, s blokem potlačení šumu .
49
6.7
Závislost ERLE na SNR v kanále vzdáleného mluvčího, bez bloku potlačení šumu 50
6.8
Závislost ERLE na SNR v kanále vzdáleného mluvčího, s blokem potlačení šumu 50
6.9
Vyhlazený průběh ERLE pro signál z Kategorie I a skupiny 5 bez potlačení šumu 52
6.10 Vyhlazený průběh ERLE pro signál z Kategorie I a skupiny 5 s potlačením šumu 52
Seznam tabulek
5.1
Přehled tlačítek aplikace pro generování signálů . . . . . . . . . . . . . . . . . . .
34
5.2
Přehled tlačítek aplikace pro potlačování nežádoucích složek signálů . . . . . .
38
6.1
Parametry databáze - Kategorie I . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
6.2
Parametry databáze - Kategorie II . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
6.3
Parametry databáze - Kategorie III . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
6.4
Parametry databáze - Kategorie IV . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
6.5
Použité parametry při simulacích . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
6.6
Průměr získaných dat (ERLE) kategorií I-III pro všechny testované algoritmy. .
45
6.7
Přehled naměřených výsledků frekvenčního algoritmu OLA . . . . . . . . . . . . .
46
6.8
Přehled naměřených výsledků frekvenčního algoritmu OLA s potlačením šumu .
47
6.9
Střední doba trvání výpočtů algoritmu v závislosti na délce signálů . . . . . . . .
48
6.10 Hodnoty ERLE v kategorii I a skupině 5 . . . . . . . . . . . . . . . . . . . . . . . .
51
6.11 Přehled vytvořených MATLAB souborů . . . . . . . . . . . . . . . . . . . . . . . . .
64
6.12 Průměrná data kategorie I - skupina 1 . . . . . . . . . . . . . . . . . . . . . . . . .
76
6.13 Průměrná data kategorie I - skupina 2 . . . . . . . . . . . . . . . . . . . . . . . . .
76
6.14 Průměrná data kategorie I - skupina 3 . . . . . . . . . . . . . . . . . . . . . . . . .
76
6.15 Průměrná data kategorie I - skupina 4 . . . . . . . . . . . . . . . . . . . . . . . . .
77
6.16 Průměrná data kategorie I - skupina 5 . . . . . . . . . . . . . . . . . . . . . . . . .
77
62
6.17 Průměrná data kategorie I - skupina 6 . . . . . . . . . . . . . . . . . . . . . . . . .
77
6.18 Průměrná data kategorie I - skupina 7 . . . . . . . . . . . . . . . . . . . . . . . . .
77
6.19 Průměrná data kategorie I - skupina 8 . . . . . . . . . . . . . . . . . . . . . . . . .
78
6.20 Průměrná data kategorie I - skupina 9 . . . . . . . . . . . . . . . . . . . . . . . . .
78
6.21 Průměrná data kategorie II - skupina 1 . . . . . . . . . . . . . . . . . . . . . . . . .
78
6.22 Průměrná data kategorie II - skupina 2 . . . . . . . . . . . . . . . . . . . . . . . . .
78
6.23 Průměrná data kategorie II - skupina 3 . . . . . . . . . . . . . . . . . . . . . . . . .
79
6.24 Průměrná data kategorie II - skupina 4 . . . . . . . . . . . . . . . . . . . . . . . . .
79
6.25 Průměrná data kategorie III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
6.26 Ukázka naměřených dat z jednotlivých signálů samostatné skupiny (Kat. I-2) . .
81
Vytvořené soubory MATLABu
Tabulka 6.11: Přehled vytvořených MATLAB souborů
n2idet.m
převod ideální detekce, popsané čísly vzorků, kde začíná a končí
hlas, do posloupnosti 0 a 1
i2ndet.m
zpětný převod z posloupnosti 0 a 1 do pouhého číselného označení
vzorků, kde začíná či končí hlas
kontrola_ndet.m
kontrola správnosti .ndet souborů, které jsem vytvořeny z .trs souborů programu použitého pro ruční detekci řeči.
aec_freq_add_all.m
algortimus pro potlačování echa ve frekvenční oblasti, pracující
s celým signálem, metoda overlap-add
aec_freq_add_frame_init.m
algortimus pro potlačování echa ve frekvenční oblasti, pracující po
čátech signálu, metoda overlap-add, inicializace
aec_freq_add_frame_onestep.m
algortimus pro potlačování echa ve frekvenční oblasti, pracující po
čátech signálu, metoda overlap-add, zpracování jednoho bloku
aec_freq_save_all.m
algortimus pro potlačování echa ve frekvenční oblasti, pracující
s celým signálem, metoda overlap-save
aec_freq_save_frame_init.m
algortimus pro potlačování echa ve frekvenční oblasti, pracující po
čátech signálu, metoda overlap-save, inicializace
aec_freq_save_frame_onestep.m
algortimus pro potlačování echa ve frekvenční oblasti, pracující po
čátech signálu, metoda overlap-save, zpracování jednoho bloku
aec_time.m
algortimus pro potlačování echa v časové oblasti, pracující po jednotlivých segmentech
analyze.m
analyzování výsledných signálů
analyze.fig
soubor s GUI parametry
cancel_signals.m
hlavní aplikace pro potlačování akustického echa a šumu prostředí
cancel_signals.fig
soubor s GUI parametry
create_pause.m
vytvoření pauzy mezi signály
init_sig.m
vytvoření pauzy na začátku spojeného dlouhého signálu
gen_signals.m
aplikace pro simulování řečových signálů
gen_signals.fig
soubor s GUI parametry
Analyzované algoritmy:
F-LMS-OLA - inicializace
%------------------------------------------------------------------------%
Adaptive Filter - frequency domain LMS - OLA, init - first step
%------------------------------------------------------------------------%
% USE:
% [e W P X0] = aec_freq_add_frame_init(x1, d1, N)
%
%------------------------------------------------------------------------% INPUTS signals are column vector
%
% variable | type
| default | description
%
%
x1 | [:,1] |
----
| input for AF (far speaker)
%
d1 | [:,1] |
----
| output of unknown system (microphone signal)
%
N |
256
(-) |
| length of frame for fft processing, order of filter
%
% OUTPUTS - e ... error signal
%
W ... update coefficient for next iteration
%
P ... power spectrum for next iteration
%
X0... spectrum of first block
%-------------------------------------------------------------------------%
% Author:
Bc. Jan Klapuch
% Contact:
[email protected]
% University:
FEE - CTU in Prague
% Department:
Dep. of Circuit Theory
% Last update:
12.04.2012
%-------------------------------------------------------------------------%
function [e W P X0] = aec_freq_add_frame_init(x1, d1, N)
if nargin>3
errordlg(’Too many inputs parameters’, ’aec_freq_all’);
return;
end;
if nargin<2
errordlg(’Min. inputs parameters are 2!’, ’aec_freq_all’);
return;
end;
if nargin<3
N=256;
end
%-------------------------------------------------------------------------%
M=2*N;
% size of block for processing
W=zeros(M,1);
% init of coefficients
X0=fft(x1,M);
% transform to frequency domain of far speaker signal
e=d1;
% init error frame
P=abs(X0.*conj(X0))./2;
% init power spectrum
%-------------------------------------------------------------------------%
F-LMS-OLA - krok
%------------------------------------------------------------------------%
Adaptive Filter - frequency domain LMS - OLA, one step
%------------------------------------------------------------------------% USE:
% [e W P X1] = aec_freq_frame_onestep(x, d, e, X0, W, P, det, N, mu, lambda)
%
%------------------------------------------------------------------------% INPUTS signals are column vector !!!
%
% variable | type
| default | description
%
%
x | [:,1] |
----
| input for AF (far speaker)
%
d | [:,1] |
----
| output of unknown system (microphone signal)
%
e | [:,1] |
----
| error signal from previous iteration
%
X0 | [:,1] |
----
| spectrum from previous iteration
%
W | [1,:] |
----
| coefficients spectrum from previous iteration
%
P | [:,1] |
----
| power spectrum from previous iteration
%
det | [:,1] |
none
| DTD detection vector
%
N |
(-) |
256
| length of frame for fft processing, order of filter
%
mu |
(-) |
0.02
| convergence factor (0;1>
%
lambda |
(-) |
0.98
| forgetting factor
<0;1>
%
% OUTPUTS - e ... error signal
%
W ... update coefficient for next iteration
%
P ... power spectrum for next iteration
%
X1... spectrum for next iteration
%-------------------------------------------------------------------------%
% Author:
Bc. Jan Klapuch
% Contact:
[email protected]
% University:
FEE - CTU in Prague
% Department:
Dep. of Circuit Theory
% Last update:
12.04.2012
%-------------------------------------------------------------------------%
function [e W P X1] = aec_freq_add_frame_onestep(x, d, e, X0, W, P, det, N, mu, lambda)
if nargin>10
errordlg(’Too many inputs parameters’, ’aec_freq_all’);
return;
end;
if nargin<6
errordlg(’Min. inputs parameters are 5!’, ’aec_freq_all’);
return;
end;
if nargin<10
lambda = 0.98;
end
if nargin<9
mu=0.02;
end
if nargin<8
N=256;
end
if nargin<7
info_det=0;
else
info_det=1;
end
if det==0
info_det=0;
end
%---------------------- INIT PART OF ALGORITHM ---------------------------%
epsilon=1E-9;
% power small constant
M=2*N;
% size of block for processing
J=zeros(2*N,1);
% declaration of J vector (-1,+1,-1,+1 ....)
n=1:2:2*N;
J(1+n)=-1;
J(n)=+1;
%---------------------------- MAIN PART ----------------------------------%
e_part=zeros(N,1);
% declaration of error frame
x=[x;zeros(N,1)];
% insert zeros block
X1=fft(x,M);
% transform to frequency domain of far speaker signal
X=J.*X0+X1;
% to add the last spectrum with circular shift applied
Y=X.*W;
% convolution
% Output frame
y_part=real(ifft(Y,M));
yy=y_part(1:N);
% discard 2nd frame of block
for ii=1:N
e_part(ii)=d(ii)-yy(ii);
end
e=e_part;
% output signal without echo
% updating coefficients
e_part=[e_part; zeros(N,1)];
% insert zero block
E=fft(e_part,M);
% transform to frequency domain
P=(1-lambda).*abs(X.*conj(X))./2 + lambda.*P; % update power spectrum
F=mu./(P+epsilon);
% update vector constant
H=F.*E.*conj(X);
% frequency gradient
h=real(ifft(H,M));
% time gradient
h=h(1:N);
% discard 2nd half
h=[h(1:N); zeros(N,1)];
% discard 2nd half and insert zero block
H=(fft(h,M));
% transform back to frequency domain
% Detection
if info_det==1
if(sum(det)<0.2*N)
W=W+H;
% block of detection
% 20 and more % of detection DTD => update off
% update adaptive coefficients
end
else %info_det=0
W=W+H;
% update adaptive coefficients
end
%-------------------------------------------------------------------------%
F-LMS-OLS - inicializace
%------------------------------------------------------------------------%
Adaptive Filter - frequency domain LMS - OLA, init - first step
%------------------------------------------------------------------------% USE:
% [e W P] = aec_freq_frame_init(x1, d1, N, mu)
%
%-------------------------------------------------------------------------
% INPUTS signals are column vector !!!
%
% variable | type
| default | description
%
%
x1 | [:,1] |
----
%
d1 | [:,1] |
----
%
N |
256
%
mu |
(-) |
(-) |
0.02
| input for AF (far speaker)
| output of unknown system (microphone signal)
| length of frame for fft processing, order of filter
| convergence factor (0;1>
%
% OUTPUTS - e ... error signal
%
W ... update coefficient for next iteration
%
P ... power spectrum for next iteration
%-------------------------------------------------------------------------%
% Author:
Bc. Jan Klapuch
% Contact:
[email protected]
% University:
FEE - CTU in Prague
% Department:
Dep. of Circuit Theory
% Last update:
12.04.2012
%-------------------------------------------------------------------------%
function [e W P] = aec_freq_frame_init(x1, d1, N, mu)
if nargin>4
errordlg(’Too many inputs parameters’, ’aec_freq_all’);
return;
end;
if nargin<2
errordlg(’Min. inputs parameters are 2!’, ’aec_freq_all’);
return;
end;
if nargin<4
mu=0.02;
end
if nargin<3
N=256;
end
%-------------------------------------------------------------------------%
epsilon=1E-9;
% power small constant
M=2*N;
% size of block for processing
e=zeros(N,1);
% declaration of error signal
w=zeros(M,1);
% first frame of coefficients
W=(fft(w,M));
% transform to frequency domain
X=fft(x1,M);
% transform to frequency domain of far speaker signal
Y=X.*W;
% convolution
% output frame
y_part=real(ifft(Y,M));
yy=y_part(N+1:end);
% discard 1st frame of block
for ii=1:N
e(ii)=d1(ii)-yy(ii);
end
% updating coefficients
e_new=[zeros(N,1); e];
% insert zero block
E=fft(e_new,M);
% transform to frequency domain
P=abs(X.*conj(X))./2;
% power spectrum of frame (from block)
F=mu./(P+epsilon);
% update vector constant
H=F.*E.*conj(X);
% frequency gradient
h=real(ifft(H,M));
% time gradient
h=h(1:N);
% discard 2nd half
h=[h; zeros(N,1)];
% insert zero block
H=(fft(h,M));
% transform abck to frequency domain
W=W+H;
% update adaptive coefficients
%-------------------------------------------------------------------------%
F-LMS-OLS - krok
%------------------------------------------------------------------------%
Adaptive Filter - frequency domain LMS - OLS, one step
%------------------------------------------------------------------------%
% USE:
% [e W P] = aec_freq_frame_onestep(x, d, e, W, P, det, N, mu, lambda)
%
%------------------------------------------------------------------------% INPUTS signals are column vector !!!
%
% variable | type
| default | description
%
%
x | [:,1] |
----
| input for AF (far speaker)
%
d | [:,1] |
----
| output of unknown system (microphone signal)
%
e | [:,1] |
----
| error signal from previous iteration
%
W | [1,:] |
----
| coefficients spectrum from previous iteration
%
P | [:,1] |
----
| power spectrum from previous iteration
%
det | [:,1] |
none
| DTD detection vector
%
N |
(-) |
256
| length of frame for fft processing, order of filter
%
mu |
(-) |
0.02
| convergence factor (0;1>
%
lambda |
(-) |
0.98
| forgetting factor
<0;1>
%
% OUTPUTS - e ... error signal
%
W ... update coefficient for next iteration
%
P ... power spectrum for next iteration
%-------------------------------------------------------------------------%
% Author:
Bc. Jan Klapuch
% Contact:
[email protected]
% University:
FEE - CTU in Prague
% Department:
Dep. of Circuit Theory
% Last update:
12.04.2012
%-------------------------------------------------------------------------%
function [e W P] = aec_freq_frame_onestep(x, d, e, W, P, det, N, mu, lambda)
if nargin>9
errordlg(’Too many inputs parameters’, ’aec_freq_all’);
return;
end;
if nargin<5
errordlg(’Min. inputs parameters are 5!’, ’aec_freq_all’);
return;
end;
if nargin<9
lambda = 0.98;
end
if nargin<8
mu=0.02;
end
if nargin<7
N=256;
end
if nargin<6
info_det=0;
else
info_det=1;
end
if det==0
info_det=0;
end
%---------------------- INIT PART OF ALGORITHM ---------------------------%
epsilon=1E-9;
% power small constant
M=2*N;
% size of block for processing
%---------------------------- MAIN PART ----------------------------------%
e=zeros(N,1);
% declaration of error frame
X=fft(x,M);
% transform to frequency domain of far speaker signal
Y=X.*W;
% convolution
% Output frame
y_part=real(ifft(Y,M));
y=y_part(N+1:end);
% discard 1st frame of block
for ii=1:N
e(ii)=d(ii)-y(ii);
end
% updating coefficients
e_new=[zeros(N,1); e];
% insert zero block
E=fft(e_new,M);
% transform to frequency domain
P=(1-lambda).*abs(X.*conj(X))./2 + lambda.*P; % update power spectrum
F=mu./(P+epsilon);
% update vector constant
H=F.*E.*conj(X);
% frequency gradient
h=real(ifft(H,M));
% time gradient
h=h(1:N);
% discard 2nd half
h=[h(1:N); zeros(N,1)];
% discard 2nd half and insert zero block
H=(fft(h,M));
% transform abck to frequency domain
% Detection
if info_det==1
% block of detection
if(sum(det)<0.2*N)
W=W+H;
% 20 and more % of detection DTD => update off
% update adaptive coefficients
end
else %info_det=0
W=W+H;
% update adaptive coefficients
end
%-------------------------------------------------------------------------%
T-LMS/NLMS
%-------------------------------------------------------------------------%
%
Adaptive Filter - time domain LMS
%
%-------------------------------------------------------------------------%
%
%-------------------------------
USE
---------------------------------%
%
% [e x_new w pwr] = aec_time(x_new,x_old, d, w, lambda, u, pwr,lms)
%
%-----------------------------
INPUTS
--------------------------------%
% INPUTS:
x_new
... new frame
%
x_old
... previous frame
%
d
... microphone signal frame
%
w
... previous coefficients
%
M
... order of filter
%
lambda
... forgetting constant
%
u
... convergence constant
%
pwr
... previous power
%
lms
... type of lms (1=LMS,2=NLMS)
%
det
... detection for switch off updating
%
%-----------------------------
OUTPUTS
% e
... error signal frame
% x_new
... new frame for next iteration
% w
... new coefficients
% pwr
... new power
%---------------------------
END OF HELP
-------------------------------%
-----------------------------%
%-------------------------------------------------------------------------%
% Author:
Bc. Jan Klapuch
% Contact:
[email protected]
% University:
FEE - CTU in Prague
% Department:
Dep. of Circuit Theory
% Last update:
12.04.2012
%-------------------------------------------------------------------------%
function [e x_new w pwr] = aec_time(x_new, x_old, d, w, M, lambda, u, pwr, lmss, det)
N = length(x_new); %length of a frame
e=zeros(N,1);
%alocation of memory
epsilon = 10^(-9);
x = [x_old ; x_new];
%old and new segment of samples
% MAIN CYCLE
for ii = 1:length(x_new)
x_i = x(ii+M:-1:ii+1);
y = w’*x_i;
e(ii) = d(ii) - y;
%coeff. update
switch lmss
case 1 % LMS
if (det(ii)==0)
w=w+2*u*e(ii).*x_i;
end
case 2 % NLMS
pwr=(1-lambda)*x_i(1)^2+lambda*pwr;
mu = u/(epsilon+pwr);
if (det(ii)==0)
w=w+mu/M*e(ii).*x_i;
end
otherwise
errordlg(’Wrong input parameters: lms ... see: help aec_time’,’aec_time’);
end
end
x_new=x(N+1:N+M);
Rozšířené spektrální odečítání
% EXTENDED SPECTRAL SUBTRACTION
% developed by P. Sovka, P. Pollak & J. Kibic
% Programed by M. Svoboda
% Block processing and small modification by J.Klapuch
function [out next_residue S1 NA1]=exten_step(new_frame,prev_residue,S0,NA0,wlen,wstep);
%all frames are column vectors
if nargin<4,
wlen=256;
wstep=wlen/2;
end;
if (wstep>wlen-1)
error(’Too big wstep’);
return;
end
sig=[prev_residue; new_frame];
p=0.95; %time constant for noise averaging
w=hanning(wlen); %hanning window
slen=length(sig);
wnum=floor((slen-wlen)/wstep);
out=zeros(wnum*wlen,1);
%allocation of memory for output signal
next_residue=sig(wnum*wlen+1:end);
for i=1:wnum,%main cycle
x=sig((i-1)*wstep+1:(i-1)*wstep+wlen).*w;
%segmentation
X=fft(x,wlen);
Xabs=abs(X);
Xangle=angle(X);
%----------------------N=(Xabs).*sqrt((NA0.^2)./(NA0.^2+S0.^2));
%Wiener filtration
NA1=p*NA0+(1-p)*N;
%noise averaging
S1=abs(Xabs-NA1);
%averaged speech estimation
Yabs=Xabs-N;
%output signal
%----------------------Y=Yabs(:).*exp(1j*Xangle(:));
%output signal reconstruction
y=real(ifft(Y,wlen));
out((i-1)*wstep+1:(i-1)*wstep+wlen)=out((i-1)*wstep+1:(i-1)*wstep+wlen)+y;
end;
Tabulka 6.12: Průměrná data kategorie I - skupina 1
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
I-1_F-OLA
17.12
17.79
32.41
5.81
0.39
I-1_F-OLS
17.04
17.74
32.37
5.90
0.73
I-1_T-LMS
11.08
11.21
27.05
5.07
4.29
I-1_T-NLMS
15.51
15.88
32.68
5.59
8.58
I-1_F-OLA-NC
31.35
32.56
50.02
7.93
9.46
I-1_F-OLS-NC
31.30
32.52
49.98
7.99
10.31
I-1_T-LMS-NC
19.12
19.05
41.00
7.65
14.40
I-1_T-NLMS-NC
27.33
28.24
48.33
8.34
19.18
Tabulka 6.13: Průměrná data kategorie I - skupina 2
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
I-2_F-OLA
10.60
10.65
24.51
4.14
0.40
I-2_F-OLS
10.56
10.62
24.51
4.19
0.74
I-2_T-LMS
8.43
8.43
22.71
3.67
4.49
I-2_T-NLMS
10.21
10.34
25.09
4.29
8.95
I-2_F-OLA-NC
25.32
25.87
41.76
6.16
9.87
I-2_F-OLS-NC
25.28
25.85
41.74
6.20
10.73
I-2_T-LMS-NC
19.02
19.26
37.34
6.33
14.95
I-2_T-NLMS-NC
22.95
23.56
41.66
7.01
19.91
Tabulka 6.14: Průměrná data kategorie I - skupina 3
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
I-3_F-OLA
7.27
7.17
19.70
3.19
0.39
I-3_F-OLS
7.23
7.14
19.70
3.23
0.72
I-3_T-LMS
6.60
6.51
19.10
2.96
4.37
I-3_T-NLMS
8.10
8.08
22.30
4.02
8.76
I-3_F-OLA-NC
22.20
22.62
37.35
5.28
9.67
I-3_F-OLS-NC
22.17
22.60
37.34
5.32
10.53
I-3_T-LMS-NC
19.01
19.34
35.74
5.49
14.76
I-3_T-NLMS-NC
21.26
21.80
39.10
6.63
19.60
Tabulka 6.15: Průměrná data kategorie I - skupina 4
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
I-4_F-OLA
4.43
4.34
14.19
2.45
0.39
I-4_F-OLS
4.41
4.32
14.18
2.47
0.72
I-4_T-LMS
4.96
4.79
16.28
2.61
4.40
8.79
I-4_T-NLMS
6.81
6.71
20.72
4.09
I-4_F-OLA-NC
19.62
20.04
32.94
4.68
9.69
I-4_F-OLS-NC
19.59
20.02
32.95
4.71
10.54
I-4_T-LMS-NC
19.03
19.32
33.53
4.84
14.71
I-4_T-NLMS-NC
20.32
20.90
37.45
6.58
19.60
Tabulka 6.16: Průměrná data kategorie I - skupina 5
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
I-5_F-OLA
18.82
19.64
34.42
6.11
0.40
I-5_F-OLS
18.74
19.59
34.38
6.21
0.73
I-5_T-LMS
11.69
11.81
27.81
5.29
4.41
I-5_T-NLMS
17.09
17.55
34.57
5.86
8.81
I-5_F-OLA-NC
32.97
34.33
51.88
8.32
9.71
I-5_F-OLS-NC
32.92
34.30
51.85
8.38
10.56
I-5_T-LMS-NC
19.37
19.25
41.95
7.90
14.76
I-5_T-NLMS-NC
28.68
29.71
50.92
8.71
19.68
Tabulka 6.17: Průměrná data kategorie I - skupina 6
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
I-6_F-OLA
11.24
11.46
25.85
4.81
0.39
I-6_F-OLS
11.18
11.42
25.85
4.88
0.73
I-6_T-LMS
8.35
8.36
23.30
4.22
4.42
I-6_T-NLMS
9.89
9.97
26.49
4.81
8.84
I-6_F-OLA-NC
25.80
26.37
43.40
6.55
9.74
I-6_F-OLS-NC
25.74
26.34
43.40
6.65
10.60
I-6_T-LMS-NC
18.11
18.27
37.45
6.56
14.79
I-6_T-NLMS-NC
22.38
23.07
42.43
7.35
19.72
Tabulka 6.18: Průměrná data kategorie I - skupina 7
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
I-7_F-OLA
16.93
17.63
32.51
5.95
0.40
I-7_F-OLS
16.87
17.60
32.51
6.03
0.74
I-7_T-LMS
10.53
10.61
26.38
4.99
4.67
I-7_T-NLMS
14.73
15.12
31.91
5.71
9.31
I-7_F-OLA-NC
31.01
32.19
49.96
8.12
10.21
I-7_F-OLS-NC
30.97
32.18
49.95
8.19
11.07
I-7_T-LMS-NC
18.30
18.19
40.52
7.50
15.52
I-7_T-NLMS-NC
25.85
26.69
47.72
8.47
20.64
Tabulka 6.19: Průměrná data kategorie I - skupina 8
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
I-8_F-OLA
16.88
17.64
32.93
6.08
0.33
I-8_F-OLS
16.70
17.55
32.89
6.28
0.61
I-8_T-LMS
9.80
9.82
25.53
4.87
5.03
I-8_T-NLMS
13.30
13.72
30.44
5.77
10.09
I-8_F-OLA-NC
31.19
32.46
50.48
8.38
10.91
I-8_F-OLS-NC
31.07
32.40
50.45
8.54
11.69
I-8_T-LMS-NC
17.37
17.18
39.31
7.33
16.56
I-8_T-NLMS-NC
23.30
23.82
45.58
8.42
22.14
Tabulka 6.20: Průměrná data kategorie I - skupina 9
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
I-9_F-OLA
15.80
16.68
32.83
6.67
0.29
I-9_F-OLS
15.52
16.50
32.79
6.93
0.54
I-9_T-LMS
7.59
7.35
22.70
4.38
7.08
I-9_T-NLMS
7.12
6.88
21.57
4.32
14.38
I-9_F-OLA-NC
29.62
30.87
50.30
9.24
15.18
I-9_F-OLS-NC
29.38
30.74
50.28
9.52
15.95
I-9_T-LMS-NC
14.77
14.36
36.78
6.75
22.99
I-9_T-NLMS-NC
14.18
13.80
35.64
6.61
30.73
Tabulka 6.21: Průměrná data kategorie II - skupina 1
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
II-1_F-OLA
15.22
15.86
30.49
5.56
0.41
II-1_F-OLS
15.13
15.81
30.48
5.67
0.76
II-1_T-LMS
9.26
9.27
24.23
4.60
4.37
II-1_T-NLMS
13.49
13.82
30.18
5.31
8.69
II-1_F-OLA-NC
28.77
29.98
47.83
8.03
9.59
II-1_F-OLS-NC
28.69
29.94
47.81
8.12
10.44
II-1_T-LMS-NC
17.08
16.80
38.78
7.23
14.58
II-1_T-NLMS-NC
24.50
25.15
46.05
8.07
19.42
Tabulka 6.22: Průměrná data kategorie II - skupina 2
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
II-2_F-OLA
13.76
14.28
28.49
5.25
0.40
II-2_F-OLS
13.67
14.22
28.48
5.33
0.74
II-2_T-LMS
8.72
8.75
23.22
4.39
4.36
II-2_T-NLMS
12.15
12.41
28.62
5.11
8.66
II-2_F-OLA-NC
27.46
28.52
45.82
7.60
9.55
II-2_F-OLS-NC
27.40
28.47
45.82
7.66
10.40
II-2_T-LMS-NC
16.93
16.75
38.05
7.00
14.53
II-2_T-NLMS-NC
23.41
24.03
44.13
7.81
19.43
Tabulka 6.23: Průměrná data kategorie II - skupina 3
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
II-3_F-OLA
10.13
10.37
23.95
4.50
0.39
II-3_F-OLS
10.05
10.32
23.96
4.59
0.73
II-3_T-LMS
7.12
7.11
20.74
3.82
4.33
II-3_T-NLMS
8.83
8.94
24.52
4.55
8.64
II-3_F-OLA-NC
24.25
24.87
40.89
6.56
9.54
II-3_F-OLS-NC
24.15
24.81
40.89
6.70
10.41
II-3_T-LMS-NC
16.52
16.53
35.83
6.34
14.60
II-3_T-NLMS-NC
20.71
21.22
40.44
7.11
19.52
Tabulka 6.24: Průměrná data kategorie II - skupina 4
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
II-4_F-OLA
2.81
2.67
11.59
1.91
0.40
II-4_F-OLS
2.78
2.65
11.58
1.93
0.74
II-4_T-LMS
2.74
2.57
12.68
1.94
4.40
II-4_T-NLMS
3.61
3.43
16.72
3.60
8.80
II-4_F-OLA-NC
18.23
18.59
30.20
4.05
9.72
II-4_F-OLS-NC
18.19
18.57
30.16
4.11
10.60
II-4_T-LMS-NC
16.79
17.12
30.09
4.23
14.79
II-4_T-NLMS-NC
17.29
17.77
33.62
6.09
19.71
Tabulka 6.25: Průměrná data kategorie III
Algoritmus (dB)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
Výpočetní faktor (%)
III_F-OLA
3.31
3.12
12.46
2.24
0.44
III_F-OLS
3.28
3.10
12.38
2.25
0.80
III_T-LMS
3.06
2.90
12.81
2.11
4.85
III_T-NLMS
4.19
4.07
18.13
3.97
9.58
III_F-OLA-NC
18.71
19.11
30.68
4.51
10.49
III_F-OLS-NC
18.68
19.10
30.63
4.53
11.37
III_T-LMS-NC
16.80
17.09
29.69
4.42
15.99
III_T-NLMS-NC
17.66
18.25
35.11
6.64
21.23
Tabulka 6.26: Ukázka naměřených dat z jednotlivých signálů samostatné skupiny (Kat. I-2)
Střední hodnota (dB)
Medián (dB)
Maximum (dB)
Stand.odchylka(dB)
6.83
7.11
15.30
3.41
5.38
5.52
14.27
3.12
6.95
7.00
22.84
4.12
5.07
4.85
20.57
3.20
7.42
7.41
18.16
4.08
6.50
6.86
14.77
3.00
15.22
15.23
29.92
4.87
7.79
7.59
21.47
4.09
10.42
10.37
23.80
4.30
8.41
8.20
23.13
3.94
11.41
11.24
27.20
4.92
8.84
8.80
22.80
4.03
16.16
16.99
27.88
4.64
12.76
12.87
23.94
4.31
12.59
13.00
24.15
4.38
11.20
11.62
21.67
3.63
14.35
15.07
26.13
5.07
11.80
12.14
24.06
3.68
15.03
15.06
28.42
4.83
12.21
12.49
24.92
5.07
10.11
10.18
21.16
4.36
9.45
9.77
20.18
3.90
11.61
11.76
25.14
4.40
10.51
10.74
22.09
4.33
16.30
16.28
33.58
5.43
12.62
12.56
30.14
4.38
11.00
10.94
25.01
3.82
12.28
12.38
25.21
3.66
13.43
13.87
24.46
4.11
12.04
12.19
23.48
3.73
14.72
15.13
26.58
3.78
10.10
9.89
23.53
3.97
8.31
8.65
18.01
3.25
9.16
9.30
23.71
3.07
9.07
9.05
24.90
3.74
8.49
8.13
22.37
4.30
14.65
14.42
36.28
4.99
9.31
8.55
31.36
5.24
8.59
8.25
28.69
3.44
8.42
7.81
26.60
4.94
7.57
6.91
27.71
3.86
11.22
11.03
33.72
4.58
10.60
10.65
24.51
4.14

Podobné dokumenty