A2B31SMS – 6. PŘEDNÁŠKA 5. listopadu 2015 • Hlas a řeč – hlasivkový tón, formanty, zpěvní formant • Formantové syntézy – Klattův formantový syntetizér • Číslicové IIR filtry vyšších řádu – filtry se dvěma póly – (filtry s více póly) – řazení filtrů • Aplikace – banka filtrů (rezonátorů) – filtrační syntézy s časově prom. filtry – formantové syntézy (samohlásky, nástroje) – potlačení šumů
Hlasové ústrojí
Artikulační ústrojí
Vznik hlasivkového tónu
Hlasové ústrojí
Akustický model artikulačního ústrojí
• hlasitost • F0 • F1, F2, F3, F4
Hlasové ústrojí
Hlasové ústrojí
Spektrum hlasivkového tónu
• F0 • F1, F2, F3, F4 • energie
+ spektrum vokálního traktu
parametry hlasu
Generování samohlásek
A E
I O U Audio demonstrace modifikace harmonického zdroje tvarováním „hlasového ústrojí“ [San Franciso Exploratorium]
E
A
O
I
U
Základní hlasivkový tón ` f0typ [Hz]
f0min [Hz]
f0max [Hz]
muži ženy
125 225
80 150
200 350
děti
300
200
500
. Rozsah hlasivkového tónu v řeči
Změny v rychlosti kmitání hlasivek vnímáme jako změny v základní periodě hlasivkového tónu, resp. v základní frekvenci f0. Základní perioda je ovlivněna vlastnostmi hlasivek (jejich pružností, hmotností a délkou).
Základní hlasivkový tón `
. Rozsah hlasivkového tónu v řeči
Základní hlasivkový tón 1
1
1 perioda samohlasky "a"
samohlaska "a" 0
0
-1
0.32
0.33
0.34
0.35
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
0.41
-1
0.352 0.353 0.354 0.355 0.356 0.357 0.358 0.359 ---> cas [s]
0.36
0.361
T0 = 1/f0 1.5
10 f2
8
f0 = 1/T0
f1
6
amplitudove spektrum
amplitudove spektrum 1
f3
4
0
0
0
f3
f1
0.5
f0
2
f2
500
1000
1500 2000 2500 ---> frekvence [Hz]
3000
3500
4000
0
500
1000
1500 2000 2500 ---> frekvence [Hz]
3000
3500
4000
. Vztah základní frekvence, základní periody a formantových frekvencí vlevo: časový průběh a periodogram pro dlouhý samohláskový úsek vpravo: časový průběh a periodogram pro jednu periodu
Základní hlasivkový tón 1
1
0.5
0.5
0
0 -0.5
-0.5
-1
---> frekvence [Hz]
0.1
0.2
0.4
0.5
0.6 ---> frekvence [Hz]
4000
0.3 ---> cas [s]
3000 2000 1000 0
0.1
0.2
4000
0.3 ---> cas [s]
0.4
0.5
3000 2000 1000 0
0
0.1
0.2
0.3 ---> cas [s]
0.4
0.5
0.32
0.33
0.34
0.35
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
0.41
0.32
0.33
0.34
0.35
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
0.41
0.32
0.33
0.34
0.35
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
0.41
4000 3000 2000 1000 0
0.6 ---> frekvence [Hz]
---> frekvence [Hz]
0
0
samohlaska "a"
slovo "jedna"
1000
500
0
.: širokopásmový (horní) a úzkopásmový (dolní) spektrogram. Vpravo je zobrazení pro slovo „jedna“, vlevo je detail samohlásky „a“
Základní hlasivkový tón a jeho detekce Předzpracování signálu
0.5
0.5
0
-0.5
-1 -1
0.5
1
0.5
0
vystup
1
vystup
1
vystup
vystup
• délka okna by měla být alespoň 20 ms • normování signálu • odstranění stejnosměrné složky • často diferenciátor • dolní propust s mezní frekvencí do 500 Hz (event. pásmová propust či banka filtrů) • pro zvětšení rozlišení se někdy provádí interpolace • abychom potlačili formantovou strukturu řeči, provádíme spektrální zploštění pomocí různých nelineárních technik
0
-0.5
0 vstup
1
-1 -1
0
-0.5
0 vstup
1
-0.5 -1
0 vstup
1
-1 -1
0 vstup
1
Základní hlasivkový tón a jeho detekce a) normování řečového signálu b) umocnění na třetí c) signál, který je menší než prahová úroveň je omezen a výsledný signál je usměrněn
1 0 samohlaska "a" -1 0.32
0.33
0.34
0.35
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
5 0 -5 0.32
kubicke nelinearni zkresleni 0.33
0.34
0.35
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
4 2 centralni omezeni 0 0.32
0.33
0.34
0.35
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
Základní hlasivkový tón a jeho detekce d) trojúhelníkovým FIR filtr – potlačení ostrých špiček e) nalezení všech lokálních maxim f) logická filtrace 1.5 1 0.5 "rozmazani spicek" FIR filtrem 0 0.32
0.33
0.34
0.35
1.5
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
1 0.5 nalezeni lokalnich maxim 0 0.32 1.5
0.33
0.34
0.35
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
1 0.5 detekce periody zakladniho tonu 0 0.32
0.33
0.34
0.35
0.36 0.37 ---> cas [s]
0.38
0.39
0.4
citlivost na nastavení rozhodovacích úrovní a prahů pro daný signál a určitou apl.
Základní hlasivkový tón a jeho detekce Autokorelace nejčastěji používaná metoda detekce základní periody Autokorelační funkce udává míru toho, jak jsou jednotlivé úseky signálu mezi sebou vzájemně korelovány.
R(n,m) = (s(k)w(n-k))(s(k+m)w(n-k+m)) k=-
Je-li vstupní signál periodický s periodou P, nabývá tato funkce maximálních hodnot pro m = 0, P, 2P, ... . Předpokládá se, že mikrosegment je dlouhý aspoň dvě periody signálu.
Základní hlasivkový tón a jeho detekce Příklad detekce základní periody pomocí algoritmů s dvojí transformací a nelineárním zkreslením ve frekvenční oblasti
Základní hlasivkový tón a jeho detekce X = |S|2
100
f0
1.5
1
1
1
x
50
0
0.5 0
0
1000
2000
3000
4000
0.005
0.01
0.015
0.02
0.005
0.01
0.015
0.02
0.005 0.01 0.015 ---> cas [ms]
0.02
10
X = ln|S|
0.4
x
2
0 0.2
2
-10 0 -20
0
1000
2000
3000
4000
3
0.2 0.1
x
2
0
3
X = sqrt(|S|)
4
0
0
1000
2000 3000 ---> f [Hz]
4000
Obrazy samohlásek (vlevo) a výsledné průběhy po dvojí transformaci a nelineárním zkreslení ve frekvenční oblasti (vpravo). První řádek odpovídá autokoleračním metodám, druhý kepstrálním a třetí průběh získáme po provedení čtvrté odmocniny výkonového spektra
Základní hlasivkový tón a jeho detekce Postprocessing signal
1 0.5 0 -0.5 0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.8
1
ACF
200
100
0
kepstrum
200
100
0
4.odmocnina
200
100
0
0.6 ---> cas [s]
.: Detekce základní frekvence v promluvě „jaro už je tady“ pomocí metod s dvojí transformací a nelineárním zkreslením. Plnou čarou je zobrazen výstup z detektorů, čárkovaně je zobrazen výstup po filtraci pětibodovým mediánovým filtrem.
Určování formantových frekvencí
Formanty jsou nazývány energeticky významné frekvence, které odpovídají rezonančním frekvencím hlasového ústrojí.
Určování formantových frekvencí Orientační hodnoty formantů českých samohlásek I
E
A
O
U
F1
300 .. 500
480 .. 700
700 .. 1100
500 .. 700
300 .. 500
F2
2000 .. 2800
1560 .. 2100
1100 .. 1500
850 .. 1200
600 .. 1000
F3
2600 .. 3500
2500 .. 3000
2500 .. 3000
2500 .. 3000
2400 .. 2900
Porovnání formantových frekvencí v DFT, LPC a kepstrálně vyhlazených odhadech amplitudových spekter pro samohlásku „a“ 50 F1 40
F2
DFT
F1
DFT
F2 LP
F3
DFT
LP
F3
DFT LP cep
LP
F4
30
[dB]
20
DFT
F4
LP
10 F1
F2 cep
cep
0 F4 F3
cep
cep
-10
-20
-30 0
500
1000
1500
2000
2500
---> frekvence [Hz]
3000
3500
4000
X
s
e s
t
a
l
e
v
i
c
e
v z
d
a l
u
j
i
X
4000 3500
frekvence [Hz]
3000 2500 2000 1500 1000 500 0
0
0.2
0.4
0.6
0.8 cas [s]
1
1.2
1.4
Formantové frekvence získané pomocí LPC analýzy 10. řádu (výpočtem kořenů polynomu) pro okno délky 30 ms a překrytí 26 ms X
s
e s
t
a
l
e
v
i
c
e
v z
d
a l
u
j
i
4000 3500
frekvence [Hz]
3000 2500 2000 1500 1000 500 0
0
0.2
0.4
0.6
0.8 cas [s]
1
1.2
Formantové frekvence určené z vrcholů kepstrálně vyhlazeného frekvenčního spektra (parametry analýzy: 300 bodů DFT, 30 kepstrálních koeficientů, Hammingovo okno 30 ms, překrytí 26 ms)
1.4
X
X s
e s
t
a
l e v
i
c
e
vz
d
a l
u
j
i
4000 3500
frekvence [Hz]
3000 2500 2000 1500 1000 500 0
0
0.2
0.4
0.6
0.8 cas [s]
1
1.2
Trasování formantů pomocí adaptivní banky filtrů
1.4
X
Zpěvní hlas Vznik harmonických tónů • kmitání hlasivek – (základní frekvence a prvotní harmonická struktura tónů)
•
vokální trakt – (zesilování harmonických frekvencí v jeho rezonančních oblastech)
•
spektrum harmonických tónů – závisí na velikosti a tvaru rezonančních prostor
Zpěvní hlas
Přechod nepěvecké techniky v pěveckou
Akustické změny při operním zpěvu - sblížení až propojení 3 původně oddělených rezonancí vokálního traktu - vytvoření pěveckého formantového shluku - spojení 3., 4. a 5. formantu - navýšení akustické energie v oblasti kolem 3 kHz až o 20 dB
Akustické změny při operním zpěvu - sblížení až propojení 3 původně oddělených rezonancí vokálního traktu - vytvoření pěveckého formantového shluku - spojení 3., 4. a 5. formantu - navýšení akustické energie v oblasti kolem 3 kHz až o 20 dB
Tvarové rozdíly mezi jednotlivými druhy zpěvu
Tvarové rozdíly mezi jednotlivými druhy zpěvu
Tvarové rozdíly mezi jednotlivými druhy zpěvu
Tvarové rozdíly mezi jednotlivými druhy zpěvu
Tvarové rozdíly mezi jednotlivými druhy zpěvu
Tvarové rozdíly mezi jednotlivými druhy zpěvu
Tvarové rozdíly mezi jednotlivými druhy zpěvu
Akustické změny při operním zpěvu Závěry s porovnáním naivního a školeného zpěvu ve fonujícím hlasotvorném traktu -
sestup hrtanu přitlačení jazyka ke spodině zvednutí měkkého patra posud brady dolů a vzad vyrovnání páteře
Akustické změny při operním zpěvu Závěry s porovnáním naivního a školeného zpěvu ve fonujícím hlasotvorném traktu -
sestup hrtanu přitlačení jazyka ke spodině zvednutí měkkého patra posud brady dolů a vzad vyrovnání páteře
Školený zpěv se liší od naivního zpěvu významných zvětšením objemu rezonančních prostor nad hlasivkami a to všemi směry nahoru a dolů, dopředu a dozadu
signal
0.5
0
-0.5
0
1
2
3
4
5
0
1
2
3
4 5 ---> cas [s]
6
7
8
9
6
7
8
9
500
F0 (ACF)
400 300 200 100
4000 3500 3000
Frequency
2500 2000 1500 1000 500 0 0
1
2
3
4
5 Time
6
7
8
9
0.6
signal
0.4 0.2 0 -0.2 -0.4 0
2
4
6
8
0
2
4
6
8
10
12
14
16
18
20
10 12 ---> cas [s]
14
16
18
20
500
F0 (ACF)
400 300 200 100
4000 3500 3000
Frequency
2500 2000 1500 1000 500 0 0
2
4
6
8
10 Time
12
14
16
18
20
S použitím programu specsynt.m určení formantů všech samohlásek
Fundamental Frequency (Hz)
Left-line draw, Right-quit draw F4
F3
F2
F1
0
0
2000
4000 6000 Time (ms)
8000
clear, close all y = wavread('samohlasky8.wav'); specsynt
Syntéza samohlásek
Fundamental Frequency (Hz)
Left-line draw, Right-quit draw F4
F3
F2
F1
0
0
2000
4000 6000 Time (ms)
8000
Syntéza samohlásek
Fundamental Frequency (Hz)
Left-line draw, Right-quit draw F4
F3
F2
F1
0
0
5000 10000 Time (ms) clear, close all y = wavread('rozsah8.wav'); y = y(1:100000); specsynt
IIR filtr s jedním pólem (pohyb pólu po reálné ose)
IIR filtr s jedním pólem a jednou nulou (pohyb nuly a pólu po reálné ose)
Filtr se dvěma póly - rezonátor
Filtr se dvěma póly pásmová propust IIR y[n ] x[n ] a1 y[n 1] a 2 y[n 2]
z2 1 H (z ) j j z re z re 1 a1z 1 a 2z 2 0
0 2
f0 fs
a1 2r cos 0
a2 r 2
0
Filtr se dvěma póly pásmová propust IIR z2 z2 H (z ) 2 j j z re z re z zre j zre j r 2 0
0
0
0
Filtr se dvěma póly pásmová propust IIR z2 z2 H (z ) 2 j j j j 2 z re z re z zre zre r 0
0
0
0
z2 2 z zr cos 0 j sin 0 cos 0 j sin 0 r 2
Filtr se dvěma póly pásmová propust IIR z2 z2 H (z ) 2 j j j j 2 z re z re z zre zre r 0
0
0
0
z2 2 2 z zr cos 0 j sin 0 cos 0 j sin 0 r z2 2 z 2r cos 0z r 2
Filtr se dvěma póly pásmová propust IIR z2 z2 H (z ) 2 j j j j 2 z re z re z zre zre r 0
0
0
0
z2 2 2 z zr cos 0 j sin 0 cos 0 j sin 0 r z2 z2 2 2 2 z 2r cos 0z r z a1z a 2
Filtr se dvěma póly pásmová propust IIR z2 z2 H (z ) 2 j j j j 2 z re z re z zre zre r 0
0
0
0
z2 2 2 z zr cos 0 j sin 0 cos 0 j sin 0 r z2 z2 2 2 2 z 2r cos 0z r z a1z a 2
f0 0 2 fs
a1 2r cos 0
a2 r 2
Filtr se dvěma póly pásmová propust IIR z2 z2 H (z ) 2 j j j j 2 z re z re z zre zre r 0
0
0
0
z2 2 2 z zr cos 0 j sin 0 cos 0 j sin 0 r z2 z2 1 2 2 2 z 2r cos 0z r z a1z a 2 1 a1z 1 a 2z 2
f0 0 2 fs
a1 2r cos 0
a2 r 2
Filtr se dvěma póly (tlumené oscilace) 0
8 r 0,975
0
8 r 0,95
0
8 r 0,925
Filtr se dvěma póly - rezonátor (netlumené oscilace) 0
8 r 1,025
0
8 r 1,05
0
8 r 1,075
Filtr se dvěma póly - rezonátor (konstantní koeficient a2) a1 2 cos( / 6) a2 1
a1 2 cos( / 4) a2 1
a1 2 cos( / 3) a2 1
Filtr se dvěma póly - rezonátor (konstantní koeficient a1) a1 2 cos( / 4) a 2 0,8
a1 2 cos( / 4) a2 1
a1 2 cos( / 4) a 2 1,2
Pohyb pólů (konstantní úhel; různý poloměr)
Pohyb pólů po kružnici (různý úhel; konstantní poloměr)
Pohyb nul IIR filtru (po reálné ose)
IIR s více póly (pohyb vybraných pólů po ose)
IIR s více póly (pohyb vybraných pólů po kružnici)
2
0 -1 -1 1
0 Real Part
-1 -1
0 Real Part
-1 1
1
0 Real Part
Imaginary Part
-1 -1 1
0 Real Part
-1 -1
0 Real Part
1
2
0 -1 -1 1
0 Real Part
1
2
0 -1
1
2
0
1
1
2
0
1
2
0
-1
1
Imaginary Part
Imaginary Part
1
0 Real Part
2
0
Imaginary Part
-1
1
-1
Imaginary Part
2
0
-1
Imaginary Part
Imaginary Part
1
Imaginary Part
Imaginary Part
z-rovina rezonátorů
1
0 Real Part
1
2
0 -1 -1
0 Real Part
1
Amplitudové charakteristiky rezonátorů 1
1
1
0.5
0.5
0.5
0
0
500
1000
0
0
500
1000
0
1
1
1
0.5
0.5
0.5
0
0
0
0
500
1000
0
500
1000
1
1
1
0.5
0.5
0.5
0
0
0
0
500
1000
0
500
1000
Analýza harmonických 1
1
0.5
0.9 0.8
0
0.7
-0.5 -1
0.6 0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
0.5 0.4
5000 4000
0.3
3000
0.2
2000 0.1
1000 0
0 0
0.05
0.1
0.15
0.2 Time
0.25
0.12
0.1
0.08
0.06
0.04
0.02
0.3
0.35
0.4
0
1000
2000
3000 h1 h2 h3 h4 h5 h6 h7 h8 h9
4000
5000
600
Filtrační syntéza větru F0
1000
500
0
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5 6 ---> cas [s]
7
8
9
vitr
0.5
0
-0.5
frekvence
4000
2000
0
Filtrační syntéza větru clear, fs = 8000; % vzorkovaci frekvence [Hz] doba = 10; % doba trvani tonu [s] x=2*rand(1,fs*doba)-1; % generovani bileho sumu nT=0:1/fs:doba-1/fs; % casova osa
% souradnice ridicich bodu sily vetru X=[0 .15 .3 .4 .5 .65 .7 .75 .8 .85 .9 .95 1]; Y=[0 .2 .1 .3 .05 .3 1 .8 1 .5 1 .7 .1]; Fmin=100; Fmax=900; y=(Fmax-Fmin)*Y+Fmin; % casovy prubeh interpolovane ridici frekvence fr=interp1(X,y,nT/nT(end));
Filtrační syntéza větru % navrh rezonatoru B = 100; % sirka pasma rezonatoru R = 1-B*pi/fs; % vypocet polomer polu a =-2*R*cos(2*pi*fr/fs); % vypocet koeficientu b0=(1-R)*sqrt(R*(R-4*cos(2*pi*fr/fs)+2)+1); % norm.koeficient y=zeros(1,length(x)); for n=3:length(x) y(n)=b0(n)*x(n)-a(n)*y(n-1)-(R.^2)*y(n-2); end
Filtrační syntéza vln
1
4000
1000
A
B
fr
0.5
2000
500
0
0
0
0
5
0
5
0
5
vitr
1
0
-1
0
2
4
6
8
10
12
14
4
frekvence
4000
x 10
2000
0
16
0
2
4
6
8
10 12 ---> cas [s]
14
16
18
Filtrační syntéza vln % souradnice ridicich bodu X =[0 .2 .25 .35 1]; % casova osa Y_A=[0 .8 .15 .8 .1]; % amplituda Y_B=[0 320 400 600 4000]; % sirka pasma Y_f=[80 80 1000 1000 1000]; % rezonancni frekvence % casovy prubeh interpolovane ridici amplitudy G=interp1(X,Y_A,nT/nT(end)); % casovy prubeh interpolovane sirky pasma B=interp1(X,Y_B,nT/nT(end)); % casovy prubeh interpolovane ridici rezonancni f fr=interp1(X,Y_f,nT/nT(end));
Filtrační syntéza vln x=2*rand(1,fs*doba)-1;
for n=3:length(x) R(n) = 1-B(n)*pi/fs; % vypocet polomer polu a(n) =-2*R(n)*cos(2*pi*fr(n)/fs); % vypocet koeficientu b0(n)=(1-R(n))*sqrt(R(n)*(R(n)-4*cos(2*pi*fr(n)/fs)+2)+1); % norm.koeficient y(n)=G(n)*(b0(n)*x(n)-a(n)*y(n-1)-(R(n).^2)*y(n-2)); end
Filtrační syntéza
Aplikace s šumem rezonátory a obálkami •buben
•činel
Filtrační syntéza řídící frekvence 8000 6000 4000 2000 0
0
100
200
300
400
500
600
700
800
900
1000
600
700
800
900
1000
déšť 0.1 0.05 0 -0.05 -0.1
0
100
200
300
400
500
Filtrační syntéza hodiny
Fr=3500; B Fr=3000; B
= 550; = 750;
Filtrační syntéza 1
housle
0
-1
0
0.5
0
0.01
0
0.5
1
1.5
2
2.5
1 0 -1 0.02
0.03
0.04
0.05
0.06
50 0 -50 1
1.5
2
2.5
1
Frequency
0.8
% filtr (model housli) %%%%%%%%%%%%% F = [500, 1500, 3000, 4000]; BW = [300, 200, 700, 1500];
0.6 0.4 0.2 0
1
2
3
4 Time
5
6
7 4
x 10
Filtrační syntéza klarinet
0.5 0 -0.5 0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
0.8 0.6 0.4 0.2 0 0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
0.5 0 -0.5 0
% navrh rezonatoru fr = 900; % rezonancni frekvence B = 1200; % sirka pasma rezonatoru
Syntéza strojů vlak
letadlo
Syntéza materiálu dřevo
•kov
•sklo
Potlačení šumu v řeči bankou filtrů
Potlačení šumu v řeči bankou filtrů
Potlačení šumu v řeči bankou filtrů banka filtrů
Dilci normovane propusti 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 20
40
60
80
100
120
Potlačení šumu v řeči bankou filtrů zpracování signálů v i-tém pásmu
Potlačení šumu v řeči bankou filtrů
Potlačení šumu v řeči bankou filtrů
Potlačení šumu v řeči bankou filtrů
Potlačení šumu v řeči bankou filtrů
Potlačení šumu v řeči bankou filtrů III (generování rušení) %%%%%%%%%%%%%%%%%% GENEROVANI SUMU %%%%%%%%%%%%%%%%%%%% k_noise= 0.1;
sig=input('1 = sinusove ruseni; 2 = nahodny sum ... ') if sig==2, noise=k_noise*randn(length(xc),1); end; if sig==1, % rusivy signal 800H z noise=sqrt(2)*k_noise*sin(2*pi*(0:length(xc)-1)*800/8000)'; end; x=xc+noise; 'cinitel odstupu signalu k sumu' snr=10*log10(sum(xc.^2)/sum(noise.^2))
Potlačení šumu v řeči bankou filtrů IV (banka filtrů)
f_s=8; % vzorkovaci frekvence [kHz] P=8; % pocet propusti f_r=f_s/(2*P)*(0:P-1); % vypocet rezonancnich frekvenci R=0.7; % polomer polu b=-2*R*cos(2*pi*f_r/f_s); % vypocet koeficientu rezonatoru for i=1:P % normovani charakteristik Ha(:,i)=(freqz(1,[1 b(i) R.^2],128)); Ham(i)=max(abs(Ha(:,i))); % vypocet normovacich koef. Han(:,i)=(freqz(1/Ham(i),[1 b(i) R.^2],128)); end; Dilci normovane propusti plot(abs(Han)); axis tight % zobrazeni ampl. frekvencnich ch. 1 title('Dilci normovane propusti') 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 20
40
60
80
100
120
Potlačení šumu v řeči bankou filtrů (banka filtrů) for k=1:P % zobrazeni impulsnich charakteristik subplot(3,3,k), impz([1 0 0],[1 b(k) R.^2]) end; % zobrazeni z-roviny for k=1:P subplot(3,3,k), zplane([1 0 0],[1 b(k) R.^2]) end;
0
1
20 --> n
40
0 1
4. pasmo
20 --> n
40
0 1
5. pasmo 0.5 0
0
0
40
6. pasmo
0.5
0.5
20 --> n
-1 Imaginary Part
0
-0.5 1
20 --> n
40 1
7. pasmo
0.5
0
20 --> n
40
8. pasmo
0
0 -0.5
-1 0
20 --> n
40
0
20 --> n
0
20 --> n
40
0 Real Part
2
0 -1 -1
0 Real Part
2
0 -1 -1
0 Real Part
-1 -1
1
0 Real Part
2
0 -1 -1
0 Real Part
1
1 2
0 -1 -1
0 Real Part
1
1
2
0 -1
1
1
1
1
2
0
1
1
40
Imaginary Part
0
-1
Imaginary Part
0 0
2
1
-1 Imaginary Part
0.5
2
0
Imaginary Part
0.5 0.5
1
Imaginary Part
1
3. pasmo
Imaginary Part
2. pasmo
1
Imaginary Part
1 1. pasmo
0 Real Part
1
1 2
0 -1 -1
0 Real Part
1
Potlačení šumu v řeči bankou filtrů (stanovení mezí v pásmech) %%%%%% FILTRACE A VYPOCET MEZE PRO OREZAVANI %%%%%% k_noise= 0.1; k_int = 0.8; for i=1:P noisef(:,i)=filter(1/Ham(i),[1 b(i) R.^2],noise(1:1000)); % filtrace noisefa(:,i)=abs(noisef(:,i)); % usmerneni nff(:,i)=filter(1,[1 -k_int],noisefa(:,i)); % obalka mez(i)=mean(abs(nff(:,i))); % vypocet mezi ve vsech pasmech end; stem(mez)
Meze pro orezavani v jednotlivych pasmech 1.4 1.2 1 0.8 0.6 0.4 0.2 0
1
2
3
4 5 ---> poradi pasma
6
7
8
Potlačení šumu v řeči bankou filtrů (filtrace a rozklad do pásem) %%%%%%%%%%%%% POTLACENI SUMU BANKOU FILTRU %%%%%%%%%%%%% %%% FILTRACE A ROZKLAD DO PASEM - VYPOCET OBALEK %%%%%%% for i=1:P xf(:,i)=filter(1/Ham(i),[1 b(i) R.^2],x); % filtrace xfs(:,i)=sign(xf(:,i)+0.00001); % znamenko xfa(:,i)=abs(xf(:,i)); % usmerneni xfaf(:,i)=filter(1,[1 -k_int],xfa(:,i)); % obalka subplot(4,2,i), plot(xfaf(:,i)); axis tight xfafe(:,i)=abs(xfaf(:,i)-mez(i)); % oriznuti xr(:,i)=xfafe(:,i).*xfs(:,i); subplot(4,2,i), plot(xf(500:1000,i)) subplot(4,2,i), plot(xr(500:1000,i)); axis tight end; xfs xs=sum(xr');
xf
xfa
xfaf
xfafe
xr
Potlačení šumu v řeči bankou filtrů 4 2 0 -2
1. pasmo
2 0
0.5 0 -0.5
1 0.5 0 -0.5
3. pasmo
10
100 200 300 400 500 1
1. pasmo
5
-2 100 200 300 400 500
2 1 0 -1
2. pasmo
15
4. pasmo
0
10 8 6 4 2
1000 2000 3000 4000 5000 6 4 2
2. pasmo
4 3. pasmo
4. pasmo 2
5. pasmo
100 200 300 400 500 0.5
6. pasmo
0 -0.5 100 200 300 400 500 7. pasmo
100 200 300 400 500
1000 2000 3000 4000 5000 2.5 2 1.5 1 0.5
100 200 300 400 500 1 0.5 0 -0.5
8. pasmo
100 200 300 400 500
5. pasmo
1000 2000 3000 4000 5000
6. pasmo
1.5 1 0.5
7. pasmo
2
8. pasmo
1000 2000 3000 4000 5000
-10
100 200 300 400 500 4 2 0 -2 -4
3. pasmo
100 200 300 400 500 2 1 0 -1
5. pasmo
100 200 300 400 500 1
6. pasmo
0 -1 100 200 300 400 500
1
4. pasmo
-2
7. pasmo
-1 1000 2000 3000 4000 5000
2
100 200 300 400 500
0
0
1
2. pasmo
-10
1000 2000 3000 4000 5000 3
1. pasmo 0
1000 2000 3000 4000 5000 1.5 1 0.5
10
0 1000 2000 3000 4000 5000
-1 100 200 300 400 500
10
100 200 300 400 500
100 200 300 400 500 1 0 -1
8. pasmo
100 200 300 400 500
Potlačení šumu v řeči bankou filtrů xf
x
xr
xs
Potlačení šumu v řeči bankou filtrů for i=1:3 soundsc(x); pause(1), soundsc(xs); pause(1);end; subplot(211); specgram(x); subplot(212); specgram(xs);
1
0.8
0.8
0.6
0.6
---> f
Frequency
Spektrogram puvodniho signalu
1
0.4 0.2
0.2
0
200
400
600
800
1000 Time
1200
1400
1600
0
1800
1
1
0.8
0.8
0.6
0.6
---> f
Frequency
0
0.4
0.4 0.2 0
0
500
1000
1500 2000 ---> n Spektrogram signalu s potlacenym sumem
0
500
1000
2500
0.4 0.2
0
200
400
600
800
1000 Time
1200
1400
1600
1800
0
1500 ---> n
2000
2500