ID.nl logo
Huis

Jasper-tutorial: Bouw je eigen spraakassistent

Google en Amazon proberen hun spraak-gestuurde apparaten Home en Echo als een centraal punt voor slimme apparaten aan te bieden. Maar deze bedrijven hebben het niet zo op privacy. Gelukkig is er een opensource-alternatief. Lees in deze Jasper-tutorial hoe je je eigen spraakassistent bouwt!

Aan het einde van dit artikel heb je dus je eigen Google Home of Amazon Echo, maar dan een die je privacy respecteert en waar je zelf volledige controle over hebt. Daarvoor zetten we een Raspberry Pi 3 in. Dat minicomputertje heeft ingebouwde wifi, zodat we een kabel minder nodig hebben. Het besturingssysteem plaatsen we op een micro-sd-kaartje. Het enige wat we dan naast de voeding nog dienen aan te sluiten, zijn een microfoon en luidsprekers. De luidsprekers sluiten we aan op de analoge uitgang van de Pi. De geluidskwaliteit daarvan is niet geweldig, maar voor zo’n computerstem is het voldoende.

Een analoge ingang heeft de Pi niet, maar we sluiten eenvoudig een usb-microfoon aan. Het resultaat van ons knutselwerk is uiteraard niet zo mooi als een Google Home of Amazon Echo, maar als je wat handig bent, bouw je het geheel eenvoudig in een houten behuizing die niet misstaat in je woonkamer. Die afwerking laten we als oefening voor jou!

Jasper downloaden

Voor de software gebruiken we Jasper, een opensource-spraakassistent. De oorspronkelijke ontwikkelaars hebben het project al een tijdje geen update meer gegeven, maar Matt Curry heeft de ontwikkeling op zich genomen en al enkele nieuwe releases uitgebracht. We werken in deze masterclass met versie 1.5 van Matt Curry.

Let dus op dat je niet een officieel image van het Jasper-project downloadt, want dat is niet meer up-to-date. Download een image van de website van Matt Curry (http://bit.ly/2nwRBV9). Vink het bestand op de Amazon Drive van Matt Curry aan en klik onderaan op Download. Het is 1,4 GB groot en het duurt wel even voor je het binnen hebt.

Pak het tar.gz-bestand uit, bijvoorbeeld met het programma 7-Zip dat allerlei compressieformaten ondersteunt. Open het bestand daarvoor met 7-Zip en klik op Extract om het img-bestand erin uit te pakken.

Schrijf dan het uitgepakte bestand naar het micro-sd-kaartje. Dat kan met het programma Win32DiskImager. Steek je micro-sd-kaartje in de kaartlezer van je computer en kies in Win32DiskImager de schijfletter van je kaartje. Selecteer het img-bestand van Jasper en klik op Write om het naar je kaartje te schrijven.

Let op: het programma overschrijft de volledige inhoud van het kaartje! Gebruik dus alleen een kaartje waar geen data meer op staan die je nodig hebt, en controleer dubbel of je de juiste schijfletter kiest voordat je op Write klikt. Nadat het image naar het kaartje is geschreven, haal je het uit je kaartlezer en steek je het in je Pi.

Raspbian op Raspberry Pi

Sluit tijdelijk een toetsenbord en scherm op je Pi aan voor de configuratie, sluit je luidsprekers en usb-microfoon aan en tot slot de voedingskabel. Als alles goed gaat, start je Pi nu en krijg je een inlogprompt van Raspbian te zien. Log in met gebruikersnaam pi en wachtwoord raspberry. Voer het configuratieprogramma van Raspbian uit met

sudo raspi-config

Kies eerst Expand Filesystem zodat het bestandssysteem je volledige micro-sd-kaart inneemt. Kies daarna Change User Password om het standaardwachtwoord te wijzigen.

Zorg dat Wait for Network at Boot ingeschakeld is. Bij Internationalisation Options kies je je taal, tijdzone, toetsenbordindeling en je land. Ga dan naar Advanced Options en zet onder Memory Split de hoeveelheid geheugen voor de gpu op 16 megabytes, zodat je zoveel mogelijk geheugen voor de cpu overhoudt. Schakel ook de ssh-server in onder SSH, zodat je het toetsenbord en beeldscherm niet aangesloten hoeft te houden, maar met Putty via het netwerk kunt inloggen. Ga tot slot met de Tab-toets naar Finish en antwoord No bij de vraag om nu te herstarten.

Nu hoeven we alleen nog wifi te configureren. Scan naar de aanwezige wifi-netwerken met

sudo iwlist wlan0 scan

Achter ESSID staat de naam van het netwerk. Open daarna het configuratiebestand met

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

en voeg de configuratie voor je netwerk toe met regels

network={, ssid="JouwESSID", psk="JouwWifiWachtwoord"

En

}

Herstart daarna je Pi met

sudo reboot

©PXimport

Audio instellen

We gaan ervan uit dat je speakers hebt aangesloten op de 3,5mm-uitgang van de Pi en een usb-luidspreker op een usb-poort. We zorgen dat Raspbian de usb-audiodrivers eerst laadt. Open daarvoor het juiste bestand met

sudo nano /etc/modprobe.d/alsa-base.conf

en zorg dat bij snd_usb_audio als index 0 staat en bij snd_bcm2835 als index 1. Zorg ook dat op de laatste regel van dit bestand bij slots eerst snd-usb-audio komt en daarna pas snd-bcm2835. Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X. Voer daarna

sudo nano /usr/share/alsa/alsa.conf

uit en zoek met Ctrl+W naar defaults.ctl.card. Controleer of hier en bij defaults.pcm.card als waarde 0 staat en verander dit indien nodig. Controleer nu of je met de luidspreker iets kunt opnemen. Voer daarvoor de opdracht

arecord temp.wav

uit en spreek iets in. Sluit de opname af met Ctrl+C. Speel de opname daarna af met

aplay -D hw:1,0 temp.wav

Hoor je wat je zojuist hebt ingesproken, dan is je audio correct geconfigureerd.

Lees verder op de volgende pagina.

Nu is ons besturingssysteem klaar om Jasper te installeren.

Jasper installeren en configureren

Ga naar de juiste directory met

cd Jasper-RPI-Tools/installers

en voer het installatieprogramma uit met

./jasper-repo-installer.sh

Druk op Enter om te bevestigen dat je Jasper wilt downloaden, bevestig dat gebruiker pi het programma draait, dat je het programma in de directory /home/pi wilt installeren en kies de versie main. Herstart daarna je Pi.

Met de standaardinstellingen werkt Jasper al bijna, maar je hebt nog één ding nodig: een server-token voor Wit.ai. Log op die website in met een GitHub- of Facebook-account. Klik zodra je ingelogd bent bovenaan rechts op Settings en kopieer het Server Access Token. Voer dan op je Pi de opdracht

nano ~/.jasper/profile.yml

uit en vul wat gegevens in, zoals je naam, Gmail-adres, Gmail-wachtwoord, telefoonnummer, locatie, tijdzone enzovoort. Informatie die je niet wilt invullen, laat je gewoon open.

Vul bij stt_engine de engine witai in. Voeg ook de regels

witai-stt:

En

access_token: ERJKGE86SOMERANDOMTOKEN23471AB

toe, waarbij je uiteraard je eigen token van Wit.ai invult. Sla het bestand op met Ctrl+O en sluit het af met Ctrl+X. Herstart Jasper met

sudo systemctl restart jasper-daemon.service

©PXimport

Debuggen

Als Jasper niet doet wat hij moet doen, is het moeilijk om te zien wat er juist misloopt. Is het omdat Jasper je accent niet verstaat, of omdat je een fout in het configuratiebestand hebt staan? Sluit daarom alle draaiende Jasper-instanties af met

pkill python2

en start Jasper manueel op met

jasper-client/jasper.py --debug

Het programma toont nu zijn uitvoer en met de optie --debug krijg je nog meer informatie te zien. Als er iets mis is met het configuratiebestand, krijg je hier een waarschuwing of foutmelding te zien. En als je een opdracht inspreekt, krijg je de tekst te zien die Jasper uit je spraak herkent. Zo weet je onmiddellijk wanneer je wat duidelijker moet articuleren. Is je probleem opgelost, sluit Jasper dan af met Ctrl+C en start het programma terug op de achtergrond op met

sudo systemctl start jasper-daemon.service

Praten met Jasper

Wanneer Jasper start, zegt hij “How can I be of service?” gevolgd door je naam. Vanaf dan luistert je assistent naar jou. Als je “Jasper” zegt, laat Jasper een hoog biepje horen. Dan spreek je je opdracht in, bijvoorbeeld “What’s the time?”, waarna Jasper een laag biepje genereert. Daarna spreekt Jasper zijn antwoord uit. Let wel op dat je onmiddellijk na het eerste biepje je opdracht inspreekt, want Jasper wacht niet lang.

Elke opdracht die Jasper verstaat, zit in een afzonderlijke module. Standaard komt Jasper al met enkele modules, zoals de tijd, “How’s the weather”, “What’s in the news”, “What’s the meaning of life”, “Tell me a joke”, enzovoort.

Voor de integratie met Gmail vul je de variabelen gmail_address en gmail_password in het configuratiebestand ~/.jasper/profile.yml in met nano. Let op: iedereen die het micro-sd-kaartje van je Pi steelt of via het netwerk op je Pi inbreekt omdat je het standaardwachtwoord niet hebt veranderd, is zo in staat om je Gmail-wachtwoord te lezen.

Gebruik daarom authenticatie in twee stappen voor Gmail en stel een app-wachtwoord in voor Jasper, dat je in zijn configuratiebestand invult. Dit wachtwoord kun je op elk moment intrekken op https://myaccount.google.com/security. Als je Gmail-gegevens geconfigureerd zijn, vraag je aan Jasper “Do I have any email?” en antwoordt hij met het aantal ongelezen e-mails.

Ook integratie met Facebook is mogelijk: dan kun je je Facebook-notificaties opvragen of Jasper vragen wie er vandaag jarig is. En heb je Spotify Premium, dan laat je eenvoudig je afspeellijsten van Spotify door je Pi afspelen met stembesturing. Beide modules vereisen wel wat meer configuratie, we verwijzen daarvoor naar de documentatie van Jasper.

Pocketsphinx, een andere speech-to-text-engine

We hebben nu met de standaard speech-to-text-engine (STT) Wit.ai gewerkt, omdat die eenvoudig te activeren is. Een nadeel is dat die al je spraak over internet stuurt naar de servers van Wit.ai, wat vanuit privacystandpunt niet aan te raden is. Bovendien levert het sturen van je spraak over internet ook een vertraging op. We tonen hier daarom hoe je naar een offline stt-engine overschakelt, Pocketsphinx. Let wel op: die herkent iets minder goed spraak dan Wit.ai.

Ververs eerst de pakketbronnen van Raspbian met

sudo apt-get update

Installeer daarna Pocketsphinx en de Python-module voor Pocketsphinx met

sudo apt-get install pocketsphinx python-pocketsphinx

Daarna dienen we enkele afhankelijkheden zelf te compileren. Dat is nogal een omslachtig proces. We verwijzen daarvoor naar de documentatie van Jasper, maar niet alles klopt meer. Volg eerst de uitleg onder het kopje ‘Installing CMUCLMTK’.

Download nu OpenFST 1.3.4 met de opdracht

wget -O openfst_1.3.4-1_armhf.deb https://docs.google.com/uc?id=0ByR-0pXyV40pNlZZY0p6MUVpWW8&export=download

En installeer het met

sudo dpkg -i openfst_1.3.4-1_armhf.deb

Download dan m2m-aligner 1.2 met

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/m2m-aligner/m2m-aligner-1.2.tar.gz

Pak het uit met

tar xvzf m2m-alifner-1.2.tar.gz

Open de directory en compileer het met

cd m2m-aligner-1.2 en sudo make

Ga terug naar de home-directory met

cd

en download mitlm 0.4.1 met

wget https://github.com/mitlm/mitlm/releases/download/v0.4.1/mitlm_0.4.1.tar.gz

Pak het uit met

tar xvzf mitlm_0.4.1.tar.gz

Ga in de directory met

cd mitlm-0.4.1/

configureer het pakket met

./configure

en installeer het met

sudo make install

©PXimport

Ga terug naar de home-directory met

cd

en download Phonetisaurus 0.8.1 met

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/phonetisaurus/is2013-conversion.tgz

Pak het bestand uit met

tar xvzf is2013-conversion.tgz

Ga naar de juiste directory met

cd is2013-conversion/phonetisaurus/src

en compileer Phonetisaurus met

sudo make

Maak ondertussen maar een wandeling met de hond, want het compileren duurt een tijdje. Ga dan terug naar de home-directory (met cd) en kopieer enkele gecompileerde bestanden met

sudo cp ~/m2m-aligner-1.2/m2m-aligner is2013-conversion/bin/phonetisaurus-g2p /usr/local/bin

Download dan het Phonetisaurus FST-model met

wget https://www.dropbox.com/s/kfht75czdwucni1/g014b2b.tgz

en pak het uit met

tar xvzf g014b2b.tgz

Ga daarna naar de uitgepakte directory met

cd g014b2b/

en bouw het FST-model met

./compile-fst.sh

Ga daarna terug naar de home-directory en geef de uitgepakte directory een andere naam met

mv ~/g014b2b ~/phonetisaurus

Je bent nu eindelijk klaar met de installatie van Pocketsphinx! Pas daarna in ~/.jasper/profile.yml de stt-engine aan door de regel

stt_engine: sphinx

Voeg ook de regel

pocketsphinx:

En daaronder

hmm_dir: '/usr/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k'

toe. Sla op met Ctrl+O en sluit nano af met Ctrl+X. Start Jasper nu opnieuw, waarna je spraakassistent werkt zonder je spraak het internet op te sturen. Het heeft dus wat moeite gekost, maar daar krijg je wel wat voor terug!

Jasper ondersteunt dus meerdere speech-to-text engines. Drie daarvan sturen wat je tegen Jasper zegt door over internet om de spraak daar te analyseren en de herkende tekst terug te sturen. De engine van Wit.ai werkt met het Wit.ai-platform dat spraakherkenningsalgoritmes door crowdsourcing traint. De engine van Google is dezelfde als die je op Android gebruikt als je “OK, Google” zegt. En de engine van AT&T bouwt voort op de diensten van het gelijknamige telecommunicatiebedrijf.

Als je niet wilt dat anderen in principe kunnen meeluisteren in je woonkamer naar wat je tegen Jasper zegt, laat je deze engines links liggen. Maar toevallig zijn het wel de engines die het beste werken. Wil je een offline stt-engine, dan is Pocketsphinx de eerste keuze. Deze opensource-engine werkt snel en is geoptimaliseerd voor systemen met weinig processorkracht zoals de Raspberry Pi.

De spraakherkenning is wel duidelijk minder goed dan die van de online engines. Een andere offline engine is Julius. Die dien je echter met je eigen akoestisch model te trainen, wat nogal een complexe taak is.

Een andere stem voor Jasper

De stem van Jasper klinkt standaard nogal robotachtig. Dat is de verantwoordelijkheid van de standaard text-to-speech engine die Jasper gebruikt, espeak. Gelukkig is het kiezen van een andere text-to-speech-engine niet zo’n lijdensweg als de installatie van Pocketsphinx. De SVOX Pico tts-engine installeer je eenvoudig met

sudo apt-get install libttspico-utils

Ook de configuratie is eenvoudig. Open het bestand ~/.jasper/profile.yml met nano en voeg de regel

tts_engine: pico-tts

toe. Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X. Als je nu Jasper opnieuw start, krijg je een veel menselijker klinkende stem te horen. Bovendien hebben we nog altijd het voordeel Jasper zijn uitgesproken woorden niet over internet stuurt, zodat je spraakassistent je privacy garandeert.

Een schoonheidsfoutje is dat de stem van de Pico-tts-engine vrouwelijk is en onze spraakassistent nog altijd naar de mannelijke naam Jasper luistert. In Jasper 1.6 zal de naam eenvoudig te veranderen zijn.

Jasper ondersteunt maar liefst acht text-to-speech engines. Is je privacy je lief, dan vallen verschillende al af omdat ze online werken en de tekst die Jasper naar spraak wil omzetten naar een server sturen. Het zijn wel de tts-engines die de beste spraakherkenning hebben.

Google TTS gebruikt dezelfde text-to-speech-api als die van nieuwere Android-apparaten. De spraaksynthese gebeurt op servers van Google. Ivona TTS werkt met de Ivona Speech Cloud van Amazon, die we ook van in de Kindle Fire kennen. Ook hier gebeurt de spraaksynthese online. MaryTTS werkt ook met een server, maar het voordeel is dat de server opensource is en dat je ze op je eigen machine kunt installeren. Voor de Raspberry Pi is het programma echter nogal zwaar.

Maak je gebruik van een publieke MaryTTS-server, dan is je privacy uiteraard niet gegarandeerd. Tot de offline engines behoren eSpeak, Festival en Flite, die nogal robotachtig klinken. SVOX Pico TTS is de engine die in Android 1.6 gebruikt werd en heeft een vrij goede kwaliteit. Draai je Jasper op een Mac, dan kun je ook Mac OS X TTS inzetten, die de say-opdracht van macOS aanroept.

▼ Volgende artikel
Sony Bravia Theatre U: nekbandspeaker die samen tv-kijken prettiger maakt
© Sony
Huis

Sony Bravia Theatre U: nekbandspeaker die samen tv-kijken prettiger maakt

Samen tv-kijken terwijl één van de twee wat slechter hoort? Dat leidt vaak tot gedoe over het volume. Wat voor de één te zacht is, is voor de ander te hard. Moet een van de twee dan maar een koptelefoon op? Da's ook weer zo ongezellig. Met de Bravia Theatre U wil Sony dat probleem verhelpen. Deze draadloze nekbandspeaker stuurt het tv-geluid direct naar de oren, terwijl omgevingsgeluiden hoorbaar blijven.

De Bravia Theatre U (adviesprijs 284 euro) rust losjes op de schouders en richt het geluid direct op de oren. Zo klinken stemmen en muziek helder, terwijl de drager gewoon hoort wat er om hem heen gebeurt. Tijdens het tv-kijken blijven dialogen goed verstaanbaar, ook als het volume voor de rest van het gezin op normaal niveau staat – geen discussie meer over standje 'burenruzie'. Tv-kijken, bellen of luisteren naar een podcast kan zo comfortabel, zonder dat anderen daar last van hebben.

©Sony

De speaker is voorzien van Voice Clarity-technologie, die stemmen extra duidelijk weergeeft. Dankzij de lage vertraging tussen beeld en geluid blijft alles synchroon, wat prettig is bij films en games. De Bravia Theatre U is licht, spatwaterbestendig (IPX4) en geschikt voor gebruik met hoortoestellen. De accu is via USB-C snel op te laden en schakelt automatisch uit wanneer de speaker niet wordt gebruikt.

Via bluetooth kan de nekband aan meerdere apparaten tegelijk worden gekoppeld, bijvoorbeeld aan een tv en smartphone. Met de 360 Spatial Sound Personalizer is het geluid verder aan te passen aan persoonlijke voorkeuren.

©Sony


Wat is een nekbandspeaker?

Een nekbandspeaker is een lichte luidspreker die om de schouders rust. Het geluid wordt richting de oren gestuurd, zodat de drager helder geluid hoort zonder afgesloten te zijn van de omgeving. Dat maakt het een alternatief voor koptelefoons, vooral voor wie moeite heeft met verstaanbaarheid of comfort.


▼ Volgende artikel
Sideloading: shoppen buiten de officiële app-winkels
Huis

Sideloading: shoppen buiten de officiële app-winkels

Wanneer je een app installeert op je Android- of iOS-apparaat, doe je dat meestal via de officiële appwinkels Google Play of App Store. Dat is prima, maar je kunt apps ook op andere plekken downloaden en (handmatig) installeren. Dit wordt ‘sideloading’ genoemd. Waarom zou je dat doen en hoe doe je dat?

In dit artikel lees je:
  • Waarom je apps normaal gesproken via de officiële winkels installeert

  • Wanneer en waarom je toch alternatieve apps kiest

  • Hoe sideloading werkt op Android, inclusief apk’s en bundels

  • Welke alternatieve winkels en bibliotheken er zijn

  • Welke veiligheidsmaatregelen je kunt nemen

  • Hoe sideloading sinds de DMA ook op iOS mogelijk is

  • Welke voorwaarden en stappen daarbij horen

De belangrijkste redenen om apps via de officiële webwinkels van Android (Google Play) of Apple (App Store) te installeren zijn het ruime aanbod, makkelijke installatie, hogere veiligheidsnormen, regelmatige updates, stabiele werking en automatische back-ups en herstel. Toch zijn er ook redenen om elders te kijken, los van eventuele principiële overwegingen.

Zo kan een app niet beschikbaar zijn in je regio, of zoek je een specifieke versie die daar niet meer wordt aangeboden. Het kan ook gaan om een app die door Apple of Google wordt geweigerd, of om een testversie, opensource-app of een app die voorlopig enkel buiten het commerciële aanbod bestaat. Een voorbeeld van deze laatste is de Android-app Fiets of Niets. Deze hebben we zelf gebouwd met AI-tools en kun je als apk-bestand (Android PacKage) downloaden via www.kwikr.nl/fietsofniets (pak het zip-bestand uit). Deze app geeft je een zevendaagse weersvoorspelling op elke locatie, met temperatuur, zonne-uren, windkracht en regenkans. Je kunt zelf instellen welke onderdelen je het belangrijkst vindt.

We vertellen hieronder hoe je alternatieve apps installeert in Android. Daarna leggen we uit hoe je dit op iOS doet. Je doet dit natuurlijk wel op eigen risico.

Fiets of niets: een voorbeeld van een app die alleen als apk-bestand beschikbaar is.

Android:

Alternatieve appwinkels

Bij de app Fiets of Niets bijvoorbeeld moet je dus zelf het appbestand te downloaden en te installeren, maar er zijn ook alternatieve appwinkels waarin dit proces geautomatiseerd verloopt. Populaire voorbeelden zijn F-Droid (beperkt aanbod, enkel opensource-apps), Aurora Store (een spiegel van de Play Store, Google-account niet vereist) en Aptoide (gedecentraliseerde appstore met wisselende betrouwbaarheid per winkel). Aangezien deze winkels niet in de Play Store staan, moet je ze eerst handmatig downloaden en installeren via hun websites.

Daarnaast bestaan er ook appstores die veel weg hebben van appbibliotheken, zoals APKMirror, APKPure en Uptodown. Hieruit kun je apps selecteren en afzonderlijk downloaden. Elk van deze aanbieders biedt trouwens ook een eigen app aan, respectievelijk APKMirror Installer, APKPure App en APK Installer by Uptodown, die het installatieproces, en vaak ook het updateproces, van apps vereenvoudigen. Zulke installer-apps zijn trouwens noodzakelijk voor het installeren van zogeheten Android-app Bundels, zoals apkm (van APKMirror), xapk (apk met eXtra bestanden en data; vaak bij APKPure) en apks (het officiële Bundle-formaat met alle nodige 'Splits'). Deze installer-apps zijn (ook) beschikbaar in de officiële Google Play Store.


Apkpure: ergens tussen app-bibliotheek en -store.

Handmatige installatie

We tonen eerst hoe je handmatig een apk-bestand downloadt en installeert. We doen dit met de app Uptodown App Store, al had dit bijvoorbeeld net zo goed het apk-bestand van Fiets of Niets kunnen zijn.

Surf op je smartphone naar https://en.uptodown.com en zoek de gewenste app op. Tik op de groene downloadknop. Je krijgt waarschijnlijk een standaardmelding dat het bestand mogelijk schadelijk is. Als je zeker bent dat het om bonafide software gaat (zie ook verder), tik je op Toch downloaden.

Het apk-bestand staat nu in de map Downloads. Deze kun je ook benaderen vanuit je browser door op de drie puntjes te tikken en Downloads te kiezen. Tik vervolgens op het gedownloade bestand. Vraagt Android met welke app je dit wilt openen, kies dan Pakket-installatie.

De kans is groot dat er een melding verschijnt dat je toestel geen toestemming geeft om apps van deze bron (je browser) te installeren. Tik hier dan op Instellingen en zet de schuifknop bij Machtiging toestaan op Aan. Bevestig vervolgens met Installeren. Even later is de installatie klaar en kun je de app openen.

Bij het downloaden van een uitvoerbaar bestand moet je altijd alert zijn.

Android-app Bundle

Apk-bestanden kun je dus vrij eenvoudig handmatig installeren via het ingebouwde pakketbeheer. Voor gebundelde apps heb je meestal een gespecialiseerdere installer nodig. We nemen de game Worms Zone (Hungry Snake) op de site van APKMirror als voorbeeld. Tik op de app, kies Scroll to available downloads, selecteer een download en tik op Download APK Bundle. Open daarna de downloadsectie van je browser om te controleren of het APKM-bestand gedownload is.

Om dit te installeren, kies je een van de eerder genoemde installers. We nemen hier APK Installer by Uptodown als voorbeeld. Na installatie geef je de gevraagde machtigingen, open je de app en tik je op Install Apps. De installer doorzoekt nu je Downloads-map en vindt alle apk-gerelateerde bestanden, waaronder het gedownloade apkm-bestand van Worms Zone. Tik op Install bij dit bestand en bevestig met Installeren. Even later kun je de app openen.

Uptodowns APK Installer kan ook met apkm-bestanden overweg.

Veiligheidsmaatregelen

Aan sideloading hangt altijd een zeker risico, maar dat kun je sterk beperken door enkele zaken goed op te volgen. Controleer eerst hoe betrouwbaar de ontwikkelaar en de alternatieve bron zijn. Ga na of de bron bekend is en positief besproken wordt op Android-fora en of ze transparant is over updates en changelogs. Laat het apk-bestand, indien mogelijk, eerst scannen door een gratis online virusscanner als VirusTotal (www.virustotal.com) of gebruik de app VirusTotal Mobile (beschikbaar in de Play Store). Vergelijk ook online app-screenshots, neem een aantal recensies en gebruikerservaringen door, en ga het aantal downloads van de app na.

Zorg dat geïnstalleerde apps up-to-date blijven en controleer of updates extra machtigingen vragen. Dit kun je ook na installatie nagaan via Instellingen / Apps. Tik op Alle [n] apps zien, scrol naar de app, tik erop en kies Rechten. Hier kun je machtigingen eventueel ook intrekken of opnieuw toestaan.

Je kunt instellen dat Google Play Protect ook gesideloade apps controleert. Open de Play Store, tik rechtsboven op je profielicoon, kies Play Protect en tik op het tandwiel. Schakel Apps scannen met Play Protect in en eventueel ook Detectie van schadelijke apps verbeteren.

Wil je na het downloaden voorkomen dat een bepaalde bron, zoals je browser, nog apk-bestanden mag installeren, ga dan naar Instellingen / Apps / Speciale app-toegang / Onbekende apps installeren, selecteer de bron (bijvoorbeeld Chrome) en schakel Toestaan van deze bron weer uit.

Tot slot, vertrouw je een geïnstalleerde app niet helemaal of heb je deze niet langer nodig, verwijder deze dan van je toestel.

De app Virustotal Mobile haalt geïnstalleerde apps door tientallen virusscanners.

iOS:

DMA

Terwijl sideloading op Android altijd al mogelijk was, heeft Apple zich daar lang tegen verzet. Officieel om veiligheidsredenen, maar ook om de eigen inkomsten via de App Store (30 procent commissie) te beschermen. Sinds maart 2024 staat Apple onder druk van de EU en de Digital Markets Act (DMA) beperkte vormen van sideloading toe. In de EU kun je nu apps installeren via alternatieve appwinkels (vanaf iOS 17.4) of eventueel rechtstreeks vanaf een website (vanaf iOS 17.5), hoewel er via deze laatste methode nauwelijks apps beschikbaar zijn (wegens de strenge voorwaarden van Apple).

Apple eist dat alternatieve apps 'genotariseerd' zijn, wat betekent dat ze vooraf zijn gescreend op veiligheid (zie ook via www.kwikr.nl/macveilig). Als gebruiker moet je ook expliciet toestemming geven voor de ontwikkelaar. We tonen hieronder hoe je dat doet. Let wel: alternatieve apps ondersteunen wellicht geen functies als 'Vraag om te kopen' of 'Delen met gezin'.

Onder druk van de DMA: ook apps buiten de officiële App Store om.

Controle

Om er zeker van te zijn dat je iPhone aan alle voorwaarden voldoet, controleer je eerst het versienummer. Open Instellingen, ga naar Algemeen / Info en kijk of je iOS-versie 17.4.x (voor alternatieve appwinkels) of 17.5.x (voor webdistributie) of hoger gebruikt (afbeelding 7). Voer indien nodig een software-update uit.

Aangezien sideloading alleen binnen de EU mogelijk is, open je ook Privacy en beveiliging / Locatievoorzieningen / Systeemvoorzieningen en schakel je iPhone-analyse en Deel mijn locatie in.

iOS-versie 18.4.1: dat zit goed.

Alternatieve appwinkel

Alles is nu klaar om een alternatieve appwinkel te installeren. Open Safari en surf naar een erkende winkel, zoals AltStore PAL, Setapp Mobile of Epic Games Store.

We nemen AltStore PAL als voorbeeld. Op de site tik je op Get AltStore en daarna twee keer op Download. Er verschijnt waarschijnlijk een melding, tik dan op OK. Ga vervolgens naar Instellingen, tik bovenaan op de melding Sta de apps van AltStore, LLC toe en bevestig met Toestaan. Ga daarna terug naar de webpagina en tik opnieuw op Download, gevolgd door Installeer appmarktplaats en bevestig met je Face ID of Apple-code. Open de nieuwe app AltStore. Tik hier bijvoorbeeld op Browse, kies een gratis app, tik op Free en bevestig met Install <appnaam> en daarna met Installeer app. Je kunt de app nu starten.

Installatie met een link via webdistributie verloopt op vergelijkbare wijze: tik op de downloadlink, keur de ontwikkelaar goed vanuit (het bericht in de) Instellingen en tik nogmaals op de link.


Je moet wel even bevestigen dat je deze alternatieve appstore vertrouwt.