Hlavní obsah

AI nemusí generovat AI jen slop

Foto: DachowART by ChatGPT

i robůtci si zasloužej chill u táboráku

Kolem AI se dneska mluví hlavně o AI slopu: generickejch obrázcích, článcích bez autora a písničkách, který nikdo nenapsal. Já ji teď používám na pravej opak. Pomáhá mi zachránit něco, co napsali konkrétní lidi. Takže vlastně úplně naopak…

Článek

Dělám zrovna zpěvník jedný starý kapely, jejíž písničky znám mraky let. Je to vzpomínka na kamaráda Maxe. Hotovej má bejt zpěvník k tisku, s notama, akordama a textama v jednotný sazbě.

Ten zpěvník jsem mu slíbil před čtyřma lety, pár měsíců předtím, než umřel. Měl jsem tehdá moc práce a bohužel jsem to nestih. Teď mi AI pomůže ušetřit několik desítek hodin (který nemám) opisování, aby zpěvník vyšel příští rok aspoň k pátýmu výročí jeho smrti.

Tenhle článek je technickej zápisník: co mám k dispozici, jaký nástroje jsem musel nainstalovat, kde AI selhává a jak dělím práci mezi lokální počítač a placenej model, abych nespálil tokeny na dřinu, kterou zvládne stroj na stole.

Co mám v ruce:

Mám tři typy zdrojů a každej potřebuje trochu jinej přístup.

31 naskenovanejch novoročenek. Kapela každej rok kapela rozesílala PF s jednou novou písničkou, od roku 1981 do roku 2015. Mám je jako PDF: 2 až 4 stránky, 300 dpi, formát Letter, někdy na vejšku, někdy na šířku. Jsou to čistý obrázky bez textový vrstvy, takže žádný OCR. Na každý kartě je kromě písničky fotka kapely, logo, podpisy a občas reklama na desku.

Samotná písnička má většinou tuhle stavbu: název, autoři, někdy věnování, jednohlasá melodie v notový osnově, akordy nad notama, slabiky textu pod notama a pod tím další sloky jako obyčejnej text. Noty jsou tištěný, ne psaný rukou. Starší karty jsou psaný na stroji, novější v notovým editoru.

Kdyby šlo jenom o text a akordy, nebyl by to žádnej velkej problém. Opsat sloky a nad ně napsat akordy zvládnu ručně celkem rychle. Melodie je ale jiná liga: každou notu je potřeba přečíst ze scanu, určit její vejšku a délku, hlídat takty, předznamenání a repetice, pod ni přilepit správnou slabiku a celý to naklikat do notovýho editoru. Právě tady se hodiny sčítaj na desítky a právě tady může AI ušetřit nejvíc.

Písničky bez not. Část repertoáru znám jenom z alba nebo z jinejch nahrávek. K nim mám nanejvejš mp3, někdy přepsanej text. Melodii, akordy i slova je potřeba vytáhnout ze zvuku.

Jen nahrávky. Jo, i takový vstupy mám

Cíl je pro obě skupiny stejnej: každá písnička na dvoustraně, vlevo noty, vpravo další sloky, všechno přesázený jedním písmem a v jedný velikosti. Původní scany se do zpěvníku nedávaj.

Proč nestačí „zeptat se AI“

První nápad byl jednoduchej: hodit scany lokálnímu jazykovýmu modelu a nechat ho to přepsat. Na starším MacBooku Pro s Intel i7 a 16 GB RAM, kterýmu říkám Enigma, mám přes llama.cpp nasazenej model Qwen2.5-VL-3B. Umí i obrázky, běží zadarmo a nic neposílá ven, tokeny nežere, jen elektriku.

Na tuhle práci ale nestačí:

  • Noty nepřečte. Model si obrázek zmenší na pár set tokenů a v takovým rozlišení se vejška noty na osnově ztrácí.
  • Češtinu z celý stránky čte s chybama v diakritice. Malý háčky a čárky jsou přesně to, co se při zmenšení ztratí.
  • Na procesoru je pomalej. Popis jednoho testovacího obrázku trval 23 sekund.

Z toho plyne hlavní lekce: obecnej chatbot neni správnej nástroj na všechno. Na noty existuje specializovaný rozpoznávání notovýho zápisu (OMR), na text klasický OCR, na zvuk převod do MIDI a přepis řeči. Tyhle nástroje jsou starší, užší a ve svým oboru přesnější. Velkej jazykovej model (u mě Claude) je dirigent: vybírá nástroje, píše skripty, hledá chyby a dělá odbornou kontrolu.

Foto: Claude AI

workflow

Scany a nahrávky jdou každej svou cestou přes lokální nástroje. Claude nastupuje až tam, kde se výsledky potkávaj a je potřeba úsudek.

Větev 1: ze scanu noty

Na noty používám Audiveris, open-source nástroj na rozpoznávání tištěnýho notovýho zápisu. Z obrázku udělá MusicXML, standardní formát, kterej otevře MuseScore i LilyPond.

Instalace na Intel Mac:

  1. Stáhnout z GitHubu instalátor Audiveris-5.11.0-macosx-x86_64.dmg. Pozor na architekturu: na Intel ne arm64.
  2. Přetáhnout Audiveris.app do Aplikací. Java je přibalená, nic dalšího netřeba.
  3. Aplikace neni podepsaná, takže ji macOS napoprvé zablokuje. Povolí se v Nastavení systému, v sekci Soukromí a zabezpečení.
  4. Pro češtinu přidat data Tesseractu ces.traineddata a nastavit jazyk přepínačem -constant org.audiveris.omr.text.Language.defaultSpecification=ces+eng.

Dávkově se to pouští z příkazový řádky: Audiveris -batch -transcribe -export -output <složka> – soubor.pdf. Jedna písnička trvá na Enigmě zhruba minutu.

Past, na kterou jsem narazil hned: první běh skončil chybou u obou zkušebních písniček a nevzniknul žádnej soubor. Z logu bylo vidět, že stránky s notama Audiveris zpracoval celou cestu. Stránky s fotkou kapely ale označil jako neplatný, protože na nich nenašel notový osnovy, a kvůli nim pak nevyexportoval nic. Řešení: skript si z logu prvního průchodu vytáhne čísla stránek s notama a převede jenom ty přes -sheets 3.

Co Audiveris umí a co ne. Noty, akordy a délky jsou v základu v pohodě. Český slabiky pod notama ale přečte špatně a u starších karet nezná takt. Proto z MusicXML beru jenom noty a akordy. Text jde zvlášť a k notám se přiřazuje až potom.

Text ze scanu: Tesseract schovanej v Audiverisu

Na text slok a jména autorů stačí klasický OCR. Tesseract čte tištěnou češtinu dobře, jenže na Enigmě neni Homebrew a nechci kvůli jednomu nástroji stavět celý prostředí.

Ukázalo se, že to neni potřeba. Audiveris má uvnitř balíčku všechno: knihovnu Tesseract 5.5, knihovnu PDFBox na čtení PDF a vlastní Javu. Jenom jeho Java umí programy pouštět, ne překládat. Claude proto napsal malej program v Javě, přeložil ho u sebe v cloudu proti knihovnám vytaženejm z Audiverisu a na Enigmu poslal hotovej soubor .jar o velikosti 3 kB.

Program vykreslí každou stránku PDF ve 300 dpi, přečte ji českým Tesseractem a uloží text stránky zvlášť i s odhadem jistoty. Ten odhad se pak hodí: Claude se na obrázek dívá jenom tam, kde si OCR nebylo jistý.

Celý vytěžování běží lokálně, po přerušení se dá navázat a počká, až doběhne převod not, aby se ty dvě úlohy nepraly o procesor.

Větev 2 (plán): z mp3 noty i text

U písniček bez scanu je jedinej zdroj nahrávka. Tahle fáze je zatím jenom plánovaná, nic z ní jsem ještě nezkoušel. Popisuju postup, kterej chci použít. Jak dopad, popíšu v samostatným článku.

  1. Rozložení na STEMS v Moises. Moises rozdělí mp3 na samostatný stopy: zpěv, kytary, basu, bicí. Pro další práci je klíčová vyčištěná zpěvová stopa. Moises umí poznat i akordy, tóninu a tempo, což ušetří pozdější hádání.
  2. Zpěv na MIDI přes Basic Pitch. Open-source nástroj od Spotify převede zvuk na noty. Na čistej jednohlasej zpěv bez doprovodu funguje nejlíp, a to je přesně to, co stem dává.
  3. Zpěv na text přes Whisper. Rozpoznávání řeči s češtinou, lokálně a zadarmo. Důležitý je, že každýmu slovu dá časovou značku.
  4. Spojení podle času. Basic Pitch dává čas každý noty, Whisper čas každýho slova. Slabiky se k notám přiřadí samy, bez ručního počítání.
  5. Čištění. Zpěvák nezpívá do mřížky. Noty je potřeba zarovnat na doby, sloučit vibrato a sklouznutí, doplnit tóninu a takt a melodii zjednodušit tak, jak se píše do zpěvníku.
  6. Převod do MusicXML. Od týhle chvíle jsou obě větve ve stejným formátu a jdou do stejný sazby.

Na co si dát bacha:

  • Zpěv se rozpoznává hůř než řeč. Protažený samohlásky, slang a jména budou mít chyby.
  • Whisper si v tichejch místech a mezihrách rád vymejšlí. Ticho je potřeba předem vyfiltrovat.
  • Opakovaný refrény někdy zkrátí nebo slije dohromady.
  • Na Intel procesoru bez grafiky trvá velkej model minuty až desítky minut na písničku. Je to dávka na noc.
  • U těchhle písniček neni s čím výsledek porovnat. Poslední kontrola je poslech, nejlíp s kytarou v ruce.

Jak šetřit tokeny

Pravidlo je jednoduchý: hromadnou dřinu dělá lokální počítač zadarmo, placenej model jenom kontrolu a odbornou práci. Nejdražší položka u Clauda jsou obrázky. Kdyby četl všech zhruba 80 stránek scanů sám, sežral by na tom většinu rozpočtu, a to na práci, kterou Tesseract udělá za pár minut.

Foto: Claude

Workflow2

Práce se dává Enigmě jako dávka: skript, kterej průběžně ukládá a po přerušení naváže, a stavovej soubor s jednou větou, kterej si Claude přečte místo celýho logu. Claude na Enigmě nic nepouští, jenom tam zapisuje skripty a čte výsledky. Spuštění je jeden řádek v Terminálu.

Lokální jazykovej model (Ollama, llama.cpp) má v tomhle řetězci jenom malou roli. Hodí se na hromadný popisy a třídění, ne na noty ani na přesnej českej text. Tokeny tu nešetří lokální chatbot, ale lokální specializovaný nástroje.

Další pomocníci: Perplexity a Codex přes Supabase

Na zpěvníku nedělá jenom jeden model. Vedle hlavní linky běžej ještě dvě role:

  • Perplexity dohledává existující zápisy. Hledá, jestli někde na internetu nebo v archivech nejsou písničky už zapsaný s akordama. Každej nalezenej zápis je kontrolní bod navíc a u písniček bez scanu může ušetřit práci se zvukem.
  • Lokální Codex loguje do Supabase. Zapisuje průběh práce do databáze Supabase. Ta mi slouží jako most, přes kterej si jednotlivý AI předávaj práci, a zároveň jako úložiště a evidence hotový práce.

Díky tomu je jedno, kterej nástroj zrovna na čem dělá. U každý písničky je na jednom místě vidět, co k ní mám a v jakým je stavu.

Co nainstalovat

Všechno je zadarmo nebo ve verzi zadarmo, běží to lokálně a obejde se to bez API klíčů. Jediná výjimka je Moises, kterej stopy dělí ve svým cloudu.

Foto: Claude

Co instalovat

Všechny instalace a dávky na Enigmě pouští jeden skript. Ten si sám stáhne instalátor, ověří, že program na daným macOS běží, udělá zkušební běh na dvou písničkách a až pak pustí celou dávku.

Závěr

AI slop vzniká, když se modelu řekne „vymysli“. Tady se mu říká „najdi, přečti, zkontroluj a nic si nedomejšlej“. Výsledkem nejsou nový písničky, ale zachráněný starý, v podobě, ve který se daj znova hrát.

AI tady nenahrazuje člověka. Nahrazuje měsíce opisování not a textů a nechává mi tu část, kterou stroj neumí: poznat, jestli melodie zní tak, jak ji kapela hrála. Každá nejistá nota a každý nejistý slovo skončí v seznamu ke kontrole, ne potichu ve zpěvníku.

Na konci nebude obrázek, kterej nikdo nenamaloval, ale zpěvník, kterej někdo drží v ruce a hraje z něj.

One more thing…

A ještě jedna myšlenka na konec. Pokud vím, dodnes nevyšel kompletní zpěvník kapel jako Příboj, Bystřina nebo Wanailon a spousty dalších neprávem zapadlejch skvostů. Jejich písničky žijou po zpěvnících opsanejch rukou, na starých kazetách a v paměti lidí, kteří je ještě hraj. Když teď vím, že se to s rozumnou prácí dá zvládnout, možná se do toho jednoho dne pustím taky. A když jsem vám teď ukázal, jak se to dá dělat, můžeme na tom časem dělat společně. Stačí mít GitHub, řídit se to dá přes Asanu a tak nějak vůbec by to nemusel bejt problém.

Použité technologie:

Máte na tohle téma jiný názor? Napište o něm vlastní článek.

Texty jsou tvořeny uživateli a nepodléhají procesu korektury. Pokud najdete chybu nebo nepřesnost, prosíme, pošlete nám ji na medium.chyby@firma.seznam.cz.

Sdílejte s lidmi své příběhy

Stačí mít účet na Seznamu a můžete začít publikovat svůj obsah. To nejlepší se může zobrazit i na hlavní stránce Seznam.cz