A2B31SMS 4. PŘEDNÁŠKA Fázový vokodérsami.fel.cvut.cz/sms/SMS04.pdf · A2B31SMS –...
Transcript of A2B31SMS 4. PŘEDNÁŠKA Fázový vokodérsami.fel.cvut.cz/sms/SMS04.pdf · A2B31SMS –...
A2B31SMS – 4. PŘEDNÁŠKA 23. října 2017
Fázový vokodér • Spektrální analýza
• Fourierovy řady
• Diskrétní Fourierovy řady
• Fourierova transformace
• Diskrétní Fourierova transformace
• Fázový vokodér
• Analýza
• Transformace
• Syntéza
• Triky – změny v čase a ve frekvenci
Fourierovy řady I
• Jean Baptiste Fourier (francouzský matematik 1768 - 1830)
• Harmonická analýza
Libovolný periodický signál lze rozložit na
jednotlivé harmonické složky.
• Harmonická syntéza
Kombinací harmonických složek lze vytvořit
prakticky libovolný periodický signál.
Fourierovy řady II
• Trigonometrický tvar Fourierových řad
a0 …stejnosměrná složka
ak, bk …koeficienty Fourierovy řady
k …pořadí harmonické složky
1
000)]sin()cos([)(
kkk
tkbtkaatx
T
kdttktx
Ta
0
0)cos()(
2
T
dttxT
a0
0)(
1T
kdttktx
Tb
0
0)sin()(
2
Fourierovy řady III
• Spektrální (polární) tvar Fourierových řad
ck … amplituda k-té spektrální složky
k … fáze k-té spektrální složky
0
0)cos()(
kkk
tkctx
k
k
ka
barctan
22
kkkbac
Fourierovy řady IV
• Komplexní (exponenciální) tvar Fourierových řad
Xk … komplexní koeficient
k
tk
kXtx 0j
e)(
kkXc 2)j(
2
1kkkbaX
Fourierovy řady
2
2
2j 0e)(1
T
T
tkf
k dttxT
X
Diskrétní Fourierovy řady
NnkN
n
nxN
kX /2j1
0
e][1
][
• K výpočtu spektra periodických číslicových signálů lze použít vztah
2
2
2j 0e)(1
T
T
tkf
k dttxT
X
Diskrétní Fourierovy řady
NnkN
n
nxN
kX /2j1
0
e][1
][
• K výpočtu spektra periodických číslicových signálů lze použít vztah
2
2
2j 0e)(1
T
T
tkf
k dttxT
X
– Pro signál popsaný N vzorky je podstatných N/2 hodnot spektra. Dalších N/2 hodnot jsou čísla komplexně sdružená a není třeba je počítat.
Diskrétní Fourierovy řady
NnkN
n
nxN
kX /2j1
0
e][1
][
• K výpočtu spektra periodických číslicových signálů lze použít vztah
2
2
2j 0e)(1
T
T
tkf
k dttxT
X
– Pro signál popsaný N vzorky je podstatných N/2 hodnot spektra. Dalších N/2 hodnot jsou čísla komplexně sdružená a není třeba je počítat.
– Výpočtem podle výše uvedeného vztahu dostaneme diskrétní spektrum s hodnotami komplexních koeficientů na frekvencích k·Fs/N.
Diskrétní Fourierovy řady
NnkN
n
nxN
kX /2j1
0
e][1
][
• K výpočtu spektra periodických číslicových signálů lze použít vztah
2
2
2j 0e)(1
T
T
tkf
k dttxT
X
– Pro signál popsaný N vzorky je podstatných N/2 hodnot spektra. Dalších N/2 hodnot jsou čísla komplexně sdružená a není třeba je počítat.
– Výpočtem podle výše uvedeného vztahu dostaneme diskrétní spektrum s hodnotami komplexních koeficientů na frekvencích k·Fs/N.
– Spektrum můžeme počítat i pro k > N, dostaneme však stejné hodnoty jako pro základní interval -N/2 < k < N/2. Spektrum číslicových signálů je periodické s periodou Fs.
Od periodických signálů k
neperiodickým
• Spojité signály (popsané analytickou funkcí)
• Na neperiodický signál se nahlíží jako na signál, jehož T→∞
• Místo FŘ se používá FT
• Protože T→∞, Δf→0 … spektrum spojité
dttxfX ft2je)()(
2
2
2j 0e)(1
T
T
tkf
k dttxT
X
Od FT k DFT
dttxfX ft2je)()(
• Číslicové signály (nejsou spojité a nejsou nekonečně dlouhé)
• Numerický ekvivalent FT bude
NnkN
n
nxkX /2j1
0
e][][
• DFT je popsána stejným vztahem jako DFŘ
• Spektrum číslicového signálu je diskrétní a periodické
Diskrétní Fourierova transformace • Definiční vztah
NnkN
n
nxkX /2j1
0
e][][
Diskrétní Fourierova transformace • Definiční vztah
• Vstupem je N hodnot čísl. signálu (podle předpokladu jde o 1 periodu)
NnkN
n
nxkX /2j1
0
e][][
Diskrétní Fourierova transformace • Definiční vztah
• Vstupem je N hodnot čísl. signálu (podle předpokladu jde o 1 periodu)
• Výstupem je N hodnot komplexních koeficientů spektra na normovaných
frekvencích k/N, tj. na reálných frekvencích k·Fs/N.
NnkN
n
nxkX /2j1
0
e][][
Diskrétní Fourierova transformace • Definiční vztah
• Vstupem je N hodnot čísl. signálu (podle předpokladu jde o 1 periodu)
• Výstupem je N hodnot komplexních koeficientů spektra na normovaných
frekvencích k/N, tj. na reálných frekvencích k·Fs/N.
• Spektrum je periodické s periodou Fs, tj pro k > N dostaneme tytéž hodnoty.
NnkN
n
nxkX /2j1
0
e][][
Diskrétní Fourierova transformace • Definiční vztah
• Vstupem je N hodnot čísl. signálu (podle předpokladu jde o 1 periodu)
• Výstupem je N hodnot komplexních koeficientů spektra na normovaných
frekvencích k/N, tj. na reálných frekvencích k·Fs/N.
• Spektrum je periodické s periodou Fs, tj pro k > N dostaneme tytéž hodnoty.
• Hodnoty koeficientů pro N/2 < k < N jsou komplexně sdružené s prvními N/2
hodnotami, netřeba je počítat. Při určování modulu jednostranného spektra
je nutné násobit dvěma.
NnkN
n
nxkX /2j1
0
e][][
Diskrétní Fourierova transformace • Definiční vztah
• Vstupem je N hodnot čísl. signálu (podle předpokladu jde o 1 periodu)
• Výstupem je N hodnot komplexních koeficientů spektra na normovaných
frekvencích k/N, tj. na reálných frekvencích k·Fs/N.
• Spektrum je periodické s periodou Fs, tj pro k > N dostaneme tytéž hodnoty.
• Hodnoty koeficientů pro N/2 < k < N jsou komplexně sdružené s prvními N/2
hodnotami, netřeba je počítat. Při určování modulu jednostranného spektra
je nutné násobit dvěma.
• Pokud vybraných N vzorků signálu netvoří jednu periodu
(v praxi je to téměř vždy), jsou výsledné hodnoty zatíženy chybami
(objeví se neexistující složky).
NnkN
n
nxkX /2j1
0
e][][
Zpětná (inverzní) DFT DFT
NnkN
n
nxkX /2j1
0
e][][
IDFT
NnkN
n
kXN
nx /2j1
0
e][1
][
Zpětná (inverzní) DFT DFT
• Vztah pro IDFT se liší od DFT pouze ve znaménku exponenciální funkce.
Normovací koeficient 1/N se někdy uvádí u DFT.
NnkN
n
nxkX /2j1
0
e][][
IDFT
NnkN
n
kXN
nx /2j1
0
e][1
][
Zpětná (inverzní) DFT DFT
• Vztah pro IDFT se liší od DFT pouze ve znaménku exponenciální funkce.
Normovací koeficient 1/N se někdy uvádí u DFT.
• Do IDFT vstupuje vždy N hodnot dvoustranného spektra, tj. nejenom N/2
hodnot jednostranného spektra.
NnkN
n
nxkX /2j1
0
e][][
IDFT
NnkN
n
kXN
nx /2j1
0
e][1
][
Zpětná (inverzní) DFT DFT
• Vztah pro IDFT se liší od DFT pouze ve znaménku exponenciální funkce.
Normovací koeficient 1/N se někdy uvádí u DFT.
• Do IDFT vstupuje vždy N hodnot dvoustranného spektra, tj. nejenom N/2
hodnot jednostranného spektra.
• Pokud na signál aplikujeme nejprve DFT a následně IDFT, dostaneme
tentýž signál. Vyplývá to z toho, že popis signálu v časové i ve frekvenční
oblasti je ekvivalentní co do úplnosti informace. (Ve spektrální oblasti však
musíme vždy uvažovat jak modul, tak i fázi.)
NnkN
n
nxkX /2j1
0
e][][
IDFT
NnkN
n
kXN
nx /2j1
0
e][1
][
Fast Fourier Transform
• FFT – rychlý algoritmus výpočtu DFT
• Poskytuje stejné hodnoty jako DFT, ale mnohem rychleji
• Vysoké rychlosti je dosaženo optimalizovaným způsobem
• symetričnost exponenciálních členů, podobnost mezi lichými a sudými
koeficienty…
Fast Fourier Transform
• FFT – rychlý algoritmus výpočtu DFT
• Poskytuje stejné hodnoty jako DFT, ale mnohem rychleji
• Vysoké rychlosti je dosaženo optimalizovaným způsobem
• symetričnost exponenciálních členů, podobnost mezi lichými a sudými
koeficienty…
• Nejrychleji funguje v případech, že N je mocninou 2
• Např. pro N=1024 je FFT 200x rychlejší než DFT
Fast Fourier Transform
• FFT – rychlý algoritmus výpočtu DFT
• Poskytuje stejné hodnoty jako DFT, ale mnohem rychleji
• Vysoké rychlosti je dosaženo optimalizovaným způsobem
• symetričnost exponenciálních členů, podobnost mezi lichými a sudými
koeficienty…
• Nejrychleji funguje v případech, že N je mocninou 2
• Např. pro N=1024 je FFT 200x rychlejší než DFT
• V MATLABu
• fft(x) …spočítá DFT pro signál x
• ifft(x)…spočítá IDFT pro spektrum x
Váhování
* =
* =
0 20 40 60 80 100 120 140 160 180 200-2
-1
0
1
2
0 20 40 60 80 100 120 140 160 180-2
-1
0
1
2
0 20 40 60 80 100 120 140 160 180-1.5
-1
-0.5
0
0.5
1
Praktická aplikace DFT a FFT
• Analyzovaný signál rozdělíme do kratších úseků
Praktická aplikace DFT a FFT
• Analyzovaný signál rozdělíme do kratších úseků
• Délku segmentu volíme tak, aby se počet vzorků
N rovnal mocnině 2
Praktická aplikace DFT a FFT
• Analyzovaný signál rozdělíme do kratších úseků
• Délku segmentu volíme tak, aby se počet vzorků
N rovnal mocnině 2
• Pokud nelze zvolit N jako mocninu 2, doplníme
signál nulami
Praktická aplikace DFT a FFT
• Analyzovaný signál rozdělíme do kratších úseků
• Délku segmentu volíme tak, aby se počet vzorků
N rovnal mocnině 2
• Pokud nelze zvolit N jako mocninu 2, doplníme
signál nulami
• Vzorky vynásobíme vhodným oknem
Praktická aplikace DFT a FFT
• Analyzovaný signál rozdělíme do kratších úseků
• Délku segmentu volíme tak, aby se počet vzorků
N rovnal mocnině 2
• Pokud nelze zvolit N jako mocninu 2, doplníme
signál nulami
• Vzorky vynásobíme vhodným oknem
• Pomocí FFT vypočítáme komplexní koeficienty
spektra
Praktická aplikace DFT a FFT
• Analyzovaný signál rozdělíme do kratších úseků
• Délku segmentu volíme tak, aby se počet vzorků
N rovnal mocnině 2
• Pokud nelze zvolit N jako mocninu 2, doplníme
signál nulami
• Vzorky vynásobíme vhodným oknem
• Pomocí FFT vypočítáme komplexní koeficienty
spektra
• Do časové oblast se lze vrátit pomocí IFFT
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10-3
0
0.5
1
1.5
2
---> cas [s]
am
plit
uda
Jedna perioda harmonickeho signalu f=500 Hz
0 1000 2000 3000 4000 5000 6000 7000 80000
0.2
0.4
0.6
0.8
1
---> frekvence [s]
am
plit
uda
Zrcadlene spektrum harmonickeho signalu v meritku
Zobrazení signálů ve frekvenční oblasti
Frekvenční osa v periodogramu
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10-3
0
0.5
1
1.5
2
---> cas [s]
Jedna perioda obdelnikoveho signalu
0 1000 2000 3000 4000 5000 6000 7000 80000
0.2
0.4
0.6
0.8
1
---> frekvence <0...fs> [Hz]
Zrcadlene spektrum obdelnika
0 1 2 3 4 5 60
0.5
1
---> uhlova frekvence <0...2 [rad]>
b)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20
0.5
1
---> normovana uhlova frekvence <0...2> [-]
c)
0 5 10 150
0.5
1
---> poradi harmonicke
d)
Jednostranné a dvoustranné spektrum
-4000 -3000 -2000 -1000 0 1000 2000 3000 40000
0.2
0.4
0.6
0.8
1Dvoustranne spektrum obdelnika
---> f [Hz]
0 500 1000 1500 2000 2500 3000 3500 40000
0.5
1
1.5Amplitudove spektrum obdelnika v meritku
Porovnání oken
0 20 40 600
0.5
1
f(k)
Blackmanovo okno
0 0.5 1-150
-100
-50
0
|F| [d
B]
0 20 40 600
0.5
1
f(k)
Dolph-Cebys okno
0 0.5 1-150
-100
-50
0
|F| [d
B]
0 20 40 600
0.5
1
f(k)
Dolph-Cebys okno
0 0.5 1-150
-100
-50
0
|F| [d
B]
0 20 40 600
0.5
1
f(k)
Pravouhle okno
0 0.5 1-150
-100
-50
0
|F| [d
B]
0 20 40 600
0.5
1
f(k)
Hannovo okno
0 0.5 1-150
-100
-50
0
|F| [d
B]
0 20 40 600
0.5
1
f(k)
Hammingovo okno
0 0.5 1-150
-100
-50
0
|F| [d
B] N/4
N/6
Potlačení prosakování váhováním signálu
0 20 40 60 80 100 120
-1
-0.5
0
0.5
1
x2H[n
]
Signal x2[n] vahovany Hammingovym oknem, dve periody
n
0 10 20 30 40 50 600
0.2
0.4
|X2H(k
)|
Spektrum signalu x2H
[n] vahovaneho Hammingovym oknem
k
0 20 40 60 80 100 120
-1
-0.5
0
0.5
1
x2[n
]
x2[n]=sin(n*pi/10), n=0..63, dve periody
n
0 10 20 30 40 50 600
0.2
0.4
|X2(k
)|
Spektrum signalu x2[n]
k
0 20 40 60 80 100 120
-1
-0.5
0
0.5
1
x1H[n
]
Signal x1[n] vahovany Hammingovym oknem, dve periody
n
0 10 20 30 40 50 600
0.2
0.4
|X1H(k
)|
Spektrum signalu x1H
[n] vahovaneho Hammingovym oknem
k
0 20 40 60 80 100 120
-1
-0.5
0
0.5
1
x1[n
]
x1[n]=sin(k*pi/8), n=0..63, dve periody
n
0 10 20 30 40 50 600
0.2
0.4
|X1(k
)|
Spektrum x1[n]
k
Doplnění nul
0 5 10 15 20 250
0.5
1
1.5
2Jedna perioda obdelnikoveho signalu
0 1000 2000 3000 4000 5000 6000 7000 80000
0.5
1
1.5Zrcadlene spektrum obdelnika
---> frekvence <0...fs>
Spektrogramy – rozlišení
---> cas
--->
fre
kvence
0,128 s
0 0.2 0.40
500
1000
1500
2000
2500
3000
3500
4000
---> cas
0,064 s
0 0.2 0.40
500
1000
1500
2000
2500
3000
3500
4000
---> cas
0,032s
0 0.2 0.40
500
1000
1500
2000
2500
3000
3500
4000
---> cas
0,016 s
0 0.2 0.40
500
1000
1500
2000
2500
3000
3500
4000
Spektrum samohlásek
0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41-1
0
1
---> cas [s]
samohlaska "a"
0 500 1000 1500 2000 2500 3000 3500 40000
2
4
6
8
10
---> frekvence [Hz]
amplitudove spektrumf0 = 1/T
0 f
2
f3
T0 = 1/f
0
f0
f1
0.352 0.353 0.354 0.355 0.356 0.357 0.358 0.359 0.36 0.361-1
0
1
---> cas [s]
1 perioda samohlasky "a"
0 500 1000 1500 2000 2500 3000 3500 40000
0.5
1
1.5
---> frekvence [Hz]
amplitudove spektrum
f2 f
3
f1
Spektrogramy
0 0.1 0.2 0.3 0.4 0.5 0.6
-0.5
0
0.5
1
---> cas [s]
slovo "jedna"
---> cas [s]
--->
fre
kvence [
Hz]
0 0.1 0.2 0.3 0.4 0.5 0.60
1000
2000
3000
4000
---> cas [s]
--->
fre
kvence [
Hz]
0 0.1 0.2 0.3 0.4 0.50
1000
2000
3000
4000
0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41-1
-0.5
0
0.5
1
---> cas [s]
samohlaska "a"
---> cas [s]
--->
fre
kvence [
Hz]
0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.410
1000
2000
3000
4000
---> cas [s]
--->
fre
kvence [
Hz]
0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.410
500
1000
širokopásmové
úzkopásmové
Spektrogramy
a) širokopásmový spektrogram – dobré rozlišení v čase
(základní frekvence je určena vertikálními pruhy)
load osum.asc;
sig = osum; fs = 8000;
subplot(2,1,1);
specgram(sig,1024,fs,hamming(32),30);
title(‘wideband spectrogram')
xlabel(''), ylabel('frequence [Hz]')
b) úzkopásmový spektrogram – dobré frekvenční rozlišení
(základní frekvence je určena horizontálními pruhy)
subplot(2,1,2);
specgram(sig,1024,fs,hamming(512),500);
title(‘narrowband spectrogram')
xlabel('---> cas [s]'), ylabel('frequence [Hz]')
3d zobrazení
Aplikace: vokodér
Vokodér
Frekvenční posunutí
Časové prodloužení a zkrácení
Triky s vokodérem
1
0
21 n
k
n
mkj
km exn
X
1
0
21 n
m
n
mkj
mk eXn
x
Vokodér
Re-syntéza
Krátkodobá Fourierova transformace
Vokodér
Změna základní periody (pitch shifting) bez časového zkreslení
ve studiích využíváno k úpravě délky
Libovolné změny ve spektrálních obálkách
Prodlužení nebo zkrácení času (komprese, expanze) bez zkreslení
základní periody
Triky s vokodérem
lze využít ve studiu ke korekcím
Vokodér
Změna základní periody (pitch shifting) bez časového zkreslení
• Úzkopásmový spektrogram (zachovává spektrální charakteristiky)
=> okno ~ 30-40 ms
• 50% - 75% překrytí je optimální pro rekonstrukci
SPEKTRÁLNÍ MANIPULACE - INTERPOLACE
• krok nové časové mřížky je dán 1/R
• amplitudová spektra jsou lineárně interpolována
• pro rekonstrukci signálu původní je důležitý fázový rozdíl
Prodlužení nebo zkrácení času (komprese, expanze) bez zkreslení
základní periody ve studiích využíváno k úpravě délky
Triky
Časově pozměněný signál je převzorkován na původní délku
Vokodér I
% encode
X = []; k=1;
for start = 0:window_shift:N-window_length,
frame = sig(start+1:start+window_length)…
.*hamming(window_length);
X(:,k)=fft(frame);
k=k+1;
end
Vokodér II
% interpolation
%Y=X;
Vokodér II
% interpolation
%Y=X;
Xmag = interp1q([0:size(X,2)-
1]',abs(X'),[0:1/R:size(X,2)-2]');
Vokodér II
% interpolation
%Y=X;
Xmag = interp1q([0:size(X,2)-
1]',abs(X'),[0:1/R:size(X,2)-2]');
new_grid=floor(0:1/R:size(X,2)-2)+1;
Vokodér II
% interpolation
%Y=X;
Xmag = interp1q([0:size(X,2)-
1]',abs(X'),[0:1/R:size(X,2)-2]');
new_grid=floor(0:1/R:size(X,2)-2)+1;
D=diff(angle(X'))';
Vokodér II
% interpolation
%Y=X;
Xmag = interp1q([0:size(X,2)-
1]',abs(X'),[0:1/R:size(X,2)-2]');
new_grid=floor(0:1/R:size(X,2)-2)+1;
D=diff(angle(X'))';
D_new=D(:,new_grid);
Vokodér II
% interpolation
%Y=X;
Xmag = interp1q([0:size(X,2)-
1]',abs(X'),[0:1/R:size(X,2)-2]');
new_grid=floor(0:1/R:size(X,2)-2)+1;
D=diff(angle(X'))';
D_new=D(:,new_grid);
phaseX = cumsum(D_new');
Vokodér II
% interpolation
%Y=X;
Xmag = interp1q([0:size(X,2)-
1]',abs(X'),[0:1/R:size(X,2)-2]');
new_grid=floor(0:1/R:size(X,2)-2)+1;
D=diff(angle(X'))';
D_new=D(:,new_grid);
phaseX = cumsum(D_new');
Y = (Xmag .* exp(j*phaseX))';
Vokodér III
% decode
k=1; N_new=size(Y,2)*window_shift+window_length;
signal_y=zeros(N_new,1);
for start = 0:window_shift:(size(Y,2)-1)*window_shift,
segment=real(ifft(Y(:,k),window_length))…
.*hamming(window_length);
signal_y((start+1):(start+window_length))...
=signal_y((start+1):(start+window_length))+segment;
k=k+1;
end
Potlačení šumu pomocí vokodéru nonlinear spectral subtraction
[Vaseghi,S.V.: Advanced Signal Processing and Digital Signal Processing]
% spectral manipulation
%
coef=0.02;
r=abs(X')./window_length
;
Y = (X'.*r./(r+coef))';
Potlačení šumu pomocí vokodéru nonlinear spectral subtraction
[Vaseghi,S.V.: Advanced Signal Processing and Digital Signal Processing]
% spectral manipulation
%
coef=0.02;
r=abs(X')./window_length
;
Y = (X'.*r./(r+coef))';
Potlačení šumu pomocí vokodéru nonlinear spectral subtraction
[Vaseghi,S.V.: Advanced Signal Processing and Digital Signal Processing]