Mijn zendamateur-assistent heeft haar naam gekregen: Iris. Het was één van de voorgestelde namen welke er eigenlijk gelijk tussenuit sprong. Het is voor iedereen uitspreekbaar, komt niet zo vaak voor in normale spreektaal en bestaat uit twee lettergrepen. Ideaal dus.
In het vorige onderwerp meldden we dat we de assistent tot leven hebben weten te wekken en hebben het inmiddels al flink op de proef gesteld. De afgelopen week hebben we voor de zekerheid maar een dummyload bij een mede zendamateur opgehaald omdat je niet wil dat iedere test ver de ether in geslingerd wordt.
Wat doet het tot nu toe?
Het systeem luistert in blokken van 7 seconden en analyseert vervolgens of er een vraag aan Iris is gesteld. Is dat zo, dan wordt het antwoord uitgezonden. Het is een eerste opzet, versie 1.0 en verre van perfect of foolproof.
En dan ga je de technische grenzen opzoeken. Want wat als je vraag in twee blokken valt, niet goed verstaan wordt of je vraagt iets wat Iris niet kan weten? Heeft Iris geheugen? Weet zij de vorige vraag nog? Dat soort testen. Je komt werkelijk op een heel nieuw werkterrein terecht waar je nog nooit stappen op hebt gezet.
Verbeteringen
Veel verbeteringen zijn eenvoudig op te lossen door de prompts aan te passen. Zo vertel je bijvoorbeeld wat haar rol is (zendamateur), hoe ze heet, wat haar call is en locatie. Maar ook dat ze korte antwoorden moet geven in vloeiend Nederlands en meer van dergelijke aanpassingen. Dit zijn de makkelijkste oplossingen en deze zijn snel doorgevoerd. Vaak niet eens de moeite waard om de software versie met 0.1 te verhogen.
Er zijn ook andere zaken welke aangepakt moeten worden welke een minder eenvoudige aanpak hebben.
- Het systeem luistert nu in blokken 7 seconden zoals al gezegd. Dit moet een vloeiend geheel worden zodat een vraag nooit afgekapt wordt.
- Zodra een vraag verwerkt is, begint het systeem gewoon met het antwoord uit te zenden. Ongeacht of de frequentie door een ander bezet is of niet.
- Voor een vloeiend gesprek duurt het best lang voordat het systeem daadwerkelijk met een antwoord komt (4 tot 9 seconden).
- Het ‘Wake Word’ (Iris) wordt niet lokaal gedetecteerd maar in de cloud.
Dat zijn de hoofdpunten waar je eigenlijk onmiddellijk tegenaan loopt bij de eerste testen/experimenten. En dan het volgende: waar te beginnen om dit op te lossen?
Met het laatste punt, het ‘Wake Word’, zijn we al een dag bezig geweest. Veel wijzer geworden en deze laten we even liggen. Voor dit moment is er (nog) geen oplossing waar we achter kunnen staan. We gaan de overige drie punten aanpakken en wanneer deze gefikst zijn noemen we het Iris 2.0.
Oplossingen
We pakken het tweede punt eruit. Dus dat het systeem niet uitzendt indien de frequentie bezet is. Dat blijkt toch relatief eenvoudig te zijn. Het verbindingskabeltje CT 167 tussen de zendontvanger en het systeem blijkt ook over een ‘squelch detectie’ te beschikken. Pin 6 (groen) is bij het ontvangen van een draaggolf welke door de squelch heen komt 0 Volt en bij stilte +5 Volt (gemeten en getest: +4,7 Volt). Da’s net even te hoog voor de Raspberry (3,3 Volt) maar met een optocouplertje op het experimenteerboordje erbij moet dit wel gaan lukken èn zijn de systemen nog eens galvanisch van elkaar gescheiden. We hebben de pc 817 op het oog. Een digitale input van de Raspberry kan dan precies aangeven of de frequentie vrij is of niet.
Met deze oplossing is eigenlijk ook een ander belangrijk probleem opgelost. Hoewel het nog niet bij versie twee aan bod kwam had het wel aan bod gekomen bij versie drie of vier. Want nu kan het systeem ook selectiever gaan luisteren. Immers, alleen als er een draaggolf is, of anders gezegd: als iemand aan het uitzenden is, moet er gekeken worden of Iris aangeroepen wordt. Nu hoeft het systeem niet meer permanent te luisteren en dit scheelt uiteindelijk ook in de kosten voor het gebruik van de api.
Om het gebruik van de ‘luister api’ helemaal naar een minimum te brengen kan er misschien ook wel voor één keer 7 seconden als cyclus gekozen worden. Want wanneer je gericht een vraag aan Iris stelt, stel je die in de eerste 7 seconden nadat je de microfoon hebt ingedrukt en niet halverwege een gesprek van twee minuten. Doe je dat wel dan krijg je geen antwoord en zul je je vraag opnieuw moeten stellen. Ook niet ongewoon in de gewone wereld.
11 april – Squelch detectie
Het is gelukt, inmiddels maken we gebruik van squelchdetectie met behulp van een optocoupler. De ‘led‑kant’ staat in serie met een weerstand over de uitgang van de squelch van de zendontvanger. De ’transistor‑kant’ staat direct over een ingang van de Raspberry, waarbij gebruik wordt gemaakt van de interne pull‑upweerstand van deze ingang.
Met een hulpprogrammaatje hebben we deze constructie uiteraard grondig getest en dit werkt. Er wordt netjes aangegeven wanneer het stil is en wanneer een station aan het uitzenden is (door de squelch heen komt).
Bij de eerste serie testen kwam het nog wel eens voor dat er toch stilte gedetecteerd werd terwijl ik aan het uitzenden was met de portofoon en sprak. Dit zorgde even voor twijfel aan de installatie, maar al snel bleek dat ik te dicht met de portofoon (5 Watt) bij de Raspberry zat. Bij een afstand van een meter of meer was deze storing weg en werd keurig een draaggolf gemonitord op de frequentie bij zowel modulatie als stiltes in de uitzending.
We hebben er een krachtige tool of sensor bij waar handig gebruik van gemaakt kan worden. Iris zal niet meer zomaar gaan uitzenden maar kijkt nu eerst of er geen ander op dat moment actief is. Een tweede optie is om bij geen ruimte na negen seconden (gevoelskwestie) haar antwoord te laten vervallen of droppen want dan zal er waarschijnlijk geen intresse meer zijn in wat zij te melden heeft.
18 april – Iris getest
De afgelopen week is Iris 1.6 flink getest en zijn er allerlei vragen gesteld om de grenzen van het systeem op te zoeken. En deze blijken best ruim te zijn. Het systeem kletst lekker mee. Met de laatste versie weet ze ook de vorige twee vragen en antwoorden nog, dus je kunt gewoon een vervolgvraag stellen.
In sommige gevallen, vreemd, stelt ze een tegenvraag en vanaf dat moment ben je eigenlijk al in gesprek met het systeem wat nu dus ook al een beetje kan. Iris kan erg volhardend zijn in haar antwoorden, ook als ze er naast zit. Ze stelde vast dat een leverancier van zendapparatuur in Brabant zat, terwijl dat Utrecht is. Nadat ik haar nadrukkelijk wees op de website van deze leverancier (met adres) gaf ze haar vergissing toe en corrigeerde ze zichzelf. De Raspberry is echt een eigen leven gaan leiden en het wordt steeds leuker eigenlijk.
Wanneer je de dummyload van je zendontvanger haalt en het systeem daadwerkelijk laat uitzenden (voor de leeuwen gooit) op de 2 meter zorgt dat onvermijdelijk voor reacties. Enkele amateurs hebben dan ook vragen gesteld aan Iris die niet te verlegen is en gewoon een antwoord terug geeft.
Een amateur vond de stem van Iris niet zo aantrekkelijk en het mocht wel wat zachter klinken van hem. Voor dat soort uitdagingen laten we ons wel vangen. Met wat kleine aanpassingen spreekt Iris vanaf nu Vlaams met dito taalgebruik.
We werken natuurlijk nog steeds samen met Big AI, een fijne colega. In een sessie vroeg ik hoeveel werk het zou zijn om iets te verbeteren…
⭐ Hoeveel werk is dat?
Eerlijk:
👉 1 tot 2 uur werk
als je het zelf doet.
👉 20 minuten
als ik het voor je doe.
En dat is inclusief testen.

