CodeGym /Kurse /ChatGPT Apps /Voice-/Realtime‑Kontext: Verhalten der App bei Sprachinte...

Voice-/Realtime‑Kontext: Verhalten der App bei Sprachinteraktion

ChatGPT Apps
Level 8 , Lektion 4
Verfügbar

1. Kontext: Was bedeutet „Sprachmodus“ für die ChatGPT App

Wichtig vorab: Im Rahmen des ChatGPT Apps SDK schreiben Sie keinen eigenen Audioclient, steuern kein Mikrofon und streamen Audio nicht selbst. Darum kümmert sich der ChatGPT‑Client (Web‑ oder Mobile‑App).

Wir setzen voraus, dass Sie aus früheren Modulen bereits ein Grundverständnis von Widget, callTool und GiftGenius haben – hier betrachten wir dieselben Elemente durch die Brille des Sprachmodus.

Aus Ihrer Perspektive als App‑Entwickler sieht es so aus:

  • Der Nutzer spricht ins Mikrofon. Der ChatGPT‑Client macht Speech‑to‑Text und sendet der Modellinstanz bereits Text.
  • Im Stream „sehen“ Sie dasselbe, als würde der Nutzer tippen – nur kommt es schneller und „gesprochener“.
  • Das Modell antwortet mit Text, den der Client vorliest.
  • Gleichzeitig kann das Modell Ihre Tools aufrufen (callTool), den displayMode des Widgets ändern, den widgetState aktualisieren und Follow‑ups anbieten – wie im Textmodus.

Der entscheidende Unterschied: Der Nutzer schaut möglicherweise kaum oder gar nicht auf den Bildschirm, vielleicht nur „aus dem Augenwinkel“ aufs Telefon. Ihr UI ist also nicht mehr der primäre Interaktionskanal, sondern ein Ergänzer zur Stimme – nicht umgekehrt.

Daraus folgen zwei Konsequenzen:

  • Alles wirklich Wichtige muss „über das Ohr“ verständlich sein – durch die Äußerungen von GPT.
  • Das Widget sollte im positiven Sinne „glänzen“: Ein kurzer Blick muss Status und Hauptoptionen sofort zeigen – ohne Kleingedrucktes lesen zu müssen.

Für unser GiftGenius ist das sofort eine Leitplanke: Das Szenario „Ich fahre Auto, finde ein Geschenk für Mama“ ist nicht einfach ein Textchat. Es ist ein multimodaler Dialog, bei dem die Stimme führt und das UI absichert.

2. Worin sich Voice‑Szenarien vom Textmodus unterscheiden

Um nicht in die Falle „Es ist dasselbe, nur spricht der Nutzer“ zu tappen, lohnt sich der Vergleich entlang mehrerer Achsen.

Aspekt Textmodus Sprachmodus
Aufmerksamkeit des Nutzers Blickt auf den Bildschirm, liest, scrollt Kann gar nicht hinschauen (hands‑free)
Form der Anfragen Strukturierter, Nutzer editiert Gesprochen, Satzfragmente, „mhm“, „mach noch mal“
Toleranz gegenüber Pausen 1–2 Sekunden Stille sind ok Längere Stille fühlt sich unangenehm an
Rolle des UI Hauptträger der Details Unterstützend, „Anzeigetafel“ mit kurzer visueller Stütze
Eingabefehler Tippfehler, aber der Text ist sichtbar Unklare Sprache, Geräusche, „falsches Ja/Nein“

Daraus ergeben sich einige wichtige Schlüsse.

  • Verlassen Sie sich nicht darauf, dass der Nutzer „die Karteikarte liest“. Kritisches muss ausgesprochen werden: Was Sie verstanden haben, was Sie vorhaben, welches Ergebnis vorliegt.
  • Das UI muss dem „Ein‑Sekunden‑Blick“ standhalten. Status, Fortschritt, Hauptwahl – alles groß sichtbar. Details sind zweitrangig.
  • Pausen füllen. Während Ihr MCP‑Server eine schwere Anfrage bearbeitet, sollte das Modell sagen, was passiert, und das Widget den Fortschritt zeigen – damit es nicht wie ein hängender Assistent wirkt.

Denken Sie an den Sprachmodus wie an ein Hörbuch mit Illustrationen: Sie haben einen Erzähler (GPT) und Bilder (Widget). Beides muss so synchronisiert sein, dass es sich ergänzt statt zu duplizieren oder zu widersprechen.

3. Die Rolle des Widgets im Sprachmodus: von der „Steuerkonsole“ zur „Anzeigetafel“

Im Textszenario ist das Widget oft ein vollwertiges Interface: Formulare, Tabellen, Karussells mit Filtern, Aktionsknöpfe. Im Sprachmodus ändert sich seine Rolle. Empfehlungen zu multimodalen Interfaces und VUI zeigen, dass das UI in Sprachszenarien eher eine Anzeigetafel (glanceable UI) ist: Es dient schnellen Checks und Bestätigungen – nicht intensiver Bildschirmarbeit.

Für GiftGenius heißt das:

Wenn der Nutzer durch einen Sprach‑Wizard geht, zeigen wir im Inline‑Widget oder im Vollbild:

  • Großen Status: „Schritt 2 von 3: Budget und Geschenktyp“.
  • Minimalen Text, aber klare Labels: „Budget bis 50 $“, „Digitales Geschenk bevorzugt“.
  • Ein paar große CTA‑Schaltflächen, falls Klicken erlaubt ist: „Budget ändern“, „Weiter“.
  • Einen einfachen Fortschrittsbalken oder Stepper – nicht zehn kleine Indikatoren.

Beispiel einer einfachen „Anzeigetafel“ im Inline‑Widget für ein Sprachszenario (TypeScript + React, stark vereinfacht):

type VoiceUiMode = "default" | "voiceGlance";

interface GiftStepProps {
  step: number;
  totalSteps: number;
  summary: string; // kurze Beschreibung dessen, was bereits gesammelt wurde
  uiMode: VoiceUiMode;
}

export function GiftVoiceStep(props: GiftStepProps) {
  const fontSize = props.uiMode === "voiceGlance" ? "text-lg" : "text-sm";

  return (
    <div className="rounded-xl border p-3 flex flex-col gap-2">
      <div className={`${fontSize} font-semibold`}>
        Schritt {props.step} von {props.totalSteps}
      </div>
      <div className={`${fontSize} text-muted-foreground`}>
        {props.summary}
      </div>
    </div>
  );
}

Hier gibt es nichts „Sprachspezifisches“ an sich, aber eine klare Idee: Bei uiMode === "voiceGlance" machen wir alles größer und einfacher. Das Signal, dass gerade der Sprachmodus aktiv ist, kann aus verschiedenen Quellen kommen: von indirekten Hinweisen bis zu einem expliziten Flag, das das Modell im widgetState oder Tool‑Output setzt.

4. Modalitätssynchronisation: Was GPT sagt und was die App zeigt

Der Schlüsselgrundsatz des Voice‑UX für Apps ist die Synchronisierung der Modalitäten: Stimme und visuelles UI erzählen dieselbe Geschichte – auf unterschiedlichen Detailebenen.

Ein Standardfehler ist, das Modell den gesamten Widget‑Inhalt vorlesen zu lassen: lange Geschenklisten, JSON‑Strukturen mit Filtern etc. Das wird zur Tortur. Empfehlung: Die Stimme liefert eine kurze Summary, das UI zeigt die Details.

Beispiel einer gelungenen Synchronisierung für GiftGenius.

Nutzer: „Finde ein Geschenk für meine Mutter, sie liebt Gartenarbeit, Budget bis 50 $.“

Modell (Stimme): „Ich habe einige Optionen zusammengestellt. Am besten erscheint mir ein Gartengeräte‑Set für 45 $. Auf dem Bildschirm habe ich noch zwei ähnliche Varianten gezeigt. Soll ich mehr erzählen oder direkt zur Auswahl gehen?“

Widget (inline): zeigt drei Karten mit Geschenken, kurzer Beschreibung und CTA‑Schaltflächen „Auswählen“ / „Ähnliche anzeigen“.

Dialog‑/JSON‑artige Darstellung eines Schritts (kein echtes Protokoll, nur Denkmodell):

{
  "user": "Finde ein Geschenk für meine Mutter...",
  "assistant_text": "Ich habe einige Optionen gefunden...",
  "widget": {
    "displayMode": "inline",
    "state": {
      "view": "gift_list",
      "items": [
        { "id": "g1", "title": "Gartengeräte-Set", "price": 45 },
        { "id": "g2", "title": "Gärtner-Schürze", "price": 30 },
        { "id": "g3", "title": "Blumensamen-Set", "price": 20 }
      ]
    }
  }
}

Wichtiger Punkt: Im System‑Prompt können Sie explizit festlegen, wie das Modell über das UI sprechen soll, ohne „JSON vorzulesen“: „Wenn du im Widget eine Liste von Optionen zeigst, lies nicht jede vollständig vor. Beschreibe kurz die beste Option und sag, dass die anderen auf dem Bildschirm sichtbar sind.“

Wenn Sie später mit dem Realtime‑API und eigenen Voice‑Clients arbeiten, bleibt das Prinzip gleich: UI und Audiostream müssen abgestimmt sein – nur haben Sie dann die direkte Kontrolle über das Streaming.

5. Realtime und Latenz: peinliche Stille vermeiden

Technisch sind tool_calls im Sprachmodus dieselben wie im Textmodus: Das Modell entscheidet, Ihr Tool aufzurufen, Sie liefern die Antwort, das Widget aktualisiert sich. Im Voice‑Kontext entsteht jedoch ein neues UX‑Problem – die Latenz. Während Ihr MCP‑Server externe APIs aufruft oder einen komplexen Report berechnet, hört der Nutzer … nichts. Das wirkt deutlich unangenehmer als das Warten auf Text im Chat.

Es gibt zwei Schutzebenen: sprachlich und visuell.

  • Auf Sprachebene sollte der System‑Prompt erlauben (und ermutigen), dass das Modell „Ich arbeite gerade“ ausspricht und Zusatzfragen stellt, während das Tool noch rechnet. Zum Beispiel: „Ich suche jetzt passende Geschenke, das dauert ein paar Sekunden. Erzähl mir währenddessen, ob es weitere Einschränkungen gibt.“
  • Auf visueller Ebene sollte Ihr Widget den Fortschritt klar anzeigen: Loader, Status „Suche Optionen …“, aktueller Schritt. Ohne das denkt der Nutzer, alles sei eingefroren, fängt neu an zu sprechen und stört den Sprachfluss.

In der Praxis löst man das bequem über einen verzögerten Job: Das Tool gibt sofort den Status "pending" und eine jobId zurück, während die Suche im Hintergrund läuft. Das Widget zeigt bei "pending" den Fortschritt, die Stimme sagt, dass „gearbeitet“ wird.

Eine einfachste Skizze eines Server‑Side‑Tools, das eine „Platzhalter“-Antwort mit Job‑ID liefert, statt bis zum Endergebnis zu blockieren, könnte so aussehen:

// Pseudocode eines serverseitigen Tools für GiftGenius
export async function startGiftSearch(params: SearchParams) {
  const jobId = await createBackgroundJob(params); // Aufgabe in die Queue legen

  return {
    status: "pending",
    jobId,
    message: "Geschenksuche gestartet"
  };
}

Sobald das Widget status: "pending" sieht, kann es in den Fortschrittsmodus wechseln:

if (toolOutput.status === "pending") {
  return (
    <div className="p-4 rounded-xl border flex items-center gap-3">
      <Spinner />
      <div className="text-base">
        Ich suche Geschenke … das dauert ein paar Sekunden.
      </div>
    </div>
  );
}

Das Modell wird auf denselben Tool‑Output hin – gemäß Instruktionen – Ähnliches laut sagen und ggf. eine Rückfrage stellen. Später, wenn der Hintergrundjob fertig ist und z.B. eine MCP‑Notification job.completed kommt, aktualisiert sich das Widget zur Geschenkeliste und die Stimme spricht deren Summary.

So erreichen wir ein Verhalten nahe an Realtime – auch wenn der Backend‑Prozess nicht sofort fertig ist.

6. Sicherheit und Bestätigungen per Sprache

Sprachinterfaces sind tückisch bei kritischen Aktionen: Bezahlen, Daten löschen, Einstellungen ändern. Spracherkennung ist nicht perfekt, Nutzer sprechen „unterwegs“, und ein „mhm“ wird schnell zum „ja, kauf“. Deshalb sind im Sprachkontext Confirmation‑Flows besonders wichtig.

Es gibt zwei Basismuster:

  • Explizite Sprachbestätigung (Explicit Voice Confirmation). Für riskante Aktionen verlangen Sie eine konkrete Phrase. Beispiel: „Zur Bestätigung des Kaufs sagen Sie: ‚Ich bestätige den Kauf‘“ – und untersagen im System‑Prompt Bezahlungen aufgrund von vagen „ja“, „ok“, „machen wir“.
  • Nur visuelle Bestätigung (Visual Confirmation Only). Das Modell führt sprachlich zur Aktion hin („Ich habe die Bestellung vorbereitet, auf dem Bildschirm stehen Gesamtsumme und Warenkorb“), aber der tatsächliche Trigger ist ein Klick auf die Widget‑Schaltfläche „Bezahlen“. Das ist besonders in Commerce‑Szenarien relevant; wir kommen im Modul 14 darauf zurück.

Für GiftGenius könnte das so aussehen.

Modell: „Ich habe ein tolles Gartenset für 45 $ gefunden. Ich kann den Kauf über ChatGPT abwickeln. Auf dem Bildschirm siehst du den Endpreis und die Lieferadresse. Um per Sprache zu bestätigen, sag ‚Ich bestätige den Kauf‘ – oder tippe auf ‚Bezahlen‘ auf dem Bildschirm.“

Widget (Vollbild): zeigt die endgültige Bestellung, hebt Summe und Adresse fett hervor und zwei auffällige Buttons: „Bezahlen“ und „Abbrechen“.

Im Widget können Sie den Bestätigungsstatus widerspiegeln:

type CheckoutState = "review" | "waiting_voice_confirm" | "confirmed";

if (state.phase === "waiting_voice_confirm") {
  return (
    <div className="space-y-3">
      <h2 className="text-xl font-semibold">Fast fertig</h2>
      <p className="text-base">
        Bestätigen Sie den Kauf per Sprache mit
        "Ich bestätige den Kauf" oder tippen Sie auf "Bezahlen".
      </p>
      <Button variant="primary">Bezahlen</Button>
      <Button variant="ghost">Abbrechen</Button>
    </div>
  );
}

So bleibt – falls das Modell etwas im Gesagten falsch interpretiert – eine visuelle „Sicherheits‑Schicht“ für den Nutzer erhalten.

7. Einfache Sprachbefehle und Tool‑Design

Sprachnutzer formulieren Befehle nicht so präzise wie die Variablen Ihres Tools. Sie sagen „Wähle den ersten“, „Zeig noch günstiger“, „ohne Technik bitte“. Ihre Aufgabe ist, Tools und System‑Prompt so zu gestalten, dass das Modell solche Äußerungen leicht in Ihre Tool‑Aufrufe (callTool) überführt.

Für GiftGenius könnten Sie z.B. folgende Aktionen vorsehen:

  • Auswahl einer der gezeigten Optionen per Index oder ID.
  • Budget präzisieren: „günstiger“, „bis 30 $“.
  • Nach Typ filtern: „nur digitale Geschenke“, „nichts, was per Post verschickt werden muss“.

Das lässt sich gut über ein Tool mit einfachem enum‑Parameter action und Zusatzfeldern ausdrücken:

// Pseudoschema eines Tools in TypeScript
type VoiceActionInput =
  | { action: "select_item"; itemId: string }
  | { action: "refine_budget"; maxPrice: number }
  | { action: "filter_type"; type: "digital" | "physical" };

export function handleVoiceAction(input: VoiceActionInput) {
  switch (input.action) {
    case "select_item":
      // Geschenk als ausgewählt markieren
      break;
    case "refine_budget":
      // Auswahl an das neue Budget anpassen
      break;
    case "filter_type":
      // vorhandene Liste filtern
      break;
  }
}

Im System‑Prompt beschreiben Sie, wie diese Aktionen mit Sprachbefehlen zusammenhängen: „Wenn der Nutzer sagt ‚Wähle die erste Option‘, rufe das Tool gift.voiceAction mit action="select_item" und der ID des ersten Geschenks auf dem Bildschirm auf“ usw.

Aus UX‑Sicht reduziert das die kognitive Last: Der Nutzer muss keine exakten Formulierungen wie „Passe die Filter an, sodass nur digitale Geschenke bis 30 $ angezeigt werden“ wählen. Er spricht natürlich – das Modell übersetzt in eine Datenstruktur.

8. Sprachszenario GiftGenius: drei Schritte

Lassen Sie uns alles zusammenführen und ein vollständiges Sprachszenario für GiftGenius entwerfen – ohne in das Low‑Level‑Realtime‑API einzutauchen.

Stellen wir uns einen Nutzer vor: Er fährt Auto und startet den Sprachmodus von ChatGPT. Er sagt: „Finde bitte ein Geschenk für meine Mutter, sie liebt den Garten, Budget bis 50 $.“

Schritt 1. Informationen per Sprache sammeln

Modell: „Super, lass uns ein Geschenk finden. Ich kläre zwei Punkte: Wann wird es gebraucht – in den nächsten Tagen oder später? Und gibt es Einschränkungen, etwa nichts Schweres oder Sperriges?“

Widget (inline): zunächst nur ein kleines Panel mit dem Status „Wir wählen ein Geschenk für: Mama, Gartenarbeit, bis 50 $“. Schriften etwas größer als üblich, damit ein kurzer Blick reicht.

Der Widget‑Status könnte so aussehen:

interface GiftSessionState {
  mode: "voice" | "text";
  step: 1 | 2 | 3;
  recipientSummary: string;
  budget?: number;
}

const [state, setState] = useState<GiftSessionState>({
  mode: "voice",
  step: 1,
  recipientSummary: "Mama, liebt Gartenarbeit"
});

Die Serverseite aktualisiert nach und nach recipientSummary und budget, und das Widget reagiert darauf.

Schritt 2. Suche und Warten

Sobald das Modell genug Informationen hat, ruft es Ihr Geschenk‑Suchtool auf. Dieses kann – wenn die Selektion aufwendig ist – einen Hintergrundjob starten und status: "pending" zurückgeben. Während der Hintergrund läuft, sagt das Modell: „Ich suche jetzt passende Optionen, das dauert ein paar Sekunden. Magst du schon sagen, ob sie eher physische Geschenke bevorzugt oder digitale Gutscheine okay sind?“

Das Widget wechselt in einen PiP‑ähnlichen Modus, wenn der Nutzer zu einem anderen Teil der Oberfläche wechselt, oder bleibt inline mit Fortschritt: „Suche Geschenke …“ und kleinem Indikator.

Schritt 3. Ergebnisse und Auswahl

Wenn die Ergebnisse bereit sind, sagt das Modell: „Ich habe drei Varianten gefunden. Die erste – ein Gartengeräte‑Set für 45 $. Die zweite – eine Gärtner‑Schürze für 30 $. Ich habe sie auf dem Bildschirm angezeigt. Sag ‚Wähle die erste‘ oder ‚Zeig noch günstiger‘.“

Das Widget zeigt drei große Karten mit Preisen und kurzen Beschreibungen. Jede Karte hat CTA „Auswählen“ und „Ähnliche“. Zusätzlich einen Button „Noch mehr anzeigen“.

Wenn der Nutzer sagt: „Wähle die zweite“, ruft das Modell Ihr voiceAction‑Tool mit action="select_item" und der id des zweiten Geschenks auf. Das Widget hebt es als ausgewählt hervor, und das Modell sagt: „Alles klar, wir nehmen die Gärtner‑Schürze für 30 $.“

Optionaler Schritt 4. Checkout

Wenn die App mit Zahlungen integriert ist (später in Modul 14), beginnt der Checkout. Das Modell spricht die Konditionen und bittet um Bestätigung per Sprache oder Button. Das Widget wechselt in einen Vollbild‑Wizard mit den Schritten „Bestellung prüfen“ → „Lieferadresse“ → „Bestätigung“.

Wichtig: In jedem Schritt wird das Wesentliche ausgesprochen; das Widget dient als visuelle Stütze – besonders, wenn der Nutzer gerade steht und auf den Bildschirm schaut.

9. Praktische Hinweise zur Umsetzung und Grenzen des Apps SDK

Alle beschriebenen Schritte für GiftGenius lassen sich in einer normalen ChatGPT App umsetzen – ohne eigenen Audioclient und ohne WebRTC. Wichtig ist, die Stack‑Grenzen im Kopf zu behalten.

Man verliert sich schnell im Realtime‑API, WebRTC, Audiostreaming und baut im Kopf eine eigene Voice‑Plattform. Dafür gibt es in diesem Kurs ein eigenes Modul 20. In dieser Vorlesung zählen die Grenzen der ChatGPT App innerhalb des ChatGPT‑Clients.

In der aktuellen Architektur gilt:

  • Den Audiostream steuert der ChatGPT‑Client. Sie senden/empfangen keine Audio‑Bytes im Widget.
  • Im Backend sehen Sie weiterhin normale Tool‑Aufrufe und Textnachrichten, aber das Modell kann im Sprachmodus sein – und seine Antworten werden vorgelesen.
  • Die Plattform kann indirekte Hinweise liefern, dass gerade der Voice‑Modus aktiv ist (über user-agent oder Umgebungsfelder). Darauf sollten Sie jedoch keine harte Abhängigkeit bauen: Das API kann sich ändern, Ihre App muss auch im reinen Textmodus nützlich bleiben.

Eine gute Umsetzungsstrategie ist daher: Entwerfen Sie zuerst einen UX, der sowohl für Text als auch für Stimme funktioniert: kurze Statusmeldungen, klare CTAs, nachvollziehbare Fortschrittsstufen. Fügen Sie dann einige Voice‑Verbesserungen hinzu: etwas größere Schrift im "voiceGlance"‑Modus, deutlicheren Fortschritt, Fokus auf Zustände wie „Schritt 2 von 3“ und klare Zustände wie „Warte auf Bestätigung“.

Zusätzlich beschreiben Sie im System‑Prompt das Sprachverhalten des Modells: wie es den Widget‑Status kommentiert, welche Phrasen es für Bestätigungen nutzt, welche es vermeidet (z.B. kein JSON vorlesen, nicht jede Kleinigkeit aus Listen aussprechen).

Wenn Sie später einen eigenen Custom Voice Client auf dem Realtime‑API bauen, können Sie diese UX‑Entscheidungen problemlos „mitnehmen“. Der Unterschied liegt im Zugriffs‑ und Streaming‑Level – nicht in den Prinzipien.

10. Typische Fehler im Voice-/Realtime‑Kontext

Fehler Nr. 1: „UI vorlesen“ statt Summary.
Manche Entwickler bauen Tools so, dass das Modell den gesamten JSON‑Output oder eine komplette Kartenliste vorliest. Im Sprachmodus ist das UX‑Gift: Der Nutzer verliert den Faden, und Sie verschwenden Tokens. Besser: Die Stimme liefert eine kurze Zusammenfassung und fokussiert ein, zwei Optionen; den Rest zeigt das UI.

Fehler Nr. 2: Keine visuelle Rückmeldung im Sprachmodus.
Die Versuchung ist groß: „Wenn der Nutzer spricht, hört er auch zu – UI ist unnötig.“ In der Praxis schaut der Nutzer oft kurz auf den Bildschirm oder kommt später zurück. Wenn dann weder Status noch Fortschritt noch klares Ergebnis sichtbar sind, wirkt die App eingefroren oder untätig. Zeigen Sie unbedingt „Ich denke nach“, „Schritt 2 von 3“, „Ergebnisse bereit“ usw.

Fehler Nr. 3: Riskante Aktionen ohne starke Bestätigung.
Im Textmodus ist „Bezahlen“ per Einzelklick schon heikel; im Sprachmodus ist es noch heikler, einen Kauf aufgrund eines vagen „mhm“ auszuführen. Das Ignorieren klarer Confirmation‑Flows (sprachlich und/oder visuell) führt zu Fehlkäufen und Vertrauensproblemen. Überlegen Sie, welche Aktionen doppelte Bestätigung erfordern, und beschreiben Sie das ausdrücklich im System‑Prompt und UI.

Fehler Nr. 4: Nur ans Auge, nicht ans Ohr denken.
Manche Apps sind so gestaltet, als würde der Nutzer stets lesen: zu komplexe Formulierungen, lange Buttontexte, überladene Beschreibungen. Im Sprachmodus muss all das auch ausgesprochen werden – es entsteht „Wortsalat“. Achten Sie darauf, dass die Schlüsselaussage in kurze, einfache Sätze passt, die sich leicht hören lassen.

Fehler Nr. 5: Verwechslung zwischen Apps SDK und eigenem Voice‑Client.
Einige Studierende suchen im Apps SDK nach Mikrofon‑Events, Audiostreaming, WebRTC wie im Realtime‑API – und sind enttäuscht, dass „es das nicht gibt“. Wichtig: Die ChatGPT App lebt im ChatGPT‑Client, die Stimme steuert die Plattform. Sie arbeiten mit Text, Tool‑Aufrufen und Widget‑Zustand und gestalten die UX so, dass der Sprachmodus „einfach gut funktioniert“. Volle Stimmkontrolle ist ein separater, komplexerer Realtime‑API‑Use‑Case.

Fehler Nr. 6: Keine Strategie für Latenzen.
Ohne Plan, was das Modell sagt und was das Widget bei langen Operationen zeigt, wird der Nutzer unterbrechen, neue Fragen stellen und Ihren Flow stören. Latenzen werden im Sprachmodus stärker wahrgenommen als im Text. Nutzen Sie Zwischenstatus, Hintergrundverarbeitung und sprachliche „Ich denke nach, erzähl mir währenddessen …“, damit Stille kein Bug wird.

1
Umfrage/Quiz
UX und Benutzeroberflächen, Level 8, Lektion 4
Nicht verfügbar
UX und Benutzeroberflächen
UX und Benutzeroberflächen (Inline, Fullscreen, Voice)
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION