Power Apps – App wandelt eingegebenen Text in Audio um und gibt diesen aus

Ausgangslage für diese App ist die Verwendung vom eingegebenen Text in einer PowerApp, welcher in eine Audio-Datei umgewandelt und abgespielt wird.

Teil 1: Power Automate Flow

Zuerst wird der Flow erstellt, danach die App.

Um den gesamten Flow inkl. der App selbst nachbauen zu können, ist es erforderlich, sich zuvor bei dem kostenfreien Anbieter Play.ht anzumelden,um deren Dienste nutzen zu könnnen.

Hinweis: Hierfür wird die Power Automate Premium Lizenz benötigt!

Der Power Automate Flow, der dies erlaubt, besteht aus drei Aktionen, nachfolgend beschrieben.

1 Aktion: Power Apps (V2)-Trigger

Diese Aktion ermöglicht es, deinen Flow direkt aus einer Power Apps-Anwendung heraus zu starten. Sie stellt quasi den „Eingangspunkt“ für Daten dar, die von Power Apps an den Flow übergeben werden.

Ein Bild, das Text, Screenshot, Display, Reihe enthält.

KI-generierte Inhalte können fehlerhaft sein.

2 Aktion: „HTTP“ (Premium)

Die nachfolgende Aktion ist ein Aufruf an die Play.ht-API (ein TTS-Service), der den im Body angegebenen Text mithilfe einer bestimmten Stimme in eine Audioausgabe (MP3) umwandelt.

Die Parameter (Header und Body) sind so konfiguriert, dass das Ergebnis direkt als Audiostream im MPEG-Format zurückgegeben wird.

Der Text wird dynamisch aus dem Flow (bzw. aus Power Apps) an den Dienst übergeben.

image

Auf dem Screenshot siehst du eine HTTP-Aktion innerhalb deines Power-Automate-Flows, die einen POST-Request an die URL

https://api.play.ht/api/v2/tts/stream

sendet. Diese Aktion wird genutzt, um einen Text-to-Speech-Dienst (TTS) von Play.ht anzusprechen und eine Audiodatei (MP3 bzw. MPEG) als Antwort zu erhalten. Hier die einzelnen Punkte im Detail:

  1. Methode (Method = POST)
    • Es wird ein HTTP-POST-Request an die angegebene URL gesendet. POST wird üblicherweise genutzt, um Daten an einen Dienst zu übermitteln und eine entsprechende Antwort (z. B. generierte Datei, JSON-Daten) zurückzubekommen.
  2. Headers
    • Accept: audio/mpeg
      • Signalisiert, dass der Dienst im Audio-/MPEG-Format antworten soll (z. B. MP3).
    • Content-Type: application/json
      • Zeigt an, dass der Body im JSON-Format gesendet wird.
    • Authorization und X-User-Id
      • Dienen der Authentifizierung bzw. Autorisierung gegenüber dem Play.ht-Dienst. Diese Header müssen stimmen, damit der Request erfolgreich ist.

Body

  • Hier wird der eigentliche Inhalt des Requests im JSON-Format übergeben.
  • Typischer Aufbau (basierend auf dem Screenshot):

JSON

{

"voice": "s3://voice-cloning-zero-shot/9ff79baa-d016-476b-b0ef-dd63057f915d/manifest.json",

"output_format": "mp3",

"text": "@{triggerBody()['Input']}"

}

voice

  • Hier wird eine spezifische Stimme oder ein Stimm-Profil angegeben, das der TTS-Dienst verwenden soll. In diesem Fall verweist der Wert auf eine Datei (bzw. ein Manifest) im S3-Format, das vermutlich eine custom oder ausgewählte Stimme enthält.

output_format

  • Gibt an, dass die generierte Datei als MP3 zurückkommen soll.

text

  • Enthält den Text, der in Sprache umgewandelt werden soll. Im Screenshot ist dieser Wert dynamisch mit „Input“ verknüpft, also wird der Text aus einem vorherigen Schritt im Flow oder direkt aus Power Apps übergeben.

3 Aktion: „Respond to a Power App or Flow”

Diese Aktion bildet den Abschluss des Flows, wenn er von einer Power App oder einem anderen Flow aufgerufen wird.

Sie sorgt dafür, dass der Aufrufer das generierte Ergebnis (z. B. die Audiodatei als Base64-codierten String oder als Binärdaten) wieder entgegennehmen und weiterverarbeiten kann.

Ein Bild, das Text, Screenshot, Schrift, Reihe enthält.

KI-generierte Inhalte können fehlerhaft sein.

Die Aktion mit dem Inhalt “Content” wurde etwas bearbeitet, darin befindet sich folgender Code:

Ein Bild, das Text, Software, Schrift, Screenshot enthält.

KI-generierte Inhalte können fehlerhaft sein.

Zunächst gilt es aus vorheriger Aktion http die Ausgabe „Body“ auszuwählen. Danach per Eingabe mittels Expression bzw. Funktion es um [′$Content′] zu ergänzen.

Anwendung in Power Apps

Wird der Flow aus einer Power App aufgerufen, kann man die zurückgegebene Ausgabe mit MyFlow.Run(...).speechcontent ansprechen.

  • Anschließend kann man z. B. den Audioinhalt in der App abspielen, herunterladen oder anderweitig verwenden.

Nachdem der Flow erstellt worden ist, folgt nun die Erstellung der App

Teil 2 App:

Die Power App ist recht einfach aufgebaut

In der App sind zweckmäßig drei wichtige Steuerelemente enthalten:

· Ein Texteingabefeld

· Schaltfläche (Text konvertieren)

· Audio Steuerelement

Ein Bild, das Text, Screenshot, Schrift, Zahl enthält.

KI-generierte Inhalte können fehlerhaft sein.

Auf dem Screenshot siehst du eine Power Apps-Anwendung, die folgenden Ablauf ermöglicht:

  1. Texteingabe
    • Im oberen Feld („Bitte Ihren Text eingeben“) kann der Benutzer einen beliebigen Text eintragen.
  2. „Text konvertieren“-Button
    • Durch Klicken auf diesen Button wird ein Flow (z. B. der zuvor beschriebene) aufgerufen, der den eingegebenen Text an einen Text-to-Speech-Dienst (TTS) übergibt.
    • Dieser Dienst erzeugt aus dem Text eine Audiodatei (z. B. MP3).
  3. „Löschen“-Button
    • Mit diesem Button kann der eingegebene Text im Feld wieder entfernt werden, um von vorne zu beginnen oder einen neuen Text einzugeben.
  4. Audio-Player
    • Das Audiosymbol mit dem Zeitbalken unten zeigt den Audio-Player an, in dem das erzeugte TTS-Ergebnis (also die Sprachdatei) abgespielt werden kann.
    • Sobald die Audiodatei vom Flow zurückgeliefert wurde, kann der Nutzer den Player starten, um sich den konvertierten Text anzuhören.

Nachfolgend die notwendige Konfiguration der Steuerelemente über deren Eigenschaften.

Texteingabefeld:

Das Texteingabefeld hat keine besondere Konfiguration außer „Hinweistext

Die Schaltfläche „Text konvertieren“:

Eigenschaft „OnSelect“ -> Set(varSpeech;texttospeech.Run(TextInput1.Text))

Set-Funktion

  • Set(Variable; Wert) legt eine globale Variable an, die in der gesamten App genutzt werden kann.
  • In diesem Fall wird die Variable varSpeech erstellt.

Aufruf des Flows/Connectors (texttospeech.Run(...))

  • texttospeech ist hier ein Flow oder ein Custom Connector, der einen Text-to-Speech-Dienst aufruft.
  • Mit .Run(TextInput1.Text) wird dieser Flow/Connector gestartet und erhält den Text aus dem TextInput1-Steuerelement als Parameter.
  • Das Ergebnis (z. B. eine Audio-Datei oder ein String) wird von der Funktion zurückgegeben.

Zuweisung an die Variable

  • Das Ergebnis des Aufrufs texttospeech.Run(TextInput1.Text) wird in varSpeech gespeichert.
  • Anschließend kann man auf diese Variable in anderen Steuerelementen oder Formeln zugreifen (z. B. in einem Audio-Steuerelement, um den Inhalt abzuspielen).

Die Schaltfläche “Löschen”

Eigenschaft „OnSelect” -> Set(varSpeech;Blank())

In dieser OnSelect-Funktion wird mit der Set-Funktion die globale Variable varSpeech auf einen leeren Wert (Blank) gesetzt. Das bedeutet:

  • Set(varSpeech;Blank()):
    • Set: Ist eine Funktion in Power Apps, mit der man eine globale Variable aktualisiert.
    • varSpeech: Die Variable, deren Wert hier zurückgesetzt wird.
    • Blank(): Gibt einen leeren Wert zurück – sozusagen ein "Zurücksetzen" der Variable.

Das Steuerelement “Audio”

Eigenschaft Media: "data:audio/mp3;base64," & varSpeech.speechcontent

In dieser Formel wird die Media-Eigenschaft (z. B. eines Audio-Steuerelements) so gesetzt, dass das Steuerelement direkt den Audioinhalt aus einer Base64-codierten Zeichenkette abspielen kann:

  1. „data:audio/mp3;base64,“
    • Dies ist der Prefix eines sogenannten Data-URIs. Er teilt Power Apps mit, dass es sich um Audio-Daten im MP3-Format handelt, die Base64-codiert vorliegen.
  2. & varSpeech.speechcontent
    • Durch das Anhängen (&) wird der Base64-String hinzugefügt, der in der Variablen varSpeech.speechcontent gespeichert ist.
    • Diese Variable enthält also die vom TTS-Dienst (Text-to-Speech) zurückgegebene Audiodatei in Base64-kodierter Form.
  3. Gesamtzusammenhang
    • Durch die Kombination des Prefixes und der Base64-codierten Daten entsteht ein vollständiger Data-URI.
    • Das Audio-Steuerelement in Power Apps kann diesen Data-URI direkt abspielen, ohne dass man die Audiodatei zuerst in einer externen Quelle ablegen muss.

Zusammenfassung:

Der User gibt einen Text ein, klickt auf die Schaltfläche „Text konvertieren“, der Flow wird ausgelöst, konvertiert den Text ein eine Audiodatei, die nach dem Klick auf das „Play“ Symbol über das Audio Steuerelement durch die im Hintergrund stattfindende Verarbeitung der KI wiedergegeben wird.

Kommentare sind geschlossen