Macaw.nl/Inspiratie/Blogs/How to: Whisper AI in PowerApps installeren

How to: Whisper AI in PowerApps installeren

Onze Data & Application-expert collega Sebastian laat je in dit blog zien hoe je het Azure OpenAI Whisper-model kunt integreren in PowerApps en de Speech-to-Text-functionaliteit kunt uitbreiden.

In een van onze klantprojecten heeft Sebastian het Whisper-model van Azure OpenAI gebruikt en was onder de indruk van de nauwkeurigheid. Waarom zou je deze functionaliteit niet breder beschikbaar maken in een Power App? Tot nu toe heeft Sebastian alleen toepassingen gezien waarin het openbare Whisper-model van OpenAI wordt gebruikt. Omdat hij alle data binnen zijn Microsoft Tenant wil houden, besloot hij zijn eigen tutorial te schrijven over het gebruik van de Azure OpenAI-variant. In het eerste deel leidt Sebastian je door het installatieproces, zodat je het zelf kunt proberen. In het volgende deel wordt de door Whisper AI gegenereerde inhoud gekoppeld aan een ander LLM, zoals Azure OpenAI 3.5 of 4, om te werken met de geëxtraheerde Speech-to-Text-gegevens.

Een kort overzicht van wat je nodig hebt:

Azure

  • Abonnement
  • Resourcegroep
  • Azure OpenAI-service
  • Geïmplementeerd Azure OpenAI Whisper-model

Power Apps

  • Canvas-app

Power Automate

  • HTTP-connector

Azure OpenAI Whisper-model

Sebastian gebruikte Azure OpenAI Studio om zijn model te implementeren. Let op dat je eerst een Azure-abonnement, een resourcegroep en de Azure OpenAI-service nodig hebt. Bezoek het Azure OpenAI Studio: https://oai.azure.com/portal

Als je meerdere resourcegroepen hebt, controleer dan rechtsboven of de juiste groep is geselecteerd. Klik vervolgens links op “Deployments”.

 

Selecteer “Create new deployment”

Kies het “whisper” model en geef een implementatienaam (Deployment name). Houd het Azure OpenAI Studio-venster open, want je hebt later meer informatie nodig.

Power Apps

In de volgende stap ga je verder met Power Apps. In dit deel wil je een ontwikkelings-/debug-app instellen waarmee je je verbinding met het Whisper-model kunt testen. Alle formules kunnen later in verschillende app-scenario’s worden gebruikt. Sebastian begon met een lege canvas-app in tabletmodus. Je kunt echter ook een andere moderne sjabloon gebruiken die je aanspreekt.

In zijn Development-/Debugging-app wil Sebastian een opname rechtstreeks vanuit de Power App verzenden:

Voeg de volgende besturingselementen toe aan je scherm:

  • Audio (uit de categorie Media, alleen voor debug-/testdoeleinden)
  • Microfoon (uit de categorie Media)
  • 2x knoppen (klassiek of modern)

Stel de Media-eigenschap van de Audio-control in op:

Microphone1.Audio

Als je deze optie hebt ingesteld, kun je nu je opname beluisteren via de microfoonbediening.

Nu wordt het wat ingewikkelder. Om onze microfooninput/recording naar Power Automate te sturen, moet je de opname van een binair formaat naar Base64 converteren. Hiervoor heb je een paar trucs nodig.

Kies een van je knoppen en wijzig de Text-eigenschap naar bijvoorbeeld:

"Extract Data"

Stel de tweede knop in op:

"Send Recording"

Je hebt drie variabelen nodig om enkele aanpassingen aan de tekenreeks te maken. Om de variabelen in te stellen, gebruik je de eerder gemaakte “Extract Data”–knop. In de OnSelect-instelling begin je met:

//Generate JSON from Microphone Input
Set(varMicJSON, JSON(Microphone1.Audio, JSONFormat.IncludeBinaryData));

Hiermee maak je een JSON-tekenreeks van de microfooningang, inclusief de BinaryData die je nodig hebt voor je Base64-tekenreeks. Het resultaat ziet er ongeveer zo uit:

“data:audio/webm;base64,BASE64STRING

Dit deel moet je nu verwijderen. Uiteindelijk wil je alleen het BASE64STRING-deel zonder extra speciale tekens zoals het laatste ” “.

We beginnen met het splitsen van de tekenreeks door de “, ” tussen data:audio/webm;base64 en de BASE64STRING:

//Splits dataType and base64 information
Set(varMicWithoutDataType, Last(Split(varMicJSON, ",")).Value);

Nu moet je het ” aan het einde van de tekenreeks verwijderen:

//Generates base64 that can be used in HTML Request - Removing " from the string end
Set(varMicPureBase64, Left(varMicWithoutDataType, Len(varMicWithoutDataType) - 1));

De volledige PowerFX van je OnSelect-eigenschap zou er als volgt uit moeten zien:

//Generates JSON form Microphone Input
Set(varMicJSON,JSON(Microphone1.Audio,JSONFormat.IncludeBinaryData));
//Splits dataType and base64 information
Set(varMicWithoutDataType, Last(Split(varMicJSON, ",")).Value);
//Generates pure base64 that can be used in HTML Request - Removing " from the string end
Set(varMicPureBase64, Left(varMicWithoutDataType, Len(varMicWithoutDataType) - 1));

Ga nu naar Power Automate om het verzoek naar de Azure OpenAI Whisper-service te sturen.

Power Automate

Voordat je de flow maakt, zorg ervoor dat je de volgende informatie bij de hand hebt:

  • Azure OpenAI Service API-sleutel
  • Eindpunt-URL
  • Naam van de implementatie van je Whisper Service

Je kunt de meeste informatie uit de Azure OpenAI Service-resource in Azure halen. Open je resourcegroep, selecteer je Azure OpenAI Service en klik op “Keys and Endpoints” in het gedeelte Resource Management:

Kopieer je KEY 1 en Endpoint. De implementatienaam is de naam die je aan het Whisper-model hebt gegeven in het Azure OpenAI Studio. Je kunt de naam opzoeken onder “Deployments”.

Maak de flow:

Je kunt deze ofwel maken vanuit de app die je al bent begonnen, of vanuit het Flow Maker Portal. Als je kiest voor de tweede optie, maak dan een “Instant”-flow met PowerApps V2 als trigger.

In de PowerApps (V2)-trigger vragen we PowerApps om een tekstinvoer met de naam “base64”, waarin we onze base64-audiogegevens opslaan.

Voeg vervolgens de “Compose”-actie toe en kies de base64-waarde als input:

Nu kun je beginnen met het interessante deel – de “HTTP”-actie of het specifieke verzoek.

Je hebt nu de eerder gebruikte Azure-informatie nodig om je eigen URI te maken. Het formaat is als volgt:

<<YOUR ENDPOINT>>/openai/deployments/<YOUR DEPLOYMENT NAME>/audio/transcriptions?api-version=2024-02-01

Een voorbeeld:

  • Jouw Endpoint is: https://WhisperDemo.openai.azure.com
  • Je implementatienaam is: WhisperModel

In dit voorbeeld zou je URL er als volgt uitzien:

https://WhisperDemo.openai.azure.com/openai/deployments/WhisperModel/audio/transcriptions?api-version=2024-02-01

Voeg 2 headers toe: “api-key” en “Content-Type”. De waarde voor de api-key is de sleutel van je Azure OpenAI-service, en de Content-Type moet “multipart/form-data” zijn.

De JSON-body voor je verzoek zou er als volgt uit moeten zien:

{
"$content-type": "multipart/form-data",
"$multipart": [
{
"headers": {
"Content-Disposition": "form-data; name=\"file\";filename=\"audiofile.webm\""
},
"body": @{base64ToBinary(outputs('Compose_PowerApp_JSON'))}
}
]
}
@base64ToBinary(outputs(‘Compose_PowerApp_JSON’))

is een functie waarmee we een binaire audiobestand uit onze base64-inhoud opnieuw maken uit de Compose-actie:

base64ToBinary(outputs('Compose_PowerApp_JSON'))

We eindigen de flow met “Respond to a PowerApp or flow”. Voeg een tekstuitvoer toe (in Sebastians voorbeeld: WhiserAIanswer) en voeg de tekst van de HTTP-connector uit het venster Dynamische Inhoud toe.

Sla je flow op en ga terug naar je PowerApp.

Power Apps – laatste handelingen

Voeg nu alle onderdelen samen. Voeg eerst je nieuw aangemaakte flow toe in je Power App.

Kies de knop “Send Recording” en stel de OnSelect-eigenschap in op:

//Call the Power Automate Flow
Set(varMicWhisperAnswer, 'WhisperDemo-APICall'.Run(varMicPureBase64).whisperaianswer)

Voordat we onze Speech-to-Text-app testen, hebben we een label nodig dat de inhoud van de variabele “varMicWhisperAnswer” weergeeft. Sebastian voegde enkele extra labels toe om zijn verschillende variabelen te debuggen:

Om je app en flow te testen, neem je een bericht op en controleer je je opname via de Media Player. Als je je opname kunt horen, klik dan op de knop “Extract Data” en vervolgens op “Send Recording”. Je zou dan de WhisperAI-uitvoer direct in je app moeten ontvangen.

Dit is slechts het begin van hoe je Speech-to-Text kunt gebruiken met het Whisper-model van Azure OpenAI. We hopen dat we je het proces van integratie van Whisper in je Power Apps duidelijk hebben kunnen uitleggen. 

Het blog van Sebastian vind je hier

Zet de AI hype om in waarde

Net als in andere sectoren geldt dus voor de financiële branche: als het om AI en data gaat, is stilstaan geen optie. Hoe gaat jouw bedrijf de AI-hype omzetten naar waarde? In dit whitepaper geven we je concrete handvatten om AI te benutten en laten we je 3 use cases van andere organisaties zien. Tot slot mag ook ethiek niet ontbreken in je AI-strategie; ook daarover lees je meer in dit whitepaper.

Infographic: Is jouw organisatie AI-proof?

Wat is jouw kijk op AI? Weet je al hoe je het gaat integreren in je dagelijkse bedrijfsvoering? In deze infographic leiden we je door de belangrijkste stappen om een AI-proof organisatie te worden. 

AI Infographic

Download infographic
Macaw | Digitale Partner

Your guide in the Era of AI

Al meer dan 30 jaar is Macaw een pionier op het gebied van innovatie en technologie. Als jouw gids in the Era of AI, zetten we ons in om jouw organisatie te transformeren, future-proof te maken en sterk onderscheidend vermogen te creëren. We maken je succesvol door het leveren van innovatieve strategieën en oplossingen door de combinatie van data, technologie en creativiteit. Ons team heeft een bewezen track record bij bedrijven als Heineken en VGZ. Benieuwd in welke sleutelgebieden wij met marktleiders investeren om de kracht van AI te versnellen?

Contact