“Google!”, “Alexa!”. Niemand kijkt meer op wanneer je hiermee je virtuele assistent wakker schudt om iemand te bellen of de lampen aan te doen. Maar niet zo vaak hoor je “Mycroft!”. Dit is een opensource-stemassistent, die onder andere op de Raspberry Pi draait. Deze combi gaan we hier inzetten om huisautomatiseerder Home Assistant mee te commanderen.  

Serge Gielkens

Dankzij kunstmatige intelligentie is verbale communicatie met computers en apparatuur tegenwoordig bijna gemeengoed. Toch blijft stemherkenning en spraaksynthese complex. Daardoor praat je weliswaar tegen een apparaat, maar de feitelijke code voor de virtuele assistenten van Google en Amazon draait op hun eigen servers.

Ook Mycroft functioneert op deze manier, alhoewel het mogelijk is om alle software helemaal in eigen beheer te houden. Dat doe je dan door Mycroft te koppelen met alternatieve applicaties, zoals Mozilla DeepSpeech om spraak in tekst om te zetten. We houden het hier echter eenvoudig en gaan direct met Mycroft op een Raspberry Pi aan de slag.


Picroft

Hiervoor levert het Mycroft project onder de naam Picroft een kant-en-klaar image. Ga naar de website en klik bovenin op het menu Get Started om dit image te downloaden. Zet het vervolgens op je microSD-kaartje met een tool als Etcher.

Om de Pi als stemassistent te gebruiken heb je natuurlijk een microfoon en luidspreker nodig. Het bordje van de Pi heeft een standaard koptelefoonaansluiting. Dat is de zogenaamde 3,5 mm jack. Elke luidspreker met zo’n aansluiting werkt probleemloos.

Voor de microfoon ben je op een USB-aansluiting aangewezen. Hoewel Mycroft officieel maar een handjevol van dergelijke microfoons ondersteunt, valt dat in de praktijk reuze mee. Met de huidige USB-webcams met ingebouwde microfoon ondervind je in het algemeen geen probleem. Die zijn namelijk UVC-compliant, waarvoor Linux de drivers aan boord heeft.

Onze USB-webcam.

Na de eerste boot start automatisch een interactief configuratiescript. Sluit daarom een monitor met toetsenbord aan. Direct inloggen via SSH kan ook. Wifi werkt echter niet meteen, dus koppel je Pi met een ethernetkabel aan je router. Doordat je zodoende netwerkverbinding hebt, laat het script de draadloze configuratie ineens achterwege. Dat vergt een extra stap en daarom laten we dat hier zien.

Voltooi configuratie

Start de Pi op en log in als gebruiker pi met het wachtwoord mycroft:

ssh pi@ip.adres.picroft

Het IP-adres vind je via de webinterface van je router. Als je laptop en de Pi op hetzelfde netwerk zitten, gebruik je in plaats daarvan gewoon picroft.local.

Het configuratiescript begint met een update van Picroft. Vervolgens vraagt hij om de luidspreker te testen. Kies 1 voor de standaard 3,5 mm jack en druk op T. Je hoort dan het woord test. Zo niet, schroef dan het volume op met de cijfertoetsen en herhaal de test.

Dan volgt een controle voor de audio-ingang. Kies je microfoon en start de test. Wacht even totdat STARTING TO RECORD verschijnt, en spreek dan pas iets in. Vervolgens speelt Picroft de opname af. Als je nu je eigen stem terughoort, kies je 1. Zo niet, druk dan op 3 om de configuratie verder te doorlopen. Test dan achteraf een andere microfoon met het commando mycroft-mic-test.

Kies bij de volgende vraag 1 om de stabiele versie van de Mycroft software te gebruiken. Bij de laatste twee vragen krijg je de mogelijkheid om het standaard wachtwoord aan te passen. Omwille van de veiligheid is dat aan te raden.

Mycroft client.

Pairing

Na het afronden van de configuratie start meteen de client van Mycroft op. Die toont na enkele ogenblikken een melding over een pairing code. Picroft laat ook meteen van zich horen door deze melding geregeld uit te spreken, net zolang totdat de pairing uitgevoerd is. Met deze pairing code maak je de Raspberry Pi bekend bij Mycroft, zodat hij toegang krijgt tot de spraaksoftware.

Ga daarvoor naar de website van Mycroft en registreer je via de knop My Account. Nadat je bent ingelogd, kies je via het kleine, gele icoontje helemaal rechtsboven de optie Devices. Klik vervolgens op ADD DEVICE en vul de pairing code in samen met een naam, bijvoorbeeld mijn_picroft. Geef tevens je locatie op. Picroft gebruikt dit om bijvoorbeeld het
juiste weer van jouw regio te vertellen.

Klik tot slot op NEXT om je device te activeren. Daarop toont de client een melding dat Picroft klaar staat. Maar voordat we gaan praten met onze virtuele assistent, zorgen we eerst voor wifi.

Draadloos praten

Verlaat de Mycroft client met het commando :quit. Start dan de configuratietool van de Raspberry Pi op:

sudo raspi-config

Kies optie 2 Network Options en selecteer in het volgende scherm Wi-fi. Vul dan als SSID de netwerknaam in en bij passphrase het wachtwoord. Die staan normaliter onderop je router. Wifi is nu meteen actief. Start tenslotte de client weer op:

mycroft-cli-client

Soundcheck

Trek de aandacht door “Hey Mycroft” uit te spreken. Met een toontje meldt Picroft zich. De client toont tevens in groen de melding Begin Recording. Spreek vervolgens binnen enkele seconden iets in, anders gaat Picroft weer slapen. Roep dan nogmaals “Hey Mycroft” en vraag bijvoorbeeld “What’s the time?”. Je krijgt dan keurig de tijd te horen, terwijl de client het antwoord eveneens toont. Doordat Picroft via internet de spraaksoftware gebruikt, merk je soms wel enige vertraging.

Probeer nu zelf wat, zoals “Is it going to rain?”, “What’s your IP-address?” of “Tell me what a computer is”. Begin elk commando met “Hey Mycroft”. Je hoeft overigens geen perfect Engels te beheersen. Mycroft verstaat Dunglish (Dutch English) verrassend goed. Begrijpt hij je toch niet, dan hoor je dat. Bij twijfel geeft Mycroft soms suggesties. Begin alleen dan niet met “Hey Mycroft”, maar geef meteen antwoord. Anders interpreteert hij juist “Hey Mycroft” als respons.

Werk aan je skills

Na installatie begrijpt Mycroft een beperkte set instructies. Zo’n set heet een skill en is toegespitst op een specifieke toepassing. Zojuist heb je skills voor het weer, netwerkinformatie en Wikipedia gebruikt. Het gaat hier niet om de spraakherkenning. Dat doet de software bij Mycroft. De skill stelt Picroft in staat om bijvoorbeeld Wikipedia te raadplegen met de juiste zoekstring.

Behalve deze basis skills zijn er nog meer. Voor een overzicht hiervan ga je naar je Mycroft account. Selecteer in het menu links de optie Marketplace en klik op Skills. Daar zie je onder andere skills voor Spotify, het laatste nieuws en Movie Master voor informatie over films. Bij enkele zie je rechtsboven een groen vinkje. Die zijn al geïnstalleerd. Dat is het geval voor onder andere Installer, waarmee je nieuwe skills met je stem installeert. Dat doen we voor Home Assistant.

Scroll naar beneden tot het kopje IoT. Klik daar op Home Assistant om informatie te krijgen over de mogelijkheden van deze skill. Zo zie je de ondersteunde taal (momenteel alleen Engels), voorbeelden van commando’s en welk soort apparaatjes je kunt bedienen. Dat zijn onder andere lampen, schakelaars en slimme thermostaten. Installeer deze skill door tegen Mycroft te zeggen: “Hey Mycroft, install Home Assistant”. Hij vraagt om een bevestiging, waarop je “Yes” of wat beleefder “Yes, please” antwoordt. Wacht nu even, totdat Picroft je vertelt dat Home Assistant klaar is voor gebruik.

Hieronder beschrijven we verder hoe Home Assistant met Mycroft samenwerkt. We gaan daarbij uit van een draaiend domoticasysteem. Het opzetten van Home Assistant heb je in een eerder nummer van Linux Magazine gelezen.

Home Assistant

Picroft kan nu Home Assistant instrueren, maar weet nog niet waar die zich bevindt. Klik daarvoor in je Mycroft account op het gele icoontje helemaal rechtsboven en kies Skills. Nu krijg je een lijst met configuraties voor de geïnstalleerde skills. Selecteer Home Assistant en geef bij Login de hostnaam of het IP-adres op van de computer waarop Home Assistant draait.

Verder heb je een Long-Lived Access Token nodig. Dat fungeert als een wachtwoord, zodat niet elk willekeurig device zomaar toegang heeft tot Home Assistant. Open in de webinterface van Home Assistant je gebruikersprofiel door helemaal linksonder op het icoontje met je naam te klikken. Scroll naar beneden en klik onder het kopje Long-Lived Access Tokens op CREATE TOKEN. Geef een naam, bijvoorbeeld picroft, en klik op OK. Kopieer vervolgens de gegenereerde string.

Home Assistant samen met Picroft.

Ga weer terug naar je Mycroft account en plak deze string bij Long-Lived Access Tokens. Klik tenslotte op SAVE. In de client zie je dat Picroft de nieuwe configuratie toegestuurd krijgt. Roep nu bijvoorbeeld “Hey Mycroft, turn on lights” en prompt springen de lampen aan. Mycroft ondersteunt ook groepen (groups in Home Assistant, niet te verwarren met areas). Maak bijvoorbeeld een groep Kitchen Lights met enkele lampen. Als je nu “Hey Mycroft, turn off kitchen lights” roept, gaat alleen de keukenverlichting uit.

Bericht via Picroft

Het omgekeerde kan ook, dat wil zeggen Home Assistant laten praten via Picroft. Pas daartoe het configuratiebestand configuration.yaml aan. Maak allereerst Picroft bekend:

mycroft:
  host: ip.adres.van.picroft

Zorg vervolgens dat Home Assistant weet dat hij berichten naar Picroft mag sturen. Voeg hiervoor het volgende toe in datzelfde bestand:

notify:
  - platform: mycroft
    name: naam_voor_dienst

De naam bepaal je zelf, bijvoorbeeld mijn_picroft. Activeer de nieuwe configuratie door een herstart van Home Assistant. Om dit te testen ga je in Home Assistant naar Developer Tools. Klik boven op SERVICES en selecteer bij Service de optie notify.mijn_picroft. Tik bij Service Data het volgende in:

message: “Hello world!”

En druk op CALL SERVICE. Luister nu hoe Home Assistant zich bekend maakt via Picroft. Hoor je niks, ga dan na of je firewall soms TCP-poort 8181 tegenhoudt. Gebruik deze functionaliteit in je automatisering als action. Doe dat bijvoorbeeld voor je bewegingsmelder. Als een ongenode gast te dicht bij huis komt, laat je de verlichting aanspringen met tevens een luide waarschuwing.

Conclusie

Installeren van Picroft gaat moeiteloos. Er is weinig nodig om je virtuele assistent letterlijk aan de praat te krijgen. Ook de koppeling met Home Assistant verloopt vlotjes om zodoende je domoticasysteem verder uit te bouwen.