2019-08-20

Separace vokální stopy

Pokud jste někdy pocítili potřebu zremixovat (čtěte zprznit ;) cizí nahrávku, tak asi víte, že je potřeba nejprve získat samostatné nesmíchané stopy (tj. zpěv, kytara, basa, bicí, klávesy, atd.). Ty vám obvykle může poskytnout sám interpret (čas od času někdo stopy publikuje pro fanouškovské remixové soutěže) nebo se takové soubory (ze starých soutěží, z bonusových médií, z her typu Rock Band nebo uniklé ze studia) dají najít na specializovaných polopirátských webech, které mívají v názvu termíny jako "Remix Stems", "Remix Packs", "Acapella", "Instrumental" a podobně.

Problém je, pokud se chcete pustit do neoficiálního remixu něčeho, co nikdy nikdo po stopách nezveřejnil, ale i to je dnes do jisté míry řešitelné. =)

Klasický postup

Za starých časů existovalo jediné a nikoliv dokonalé řešení - ekvalizér. =) Kompletní nahrávka se prostě protáhla přes ekvalizér s pásmovou propustí zhruba od 100 Hz po 8 kHz (v horším případě třeba až 200 Hz - 4 kHz - podle vkusu každého soudruha =) a výsledkem byl "telefonní" zvuk bez basů (baskytary a kopáku) a výšek (činely a většina sykavek). Pak se vystříhaly pasáže, kde zpěv vůbec nebyl, a děj se vůle boží.

"Karaoke mode"

S postupem digitalizace a popularizací karaoke se objevily různé "pluginy" pro mp3 přehrávače, které se více či méně úspěšně snažily separovat nebo naopak potlačit zpěv. Většinou také vycházejí z předpokladu, že nejhlasitější části zpěvu (tedy samohlásek, které tvoří tóny) se pohybují zhruba v rozsahu 200 Hz až 4 kHz, a jako pomocné kritérium používají pozici zvuku ve stereo prostoru. Zpěv se tradičně umisťuje do středu mixu (tj. je stejně hlasitý z levého i pravého reproduktoru), takže za zpěv se pak považují ty frekvence, které jsou v daném rozsahu a navíc jsou stejně zastoupeny v levém i pravém kanálu.

U elektronické hudby, kdy jsou jednotlivé takty často na bit stejné, se pak dá použít "odečtení fáze". To znamená, že se do jedné stopy umístí část nahrávky bez zpěvu s převráceným záznamem a do druhé stopy jiná část, kde je stejný hudební doprovod a navíc zpěv. Pokud se obě nahrávky dokonale srovnají a liší se skutečně pouze přidaným zpěvem, tak výsledkem jejich smíchání bude samostatný zpěv. Jak asi tušíte, tak tohle je v praxi málokdy použitelné, protože i v případě, že by byl doprovod zcela stejný, se obvykle celý mix ještě protáhne kompresorem dynamiky, takže se hlasitost doprovodu nějakým způsobem změní, ale někdy je výsledek možné alespoň použít jako základ pro jiné metody.

"Ruční editace frekvenčního spektra"

Dalším vývojovým stupněm byly aplikace typu Spectral Layers (Sony, pak MAGIX, nyní Steinberg), kde má uživatel k dispozici frekvenční mapu zvukového záznamu a může myší přidávat nebo ubírat zastoupení různých frekvencí. Teoreticky je tak možné vyseparovat jakýkoliv zvuk, ale prakticky je to neuvěřitelná piplačka s nejistým výsledkem.

"Umělá inteligence"

Program, který dnes nemá umělou inteligenci, jako by nebyl. =) Zatím jsem se nikdy neodvážil prostudovat celý princip skutečně do hloubky, ale hodně přibližně a zjednodušeně se jedná o metodu, kdy se pomocí FFT získá časově proměnný frekvenční histogram, kterým se pak krmí neuronová síť. Ta by měla být schopna rozpoznat, které frekvence k sobě patří a společně tvoří jeden nástroj nebo hlas.

Většina podobných projektů byla donedávna ve stavu experimentu, ale to se změnilo někdy v roce 2018, kdy se na webu objevila stránka PhonicMind. Tam můžete nahrát libovolnou hudební nahrávku a webová aplikace se jí pokusí rozdělit na vokální stopu a doprovod. Výsledky jsou už poměrné solidní, ale jedná se o komerční projekt, takže se buď dočkáte jen 30 s ukázky nebo musíte za separaci celého záznamu zaplatit pár dolarů a to nepřeje velkým experimentům. =}

Naštěstí byl minulý týden zveřejněn i projekt Open-Unmix. Je skutečně "open", což znamená, že je k dispozici zdarma a počítá se s dalším vývojem a "trénováním" rozpoznávacího modelu, ale bohužel to taky znamená, že k němu zatím neexistuje zrovna uživatelsky přívětivé prostředí.

Pokud chcete projekt zkusit na svém počítači, tak potřebujete stáhnout zdrojáky v Pythonu, nainstalovat distribuci Pythonu Anaconda, naimportovat "prostředí" aplikace (na PC bez VGA s podporou CUDA lze použít soubor "environment-cpu-linux.yml"), doinstalovat modul "pytorch-cpu" (conda install pytorch-cpu torchvision-cpu -c pytorch) a za příznivého počasí si to stáhne natrénovaný model a po několika minutách žvýkání to vygeneruje separované stopy nebo v horším případě chybové hlášení, že vám došla operační paměť. ;) (Při konverzi 4minutové písničky se mi běžně zaplnila celá 8 GB RAM a PC chvílemi přestávalo reagovat.)

Proti PhonicMind jde Open-Unmix ještě o dva kroky dál - jeho výstupem jsou čtyři samostatné stopy (vokály, basa, bicí a zbytek). Výsledky separace jsou logicky lepší u "přehlednějších" nahrávek (folk-rock) a naopak horší u nahrávek se zkresleným zpěvem nebo s neobvyklým nástrojovým obsazením, ale v každém případě to považuji za zatím nejlepší aplikaci tohoto druhu. =)

Pokud nechcete nic instalovat, tak si aplikaci můžete zkusit na virtuálním počítači přes Google Colab (Open in playground, Runtine - Run all), kde je možné jako vstup zadávat i odkazy přímo na hudební videa na YouTube, ale je třeba počítat s tím, že virtuální počítač má své limity a je schopen zpracovat jen kratší úseky. (Při mých testech byla maximální fungující délka záznamu cca 2:20. U delších ukázek se virtuální počítač odpojil.)

Žádné komentáře: