Seminární práce
Transkript
Seminární práce
VŠB-Technická Univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra Informatiky KARAOKE květen 2007 Karel Kratochvíl 1 Prohlášení Prohlašuji, že tato seminární práce je mým původním autorským dílem, které jsem vypracoval samostatně. …………………………………..…………………. Karel Kratochvíl 2 Abstrakt Tato Seminární práce se zabývá metodami a principy jak potlačit hlas z nahrávky v souvislosti s využitím karaoke. Popisuje metody, které máme k dispozici pro digitální i analogové nahrávky. Dále popisuje nástroje, které jsou vhodné pro odstranění zpěvu z nahrávek a to za pomocí hardwarových tak i softwarových prostředků. Popisuje a porovnává teoretickou a praktickou úspěšnost. Zabývá se také implementačními prostředky. Klíčová slova : MIDI, KARAOKE, EKVALIZER 3 1. Úvod V této seminární práci se zabývám možnostmi, jak potlačit zpěv z nahrávky. Jedná se o problém, kterým se už delší dobu zabývá hodně odborníků. Existuje více metod jak dosáhnout separace. Tento úkol lze nazvat jako „ KARAOKE “. Karaoke je zpívání písniček na playback. Seminární práci lze rozdělit do dvou kapitol a to na řešení pomoci hardwaru a softwaru. První z technik, kterou jsem v práci použil je řešení pomocí hardwaru a můžeme se s ní setkávat u různých druhů tzv. „ Karaoke skříněk “. Karaoke skříňky se vyskytují jak v hudebních klubech, tak i na různých veřejných místech. Tato první technika se může pro někoho zdát být nedostačující, a proto se hledá nějaká další technika, která by využívala softwarových algoritmů. Než se ale budeme zabývat softwarovými algoritmy, popíšeme si co je to vlastně digitalizace zvuku. Jelikož se softwarové algoritmy od sebe liší různou náročností, popíšeme si je postupně od nejjednodušších. Mezi první z nejjednodušších metod patří metoda, která využívá rozhranní MIDI. Toto rozhranní nám umožňuje vytvořit vlastní kopii skladby, aniž bychom chtěli odstranit zpěv. Další z možností jak dosáhnout ekvivalentního výsledku je využití ekvalizérů. Tyto zařízení nám umožňují odfiltrovávat určitou část frekvenčního pásma, kde se zpěv nachází a tím jej potlačit nebo odstranit. Uvedené metody si dále podrobněji popíšeme a seznámíme se s jejich použitím. 4 Popis problému 2. Popis Problému Úkolem seminární práce je shrnutí a popsaní existujících metod, které umožňují oddělení hlasu zpěváka z nahrávky. Separace zvuku, nástroje, šumu, hluku, melodie či hlasu z jednolité tzv. komplexní nahrávky je problém. Signál každého nástroje zabírá určité frekvenční pásmo, tato pásma se však u téměř všech nástrojů alespoň částečně překrývají. Separace jednotlivých nástrojů je z komplexní nahrávky je velmi složitá. Vyskytuje se možnost, kterou lze nazvat „ Halfplaybeck “. Jedná se o možnost, kdy získat nahrávku bez zpěvu. Jestliže mixujeme skladby v nahrávacím studiu, kde se ve skladbě ještě každý nástroj objevuje ve zvláštní zvukové stopě se zpěvy potlačí a nahrávka se vytvoří (zmixuje) bez nich. Takových mixů využívají zpěvačky a zpěváci, kteří nemají stalou hudební skupinu, s kterou by mohli vystupovat na různých vstoupeních a proto si sebou vozí hudební kompakt, který obsahuje danou nahrávku a zpěvák pouze doplňuje daný zpěv. Jelikož pořízení této nahrávky je složité a drahé, budeme si muset poradit jiným dostupným a levným způsobem. Existující dostupné způsoby jsou : • • • • • Obvody na potlačení hlasu zpěváka – Existují zařízení, které jsou schopny do jisté míry odstranit zpěv ze stereo nahrávky. Jedná se o obvody, které pracují na principu otočení jedné fáze signálu nahrávky a odečtení této fáze od druhé. Jestliže se snažíme docílit toho, aby se zpěv dal odstranit (odrušit), je zapotřebí aby skladba měla jednu důležitou vlastnost a tou je že daný zpěv musí vést na střed. Tzn. že zpěv musí být veden stejně v obou kanálech. To ve většině případů bývá splněno, ovšem na střed bývají směřované i jiné nástroje, např. Malý bubínek, baskytara... Tato metoda pak vede k potlačení všech nástrojů směřovaných do středu. Rozhranní MIDI – je mezinárodní standard používaný v hudebním průmyslu jako elektronický komunikační protokol, který dovoluje moderním digitálním hudebním nástrojům, počítačům i dalším přístrojům komunikovat v reálném čase. Současně se jedná o standardní sériové rozhraní, které slouží k výměně MIDI-dat a přesné vzájemné synchronizaci v reálném čase Ekvalizéry – Jestliže chceme odfiltrovat nežádoucí frekvenci z nahrávky lze k tomu použít tzv. Filtry ( Ekvalizéry ). Díky těmto přístrojům lze odfiltrovat i zpěv a potom upravit a tak získat lepší kvalitu přehrávané skladby. Jestliže chceme při odfiltrovávání dosáhnout vynikajícího výsledku tak je za potřebí něco o těchto přístrojích vědět, proto si o nich něco povíme. Je však nutno si uvědomit, že frekvenční pásma jednotlivých nástrojů se se zpěvem překrývají a při filtraci tudíž nutně změníme i barvu ostatních nástrojů. Fourierova transformace – v této časti si popíšeme, základní vlastnosti fourierovy transformace Experimentální část – v této časti si prakticky ověříme zmíněné metody. Pro vymodelování obvodu potlačení hlasu, použijeme simulační el.program zvaný ELEKTRONICS WORKBENCH. 5 Digitalizace zvuku 3. Digitalizace zvuku Jestliže se má zvuk zpracovávat digitálně, je třeba jej navzorkovat. V teorii signálu se velmi často používá tzv. Shannonův vzorkovací teorém. Ten říká, jestliže chceme digitalizovat libovolný periodický signál bez ztráty informace, musí být frekvence vzorkování alespoň dvojnásobná než nejvyšší frekvence obsažena v signálu. Podle vzorkovacího teorému by k věrné reprodukci mělo stačit vzorkovat dvojnásobkem horní meze slyšitelnosti, tedy frekvence asi 40 kHz. Ve studiové praxi se však používá frekvence 96kHz. Kvalitu digitálního záznamu spolu se vzorkovací frekvencí spoluurčuje i přesnost měření a snímání analogového signálu. U digitálního záznamu zvuku je nejpraktičtější hovořit o přesnosti jako o počtu bitů na výstupu příslušného A/D převodníku. Počet úrovní vzorku sejmutého v každém okamžiku vzorkování se nazývá rozlišení nebo rozlišovací schopnost. Převážně se používá osmibitové nebo šestnáctibitové rozlišení (ve studiové praxi 24bitové). Důležitou technickou poznámkou může být ještě to, že část zařízení, která obsahují A/D nebo D/A převodníky pracují s jiným vnitřním rozlišením než je výstupní. Často se pracuje s větším vnitřním rozlišením ( dvacet bitů ) a na výstupu se pak objeví signál s rozlišením menším ( 16 bitů ). Za zmínku stojí také ještě to, že toto není jen záležitostí zvukových karet, ale dnes již jakýchkoli digitálních zařízení pracující se zvukem např. efektové procesory, zpožďovače, digitální procesory aj. 3.1. Převodníky Převodníky umožňující transformaci číslicově vyjádřené informace na analogové napětí a naopak zaujímají v řídícím systému klíčové postavení. Značná část měřených veličin bývá obvykle zaznamenána ve formě časově spojitého průběhu analogového napětí a do číslicové formy se musí převést pomocí převodníku. Převodníky tedy umožňují propojení mezi analogovou a číslicovou částí řídícího systému. Přesnost a rychlost převodu použitých převodníků je jedním z hlavních faktorů určujících použitelnost a kvalitu celého řídícího systému. 3.1.1. A/D Převodník Je elektronická součástka určená pro převod spojitého (neboli analogového) signálu na signál diskrétní (neboli digitální). Důvodem tohoto převodu je umožnění zpracování původně analogového signálu na číslicových počítačích. Mezi nimi v současnosti převažují digitální signální procesory DSP, které jsou právě na zpracování takových signálů specializované. V digitální podobě se také dají signály daleko kvalitněji zaznamenávat a přenášet. 3.1.2. D/A Převodník Je elektronická součástka určená pro převod diskrétního (neboli digitálního) signálu na signál spojitý (neboli analogový). D/A převodník se dnes používá všude tam kde je třeba z digitálního signálu udělat zpět analogový tedy ve všech přehrávačích (CD, MP3 přehrávač, Minidisc, …), zvukových kartách v počítačích. 6 Digitalizace zvuku • • Digitální signál - Signál tvořený řadou čísel, lze zpracovávat v počítači. Kopírováním* digitálních dat se zachovává kvalita. Analogový signál - Signál složený ze sinusových křivek, lze přehrát v reproduktorech nebo sluchátkách. Používá se také na magnetofonových páskách. Kopírováním analogových dat dochází k mírné ztrátě kvality. *Kopírováním se zde myslí třeba kopírování souborů. Převodem do jiného formátu kvalita zvuku utrpět může. Ve své podstatě není tvořen goniometrickými funkcemi, to jen my lidé jsme si vymysleli aproximaci, aby se nám lépe pracovalo. Např. V bodech nespojitosti (tj. Třeba skokové změně intenzity) 7 Hardwarové řešení 4. Hardwarové řešení 4.1. Potlačení hlasu (ve stereofonním záznamu) Tento obvod nám umožňuje potlačení hlasu ve stereofonní nahrávce tím, že se odstraní signály společně v obou kanálech. Obr.1 Obvod na potlačení hlasu Při záznamu levého a pravého zvukového kanálu se obvykle posadí hlas zpěváka doprostřed nahrávky mezi hudební nástroje levého a pravého kanálu. Převrátíme-li signál pravého kanálu a smísíme-li jej s kanálem levým, tak originální signály, které se svojí úrovní rovnaly, se v proti fázi zruší, anebo se podstatně potlačí jejich úroveň. První invertor s operačním zesilovačem (OZ) převrací fázi pravého kanálu a současně signál nepatrně zesiluje. Na výstup invertoru je připojen potenciometr R5. Signál z běžce potenciometru je dále směšován s levým kanálem (druhá polovina IO). Útlum se nastavuje potenciometrem. Na výstupu druhé poloviny IO je signál s potlačeným zpěvem nebo některým nástrojem, což si ověříme poslechem. Mimo jiné toto zapojení může posloužit, když si při poslechu desky nebo CD chceme prozpěvovat sami, aniž bychom byli rušeni originálním interpretem. Nevýhodou je, že budou potlačeny i všechny ostatní nástroje, které jsou na středu nahrávky. 8 Softwarové řešení 5. Softwarové řešení 5.1 Rozhranní MIDI MIDI ( Musical Instrument Digital Interface) je to mezinárodní standart, který se používá v hudebním průmyslu jako elektronický komunikační protokol, který umožňuje moderním digitálním nástrojům, počítačům i jiným přístrojům komunikovat v reálném čase. Současně se jedná o standardní sériové rozhraní, které je určeno k výměně MIDI-dat a přesné synchronizaci v reálném čase. 5.1.1 Funkce MIDI rozhranní Každé MIDI musí mít v sobě jakési svůj operační systém, který převádí vysílané povely na různé napěťové úrovně. MIDI jazyk je založen na zprávách ( informacích ) tak, jako každý jiný jazyk. Tyto zprávy se skládají z jednoho až několika bytů. První byte je vždy stavový a ostatní co následují, jsou datová. Jednoduše se to dá říci tak, že nejprve je rozkázáno co se má udělat a pak jsou zaslány informace se kterýma se pracuje. Ještě je zapotřebí podotknout, že MIDI je přenos sériový tzn.,že data jsou přenášena sériově ( v sérii za sebou ) a tak dochází při velkém objemu dat k určitému zpoždění, které se snaží MIDI norma eliminovat na minimum. Toto z teoretického hlediska velmi stručně vystihuje postatu MIDI komunikace na hardwarové úrovni. V následujícím textu se zaměřím pouze na MIDI povely ve tvaru, se kterými je možno se setkat v moderních sequencerech a hudebních programech. Moderní programy dokáží relativně složitý MIDI jazyk převádět do srozumitelných povelů a příkazů. DIN (Deutscher Industrie Normen) je soubor německých národních norem. 9 Softwarové řešení Setkáváme se s těmito povely: Kanálová data: • • • • • NOTA ZAPNUTA – NOTA VYPNUTA – Rytmus je po MIDI přenášen, tak že je vyslán povel ke stisku klávesy a tento zvuk stále hraje až do té doby, než přijde povel k jejímu spuštění. Celý tento proces je umožněn díky existenci krystalu – časové základny – s jejíž tiky je celý proces synchronizován. TLAK NA KLAVESY PO JEJICH STISKNUTÍ – Tyto povely jsou vysílány buďto pro celou klaviaturu nebo zvlášť pro každou klávesu. Tyto povely mají původ u klávesových nástrojů ( klavírů ). Jejich úkolem je simulovat hammer mechaniku klavírů a dát tak větší prostředky pro elektronické vyjádření. ZMĚNA POLOHY KONSTRUKTORŮ – Kontroléry mají původ na starých analogových nástrojích. Jsou to tzv. virtuální potenciometry či spínače, kterými se nastavují některé parametry zvuku v reálném světě. VOLBA BANKŮ A KONSTRUKTORŮ – Slouží k volbě rejstříku ať již přímo či jejich kombinací banků. OHÝBÁNÍ TÓNU – Slouží k vytváření efektů typu glissando Systémová data: • • • DATA REÁLNÉHO ČASU – čtvrtokénko, synchrotiky, synchropovely a aktivita. ZVLÁŠTNÍ SYSTÉMOVÉ DATA – Je to speciální oblast MIDI, kde jsou data standardizována jen částečně. Konkrétní náplň si mohou jednotlivý výrobci definovat po svém s ohledem na nejrůznější účely. SPOLEČNÁ SYSTÉMOVÁ DATA – lokátor, volby skladby, naladění, resetování systému S vývojem MIDI zařízení bohužel došlo k častým problémům. Zejména k takovým, že každá firma si vysvětlovala vše po svém a proto velmi často došlo k situaci, že některá MIDI zařízení od různých firem mezi sebou vůbec nekomunikovala. Z těchto důvodu začali vznikat různé standardy MIDI. 5.2 Ekvalizéry 10 Softwarové řešení Ekvalizéry jsou zařízení na úpravu frekvenčního spektra zvukového signálu. Existují dva základní druhy ekvalizérů a jsou to grafické a parametrické. Ještě sem mohou spadat různé filtry, které používají Fourierovu transformaci (DTF) resp. zjednodušená verze Fast FT (FFT). Platí, že ve výsledku nezáleží na tom, jestli je daná operace dosažena elektrickým obvodem nebo matematickou funkcí. 5.2.1 Grafické ekvalizéry Jedná se o základní typ ekvalizéru. Ve většině zapojení se vyskytuje řada aktivních prvků v různých dosti komplikovaných zapojeních. Pro naši potřebu vystačíme s rámcovým popisem. Přivádíme signál na vstup sady pásmových propustí, za nimž se vyskytuje stejný počet potenciometrů. Potenciometr se též nazývá jako regulátor úrovně signálu. Signál z potenciometru se sčítá a přivádí na výstup. Zapojení konstruováno tak, že při poloviční výchylce se frekvenční charakteristika nezmění. Obrázek nám znázorňuje frekvenční charakteristiku filtru a ukazuje střední frekvenci 1kHz a rozsahem regulace ± 12 dB při různých výchylkách potenciometru. Obr.2 Frekvenční charakteristika filtru Obrázek nakreslen v logaritmickém měřítku, lze z něj dobře vyčíst, že pro úroveň -3dB (popř. +3dB, vzato od nuly) je jeho mezní frekvence asi 200 Hz – 5 kHz, tj 1/5 a 5-ti násobek střední frekvence. Tato úroveň je zvolena pro demonstraci vlastností log. měřítka, skutečná mezní frekvence se počítá od tzv. „ špičky “ a nikoliv od nuly. Pásma jsou volena tak, aby mezi nimi nevznikaly mezery. Lze říci, že přenos v pásmu mezi středními frekvencemi těchto filtrů by měl být konstantní. Proto je nepochopitelné i u malých ekvalizérů nastavovat všechno na „ max “ u tahových a „ v pravo “ u otočných potenciometrů, nebo vše na stejnou, ale vyšší úroveň, jak lze spatřit na mixážních pultech u zvukařů. V praxi můžeme najít různé grafické ekvalizéry, které se dělí do různého počtu pásem. 11 Softwarové řešení U profesionálního zařízení lze najít ekvalizéry, které se rozlišují podle počtu pásem na jednu oktávu (1 , 1/2 , 1/3 ), kde třetinooktávový ekvalizér má 32 pásem. Ekvalizéry, které mají menší počet pásem se pak objevují ve vstupních jednotkách mixážních pultů, apod. Grafické ekvalizéry rozeznávají dvě zásadní omezení, jak lze vyčíst z předchozího textu. Počet pásem, jejich šířka a střední frekvence je pevně dána, stejně tak jako rozsah regulace jednotlivých pásem. Z toho plyne, že grafické ekvalizéry lze použít výhradně na úpravu frekvenční charakteristiky, jako je korekce vlastnosti reprosoustav, poslechového sálu aj. Grafické ekvalizéry mají výhodu v softwarové podobě, kde nastává možnost nastavení rozsahu regulace. 5.2.2 Parametrické ekvalizéry V zásadě se jedná o digitální zařízení, konstruované spíše jako filtry. Je možno u nich nastavovat libovolnou frekvenci, přenos po této frekvenci a tzv. činitel jakosti „ Q “. Jestliže činitele jakosti zvyšujeme, tím se nám dané pásmo zužuje. Takže nám tyto ekvalizéry umožňují znatelné použití ve funkci filtru. Nachází se u nich menší počet pásem ( neboli počet najednou použitelných plně nastavitelných filtrů ). U některých PC editorů je však možnost aplikace opakovat vždy s různým nastavením a lze tak účinně potlačit nežádoucí zvuky. Na obrázku je vidět možnost nastavení parametrického ekvalizéru. Obr.3 Nastavení parametrického ekvalizéru 12 Softwarové řešení Velká nevýhoda u těchto zařízení jako filtru je skutečnost, jestliže se v záznamu objeví nežádoucí zvuk, tak nemáme obvykle možnost získat přímo údaje, které potřebujeme k nastavení parametrického ekvalizéru. Pokud se tento ruch skládá převážně z určitých přesných frekvencí, může dojít k použití tohoto typu ekvalizéru, který je nevyhovující a to ze dvou důvodů. První důvod – jednotlivých frekvencí je mnoho a postupná aplikace na všechny složky trvá příliš dlouho. Druhý důvod – tato nevýhoda spočívá v tom, že lze pro střední frekvenci nastavit nenulovou šířku pásma, která neobsahuje jen jednu frekvenci a tím potlačí resp. zvýrazní i jiné frekvence v její blízkosti, což může být nežádoucí. Podstatného rozšíření filtračních možností lze dosáhnout užitím různých matematických operací ( jako např. některého z druhů Fourierovy transformace ). 5.2.3 FFT filtry Jedná se výhradně o programy, popř. zákaznické integrované obvody optimalizované pro danou funkci. Většina využívá tzv. Diskrétní Fourierovy transformace, což je funkce pro převod navzorkovaného signálu coby závislosti okamžité amplitudy na čase na jinou funkci - závislost max. amplitudy sinusovky na její frekvenci. Jinými slovy dostaneme touto operací z navzorkovaného (tedy digitálního) signálu jeho spektrum. A to tím přesnější, čím více vzorků máme k dispozici. Nebudu zabíhat do matematických detailů, jen uvedu pár skutečností užitečných při používání těchto programů. Pokud máme k dispozici například 1024 vzorků signálu, dostaneme po užití DFT spektrum signálů, které sahá od nuly (stejnosměrná složka) až do vzorkovací frekvence a má také 1024 vzorků. Dále je nutné, aby byla v navzorkovaném signálu obsažena celá perioda nejnižší frekvence, která je pro nás užitečná (kvůli rozlišitelnosti je lepší, aby byla doba vzorkování dvojnásobná oproti periodě této frekvence). V získaném spektru signálu budou sousední body vzdáleny právě o frekvenci, jejíž perioda je rovná době vzorkování, což je nejpodstatnější pro volbu vhodné doby vzorkování. Proti tomu ovšem stojí další fakt, a sice že počet (a tím i doba) výpočtů roste u DFT s druhou mocninou počtu vzorků. Proto byla vyvinuta řada postupů pro zmenšení počtu operací. Všechny se nazývají shodně Fast FT - FFT a nárůst již není tak markantní jako u DFT. Přesto doba výpočtu citelně roste. Těmito skutečnostmi je dobré se řídit při volbě počtu vzorků, abychom dosáhli cíle. Pokud tedy máme spektrum daného signálu, můžeme jej libovolně upravit a převést jej zpátky na signál, ovšem již upravený dle našich potřeb. A to je celý "vtip" této metody, kdy můžeme spektrum signálu ovlivňovat prakticky po jednotlivých frekvencích závislých pouze na vzorkovací frekvenci a počtu vzorků. Tyto principy užívají mimo jiné těž filtry k potlačení šumu apod. bývají také doplněny různými diagnostickými funkcemi, které podstatně usnadňují rozpoznání nežádoucích/žádoucích zvuků a jejich odstranění (rekonstrukci bez rušivých zvuků). 13 Softwarové řešení Na obrázku je ukázáno, jak lze pomocí fft filtru zesílit vysoké frekvence, trochu ztišit basy a hodně snížit (odfitrovat) ostatní frekvence. Obr.4 FFT filter HPF, high pass filter Nástroj pro oříznutí vysokých frekvencí LPF, low pass filter Nástroj pro oříznutí nízkých frekvencí (basů) Notch filter Nástroj, který ze zvuku odfiltruje jen určitou frekvenci. 14 Softwarové řešení 5.3 Transformace 5.3.1 Fourierova transformace V roce 1822 vypracoval matematik Fourier metodu nazvanou harmonická analýza. Tato metoda vychází z myšlenky, že jistou funkcí můžeme až na jistou chybu nahradit lineární kombinaci jiných jednodušších funkcí vybraných z vhodně zvolené množiny. Harmonická analýza slouží tedy k nalezení parametrů rozkladu složitého děje v součet jednoduchých signálů. Je vyjádření časově závislého signálu pomocí harmonických signálů, tzn. Funkcí sin a cos, obecně tedy funkce komplexní exponenciály. Slouží pro převod signálů z časové oblasti do oblasti frekvenční. Signál se může nacházet buď ve spojitém nebo diskrétním čase. Spojitý čas Fourierova transformace S(ω) funkce s(t) je definována integrálním vztahem Funkci s(t) vypočteme z S(ω) inverzní Fourierovou transformací Nevlastní integrály chápeme ve smyslu Cauchyovy hlavní hodnoty, tj. Dvojice ve Fourierově transformaci se nazývají originál (zde s(t)) a obraz (zde S(ω)). Vztah mezi originálem a obrazem vyjadřujeme zápisem a . V technické oblasti je ω úhlový kmitočet. Pak S(ω) představuje spektrum signálu s(t). Označení spektra volíme obvykle stejné jako označení signálu, ale velkým písmenem. Spektrum je komplexní veličina a lze vyjádřit ve tvaru . Velikost nazýváme amplitudové spektrum a úhel argS(ω) fázové spektrum signálu. 15 Softwarové řešení Diskrétní čas Fourierova transformace S(Ω) posloupnosti s(k) je definována vztahem Posloupnost s(k) vypočteme z S(Ω) inverzní Fourierovou transformací Někteří autoři označují tuto transformaci DtFT (discrete-time Fourier transformation), aby ji odlišili od Fourierovy transformace spojitého signálu. Zde nebudeme značením nijak odlišovat Fourierovu transformaci spojitého a diskrétního signálu. Vztah mezi signálem a jeho spektrem budeme tedy značit a . Spektrum diskrétního signálu se od spektra spojitého signálu liší tím, že je periodické s periodou 2π . 16 Softwarové řešení 5.3.2 Diskrétní Fourierova transformace Diskrétní Fourierova transformace našla velké uplatnění zejména s rozvojem výpočetní techniky. Součástí řady přístrojů jsou jednoúčelové procesory realizující tuto transformaci. Její hlavní rozvoj nastal po roce 1965, kdy J.W. Cooley a J.W. Tukey popsali velmi efektivní algoritmus výpočtu DFT, tzv. rychlou Fourierovu transformaci (FFT - Fast Fourier Transform). Díky tomuto algoritmu se stala diskrétní Fourierova transformace nejrozšířenějším prostředkem pro numerický výpočet Fourierovy transformace. Algoritmus FFT je také implementován ve všech dobrých matematických programech jako je např. Octave, Mathcad, Matematica, Maple, Matlab atd. Diskrétní Fourierova transformace mezi posloupnostmi , , je definována vztahy: přímá diskrétní Fourierova transformace a zpětná (inverzní) diskrétní Fourierova transformace Výpočet DFT podle definičního vztahu vyžaduje N2 komplexních součinů a N2komplexních součtů. Toto množství operací výrazně snižuje možnost aplikace DFT na výpočty v reálném čase. Existuje však efektivní algoritmus výpočtu DFT, nazývaný rychlá Fourierova transformace (FFT – Fast Fourier Transform), který vyžaduje jen N / 2log2(N) komplexních součinů a Nlog2(N) komplexních součtů. 17 Experimentální část 6. Experimentální část 6.1 Elektronics Workbench Pro experimentální část jsem si zvolil Elektronics Workbench. Jedná se program, který nám umožní simulování a modelování elektrického obvodu, aniž bychom jej museli pájet na plošný spoj. V tomto programu si namodelujeme a uděláme simulaci obvodu na potlačení hlasu zpěváka. Do obou vstupních kanálů jsem pustil z generátoru sinusový signál, jehož frekvence činila 1000Hz a amplituda 5 V. Po pár měřeních a ukázkách výstupu oscilátoru jsem docílil toho, že uvedený obvod pracuje jak má, ale nesmí se zapomínat na jeho funkčnost tzn. obvod odstraňuje zpěv z písně v obou kanálech. Na uvedeném obrázku 5 vidíme dva sinusové průběhy. Červený průběh znázorňuje původní signál z generátoru a modrý průběh ukazuje signál za prvním invertorem, který točí fázi pravého kanálu. Nyní stačí jen fáze odečíst, to nám zařizuje druhý invertor. Na druhém obrázku č. 6 vidíme výstup z oscilátoru po odečtení obou signálu, červeně je znázorněn původní signál a modře signál po odečtení obou fází. Obr.5 Výstup s oscilátoru Obr 6 Výstup z oscilátoru 18 Implementační část 7. Implementační část V této kapitole popíši prostředky, kterými jsem implementoval zvolené metody a vysvětlím některé algoritmy včetně ukázek kódu. 7.1 Použité prostředky Pro implementaci programu jsem si zvolil vývojové prostředí DEV- C++, který je vytvořen pro psaní C/C++ kódů a běží pod operačním systémem Windows. K implementaci zvolené metody my byl doporučen programovací jazyk C/C++. Doporučení spočívalo v tom, že program by v případě dopracování mohl být skutečně použitelný a tedy je třeba co nejvyšší efektivity a rychlosti. 7.2 Práce s „ *.wav “ soubory WAV je zkratka a běžně používaná přípona pro Waveform audio format. Tento zvukový formát byl vytvořen firmami IBM a Microsoft pro ukládání zvuku na PC. Jedná se o speciální variantu obecnějšího formátu RIFF. Přestože je možné ukládat do WAV souboru zvuk komprimovaně, např.MP3, většinou se používá nekomprimovaný zvuk v pulzní kódové modulaci( PCM ) . Pulzně kódová modulace je modulační metoda převodu analogového zvukového signálu na signál digitální. Jelikož PCM je bezdrátový formát, používá se nejčastěji WAV při zpracování zvuku. 7.3 Knihovna „wave “ Vstupem mého programu jsou *.wav soubory. Popíši důležité části formátu těchto souborů a nakonec předvedu ukázky kódu. Formát se v základu skládá z kolekce datových úseků. Každý datový úsek je tvořen 32-bitovým identifikátorem (4 znaky = název), 32-bitovou délkou a vlastním obsahem dat. 19 Implementační část Přehledný náhled na formát souborů ukazuje tabulka: Poznámky: • Délky úseků v sobě neobsahují délku identifikačního řetězce a délku-specifikujícího čísla • U souborů s více než jedním kanálem se střídají vzorky všech kanálů potom následuje další celý vzorek (u stereozáznamu jsou tedy vzorky ve sledu vzorek0levý, vzorek0pravý, vzorek0levý, vzorek0pravý, ….) • Většina WAV souborů je v tzv. Little-endian bytovém pořadí, tedy nejméně významný byte(neplést si byte a bit!) je nejvýznamnější, atd. 20 Implementační část 7.4.Ukázky kódu Úkolem v implementační části bylo naimplementovat načítání wav souboru, sečtení dvou kanálů do jedné stopy a uložení. A také naimplementovat filtraci, tak aby se potlačilo frekvenční pásmo, které zabírá hlas. Načteni,sečtení kanálů a uložení wav souboru Pro otevření a načtení wav souboru jsem použil: Wav_in::Wav_in(char *file_name){ ….. // Otevreni wav souboru f = fopen(file_name,"rb"); if (f==NULL){ printf("Nelze otevrit wav soubor\n"); exit(-1); } // Nacist wav ws = fread((void *)wav, sizeof(Wav_hdr), (size_t)1,f); if (ws!=1){ printf("Nelze nacist wav\n" ); exit(-1); } ….. } Hlavní procedura ( int main) je naprogramována, tak aby se výstupní soubor ( třída Wav_out) založila jako mono (channels = 1), a v následném cyklu, kde se čtou a zapisuji (while(infile.more_data_available())), načetl vždy 2 vzorky z prvního souboru (stereo - levý a pravý kanál) a po sloučení (L+P děleno 2) zapsal jako 1 vzorek do výstupního souboru. /*cyklus, kde se čtou a zapisuji data */ while (infile.data_available()) { double data = infile.read_input(); /*nacteni leveho a praveho kanalu*/ double dataL = infile.read_input(); double dataR = infile.read_input(); /*slouceni, vydeleni dvema a zapsani jako jeden vzorek*/ double dataMono = (dataL + dataR)/2; outfile.write_output(data); } 21 Implementační část Filtrace kanálů Na začátek jsem si vytvořil pole pro levý kanál a pro pravý kanál. Velikost obou polí jsem alokoval podle počtu vzorků zjištěných ze souboru. double *leftData = new double[numSamplesfft]; double *rightData = new double [numSamplesfft]; posléze pomocí cyklu infile.read() načítám postupně obě pole. Pak jsem si vytvořil další pole pro výsledek transformace FFT (o velikosti fftSamples) double *fftSamples = new double[numSamplesfft]; Nad pole fftSamples jsem provedl cyklus od určitého prvku po určitý prvek, který odpovídá hranicím frekvenčního pásma lidského hlasu tzn.(300 – 3400 Hz) a tyto prvky nastavil na 0, což prakticky znemená potlačení toho frekvenčního pásma. fft(fftSamples,leftData,numSamplesfft); for(long int i= (long int)(300/(sampleRate/numSamplesfft)); i<(long int)(3400/(sampleRate/numSamplesfft)); i++){ leftData[i]=0; } a v závěrečném cyklu beru postupně hodnoty z obou polí a slučuji do jednoho kanálu a výsledné hodnoty zrovna zapisuji přímo do outfile tedy takto: for(long int i=0; i < numSamples/2 - 1; i++){ outfile.write((leftData[i] + rightData[i])/2); } Ještě na závěr se nesmí zapomenout, že při alokaci pole musíme každé použité pole uvolnit a to pomocí např: delete[]leftData; 22 Implementační část Ve třídě wav_in.cpp se nachází Wav_in::Wav_in (char *file_name) jedná se o konstruktor třídy Wav_in, takže jeho zavoláním např: Wav_in(“mujsoubor.wav ”) se zkonstruuje instance třídy Wav_in, která zajistí načtení a analýzu toho souboru. Pro načtení wav souboru jsem použil: Wav_in infile(argv[1]); kde argv[1] je první argument z příkazové řádky programu a infile je název instance (proměnná třídy WAV_IN). Takže se načte soubor, jehož název je určen prvním argumentem na příkazové řádce, která spustí program. Načtení wav souboru pomocí argv[1], mi připadá univerzálnější, protože mi dovolí předhodit tomuto programu jakkoli pojmenovaný Wav soubor přes příkazovou řádku, kdežto kdybych tam zadal nějaký konkrétní wav soubor natvrdo tak se mi zkompiluje v programu, a díky čemuž je potom program téměř nepoužitelný v praxi. Výsledek úspěšného spuštění programu: 23 Závěr 8. Závěr Cílem mé práce bylo naimplementovat načtení, slučování dvou kanálů, uložení a filtrace na potlačení frekvenčního pásma. Po postupném prostudování zadané problematiky a následné implementace, jsem přicházel na to, že se ze zvukem dají dělat různé zajímavé věci, jako např. potlačení frekvenčního pásma, které zabírá hlas a nechat hrát jen hudbu, odrušení basů v nahrávce, slučování dvou kanálů ve stereowavce atd. Separace zpěvu v hudbě je složitý problém a existuje velmi mnoho metod s různou úspěšností, musí se vždy vynaložit hodně času a trpělivosti na to, aby byl daný problém správně vyřešen a bylo dosaženo očekávaných výsledků. Jeden z možných jednodušších postupů jsem řešil ve své bakalářské práci. OBVOD NA POTLAČENÍ HLASU – využívá myšlenky, jak potlačit ze stereo nahrávky to co je v obou kanálech. Aby tento obvod odstranil zpěv, musí se zpěv nacházet v obou kanálech stejně, jestliže tomu tak není, je obvod je nefunkční. Jenže ve stereo nahrávce nebývá obsažen jenom zpěv v obou kanálech. Se zpěvem však může docházet k tomu, že se odstraní různé části nástrojů, z toho plyne, že se nahrávka nedá poslouchat. MIDI – nejedná se o metodu pomocí, které by se dal odstranit zpěv z nahrávky a nelze ji srovnávat s jinými metodami. Ale jedná se o jednu z možností, jak lze získat skladbu bez jakéhokoliv zpěvu, což se hojně používá, pro dosažení velmi dobrých výsledků. 24 Použitá literatura 9. Použitá Literatura: [1] http://www.elektronikacz.borec.cz/Data/Potlaceni%20hlasu%20zpevaka.htm [2] http://cs.wikipedia.org/wiki/Fourierova_transformace [3] http://www.dreamface.net/modules.php?name=News&file=article&sid=117 [4] http://cs.wikipedia.org/wiki/MIDI [5] http://magazin.stahuj.cz/ [6] http://tosovsky.info/zvuk/vyklad.html#equalizer [7] http://cs.wikipedia.org/wiki/A/D_p%C5%99evodn%C3%ADk [8] http://tosovsky.info/zvuk/vyklad.html [9] http://www.sonicspot.com/guide/wavefiles.html#wavefileheader [ 10 ] http://www.borg.com/~jglatt/tech/wave.htm [ 11 ] Robert Guérin : Velká kniha MIDI, Computer Press Brno, 2004.
Podobné dokumenty
klávesnice TS 5220004.
" MO T "
U M O Z N U JE
SPUST I T
M O T O R E K M A GNE T O F O NU < NAPR .
P R O P R E V I J E N I P A S K Y ) B EZ
Číslo III.
Převedení kompetencí ke stanovení finančních úlev v dopravě na Ministerstvo
dopravy považujeme za zcela scestné, protože tento rezort nemá k dispozici žádné lékaře,
kteří by mohli objektivně posou...
8. Rozděl a panuj
už jednoduše vybrat požadovaný prvek. To bychom dokázali V celkem slušném čase
Θ(n log n), ale už teď můžeme prozradit, že to jde V čase Θ(n). Jak?
Použijme metodu rozděl a panuj. Nějakým způsobem ...