Č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.

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:
- Stáhnout z GitHubu instalátor Audiveris-5.11.0-macosx-x86_64.dmg. Pozor na architekturu: na Intel ne arm64.
- Přetáhnout Audiveris.app do Aplikací. Java je přibalená, nic dalšího netřeba.
- Aplikace neni podepsaná, takže ji macOS napoprvé zablokuje. Povolí se v Nastavení systému, v sekci Soukromí a zabezpečení.
- 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.
- 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í.
- 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á.
- 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.
- 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í.
- Č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.
- 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.

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.

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:
- Audiveris - rozpoznání not ze scanu do MusicXML: https://github.com/Audiveris/audiveris/releases
- Tesseract, česká data - OCR českého textu: https://github.com/tesseract-ocr/tessdata
- Python 3 - dávkové skripty: https://www.python.org/downloads/
- Moises - rozložení mp3 na STEMS, akordy, tempo: https://moises.ai
- Basic Pitch - zpěv na MIDI: https://github.com/spotify/basic-pitch
- Whisper - zpěv na text s časy slov: https://github.com/openai/whisper
- whisper.cpp - rychlejší lokální Whisper: https://github.com/ggml-org/whisper.cpp
- FFmpeg - práce se zvukem pro Whisper: https://ffmpeg.org/download.html
- LilyPond - sazba not a zpěvníku: https://lilypond.org/download.html
- llama.cpp - běh lokálního modelu: https://github.com/ggml-org/llama.cpp/releases
- Ollama - běh lokálního modelu, jednodušší varianta: https://ollama.com/download
- Qwen2.5-VL-3B (GGUF) - lokální model s obrázky: https://huggingface.co/ggml-org/Qwen2.5-VL-3B-Instruct-GGUF
- Claude - dirigent, kontrola, odborná práce: https://claude.ai/download
- Perplexity - dohledávání existujících zápisů: https://www.perplexity.ai
- Codex - lokální agent, logování do databáze: https://openai.com/codex/
- Supabase - databázový most mezi AI a evidence: https://supabase.com





