Pokud jste někdy snili o tom, že vytvoříte vlastní Albi knížku, po přečtení tohoto článku vás to nejspíš rychle přejde. Třeba se nakonec spokojíte s vědomím, že to technicky jde a možná jen dětem v některé z jejich oblíbených knížek zpřeházíte zvuky a budete potají čekat, jak budou reagovat. Tak jako tak se nenechte odradit hned na začátku a pojďte se podívat, jaké nástroje máte k dispozici a co s nimi dokážete. V dnešním, posledním díle totiž vytvoříme vlastní knížku pro Albi tužku.
Ovládání software
V předchozích článcích jsem popisoval celý postup zpětného inženýrství a dešifrování BNL souborů. Následně jsem napsal několik skriptů, které umí vytvořit OID kódy nebo rozložit a opět složit BNL soubor. Všechny tyto skripty vám dávám volně k dispozici. V dalším textu se dozvíte, jak skripty ovládat.
Prostředí
Veškeré nástroje byly vyvíjeny a zkoušeny na Windows 10, v prostředí ActiveState Perl 5.24.3. V tomto prostředí vše zaručeně funguje. Pro účely tohoto návodu jsem použil prostředí Windows 7 a instalaci posledního Strawberry Perl 5.32.1.1-64bit. I v tomto prostředí vše fungovalo. Celý návod ještě jednou prošel betatestem na Windows 11, kde také vše fungovalo bez problémů. Je poměrně pravděpodobné, že vše bude fungovat i na jiných OS(Linux, Měkoš).
Všechny nástroje se ovládají z příkazové řádky a žádný z nich nemá uživatelské rozhraní. Proto je třeba vědět, jak se do příkazové řádky ve Windows dostat (Windows+R a pak cmd a ENTER) a jak se s ní zachází. Linuxoví apod. to určitě znají. To už je ale téma mimo tento návod. Na internetu najdete návodů dostatek, hned první nalezený vypadá slušně.
Co je Perl?
Perl je jednoduchý skriptovací jazyk, původem z Unixu. V dnešní době je trendy spíše Python, ale protože jsem živoucí fosilie, umím Perl poměrně dobře a na daný účel se dobře hodí. Není ovšem problém, aby dané skripty kdokoli převedl do Pythonu, dokumentace BNL je dostatečná a Perl poměrně srozumitelný jazyk.
Instalace
Navštivte stránku Strawberry Perl a stáhněte si instalátor podle vaší volby. Já zvolil 64bit MSI.

Po stažení spusťte instalaci.

Nastavte si, kam Perl instalovat.

Jakmile je nainstalováno, můžeme spustit příkazovou řádku a vyzkoušet, zda perl funguje. To zjistíme tak, že napíšeme příkaz „perl -v“ (a zmáčkneme ENTER)
perl -v

Měl by se objevit zhruba takový výstup, jako je výše, který ukáže, že se Perl spustil a jaká jeho verze běží.
Vytvořte si složku, kde si budete se skripty hrát a stáhněte si je z mého GitHubu. Do složky se dostanete pomocí příkazu „cd“ (opět odkazuji na nějaký externí návod, jak používat příkazový řádek). Já mám skripty ve složce E:\tool-test

Ještě je potřeba vyzkoušet, zda nainstalovaný Perl obsahuje všechny nezbytné moduly k práci. Ověří se to příkazem „perl -c xxxx.pl“, kde xxxx.pl je jeden z výše uvedených skriptů. Například:
perl -c bnl_dis.pl

Z printscreenu terminálu je vidět, že chybí pouze modul MP3::Info. V závislosti na použité Perl distribuci může chybět také modul pro podporu YAML. Nainstalujeme je takto:
perl -MCPAN -eshell;
Tím se nám spustí prostředí instalátoru CPAN. Tam pak postupně zadáme následující dva příkazy k instalaci.
install MP3::Info install YAML::Perl
A po úspěšné instalaci instalátor CPAN opustíme.
quit
Tím máme prostředí připravené k práci.
Skripty
Následuje jednoduchý popis skriptů. V každém případě se jedná o funkční prototypy, které nikdy neměly žádného uživatele – určitě obsahují řady nedostatků nebo nepůjdou používat tak snadno, jak byste očekávali. To je třeba řešit zakládáním „issues“ na GitHubu, abych věděl, co je podle vás špatně, nebo obtížně použitelné.
Skript oid_png_generator.pl
Tento skript pouze generuje PNG soubor, který obsahuje mikrotečky. V základním použití ho zavoláte pouze „oid_png_generator.pl XXX“, kde XXX je decimální nebo hexadecimální interní OID číslo. Například, když chcete vygenerovat kód pro první kvíz, který má interní OID 100, zavoláte skript s číslem 100. Vytvoří se soubor oid_100.png. Viz následující příklad:
oid_png_generator.pl 100
Výchozí velikost vygenerovaného OID kódu je 20x20mm, 1200dpi. Pomocí následujících přepínačů můžete změnit rozměry (parametry -size, -sizex, -sizey), rozlišení (parametr -dpi) nebo název výsledného souboru (parametr -O nebo -output). V následujících příkladech znamená NN velikost v milimetrech a XX výsledný název souboru.
-size NN -sizex NN -sizey NN -dpi NN -O XX -output XX
Následující příkaz vytvoří png obrázek, složený z OID kódů 100. Obrázek bude velký 13.5mm x 13.5mm, v rozlišení 600 dpi a pojmenovaný test.png
oid_png_generator.pl 100 -size 13.5 -dpi 600 -output test.png
Generátor umí běžet i v módu „generuj mnoho png najednou“. Buď ručně napíšete soubor YAML, který obsahuje pole střídajících se hodnot fname a oid (ukázka níže vygeneruje dva png soubory)
--- - fname: oid_icon_start.png oid: 2051 - fname: oid_icon_volume_up.png oid: 7
nebo použijete soubor generate_oids.yaml, který je výstupem skriptu bnl_creator.pl. Pak se generátor spouští takto:
oid_png_generator.pl @vstupni_soubor.yaml -size 13.5 -dpi 600
což vygeneruje všechny png zmíněné ve vstupním souboru, o stejné velikosti a dpi.
Skript bnl_dis.pl
Tento skript dělá více věcí. Umí extrahovat veškeré informace z BNL souboru na obrazovku. Informace ukládá do strukturovaného souboru bnl.yaml. Umí extrahovat soubory MP3. V základním použití se volá takto: „bnl_dis.pl XXX.bnl“
kde xxx.bnl je jméno BNL souboru, který chcete rozebrat na prvočinitele. V tomto nastavení jen vytváří soubor YAML a výstup na obrazovku. Soubor, který chcete rozebrat, musí být ve stejném adresáři, jako skript, který spouštíte, nebo musíte používat plné cesty. Například:
bnl_dis.pl minikniha-denni-cinnosti.bnl
Další parametry:
-extract
extrahuje všechny MP3 soubory jako media_XXXX.mp3
-bitrate
vypočítává bitrate extrahovaných MP3 souborů
-nosave
neukládá žádné výstupní soubory
Soubor BNL.YAML
Předchozí skript vytvořil YAML soubor. Ten obsahuje veškerá data o vnitřní struktuře rozebraného souboru. Pokud doma používáte Home Assistant nebo ESP Home, určitě vám struktura YAML souborů nebude cizí. Pokud je pro vás YAML datová struktura nová, jako první můžete mrknout na výše odkazovanou wiki.
Formát dat uvedených v BNL.YAML má pevnou vazbu mezi dokumentací formátu BNL a názvy jeho proměnných, které mi připadají poměrně intuitivní.
Pro více informací o struktuře vytvořeného YAML souboru si prostudujte komentáře v ukázkovém souboru na GITu.
Skript bnl_creator.pl
Tento skript pouze vezme BNL.YAML a všechny MP3, které jsou z něj referencované a seskládá z nich soubor BNL.BNL, který pak můžete nahrát do pera. Jen drobné upozornění – pero nesmí nikdy obsahovat více než jeden BNL soubor se stejným book_id! Pak si totiž náhodně vybere jeden ze souborů a vám se bude zdát, že se pero chová nepředvídatelně.
Tento skript bude potřebovat nejvíce práce – v současné době příliš nekontroluje, zda jsou data v YAML souboru validní, takže je možné vytvořit nefunkční soubor. To sice ničemu nevadí, pero se bude chovat, jako by BNL soubor nevidělo nebo bude místo mluvení „chrastit“, ale nepodařilo se mi ho ani při velkém trápení nějak zaseknout. Pokud se mi omylem podaří vytvořit nefunkční soubor, jednoduše ho smažu z karty nebo přes USB a je vymalováno. Pokud by se vám i tak podařilo Albi tužku zaseknout, na její zadní straně je malý otvor s tlačítkem reset.
Tento skript také generuje soubor generate_oids.yaml, který obsahuje příkazy pro skript oid_png_generator.pl, abyste nemuseli volat skript pro každý jednotlivý OID, který je použit ve vámi tvořené knížce.
Úprava existující knihy pro Albi tužku
To je naprosto nejjednodušší. Prostě si pustím:
bnl_dis.pl XXX.BNL -extract
upravím buď YAML nebo vyměním MP3 a pustím
bnl_creator.pl
a pak už si jen nahraji na tužku výsledný soubor BNL.BNL (a přejmenuju si ho, jak je potřeba)
Jak vytvořit vlastní knížku pro Albi tužku
Postup bude jak výše, jen prostě vyměníte všechny MP3 za svoje. Změníte důležité věci v BNL.YAML, vygenerujete si všechny interní kódy jako PNG, v nějakém grafickém programu stvoříte vlastní grafiku knihy. Strávíte několik frustrujících hodin nastavením tisku a seskládané BNL.BNL si nahrajete do Albi tužky.
A je to! Ještě pořád se těšíte? Tak pojďte na detaily.
Příprava a vytvoření grafiky
Pro vytvoření vlastní knihy jsem potřeboval grafiku, tedy obrázky nebo ilustrace. Ty nakreslila má dcera na tabletu. Následně jsem potřeboval OID kódy, které jsem vytvořil pomocí výše zmíněného skriptu oid_png_generator.pl. Pokud máte alespoň základní znalosti používání grafického editoru, určitě použijte svůj oblíbený. Já pro účely tohoto stručného návodu použil GIMP. Pokud dáváte přednost online nástrojům, můžete požít český online editor Photopea.
Největším oříškem, ve vytváření grafiky, je správné rozmístění OID kódů. Demo knížka je vytvořená poměrně jednoduchým způsobem. Vygeneroval jsem velké OIDy a ty vložil přes jednotlivé části obrázku. Zbytek kódu, kolem obrázku, jsem vygumoval, takže zůstal kód jen v místech, kde jsem ho potřeboval.
Stejného efektů můžete dosáhnout kombinací nástrojů kouzelná hůka, zvětšit výběr a vložit dovnitř.

Pro objekty, které jsou velmi blízko u sebe, je lepší vybrat vhodnou dělící rovinu a kódy pokaždé vložit tak, aby byl čitelný celý kód. Zároveň je dobré, aby kód co nejlépe kopíroval objekt, ke kterému se vztahuje. K tomu docela dobře slouží nástroj mřížka. Nastavil jsem velikost mřížky na 64 pixelů (v kartě „upravit“, v položce „předvolby“), a aktivoval jsem „zobrazovat mřížku“ a „přichytávat k mřížce“ (v kartě „zobrazení“).


Díky tomuto nastavení se zobrazí mřížka 64×64 pixelů, která odpovídá velikosti OID kódu v rozlišení 1200dpi. Přichytávání k mřížce zajistí pohodlný výběr správného rozměru a vložit tak vždy celý OID kód. Počítejte s tím, že některá místa obrázku nemusí být čitelná, případně nepůjdou tak přesně zaměřit. Méně může být více, příklad níže slouží čistě k vysvětlení použití mřížky.

Tímto bych popis práce v grafickém editoru ukončil. Nemám v plánu sepisovat podrobný manuál ke GIMPu, tím spíše, když můžete mít úplně jiný oblíbený editor.
Několik tipů ke grafice
- Pokud se rozhodnete vytvořit barevné obrázky, používejte světlé barvy. Přes obrázky přijde černý OID kód. Pokud budou obrázky moc tmavé, OID kód nebude čitelný. Knížky od Albi Kouzelné čtení tento problém řeší speciálním inkoustem, který je vidět po nasvícení infračerveným světlem. Tuto technologii nemáme doma k dispozici.
- Vytvořte nový soubor s rozlišením odpovídajícím OID kódům, které jste si vygenerovali. Nepoužívejte kombinaci různých rozlišení, jinak může být OID kód nečitelný.
- V grafickém editoru pracujte s vrstvami.
- Pro domácí použití můžete asi použít cokoliv, co najdete na internetu, ale i tak doporučuji zvyknout si dodržovat autorská práva.
Vytvoření zvukových souborů
I když se to nezdá, tohle je ta nejtěžší část z výroby vlastní knihy. Všechny publikace Kouzelné čtení namluvili herci a dabéři v profesionálních nahrávacích studiích. V domácích podmínkách nikdy nedosáhneme stejné kvality. Velmi pravděpodobně nemáme vhodný mikrofon, natož odhlučněnou místnost. Navíc, málo kdo jsme zvyklí poslouchat svůj hlas a pokud se slyšíme na nahrávce, hlas se nám nelíbí.
Naštěstí se moderní technologie posouvají mílovými kroky a počítačové generování hlasu působí čím dál lepším dojmem. Prošel jsem několik online aplikací, které umí mluvit česky a mezi většinou robotickými hlasy, jsem narazil na generátor od Microsoft, ze kterého mně spadla čelist. Tohle jsem opravdu nečekal. Dalším obrovským překvapením bylo, že je generátor zdarma. Nebylo co řešit. V domácích podmínkách nic lepšího nevytvořím.
Microsoft Speech Studio
Speech Studio je sada online nástrojů pro převod řeči na text a obráceně. Vše funguje v cloudové platformě Microsoft Azure. To má své plusy, ale i mínusy. Jako malé plus beru to, že jsem nic instaloval do počítače. Obrovské mínus jsou bohužel hned dvě registrace. Jednou se vytváří Microsoft účet a podruhé Azure účet. Jako bonus jsem ještě upsal číslo své platební karty (ale vytvoření zvukového obsahu je bezplatný nástroj).
Nechci strašit hned na začátku, ale proces registrace není úplně intuitivní. Naštěstí existuje významný pomocník, oficiální nápověda a dokumentace. Tento průvodce a odkazy z něj mě provedly celým procesem a nakonec jsem to zvládl.
Pokud si chcete službu předem vyzkoušet a trochu osahat, tady je demo bez možnosti stažení souboru.

Tisk vytvořené grafiky
Jak jsem zmínil v předchozích článcích, ne každému se OID kódy podaří vytisknout. Z několika desítek lidí, kteří tisk vyzkoušeli, se funkční kódy podařilo vytisknout jen třem. Ti, kteří byli v tisku úspěšní, použili jednu z následujících tiskáren:
- Brother
- MFC-L6900DW
- HL-L6400DW
- DCP-1610W
- Samsung
- M2070
Na tomto odkazu naleznete seznam tiskáren, na kterých se podařil tisk OID kódu pro německé TipToi pero. Zároveň zde nejdete seznam tipů pro úspěšný tisk.
Výsledek našeho snažení
Odkazy
Na závěr přidávám připomenutí dvou nejdůležitějších odkazů, které vám usnadní výrobu vlastní knížky.
- Veškerou dokumentaci, skripty i ukázkovou knihu naleznete na github.com/jindroush/albituzka
- Zvukové soubory vygenerujete na speech.microsoft.com/portal
- Pokud by vám vytvoření vlastní Albi knížky nakonec přišlo jako spousta práce, podívejte se, co nového mají na kouzelnecteni.cz
Související články
- Jak funguje Albi tužka
- Jak fungují BNL soubory pro Albi tužku
- Základy zpětného inženýrství
- Hacking a cracking BNL souborů pro Albi tužku – 1. část
- Hacking a cracking BNL souborů pro Albi tužku – 2. část
- Jak vytvořit vlastní knížku pro Albi tužku (právě čtete)
Zdravím a rovnou smekám!
Dobrá investigativní práce a na konci je velmi povedený výsledek.
V.Touš
Když jsem u Albi knížek přemýšlel nad čtivostí kódů i na černém pozadí, tak jsem si všiml, že černou barvu (K) používají pouze pro kódy. A veškerá grafika je tištěna pouze pomocí barev (CMY). Opravdu si myslíte, že je nutný speciální inkoust? Očekávám, že černá (K) bude mít dostatečnou pohltivost i v IR, kdežto barvy (CMY) budou v IR dostatečně světlé. Nepostačí tedy libovolná CMYK tiskárna? – Je to jen úvaha, nic jsem nezkoušel.
Díky za myšlenku, vypadá to, že máte pravdu.
Zkusil jsem teď prozkoumat několik různých výtisků (ne od Albi) pod mikroskopem a vypadá to, že všechny barvy pod IR světlem mizí a jen černá zůstává vidět. To by tedy znamenalo, že všechny barvy světlo odrazí (proto se osvícený povrch jeví bílo-fialový) a jen černá barva všechno IR světlo pohltí.
Čím by mohl být způsoben ten rozdíl? Specifickou přísadou do černé barvy? Uhlíkem?
Nojo, ale jak se přemlouvá tiskárna, nebo rasterizér nebo cokoli po cestě, aby nepoužil černý inkoust nikdy, ani jako podtisk? Jakože lze namalovat obrázek, kde budou okraje tmavé, tvořené soutiskem CMY, ale jak to vynutit? I když si v nejmenovaném editoru nastavím CMYK 100%, 100%, 100%, 0%, kapátko ukáže úplně jinou barvu. Asi colormanagement? V každém případě i toto nám ukazuje, že tisk vyžaduje nenulové znalosti.
Už se mi rozsvítilo. Je nutno pracovat od začátku v CMYK prostoru, pak lze tisknout pohodlně jak vrstvu s CMY černou, tak vrstvu s tečkama s K černou. Akorát zase při importu mejch png s tečkama je to zase zmrší do nějakýho divno-CMYKu. Budu se muset podívat, zda můžu generovat CMYK png (jestli vůbec png podporuje CMYK)
Taktéž smekám… A zároveň děkuju za všechnu tu práci, kterou to zajisté obnášelo!
Pokud jsem to správně pochopil, tak pokud chci jen trochu upravit stávající mp3 soubory (v BNL souboru k určité knížce), tak by to mělo být jednoduché. Prostě jen provedu „extrakci“, vybrané mp3 soubory upravím a pak to zase „zabalím“ a mělo by být hotovo. Je to tak?
Brzy vyzkouším, jen ještě nevím, kdy se k tomu dostanu…
Ano, BNL soubor stačí rozložit, upravit MP3 a pak zase zabalit. Původní BNL soubor z tužky musíte smazat, aby tam nebyly 2 stejné soubory.
Naštval jste mě: Děti nemá (a už nehodlám) a musel jsem si kvůli vám, po přečtení a prohlénutí perlích skriptů, jít koupit Albi kufřík.
Tak to se budeme těšit na nějakou vlastní knížku.
Mimochodem, možná to zmiňuji pozdě, ale Albi začalo prodávat i tužku pro dospělé. Tam by to chtělo vyzkoušet, jestli skripty taky fungují.
https://eshop.albi.cz/tolki-pro-dospele/
Tak to je škoda, že jsem to nevěděl o dva dny dříve. Každopádně díky za informaci.
Na stránkách Albi píšou, že tužka pro dospělé je kompatibilní s kouzelným čtením. V prodejnách Albi mají jen dětskou tužku a knížky pro dospělé k vyzkoušení. Takže je velmi pravděpodobné, že tužka pro dospělé bude mít shodnou elektroniku s dětskou tužkou a jen uměřenější plastový obal.