------------------------------------------------------------------- FÁZOVÝ VOKODÉR ------------------------------------------------------------------- Roman Čmejla, textová verze 4. přednášky ze SMS, 23. října 2017 OBSAH ------------------------------------------------------------- SPEKTRÁLNÍ ANALÝZA Fourierovy řady Diskrétní Fourierovy řady Fourierova transformace Diskrétní Fourierova transformace Krátkodobé Fourierovo spektrum FÁZOVÝ VOKODÉR Analýza Transformace Změna délky signálu Frekvenční posunutí Whisperizace Robotizace Potlačení šumu Syntéza ------------------------------------------------------------------- SPEKTRÁLNÍ ANALÝZA Fourierovy řady Trigonometrický tvar Fourierových řad Spektrální (polární) tvar Fourierových řad Komplexní (exponenciální) tvar Fourierových řad komplexní koeficient Fourierovy řady -- Diskrétní Fourierovy řady K výpočtu spektra periodických číslicových signálů lze použít vztah VZTAHY Z PŘEDNÁŠKY ... ... – 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 VZTAH Z PŘEDNÁŠKY ... • Spojité signály (popsané analytickou funkcí) • Na neperiodický signál se nahlíží jako na signál, jehož T jde k nekonečnu • Místo FŘ se používá FT • Protože T jde k nekonečnu, deltaf jde k nule … spektrum spojité VZTAH Z PŘEDNÁŠKY ... -- Od FT k DFT VZTAH Z PŘEDNÁŠKY ... • Číslicové signály (nejsou spojité a nejsou nekonečně dlouhé) • Numerický ekvivalent FT bude VZTAH Z PŘEDNÁŠKY ... • 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 VZTAH Z PŘEDNÁŠKY ... • 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). -- Zpětná (inverzní) DFT DFT VZTAH Z PŘEDNÁŠKY ... IDFT VZTAH Z PŘEDNÁŠKY ... • 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.) -- 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í -- 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 -- Spektrální analýza Zobrazení signálů ve frekvenční oblasti Frekvenční osa v periodogramu Jednostranné a dvoustranné spektrum Porovnání oken Potlačení prosakování váhováním signálu Doplnění nul Spektrogramy – rozlišení Spektrum samohlásek Spektrogramy 3d zobrazení ------------------------------------------------------------------- FÁZOVÝ VOKODÉR "Vocoder" je zkratka pro "Voice Coder" a označuje se tak zařízení, které kóduje hlas. Název pochází ze zpracování analogového signálu již ze 40-tých let. Řada populárních syntezátorů (Moogs, Korgs, atd.) má funkci "vokodér" Fázový vokodér, využívající fázové informace, je založen na přímé a inverzní krátkodobé Fourierově transformaci. Fázovým vokodérem lze posouvat nebo měnit obsah spektra audio signálů, upravovat délku signálu a upravovat barvu, vše vzájemně nezávisle bez nechtěných efektů. signál | | V _____________ | | | analýza | | DFT | |_____________| | | V ______________ | | | transformace | | ve spektru | |______________| | | V _____________ | | | syntéza | | IDFT | |_____________| | | V signál Představme si, že stlačujeme či natahujeme časovou osu spektrogramu, čímž měníme časové charakteristiky, zatímco krátkodobé spektrální charakteristiky zůstávají zachovány. Pokud je spektrogram úzkopásmový (okno pro analýzu je delší než základní perioda a jednotlivé harmonické jsou rozlišitelné), pak základní frekvence a její harmonické zůstávají zachovány a při prodloužení signálu základní perioda neklesá (jako při zpomalení magnetofonu či gramofonu). Nejobtížnějším krokem algoritmu je aproximace fáze modifikovaného spektra, kdy je pro modifikaci použito původního fázového rozdílu jednotlivých spektrálních čar mezi segmenty. -- Volba parametrů Délka okna M: delší představuje lepší frekvenční rozlišení, horší rozlišení v čase Typ okna: jakékoliv nepravoúhlé (Hamming, Hanning, Blackman, atd.) Počet bodů FFT: optimilizace omezuje na 2^n; např. 1024 Krok mezi segmenty: zlomek M; např. M/8 -- Změna délky signálu (Time Stretching) - úpravy záznamu pro playback Modifikace kroku R R = 2 => 2x delší signál R = 0.5 => 2x kratší signál -- Frekvenční posunutí (Pitch Shifting) - důležitý nástroj v nahrávacím studiu pro úpravu výšky hlasu _____________ _______________ | | | | | změna délky | | převzorkování | vstup ---> | N2 / N1 | ---> | N1 / N2 | ---> výstup |_____________| |_______________| 1 / 2 2 / 1 = stejná délka, 2x hlubší 2 / 1 1 / 2 = stejná délka, 2x vyšší interpolace / decimace R = 2/1 resample(y,1,2) -- Robot phaseX = 0.*cumsum(D_new'); -- Whisper phaseX = 2*pi*rand(size(D_new,2),size(D_new,1)); -- Potlačení šumu % generování šumu noise=0.0169*(randn(length(signal),1)); snr=10*log10(sum(signal.^2)/sum(noise.^2)) signal=signal+noise; % transformace coef=0.02; r=abs(X')./window_length; Y = (X'.*r./(r+coef))';