Jak vytvořit vlastní knížku pro Albi tužku

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.

Strawberry Perl

Po stažení spusťte instalaci.

Instalace Strawberry Perl

Nastavte si, kam Perl instalovat.

Instalace Strawberry Perl

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
Ověření funkční instalace Perl

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

Výpis obsahu složky provedete příkazem dir

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
Kontrola dostupnosti všech modulů

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

Vložení OID kódu dovnitř výběru
Vytvoření výběru pomocí nástroje kouzelná hůlka, zvětšení výběru a vložení OID kódu dovnitř výběru

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í“).

Velikost mřížky v GIMP
Upravit > Předvolby > Výchozí mřížka > Rozestup
Zobrazení mřížky v GIMP
Karta „Zobrazení“ v grafickém editoru GIMP

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.

Umístění OID kódu podle mřížky
Příklad umístění OID kódu pomocí 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.

Jak namluvit Albi knížku
Náhled na online demo Microsoft Speech Studio

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í

Vlastní knížka pro Albi tužku
Odkaz na video na YouTube

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.

15 názorů na “Jak vytvořit vlastní knížku pro Albi tužku”

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

    1. 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?

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

      1. Na vase stranky jsem narazila nahodou, kdyz jsem hledala, jak ta zatracena tuzka vlastne funguje a nedalo mi to spat. Dokonce se mi podarilo pouzit i scripty (paradoxne na mym vlastnim MacBooku mi to trvalo, na starsim Macu na prvni dobrou bez problemu).
        K tem inkoustum mam svoji teorii, jen ji nemam kde overit. Jestli nahodou na obrazky neni pouzity dye-based inkoust a na OID pak pres to pigment-based?

    3. 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)

  2. 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…

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

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

      1. Tak to je škoda, že jsem to nevěděl o dva dny dříve. Každopádně díky za informaci.

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

  4. Milý táto geeku,
    tento návod, včetně veškerých publikovaných souborů, je mistrovským dílem. Od té doby, co jsem si ho přečetl, mi to nedalo spát. A tak jsem si zkusil vytvořit vlastní obrázek a ťukal jsem do něj tužkou jako šílený. Marně. Vyzkoušel jsem všechny tiskárny, které jsem měl po ruce, a na té poslední (světe div se) se zadařilo. Takže možná i pro ostatní: funkční tisk na tiskárně HP PageWide Pro 477dw, maximální rozlišení (1200dpi), pouze černý inkoust, obyčejný papír.
    Moje děti teď doma běhají a křičí, že tátu sežrala Albi tužka 😀

    Díky za tenhle počin, myslím, že mám na léto práci obstaranou 😉
    Klobouk dolů a velká poklona!!!

  5. Ahoj táto geeku. Dlouho mi trvalo, než jsem měla čas a příležitost oveřit teorii pigmentové černé na barevném obrázku.

    K dispozici mám starou černobílou laserovou tiskárnu HP LaserJet P1102w a novou barevnou inkoustovou Canon Pixma TS6350a (má pigmentovou i dye based černou).
    Tiskla jsem jeden OID vygenerovaný pomocí Vašeho skriptu – v rozlišení 600 a 1200 dpi, z programu GIMP. Na obyčejný papír a fotopapír.
    A jak si tiskárny vedly? Obě zvládly OID čitelný tužkou (jak starý, tak nový typ).
    Laserová vytiskla pouze rozlišení 600, v nastavení nejvyšší kvalita.
    Inkoustová zvládla obě rozlišení, nastavení tiskárny na grayscale a nejvyšší kvalita, ten v rozlišení 1200 dpi ale tužka přečetla pouze někdy.
    Při pokusu tisku na obrázek jsem tiskla na fotopapír, ale pravděpodobně by to šlo i na normální papír. Hlavní ale asi bylo nastavení, aby tiskárna věděla, že má používat pouze dye based inkoust, což při barevném tisku a tisku na fotopapír údajně dělá. V tomto případě byl pro tužku už čitelný pouze OID vytištěný na laserové tiskárně. Fungoval i v tmavě modré části fotky. OID z inkoustové tiskárny tužky nepoznaly.

    Pouhým okem byl asi nejlepší ten OID z laserové, byly pekně viditelné tečky, ale na rozdíl od inkoustové byly světlejší, což při tisku na obrázek byla výhoda.

    Takže sečteno podtrženo, papír prolezl dvěma tiskárnama, ale ve výsledku byl čitený černý OID na barevném obrázku bez nějaké zvláštní manipulace s barvami. Otázkou je, jak bych se natrápila s nastavením, kdybych měla jednu vrstvu OIDů vytisknout tak, aby přesně odpovídala obrázkům. Ale to zas někdy příště.

    A ještě dvě poznámky na závěr. První – Vaše slepička mi při tisku nefungovala při stejných nastaveních. Druhá – jestli si tu někdo stěžoval, že koupil tužku, kterou nepotřebuje, tak já koupila tiskárnu, kterou až tak nutně nepotřebuji.

Diskuze

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Scroll to Top