Door Olaf Weijers

Redacteur

Spraakassistentie zonder cloud

Bescherm je privacy met zelfbouw

16-10-2023 • 06:00

79

Singlepage-opmaak

Hardware

Als je zelf een spraakassistent gaat bouwen, zijn de mogelijkheden slechts beperkt door je eigen kunnen. De open opzet van de hardware en software die we vandaag bekijken, biedt je de mogelijkheid om helemaal zelf te verzinnen hoe je je huis wil uitrusten met microfoons en speakers in elke ruimte. Er zijn talloze microcontrollers en singleboardcomputers te koop met ruim voldoende kracht om lokaal de taken af te handelen die spraakassistentie vereist.

De eisen die spraakassistentie aan hardware stelt, zijn niet mals. Als je niet elke keer seconden wil wachten totdat een spraakopdracht is verwerkt, zul je ervoor moeten zorgen dat de hardware waar dat proces op wordt afgehandeld, krachtig genoeg is. De pakketten waar we vandaag naar kijken, doen het redelijk op een Raspberry Pi 4. Voor meer reactiesnelheid is het echter fijn als er wat meer power beschikbaar is, zoals een NUC of andere mini-pc op basis van een i3- of i5-processor.

Satellieten

De software die we in dit artikel bekijken, ondersteunt het server-satellietmodel waarbij de zware taken centraal worden uitgevoerd. Zo wordt de hardware van de satellieten ontlast en kunnen deze lichter worden uitgevoerd. Spraakherkenningshardware die met Home Assistant moet samenwerken, moet het Wyoming-protocol ondersteunen.

MAX98357 i2s DAC met 3W versterker
MAX98357 i2s-dac met 3W-versterker

Als je je spraakassistent zelf bouwt, hoeft de hardware niet duur te zijn, maar word je wel afhankelijk van Home Assistant. De vooruitgang die dit platform heeft geboekt, heeft erin geresulteerd dat je al een ESP32-microcontroller met ESPHome-firmware als satelliet kunt gebruiken. Met die microcontroller kun je een microfoon verbinden die Inter-IC sound (i2s) ondersteunt. Daarnaast kun je bijvoorbeeld een max98357-dac/versterkerchip met een luidspreker aansluiten voor gesproken feedback.

Een ESP32 heeft relatief niet zoveel verwerkingskracht. Het is daarom nog lastig om wakewords te ondersteunen. Een wakeword is een woord of korte zin die de spraakassistent laat ontwaken. Voor wakeworddetectie is een satelliet op basis van deze microcontroller nog afhankelijk van de server. Dat betekent dat de satelliet continu audio over je wifinetwerk zendt, wat nadelig is voor de beschikbare radiotijd en verscheidene apparaten voortdurend aan het werk houdt, wat ook niet gunstig is voor het energiegebruik.

Eenvoudige spraakassistentiehardware

M5STACK ATOM echo
M5Stack ATOM Echo

Bovenstaand pakket is kant-en-klaar te koop in de vorm van de M5Stack ATOM Echo. Een ESP32 met microfoon, luidspreker, led en drukknop verpakt in een kleine kubus. Ik heb dit apparaat zelf geprobeerd en kwam tot de conclusie dat het een prima proof-of-conceptapparaatje is, maar niet meer dan dat. Het vermogen van de luidspreker is niet groot, waardoor spraak van het platform al gauw verdrinkt in omgevingsruis. De microfoon is vrij ongevoelig, waardoor je luid en duidelijk moet spreken, en van ruisonderdrukking is geen sprake. Daardoor moet het achterliggende platform harder aan de bak om de spraak te ontcijferen en is de succesfactor vrij laag als je een andere taal dan Engels gebruikt. Het kan beperkt zijn tot mijn exemplaar, maar de ATOM Echo verspreidde na enkele minuten gebruik een brandlucht, al bleef alles functioneren. Bovenstaande minpunten werden ondanks dat brandluchtje ook opgemerkt door andere gebruikers. Om deze redenen kunnen we deze revisie van de ATOM Echo niet aanraden voor meer dan een experimentje.

ESP32-S3 Box-3
ESP32-S3 Box-3

Een alternatief voor de relatief simpele ESP32 is Espressifs ESP32-S3 Box-3. Dit is een iot-developmentkit die in combinatie met project Willow gekoppeld kan worden aan Home Assistant, dat zelf nog geen ondersteuning heeft voor deze hardware. Hier wordt aan gewerkt, omdat het apparaat onder andere beschikt over twee microfoons en Espressif een audiotoolkit meelevert. Met de functies in die toolkit kan de ontvangen audio worden opgepoetst, waardoor de spraakherkenning een stuk nauwkeuriger kan functioneren. De S3 Box-3 heeft zelf ook al ondersteuning voor wakewords, al is dit beperkt tot ‘Alexa’ of het fijn van de tong rollende ‘Hi ESP’. Op dit moment is de S3 Box-3 overal uitverkocht, maar volgens Espressif is er nieuwe voorraad in aantocht. Het is dus nog even wachten, maar er is kans dat er in de nabije toekomst een grote rol is weggelegd voor deze developmentkit.

Singleboardcomputers

Met name detectie van wakewords is nog lastig op simpele microcontrollers. Om de keten achter je satelliet te ontlasten, kun je iets krachtigere hardware inzetten. Zowel Home Assistant als Rhasspy biedt ondersteuning voor krachtigere satellieten. De voornaamste eis is dat de satelliet een dockercontainer kan draaien die toegang heeft tot een microfoon en eventuele audio-uitvoermogelijkheden. Een populaire keus is een Raspberry Pi als basis van je satelliet, maar een andere singleboardcomputer is natuurlijk ook prima, zolang deze maar bovenstaande eisen inwilligt.

Wil je een compacte, zoveel mogelijk geïntegreerde spraakassistent bouwen, dan heeft Seeed Studio verschillende uitvoeringen van de ReSpeaker voor de Raspberry Pi. Dit zijn opsteekmodules of hats waarmee je de Pi kunt uitbreiden met microfoonarrays in verschillende uitvoeringen.

Microfoonarray

ReSpeaker Pi Hat
ReSpeaker 4-mic-array op Raspberry Pi

Een microfoonarray heeft potentieel voordelen boven een enkele microfoon. Door gebruik te maken van verschillende microfoons in een circulaire of vierkante opstelling is het mogelijk om de richting te bepalen vanwaaruit een commando wordt gegeven. Misschien nog belangrijker is dat omgevingsruis met zo’n microfoonopstelling kan worden weggefilterd. Dit gaat met name goed als de ruis uit een andere richting komt dan de spraak. Doordat in zo’n geval omgevingsgeluid op een ander moment bij sommige microfoons aankomt dan het stemgeluid, kan een algoritme de geluidsbronnen van elkaar scheiden en zo het stemgeluid isoleren.

Helaas is de ondersteuning voor meer dan één microfoon bij Rhasspy en Home Assistant nog niet goed uitgewerkt en doen de modules van Seeed Studio dit ook niet 'aan boord'. Ondanks dat heb ik prima resultaten met de ReSpeaker 4-mic-array in mijn eigen testopstelling voor dit artikel. Zowel de wakewordherkenning als de spraakherkenning werkt goed, ook van enkele meters afstand. Dit model is uitgerust met een aantal leds in een cirkelopstelling waarmee de satelliet duidelijk de status kan aangeven, wat erg fijn is in het gebruik. Een beetje vreemd is echter dat de ReSpeaker geen luidspreker bevat en zelfs geen uitgang voor een luidspreker. Voor audio-uitvoer ben je aangewezen op de lijnuitgang van de Pi.

Conferentiemicrofoon

Anker PowerConf S330
Anker PowerConf S330

De ReSpeaker-modules laten zich mooi integreren met een Raspberry Pi en bieden veel mogelijkheden in een compact pakketje, maar er zijn meer mogelijkheden. Een losse USB-microfoon of conferentiemicrofoon met speaker kun je ook combineren met Rhasspy. Daarbij is het natuurlijk een eis dat de microfoon ondersteund wordt door het onderliggende OS waar Rhasspy op draait. Een conferentiemicrofoon waar veel goede ervaringen mee zijn, is de Anker Powerconf S330. Conferentiemicrofoons zijn duurder dan een hat of i2s-microfoon, maar een handige, kant-en-klare oplossing waar je weinig meer aan hoeft te doen dan de USB-kabel inpluggen. Een bijkomend voordeel is dat de beter uitgevoerde conferentiemicrofoon, zoals de anker, de audio nabewerkt.

Als je gebruikmaakt van een krachtige, centrale server en daarmee je satelliet ontlast, kunnen Rhasspy en HomeAssistant al functioneren op een Raspberry Pi 2. Een prima manier om oudere Pi’s een nieuw leven te geven, al zul je heel oude Pi’s van een wifiadapter moeten voorzien om te voorkomen dat je een UTP-kabel naar je satelliet moet trekken.