
Eerder bouwden we al de hardware om gegenereerde spraak te kunnen uitzenden en spraak om te kunnen zetten naar tekst middels gratis bibliotheken en api’s voor Python. En dat werkte best leuk maar voldeed nog niet.
Cloud
Hieronder gaan we verder met Google’s Cloud diensten: niet gratis maar wel professioneel en dit voldoet wel aan de eisen om een robot te bouwen welke uiteindelijk de rol moet gaan aannemen van zendamateur. Dus lekker meedoen met de overige zendamateurs met dat verschil dat het alwetend is. Altijd handig zo’n vraagbaak. De weg daar naartoe is nog lang maar misschien toch niet meer zo lang als dat het lijkt. We hebben aanzienlijke vooruitgang geboekt inmiddels.
Blokken
Vanaf nu moeten we in blokken gaan denken waarbij de blokken Google’s api’s voorstellen. hiermee komen we op een ander, hoger niveau. Elk blok heeft een functie (doet iets) en Python, de programmeertaal welke deze blokken aanroept en de resultaten van ieder blok verwerkt en weer doorgeeft aan het volgende blok, is eigenlijk de manager. Deze ‘blokken’ staan bij Google op de server(s) en daarmee is dit hele project een cloud oplossing geworden. Je maakt immers gebruik van software elders op internet.
Het eerste blok/de eerste api is Google’s Speech to text api. Deze kan een gesprek omzetten naar tekst. Dit is feitelijk het belangrijkste deel van het totale project. Audio moet goed omgezet worden omdat verdere behandeling van deze data afhankelijk is van deze resultaten. Iets verkeerd verstaan levert een antwoord op dat nergens op slaat. Audio omzetten naar tekst kan op twee manieren. De eerste is dat audio opgenomen wordt en als *.wav opgestuurd wordt. Deze wordt dan omgezet naar tekst en je krijgt deze data terug. Dit is niet real-time en dat hebben we wel nodig. Gelukkig kan audio ook gestreamd worden waarbij je tijdens een lopend gesprek al teksten woord voor woord terug krijgt op je beeldscherm. Deze twee opties hebben we intussen beiden getest en de resultaten mogen er wezen. Dat mag ook wel want we werken inmiddels met het crème de la crème qua api’s. Hier staan we nu op dit moment (30 november 2025).
Stemherkenning
Naast het uitschrijven van de gesproken tekst zou het ook handig zijn om erbij te zetten wie wat zegt. Dus het herkennen of misschien beter: onderscheid maken tussen de waargenomen stemmen. Je krijgt dan zoiets als: “Spreker 1: Het is een zonnige dag vandaag”, “Spreker 2: Helaas wordt het morgen minder goed weer”, “Spreker 1: Heb je de weersvoorspelling gelezen?”.
Speech to text schijnt dit aan te kunnen dus dit wordt ons volgende experiment zodat we het kunnen gebruiken. Daarnaast is het heel handig dat zendamateurs hun call op regelmatige basis noemen. Dat betekend dat in de tekst ergens moet staan wie wie is. Wanneer je de ontvangen tekst weer terug geeft aan het volgende blok, een soort van Chat-GPT, dan kan de naam van spreker 1 en 2 vervangen worden door zijn of haar call waarmee dan bepaald is wie wat gezegd heeft. Chat-GPT, of een vergelijkbare AI assistent in de vorm van een api/blok is hier intelligent genoeg voor om dit verder inhoudelijk te behandelen. Het zou zelfs een beknopte samenvatting kunnen maken van een gesprek van een half uur. Aldus AI, want dit hebben we natuurlijk voorgelegd aan een chat-assistent.
Tegenwind
Werk, december en sociale contacten. Soms ook gewoon geen zin. Waar AI vrolijk door gaat en het volgende voorstel doet voor verbetering of de stap om verder te gaan merk je wel dat je zelf wel mens bent. Even dacht ik met een binnenbocht er al te zijn: gewoon ‘Ok Google’ ombouwen naar een zendamateurvariant en klaar! Snel even afmaken. Te vaak heb ik de chat assistent de kast opgejaagd om snel resultaten te bereiken welke ik zelf niet meer begreep of in mee kon gaan en heb toen de boel maar even gelaten voor wat het is. Want.. wat is en nu leuker dan de tussenstappen ook te doen en daarmee programma’s op zich te bouwen welke ook handig zijn of de basis kunnen vormen voor iets toekomstigs?

Voor nu kan de laptop mooi even de kat warm houden. We starten snel weer met de volgende stap.
Succes!
Vanmorgen even lekker van start gegaan. Ik beschouw de chatbot inmiddels als een fijne collega met zijn eigen specialiteiten tijdens het bouwen van dit project. We zijn nu serieus begonnen met Google’s Speech To Text en hebben dit werkend gekregen. Bij gebrek aan pratende zendamateurs op de band maar Radio 1 gebruikt als ‘leverancier’ van gesproken woord en dit om laten zetten naar tekst. De bedoeling was om dit nog verder uit te splitsen naar sprekers maar dat werkt nog niet zo als we zouden willen.
Het programma neemt maximaal een half uur op (*.wav) of minder wanneer een CTRL-C gegeven wordt in blokken van zo’n 5 minuten. Het stuurt dan deze blokken naar een eigen ‘bucket’ in Google’s Cloud. Deze blokken worden vervolgens omgezet naar tekst en als zodanig terug gegeven (als tekstbestand). Er wordt ook een poging gedaan om dit uit te splitsen in verschillende sprekers en de tekst wordt terug gestuurd. Dit werkt voor dit moment en kan beschouwd worden als een mijlpaal in de weg die bewandeld moet worden.
Het resultaat? Als ik het een cijfer moet geven dan zou ik voor het omzetten naar tekst een dikke negen willen geven. Hier kunnen we wat mee en het ziet er goed uit. Opvallend is dat een echt gesprek tussen twee mensen uitgeschreven in tekst er best raar uit kan zien. Zelfs als er geen woord gemist is in de omzetting. Maar da’s bijvangst. Ook bleek nog dat het ingangsvolume voor de Raspberry te hard stond. Dit was mooi even te checken aan de hand van de opgenomen ‘waves’ en dat hebben we natuurlijk gelijk aangepast.
Met het onderscheid maken tussen verschillende sprekers zijn we iets minder blij. Het systeem blijft bij Spreker 1 hangen en alles wat omgezet wordt, valt onder Spreker 1. Deze optie of mogelijkheid blijkt nog in het beta stadium te verkeren als ik het goed heb en zal vast binnen afzienbare tijd wel goed functioneren.
