ID.nl logo
Bouw je eigen weerstation
© PXimport
Huis

Bouw je eigen weerstation

Krijgen we een onstuimige herfst of worden we verwend met een zwoele nazomer? Lekker lang op het terras kunnen zitten zou wel leuk zijn, maar misschien moeten we het doen met zo’n natte bedoening die aanhoudt tot de winter. Er is weinig aan te veranderen, maar vanaf nu weet je wél precies waar je aan toe bent, dankzij je eigen, zelfgemaakte weerstation.

De code is na een kleine aanpassing ook geschikt voor onze Vlaamse lezers. Als je bij https://xml.weerslag.nl/xmlfeed.xml zoekt naar het gewenste station, kun je bij **

Boodschappenlijstje

  • Behuizing (€ 2,-, bijvoorbeeld een pillendoosje van Kruidvat) Bijvoorbeeld bij www.rotor.eu:
  • Passieve piëzo-buzzer (€ 2,-) Bijvoorbeeld bij www.martoparts.nl:
  • NodeMCU-module (€ 9,95)
  • Oled-beeldscherm (€ 6,95) Bijvoorbeeld bij www.conrad.nl:
  • Diffuse leds, 6 stuks (€ 0,60)
  • Trekontlasting M10 (€ 1,-)
  • Experimenteerprintplaatje 80 × 50 mm (€ 2,50)
  • Schroefterminal of klemschroefblok 2-polig (€ 0,21)
  • Draad 0,20 mm², 2 meter (€ 0,60)
  • Usb-oplader 5 V, 1,5 A (€ 5,50)
  • Usb-kabel (€ 1,63) Gereedschap: soldeerbout en soldeertin, zijkniptang, stanleymes, vijl. Totale kosten: ca. € 33,-

Het weerstation werkt niet met eigen sensoren en meetinstrumenten, maar haalt elke vijf minuten de nieuwste gegevens op van het dichtstbij gelegen KNMI-meetstation en van Buienradar. Het toont de actuele weersituatie op een oled-schermpje en waarschuwt als het gaat regenen of vriezen. Ook bij een voor jouw regio uitgegeven weeralarm krijg je een melding. Gekleurde leds geven de weersituatie aan: bij groen is er niets aan de hand, blauw is regen, wit is vorst en bij een weeralarm brandt geel, oranje of rood.

Hardware

De schakeling is gebouwd rond een NodeMCU, een ontwikkelbordje dat is gebaseerd op een ESP-wifi-module. De overige onderdelen zijn een oled-beeldschermpje, zes leds, drie weerstanden en een piëzo-luidspreker. Het beeldscherm en de luidspreker kunnen rechtstreeks op de module worden aangesloten, voor de leds zijn voorschakelweerstanden nodig. Normaal gesproken krijgt elke led zijn eigen weerstand, maar omdat er van groen, geel, oranje en rood altijd slechts één led tegelijk brandt (ter indicatie van een weeralarm) volstaat voor die vier leds één weerstand. Blauw en wit kunnen op ieder moment branden, dus die krijgen wel elk een eigen weerstand.

Het beeldscherm communiceert met de ESP-module door middel van een zogenoemde i2c-bus. Het voordeel daarvan is dat er slechts twee verbindingen nodig zijn voor de communicatie en twee voor de voeding, dus vier in totaal. Mede daardoor is de schakeling voor zijn veelzijdigheid erg eenvoudig van opzet.

©PXimport

©PXimport

©PXimport

©PXimport

©PXimport

De bonte verzameling componenten.

Ontwikkelomgeving

De ESP-module is het gemakkelijkst te programmeren met de Arduino-ontwikkelomgeving IDE. Deze kun je op Arduino.cc downloaden. Omdat Arduino IDE niet primair voor deze module is bedoeld, zul je nog wat extra benodigde onderdelen moeten installeren. Klik daarvoor op Bestand / Voorkeuren en vul op het tabblad Instellingen bij Additionele Board Beheer URLs deze url in: http://arduino.esp8266.com/stable/package_esp8266com_index.json Voeg de module daarna toe via Hulpmiddelen / Board / NodeMCU 1.0 (ESP-12E Module). Sluit de module aan via een usb-kabel en selecteer in Arduino IDE de juiste poort (Hulpmiddelen / Poort, kies de com-poort met het hoogste nummer). Als alles goed is gegaan, is je opstelling nu klaar om met programmeren te beginnen. Mocht de module onverhoopt niet door je pc of Mac worden herkend, dan kun je Hubbit vinden waarmee het zeker moet lukken.

©PXimport

Werking

We leggen even uit hoe een en ander gaat werken als je alles eenmaal af hebt. Zodra de schakeling wordt aangezet, probeert de NodeMCU verbinding te maken met je wifi-netwerk. Als dat gelukt is, wordt achtereenvolgens informatie opgehaald over de hoeveelheid regen, het weerrapport en een eventueel weeralarm. De oorspronkelijke webpagina’s van de te raadplegen webpagina’s passen niet in het beperkte geheugen van de module. Door via een tussenstap (een serverscript dat draait bij ons moederbedrijf Reshift) alleen de gegevens van het voor jou relevante weerstation te tonen, is dat probleem opgelost.

Het compacte beeldscherm toont de windrichting, de windkracht, de temperatuur en een pictogram van de weersituatie. Standaard brandt de groene led. Als er regen aankomt, gaat de blauwe led aan, bij vorst brandt de witte led en bij een weeralarm brandt geel, oranje of rood. Twee piepjes geven in dit soort situaties aan dat er wat aan de hand is.

Oled-bibliotheek

Om pictogrammen en lettertypen op het beeldschermpje te kunnen tonen, is een extra bibliotheek nodig. Klik in Arduino IDE op Schets / Bibliotheek gebruiken / Bibliotheken beheren. Typ U8g2 bij Filter je zoekresultaten en klik onder het item U8g2 by oliver op Installeren. Herstart daarna Arduino IDE. Je kunt nu in je code de nieuwe bibliotheek gebruiken met de regel #include

©PXimport

Uitleg bij de code

De code kun je hier downloaden. We leggen hier eerst uit hoe de code werkt, voordat we er daadwerkelijk mee aan de slag gaan (vanaf paragraaf ‘Code uploaden en testen’). Je kunt de code wel alvast bekijken met Kladblok of Notepad++.

Het programma begint met het laden van vier bibliotheken via de opdracht include: ESP8266WiFi.h voor alle netwerkactiviteit, Wire.h voor de communicatie met het beeldscherm en U8g2.h voor het tonen van grafische informatie op het scherm (zie kader ‘Oled-bibliotheek’). Dankzij deze kant-en-klare code van derden kunnen we ons direct richten op de functionele aspecten van de schakeling. De vierde bibliotheek (weathericons.h) bevat de weerpictogrammen en is onderdeel van ons programma.

Het programma begint met het declareren van diverse variabelen en een lange lijst constanten. Daarvan hoef je er maar vijf aan te passen aan jouw situatie, zie kader ‘Constanten’. Via de constanten voor de luidspreker en de leds kun je deze onderdelen in de code aanroepen met hun omschrijving in plaats van een lastig te onthouden pinnummer. Met de constante Wachttijd stel je in hoe vaak de weerinformatie wordt opgehaald, standaard eens per vijf minuten. Periode bepaalt hoever er vooruitgekeken wordt of het regent. Standaard staat hier 1, wat staat voor vijf tot tien minuten vooruit. Hoewel het handig lijkt om hier een langere periode te kiezen, blijkt de nauwkeurigheid van de voorspelling dan sterk af te nemen.

De strings aan het einde van het lijstje constanten zijn de codes waarmee het KNMI op zijn website een weeralarm aangeeft. Hierin herken je in de waarden red, orange, yellow en green de mogelijke omstandigheden.

Onder Setup worden de pinnen als uitgang gedefinieerd en met het wifi-station verbonden. Tevens wordt het domein van de host voor de regenvoorspelling opgehaald en toegekend aan de variabele raindomain, die verderop in de code wordt omgezet in rainhost. Alle leds en de luidspreker gaan ten slotte beurtelings kort aan om er zeker van te zijn dat ze werken.

©PXimport

Constanten

Om het programma te kunnen gebruiken, zul je enkele constanten moeten aanpassen. Laat de dubbele aanhalingstekens staan, wijzig alleen wat daarbinnen staat! De naam van je wifi-netwerk: const char* ssid = "SSID" Het bijbehorende wifi-wachtwoord: const char* password = "PASSWORD" Het pad naar het serverscript met de gewenste coördinaten als parameters: const String rainurl = "URL" De code van het meetstation waar je het dichtstbij woont: const String weerstation = "CODE" Het pad naar het serverscript met jouw provincie of regio als parameters: const String alarmurl = "URL" Je gps-coördinaten vind je eenvoudig door met je browser naar Google Maps te gaan en in te zoomen op je straat. In de adresbalk staan de coördinaten achter het @-teken. Gebruik alleen het aantal graden en de eerste twee decimalen, in het voorbeeld dus 52.36 en 4.85 (zie afbeelding). Zie de commentaren met uitleg in de code om te zien hoe je de lijsten met meetstations en mogelijke regio’s te zien krijgt.

©PXimport

Piepsignaal

Zoals eerder opgemerkt komt bij bepaalde situaties geluid uit de piëzo-luidspreker, zoals bij verwachte regen, als de temperatuur onder nul komt of bij een weeralarm. Om te voorkomen dat bijvoorbeeld bij buien elke tien minuten de pieper afgaat, is het aantal keer dat dit alarm klinkt beperkt. De duur is vastgelegd door een constante interval van het type unsigned long en staat standaard op een uur.

Zolang er nog niets heeft geklonken, gaat de pieper bij de eerste aanleiding. Vanaf dat moment geldt als voorwaarde dat er ten minste 3.600.000 milliseconden (een uur dus) verstreken moeten zijn voordat er weer wat mag piepen. De code maakt gebruik van een ingebouwde timer, die 49 dagen lang het aantal milliseconden telt vanaf het moment dat de module wordt aangezet. Daarna begint de teller weer bij nul, maar daar houdt de code rekening mee. De leds hebben met deze beperking uiteraard niets te maken en reageren direct op veranderingen.

Weersituatie in het scherm

De gegevens zijn afgeleid uit de xml-feed van Buienradar.nl. Dat houdt in dat de weergegevens binnen xml-tags staan, waar je deze uit moet halen. De functie lees_tot_tag verwerkt de feed. Deze wordt in de functie checkweer verderop in de code aangeroepen met als parameters de begin- en eindstrings van de gezochte weerinformatie. Bij de temperatuur-tag wordt bovendien nog een waarde 1 toegekend aan vorst, daarover straks meer. In checkweer staan de letterlijke tags waarbinnen de informatie staat.

De feed wordt ingelezen vanaf het gewenste weerstation en als dan de gezochte begintag is gevonden, knippen we die regel in stukken. Als regel bijvoorbeeld <temperatuurGC>16.5</temperatuurGC> is, halen we met substring de tekst 16.5 eruit. Die voegen we toe aan de string weersituatie, die verder wordt verwerkt door de functie checkweer. Daarbinnen gebeurt de echte magie, zoals het omzetten van de weersituatie naar het juiste pictogram en de windrichting naar de windpijl.

De functie eindigt met het aanroepen van displayweather met vier parameters: de windrichting, de temperatuur, de windkracht en het weersymbool. Aan windkracht en temperatuur voegen we respectievelijk Bft en °C toe, waarna de waarden naar het scherm worden geschreven.

Vorst- en weeralarm

Tot slot laat de functie lees_tot_tag de blauwe led branden als het vriest, door te kijken of er een minteken voorkomt in de regel temperatuur. De test op de aanwezigheid daarvan vindt alleen plaats als checkweer de waarde 1 meegeeft aan vorst, dus alleen wanneer de temperatuur wordt doorgegeven. Dit voorkomt vals alarm als er elders in de tekst een minteken staat. Door booleaanse variabele ijs op true (waar) te zetten na het eerste piepsignaal, piept de luidspreker alleen aan het begin van een vorstperiode. De temperatuur moet eerst weer boven nul zijn geweest, voor er weer een vorstalarm kan klinken.

De functie checkalarm is redelijk rechttoe-rechtaan. Doordat de pagina is voorbewerkt (zie paragraaf ‘Werking’) volstaat het lezen van slechts één tekstregel. De aanwezigheid van de string code_rood, code_oranje, code_geel of code_groen (wat wordt getest met indexOf) bepaalt vervolgens welke led er brandt. Bij een weeralarm gaat de pieper en wordt de booleaanse variabele alarm op true gezet, bij code groen op false. Net als bij het vorstalarm voorkomt dit herhaaldelijk piepen, zolang er een weeralarm geldt.

©PXimport

Regen

Omwille van de betrouwbaarheid en de flexibiliteit gebruiken we niet één enkele waarde, maar een tabel met de regenverwachting per vijf minuten voor de komende twee uur. Dat maakt het in theorie mogelijk om een lange periode vooruit te kijken, ware het niet dat de kwaliteit van die langetermijnvoorspellingen vaak te wensen overlaat. Het bruikbaarst zijn de gegevens tot pakweg een kwartier vooruit. De praktijk leert bovendien dat de kwaliteit enorm toeneemt als er twee aaneengesloten blokken van vijf minuten allebei regen of juist droog weer voorspellen. Om die reden kijkt de functie checkrain zowel naar de geselecteerde periode als naar die van de regel erna (vijf minuten later). Pas als ze het ‘met elkaar eens zijn’, verandert de status.

De regentabel bestaat uit 24 regels en twee door het sluisteken (|, beter bekend als pipe) gescheiden kolommen. De eerste kolom bevat de hoeveelheid neerslag, de tweede de tijd. De tabel wordt ingelezen en met de functie getValue in twee etappes gesplitst om de regendata over te houden. Die waarde zetten we om naar een geheel getal, zodat we ermee kunnen rekenen. De hoeveelheid doet er niet toe, nul staat voor droog en alles groter dan nul betekent regen. Eerst halen we de gekozen periode +1 op en via een aantal tussenstappen kennen we de waarde toe aan de variabele regen. Daarna volgt de gekozen periode zelf, die resulteert in de waarde voor regennu.

Zijn beide groter dan nul, dan gaat de blauwe led branden en klinkt een piepsignaal. Daarbij wordt de booleaanse variabele nat op true gezet om bij langdurige regenval herhaald piepen te voorkomen. Zijn beide variabelen gelijk aan nul, dan is het droog en is de blauwe led uit. Nat wordt false, zodat de pieper de volgende keer dat het regent weer alarm mag slaan.

Code uploaden en testen

De volgende stappen vereisen dat de ontwikkelomgeving Arduino IDE al is geïnstalleerd en geconfigureerd (zie kader ‘Ontwikkelomgeving’). Sluit de ESP-module aan met een usb-stekker en pak het zip-bestand dat je hebt gedownload uit naar een willekeurige map op je harde schijf en open de map esp-weerstation-grafisch. Dubbelklik op het bestand esp-weerstation-grafisch.ino en wijzig de gegevens bij ssid, password, rainurl, weerstation en alarmurl (zie ook het kader ‘Constanten’).

Druk op Ctrl+Shift+M om de seriële monitor te openen, waarmee je straks in de gaten kunt houden wat er gebeurt. Stel de snelheid van de seriële monitor in op 115200 baud. Klik op het pijltje naar rechts bovenin de ontwikkelomgeving. De code wordt nu achtereenvolgens gecontroleerd, gecompileerd en geüpload naar de module.

Eerst wordt de wifi-verbinding opgezet en als dat is gelukt, verwerkt de module achtereenvolgens de regendata, het weerrapport en de status van het weeralarm. Bij rustige, droge omstandigheden boven nul verschijnt het weerrapport op het scherm en brandt de groene led. Is er neerslag en/of vorst, dan branden de blauwe en/of de witte led. En bij een actief weeralarm ten slotte brandt geel, oranje of rood. Elke vijf minuten (of andere periode die je hebt ingesteld) wordt de informatie ververst, waarbij het schermpje gedurende enkele seconden uitgaat.

Niet alle meetstations zijn bruikbaar!

Helaas geven sommige meetstations niet alle gegevens door die wij gebruiken. Controleer daarom in een browser eerst of de gebruikte data aanwezig zijn. Voor meetstation De Bilt (stationcode 6260) typ je view-source:http://arduino.reshift.nl/weermonitor.php?weerstation=6260 in de adresbalk van je browser. Zijn de data binnen de tags **

©PXimport

©PXimport

©PXimport

▼ Volgende artikel
Waar voor je geld: 5 goede over-ear koptelefoons met ruisonderdrukking onder de 125 euro
© ID.nl
Huis

Waar voor je geld: 5 goede over-ear koptelefoons met ruisonderdrukking onder de 125 euro

Bij ID.nl zijn we dol op kwaliteitsproducten waar je niet de hoofdprijs voor betaalt. Daarom speuren we een paar keer per week binnen een bepaald thema naar zulke deals. Deze keer kijken we naar draadloze over-ear hoofdtelefoons met actieve ruisonderdrukking voor onder de 125 euro.

Met een koptelefoon met ruisonderdrukking zorg je ervoor dat geluiden van buiten, zoals bijvoorbeeld verkeer, openbaar vervoer of vliegtuiggeluiden worden weggefilterd. De draadloze modellen die we hier bespreken hebben daarnaast ook een lange accuduur zodat je er gedurende langere periode muziek mee kunt luisteren.

Wel kost ruisonderdrukking beduidend meer energie dan wanneer je die functie niet gebruikt, dus de accu van je hoofdtelefoon gaat dan sneller leeg. Per koptelefoon zie je dan ook hoe lang de accu volgens de fabrikant mee gaat wanner de ruisonderdrukking (acive noise cancelling, ANC) is in- en uitgeschakeld. Niet alle fabrikanten hebben de accuduur zonder ANC opgegeven, maar die is altijd langer dan wanneer ANC wel is ingeschakeld.

Sony WH-CH720N

Deze koptelefoon van Sony is ideaal voor wie op zoek is naar een lichte en comfortabele optie zonder in te leveren op de basisfunctionaliteiten. Hij weegt slechts 192 gram, wat hem tot een van de lichtste koptelefoons maakt die voorzien is van actieve ruisonderdrukking. De batterijduur is een ander sterk punt; met een volle accu kun je tot 35 uur onafgebroken muziek afspelen met de ruisonderdrukking ingeschakeld. Zonder deze functie gaat de batterij tot 50 uur mee. Bovendien is er een snellaadfunctie aanwezig, waardoor je na slechts zo'n tien minuten laden al een uur extra luistertijd hebt. De geluidskwaliteit is helder en evenwichtig, met een goede weergave van zowel lage als hoge tonen.

Afspeelduur (met / zonder ANC): 35 uur / 50 uur
Oplaadtijd: 10 min voor 1 uur muziek / 3,5 uur volledig

Sennheiser Accentum Wireless

De Sennheiser Accentum Wireless richt zich op de essentie: goed geluid en een lange batterijduur. Waar andere koptelefoons veel extra's bieden, focust deze zich op een perfecte audioweergave. Dit model levert een rijk en gedetailleerd geluid, zoals je dat van Sennheiser gewend bent. De ruisonderdrukking doet zijn werk en minimaliseert omgevingsgeluid, terwijl je met de transparantiemodus juist het geluid van buiten door kunt laten. Met de snellaadfunctie kun je binnen tien minuten voor 5 uur muziek weer bijladen, handig als je onderweg bent.

Afspeelduur (met / zonder ANC): 50 uur / onbekend
Oplaadtijd: 10 min voor 5 uur muziek / 3,5 uur volledig

JBL Live 770NC

Deze koptelefoon van JBL is ontworpen voor een brede doelgroep. De Live 770NC beschikt over True Adaptive Noise Cancelling, wat betekent dat de mate van ruisonderdrukking zich automatisch aanpast aan de omgeving. Zo kun je je concentreren op je muziek of podcast, of je nu in de trein of op kantoor zit. De koptelefoon heeft een 'Smart Ambient'-modus waarmee je het geluid van buiten juist kunt horen, zodat je bijvoorbeeld gesprekken kunt voeren zonder hem af te zetten. De batterijduur is ook een groot pluspunt, met tot wel 50 uur afspeeltijd. Dankzij de nieuwste Bluetooth 5.3-techniek is er ondersteuning voor de LE Audio-technologie, wat een lagere latency en een stabielere verbinding mogelijk maakt.

Afspeelduur (met / zonder ANC): 50 uur / 65 uur
Oplaadtijd: 3 uur volledig

Urbanista Los Angeles

Wat deze koptelefoon zo bijzonder maakt, is zijn unieke functie: opladen via zonne-energie. De Urbanista Los Angeles is uitgerust met een speciaal Powerfoyle-materiaal op de hoofdband dat licht omzet in energie. Dit betekent dat de koptelefoon continu oplaadt zolang hij aan licht wordt blootgesteld. Ontzettend handig als je vaak buiten bent. Maar ook zonder deze functie is de batterij met 80 uur indrukwekkend. Het geluid is helder en evenwichtig, met een goede weergave van details. De koptelefoon is bovendien eenvoudig in gebruik, met bedieningselementen op de oorschelp en een ingebouwde microfoon voor telefoongesprekken. Deze koptelefoon kan alleen via de zonnecel worden opgeladen, er zit geen laadkabeltje bij. Het opladen gaat echter relatief snel.

Afspeelduur (met / zonder ANC): 80 uur / onbekend
Oplaadtijd (alleen via zonnecel): 3 uur luistertijd per uur in zon, binnen bij diffuus licht: 2 uur

JBL Quantum 810

De JBL Quantum 810 Wireless is vooral gericht op gaming, maar is ook prima te gebruiken voor dagelijks gebruik. Het meest opvallende kenmerk is de dubbele draadloze connectiviteit: je kunt hem via de 2,4 GHz-dongle verbinden met je pc of console voor een lage latency, terwijl de Bluetooth-functie het mogelijk maakt om tegelijkertijd verbinding te maken met je telefoon. De headset is uitgerust met JBL's QuantumSOUND Signature en ondersteunt DTS Headphone:X 2.0, wat zorgt voor een realistische en meeslepende ruimtelijke geluidsweergave. Zo hoor je precies waar je tegenstanders vandaan komen. De microfoon (die je kunt wegklappen als je 'm niet gebruikt) zorgt ervoor dat je stem helder wordt overgebracht, terwijl de bedieningselementen op de oorschelp je de volledige controle geven over het volume en de balans tussen game-audio en chatgeluid.

Afspeelduur (met / zonder ANC): 43 uur / onbekend
Oplaadtijd: 3,5 uur

▼ Volgende artikel
Zo maak je zelf luisterboeken van gratis e-boeken
Huis

Zo maak je zelf luisterboeken van gratis e-boeken

Er zijn veel (gratis) e-boeken te vinden op het internet, maar misschien luister je liever dan dat je leest. Met de juiste tools zet je een e-book om naar een luisterboek. Of je maakt zelf een audioverhaal, met een stem en taal naar keuze, en helemaal gratis. In dit artikel lees je hoe je dat doet.

Dit gaan we doen

In dit artikel leer je hoe je gratis e-boeken vindt en ze met behulp van gratis software omzet naar luisterboeken. Je ontdekt waar je DRM-vrije titels kunt downloaden, hoe je Calibre gebruikt om bestanden te beheren en te converteren, en hoe je van tekst (natuurlijk klinkende!) audio maakt. Ook laten we zien hoe je je eigen stem kunt gebruiken of een verhaal kunt maken met AI.

Je kunt een e-book natuurlijk zelf hardop voorlezen en je stem opnemen, maar dat is erg tijdrovend en weinig zinvol. Het ligt anders als je (e-)boeken of tijdschriften inspreekt voor mensen met een leesbeperking, bijvoorbeeld in samenwerking met organisaties als Dedicon (https://www.dedicon.nl) en Transkript (https://www.transkript.be). Er bestaan zelfs heuse stemmenbureaus waar mensen met een goede stem ingehuurd worden om teksten in te spreken.

Zulke initiatieven zijn zeker waardevol, maar de insteek hier is anders. Stel: je hebt een paar leuke e-boeken gevonden, maar lezen is niet je ding. Je luistert liever naar verhalen, bijvoorbeeld in de auto of met koptelefoon op de bank. Of je wilt eigen verhalen, eventueel door AI gegenereerd, laten voorlezen door een professionele stem, zelfs in meerdere talen. Denk aan sprookjes voor kinderen voor het slapengaan of een verhaaltje tijdens lange autoritten. Een interessant project, dat vooral de iets gevorderde lezer zal aanspreken.

Luisterboeken inspreken? Er worden nog vrijwilligers gezocht.

Commercieel

Zie je het om een of andere reden niet zitten om alle benodigde software op je eigen pc te installeren, of is deze niet krachtig genoeg? Dan kun je ook elders terecht om luisterboeken te laten maken. Een bedrijf als Pumbo kan zo'n luisterboek met eigen stemacteurs produceren, of je spreekt de tekst zelf in. Dat kan in hun studio. Reken op zo'n 250 euro per uur (voor ongeveer 10.000 woorden).

Alternatieven zijn webapplicaties op basis van artificiële intelligentie, zoals Murf.ai, vanaf circa 200 euro per jaar) en Speechify Studio (vanaf 266 euro per jaar). Afgezien van beperkt proefdraaien zijn deze diensten helaas niet gratis.

E-boeken vinden

De tool waarmee we straks e-boeken naar luisterboeken converteren, kan – zoals de meeste legale software – in principe niet overweg met DRM-beschermde exemplaren (Digital Rights Management). Gelukkig zijn er voldoende niet-beschermde en gratis e-boeken beschikbaar. Een van de oudste publieke domeinprojecten is Project Gutenberg (https://www.gutenberg.org), met meer dan 75.000 titels, vooral klassiekers. Andere bronnen zijn onder meer ManyBooks.net (https://www.manybooks.net), Standard Ebooks (https://www.standardebooks.org) en FreeEbooks.net (https://www.free-ebooks.net). De focus ligt doorgaans op Angelsaksische werken, maar je kunt vaak filteren op taal en andere criteria. Specifiek voor Nederlandstalige titels is https://www.dbnl.org een goed vertrekpunt.

Afhankelijk van de bron kun je e-boeken vaak in meerdere formaten downloaden, zoals epub, mobi, azw3, pdf en txt. Het open en gestandaardiseerde epub-formaat is een van de populairste en meest geschikte, zeker ook voor conversie naar luisterboeken. Epub ondersteunt tevens interne navigatie, zoals inhoudsopgaven, die tools als ebook2audiobook kunnen gebruiken om hoofdstukken te scheiden. De belangrijkste versies zijn epub 2.x en 3.x, waarbij deze laatste technologieën als html5 en css3 ondersteunt, bruikbaar voor nieuwe e-readers en apps.

Er zijn ook duizenden (overwegend Engelstalige) 'short stories' beschikbaar op Project Gutenberg.

Beheren en omzetten

Onze focus ligt op het converteren naar audioboeken, maar we laten je eerst kort kennismaken met de gratis opensource-tool Calibre (https://www.calibre-ebook.com; beschikbaar voor meerdere platformen). Hiermee beheer je niet alleen je e-boeken, je kunt ze ook naar een ander, beter formaat omzetten.

Installeer de tool, start deze op en stel de taal, een geschikte locatie voor je boeken en je favoriete e-reader in (kies eventueel Generisch / Smartphone).

Om e-boeken aan je bibliotheek toe te voegen, klik je op het pijlknopje bij Boeken toevoegen en kies je bijvoorbeeld Boeken toevoegen uit een enkele map. Deze verschijnen in het midden, waar je ze op kolom naar keuze sorteert. Dubbelklik op een voorbeeld om meer details te zien, zoals het formaat. Met een dubbelklik op de titel kun je het boek lezen met de ingebouwde leesmodule.

Je kunt ook e-boeken uit e-readers ophalen en uitwisselen door deze met je pc te verbinden en via de knop Toestel op te halen, maar daar gaan we hier niet verder op in.

Met Calibre kun je je e-boekencollectie makkelijk beheren en optimaliseren.

Converteren

Calibre converteert normaal automatisch boekformaten voor specifieke apparaten, maar je kunt ook handmatig converteren. Selecteer een of meer boeken in de bibliotheek en klik op het pijlknopje bij Boeken converteren. Kies Individueel converteren of Een groep converteren, waarbij de instellingen dan voor alle geselecteerde boeken gelden.

In het dialoogvenster pas je indien gewenst onderdelen aan, zoals Metagegevens (inclusief omslagafbeelding), Inhoudsopgave en meer. Je kunt deze ook gewoon laten zoals ze zijn en direct klikken op het pijlknopje rechtsboven.

Bij Uitvoerformaat kies je uit allerlei formaten, waaronder het prima geschikte EPUB. Zodra je een formaat selecteert, kun je via het linker paneel <formaat->uitvoer nog extra opties instellen.

Bevestig met OK. Rechtsonder in het Calibre-hoofdvenster volg je het conversieproces via de knop Taken. Zo'n conversie duurt meestal maar enkele seconden.

Ook converteren is met Calibre zeer eenvoudig.

Ebook2audiobook

We zijn nu klaar om ons eerste e-boek om te zetten in een luisterboek. Dat doen we met het gratis ebook2audiobook. Deze tool gebruikt AI-gestuurde TTS-technologie (text-to-speech), wat zorgt voor natuurlijk klinkende stemmen.

We beginnen met een installatie onder Windows. Dit duurt even, maar verloopt grotendeels automatisch. Je hebt wel Python nodig om scripts te kunnen uitvoeren.

Ga naar de site via https://www.kwikr.nl/pydl, download de Windows-installer en start deze met een dubbelklik. Vink in het startvenster zowel Use admin privileges when installing py.exe als Add python.exe to PATH aan. Klik op Install Now.

Test na installatie of alles goed is verlopen door op de Opdrachtprompt het commando python --version uit te voeren. Je zou nu het versienummer van Python moeten zien.

Surf daarna naar https://www.kwikr.nl/ebook2. Klik op de groene Code-knop en kies Download ZIP. Pak dit archief uit naar een lege map, een proces dat wel even kan duren.

Het startvenster van de Python-installatie.

Installeren

Open de submap ebook2audiobook-main in de uitgepakte map via de Opdrachtprompt, bijvoorbeeld met het commando

cd /d c:\<uitpakmap>\ebook2audiobook-main

In deze map zie je onder meer het tekstbestand requirements.txt. Als je dit opent in een teksteditor als Kladblok, zie je dat het een lijst bevat met dertig vereiste Python-onderdelen. Je installeert ze vanuit deze map met het commando

pip install -r requirements.txt

Start vervolgens het batchbestand ebook2audiobook.cmd vanuit dezelfde map door dit als commando in te voeren en met de Enter-toets te bevestigen. Je kunt dit bestand gerust vooraf bekijken met Kladblok. Het script installeert extra Python-pakketten en start het programma in een eigen (gevirtualiseerde) omgeving om potentiële conflicten met andere Python-pakketten te vermijden.

Bij de start verschijnen normaal meldingen dat onderdelen als onder andere ffmpeg, nodejs en sox ontbreken, maar het batchbestand zorgt gelukkig zelf voor de installatie.

Neem gerust de tijd voor een kopje koffie, want de installatie duurt behoorlijk lang. Er worden namelijk duizenden kleine bestanden in de map geplaatst, goed voor meer dan 4 GB.

Waarschijnlijk vraagt je Windows-firewall op het einde nog toestemming en verschijnt onderaan de melding http://0.0.0.0:7860. Laat het opdrachtpromptvenster gewoon geopend.

De vereiste Python-onderdelen worden geïnstalleerd.

Webinterface

Tik nu het adres localhost:7860 in de adresbalk van je browser. Krijg je een melding als 'Deze site is niet bereikbaar', dan is het opdrachtprompt-venster waarschijnlijk afgesloten. Je kunt trouwens het lopende proces in dit venster indien gewenst ook altijd zelf afsluiten met Ctrl+C.

Om het script weer op te starten en de webinterface beschikbaar te maken, voer je gewoon opnieuw het batchbestand ebook2audiobook.cmd uit. Het script merkt dat alles al is geïnstalleerd, dus je kunt vrijwel meteen verder. Ververs de webpagina indien nodig.

Ebook2audiobook is in essentie een opdrachtregelscript en de webinterface is weinig meer dan een grafische schil. In dit artikel beperken we ons tot het gebruik van die interface. Wil je verder graven, dan moet je je verdiepen in de opdrachtregelparameters.

Het Python-script draait en maakt de webinterface beschikbaar.

Conversie-uitvoer

Selecteer linksboven File en klik op Click to upload. Selecteer een geschikt e-boek of ander tekstbestand. Geef bij Language aan wat de brontaal is; scrol eventueel tot bij More languages (A-Z). Je kunt ook handmatig een taal ingeven, zoals Dutch – Nederlands.

Bij Optional kies je een bestaande stem, waaronder die van bekende personen als David Attenborough of Morgan Freeman. Via de pijlknop beluister je een voorbeeld.

Wil je niet alleen de stem, maar ook toon en stijl laten nabootsen, selecteer deze persoon dan ook (indien beschikbaar) bij Fine Tuned Models in plaats van de standaardoptie Internal.

Standaard staat bij TTS Base de engine xtts geselecteerd, die meestal de beste resultaten geeft. Je kunt ook met de andere beschikbare engines experimenteren (het beste gaat dat met een korte tekst ter test).

Heb je een ondersteunde gpu, vink dan GPU aan bij Processor Unit om de conversie aanzienlijk te versnellen. Kies tot slot een geschikt uitvoerformaat. Meestal stelt de tool m4b voor, omdat dit hoofdstukken ondersteunt, je leespositie bewaart en bij hoge compressie toch goede kwaliteit levert. Andere opties zijn onder meer flac, m4a, mp3 en ogg.

Tot slot kun je op het tabblad Fine Tuned Parameters nog enkele technische aspecten bijsturen, zoals Temperature (hoe hoger, hoe creatiever, maar ook hoe minder accuraat) en Speed (de spreeksnelheid).

Is alles ingesteld, klik dan onderaan op de gele balk om de conversie te starten. Houd er rekening mee dat het omzetten naar natuurlijke stem veel rekenkracht vergt. Bij een doorsnee e-boek is het programma al snel een dag of nacht bezig, al kun je natuurlijk ook eigen, korte verhalen importeren. Dit kan eventueel ook in pdf, txt, docx of html.

Je kunt kiezen uit vele stemmen van bekende personen.

Eigen stem

Na afloop kun je het resultaat vanuit de webinterface beluisteren. Gebruik de pijlknop linksonder om het bestand (vanuit de tijdelijke submap \tmp) op te slaan op een gewenste locatie. Je speelt het daarna af in je favoriete app, bijvoorbeeld met een mediaspeler als de gratis mediaspeler VLC media player (https://www.videolan.org).

Je kunt ook een andere stem gebruiken, bijvoorbeeld je eigen stem. Hiervoor heb je een stemopname nodig van maximaal zes minuten, liefst in mono, met een sample rate van 16K en opgeslagen als wav-bestand.

Heb je een opname in een ander formaat, dan converteer je die eenvoudig met een gratis tool als het uitstekende Shutter Encoder (https://www.shutterencoder.com). Open het opnamebestand, kies WAV bij Functie selecteren, stel bij Audio-instellingen in op Mix audiobestanden naar: Mono en Bemonsteringsfrequentie wijzigen naar: 16k. Bevestig op Functie starten.

In de webinterface van ebook2audiobook klik je bij Cloning Voice Audio File op Klik om te uploaden en verwijs je vervolgens naar het wav-bestand. De opname wordt meteen verwerkt en automatisch geselecteerd. Je kunt de stem hier ook beluisteren.

Met Shutter Encoder kun je tal van geavanceerde mediaconversies uitvoeren.

Metadata

Ook luisterboeken kun je voorzien van een omslagfoto, titel, auteur, trefwoorden en andere metadata. Wil je dit vóór de conversie regelen, dan doe je dat het makkelijkst in Calibre: klik met rechts op de titel van het e-boek (epub) en kies Metagegevens bewerken.

Hoewel je bepaalde metadata ook via ebook2audiobook kunt meegeven, is dat minder eenvoudig. Achteraf aanpassen is dan praktischer, bijvoorbeeld met een gratis tag-editor als Mp3tag (https://www.mp3tag.de/en), geschikt voor onder meer mp3, mp4, m4a en m4b.

Je kunt metadata, zoals een omslagafbeelding, ook naderhand aanpassen, bijvoorbeeld met Mp3tag.

AI-creatie

Met behulp van AI laat je ook heel eenvoudig eigen teksten of verhalen maken, zoals sprookjes voor het slapengaan, inclusief een mooie omslagafbeelding. We tonen kort hoe je dat doet in ChatGPT (https://www.chatgpt.com).

Meld je aan bij de app en geef een uitvoerige prompt in waarin je precies beschrijft welk type verhaal je wilt: het onderwerp, de personages, de setting, de stijl en de gewenste lengte. Je kunt het resultaat naderhand met extra prompts verder bijsturen.

Is het verhaal klaar, kopieer de tekst naar het klembord en plak het in een Word-document. Dat kun je eventueel via Calibre omzetten naar een epub-bestand.

Vraag de chatbot ook om een passende tekening bij het verhaal, bijvoorbeeld met de hoofdpersonages. Via de plusknop kun je optioneel één of meer foto's uploaden als model en vragen om de illustratie daarop te baseren.

Je voegt de afbeelding vervolgens samen met andere metadata toe aan je epub-bestand in Calibre. Ebook2audiobook maakt er dan een spannend luisterverhaal van. Voor elke dag eentje, misschien wel met je eigen stem om het helemaal echt (of echt nep) te maken.

Even geen inspiratie? De AI-chatbot helpt je er wel doorheen.

Toch liever lezen?

Blader door e-readers