Blog
Build in Public
28. März 20269 min

KI-Sprachpersonalisierung: Ihr Assistent kennt Sie endlich

Ein Sprachassistent, der dich nicht kennt, ist ein Werkzeug. Ein Assistent, der weiß, dass du drei Kinder hast, ein Außendienstteam leitest und dass "das Ding" die Materialbestellung vom Dienstag bedeutet – das ist ein Partner. Zwei Tage vor dem öffentlichen Start von TAMSIV habe ich die Sprachpersonalisierung hinzugefügt: Konfiguriere deine KI per Sprache, wähle deine TTS-Stimme aus 6 Optionen, und der Assistent passt sich deinem Kontext an. 1800 Zeilen Code, ein denkwürdiger WebSocket-Bug und eine grundlegende Überlegung, was den Unterschied zwischen einem generischen Assistenten und einem persönlichen Assistenten ausmacht.

Wichtige Erkenntnisse:
- Die Personalisierung durch Sprachkontext verwandelt einen generischen Assistenten in ein persönliches Werkzeug – der Benutzer spricht natürlich, die KI versteht implizite Referenzen.
- Die Wahl der TTS-Stimme ist intim: Das Anbieten von 6 Optionen mit Echtzeit-Vorschau erhöht die Bindung an die App.
- Wenn zwei Bildschirme denselben WebSocket teilen, verhindert ein "aktiver Besitzer"-System Callback-Konflikte.
- KI-Personalisierung ist ein natürlicher Monetarisierungshebel für ein Freemium-Modell (grundlegender Kontext kostenlos, vollständig in Pro).
Person spricht in ein Smartphone mit Visualisierung farbiger Schallwellen
Deine KI per Sprache konfigurieren: Über dich selbst sprechen, damit der Assistent deinen Alltag versteht.

Warum verändert Personalisierung die Erfahrung eines Sprachassistenten grundlegend?

Seit Oktober verstand die KI von TAMSIV, was du sagtest. Sie erstellte Aufgaben, Memos, Kalenderereignisse. Sie antwortete höflich. Aber sie kannte dich nicht.

Du konntest ihr sagen "erinnere mich daran, Milch zu kaufen" und sie tat es. Aber wenn du ihr sagtest "erinnere mich an das Ding für die Kinder", wusste sie nicht, dass du Kinder hattest, wie viele, oder was "das Ding" in deinem Alltag bedeutete. Das ist der grundlegende Unterschied zwischen einem Sprachbefehlswerkzeug und einem persönlichen Assistenten.

Die Forschung der Nielsen Norman Group zur Personalisierung zeigt, dass personalisierte Schnittstellen das Engagement um durchschnittlich 40 % steigern. Für einen Sprachassistenten ist der Effekt noch stärker: Personalisierung eliminiert die Notwendigkeit, bei jeder Interaktion alles explizit zu machen.

Diese Überlegung hat mich dazu bewogen, diese Funktion zwei Tage vor dem Start hinzuzufügen. Risiko? Ja. Aber ohne sie wäre TAMSIV "nur ein weiterer Sprachassistent" gewesen. Damit wird es dein Sprachassistent.

Wie funktioniert die Sprachkonfiguration der KI?

Ein neuer Button ist auf dem Bildschirm des Diktiergeräts erschienen: "Meine KI konfigurieren". Du drückst darauf, sprichst und erklärst ihr, wer du bist.

"Ich bin Elternteil von 3 Kindern, leite ein Team von 4 Personen in einem Reinigungsunternehmen und vergesse alles, was mir nach 30 Sekunden gesagt wird."

Die KI hört über die Sprachpipeline zu, transkribiert und fasst dann deinen Kontext in einigen strukturierten Punkten zusammen. Diese Zusammenfassung wird in deinem Supabase-Profil gespeichert und bei jeder Konversation in den System-Prompt injiziert.

Der technische Prozess im Detail

  1. Spracherfassung: Dasselbe native STT wie das Hauptdiktiergerät (mit Deepgram-Fallback bei Bedarf).
  2. Kontextextraktion: Ein LLM über OpenRouter analysiert die Transkription und extrahiert strukturierte Informationen (Familienstand, Beruf, Gewohnheiten, Vorlieben).
  3. Speicherung: Der Kontext wird im Benutzerprofil über Supabase gespeichert, nicht lokal – er folgt dem Benutzer auf all seinen Geräten.
  4. Injektion: Bei jeder neuen WebSocket-Konversation wird der Kontext zum System-Prompt des LLM hinzugefügt. Die KI "weiß", wer du bist, vom ersten Wort an.

Von da an wird jede Antwort angepasst. Wenn du von "dem Kleinen" sprichst, weiß sie, dass du von deinem Sohn sprichst. Wenn du "die Baustelle vom Dienstag" sagst, weiß sie, dass du Außendiensteinsätze verwaltest. Das ist der Unterschied zwischen einem generischen Assistenten und einem Assistenten, der dich kennt.

Warum 6 TTS-Stimmen anbieten und wie wählt man die richtige aus?

Sechs Lautsprecher, die in einem Kreis angeordnet sind und Lichter in verschiedenen Farben ausstrahlen, die verschiedene Stimmfarben darstellen
Jeder Benutzer hat eine Stimmpräferenz – die Wahl ist persönlich und beeinflusst direkt die Bindung an die App.

Die Stimme ist intim. Jeden Tag 50 Mal dieselbe Roboterstimme zu hören, kann irgendwann nerven. Schlimmer noch: Eine Stimme, die dir nicht gefällt, erzeugt bei jeder Nutzung eine unbewusste Reibung. Du vermeidest die Nutzung der App, ohne genau zu wissen, warum.

Ich habe einen TTS-Stimmenwähler mit 6 verschiedenen Optionen hinzugefügt – männlich, weiblich, verschiedene Töne. Die 6 Stimmen stammen von OpenAI TTS (Standardmodell Nova), das die beste natürliche Qualität auf dem Markt für Sprachsynthese bietet.

Das Auswahl-Erlebnis

Du tippst auf eine Stimme, hörst eine Echtzeit-Vorschau ("Hallo, ich bin dein TAMSIV-Assistent...") und wählst aus. Das wird in deinem Profil gespeichert und für alle Sprachantworten verwendet. Die Änderung ist sofort – kein Neustart der App oder erneutes Verbinden des WebSockets erforderlich.

Dieses UX-Detail mag geringfügig erscheinen, hat aber einen messbaren Einfluss. Laut Studien von Voicebot.ai nutzen Benutzer, die ihre Assistentenstimme wählen, diese 60 % häufiger als diejenigen, die die Standardstimme beibehalten. Die Wahl schafft ein Gefühl der Aneignung.

Wie löst man einen WebSocket-Konflikt zwischen zwei Bildschirmen, die denselben Kanal teilen?

Entwickler debuggt Code auf zwei Bildschirmen bei Nacht mit WebSocket-Verbindungsprotokollen
3 Stunden Debugging für einen Callback-Konflikt zwischen zwei Bildschirmen, die denselben WebSocket teilen.

Der Bug, der 3 Stunden gekostet hat. Der KI-Konfigurationsbildschirm und das Diktiergerät teilen denselben WebSocket-Kanal zum Backend. Wenn du deine Stimme im Setup testest, versuchte das Diktiergerät im Hintergrund auch, die Audio-Callbacks zu verarbeiten. Ergebnis: Die beiden Bildschirme traten sich gegenseitig auf die Füße.

Konkret geschah Folgendes:

  1. Der Benutzer öffnet den KI-Konfigurationsbildschirm.
  2. Er testet eine TTS-Stimme – das Backend sendet das Audio über WebSocket.
  3. Das Diktiergerät im Hintergrund empfängt ebenfalls den Audio-Callback.
  4. Beide Bildschirme versuchen, denselben Ton gleichzeitig abzuspielen.
  5. Auf einigen Android-Modellen, bei denen der Garbage Collector aggressiv ist, stürzt der AudioPlayerService stillschweigend ab.

Die Lösung: "Aktiver Besitzer"-System

Wenn der Setup-Bildschirm geöffnet ist, übernimmt er die exklusive Kontrolle über den WebSocket. Das Diktiergerät wartet auf seinen Zug. Das Muster ist einfach:

  • Ein Flag activeOwner: 'dictaphone' | 'setup' | null im globalen Zustand.
  • Jeder WebSocket-Callback überprüft den Besitzer, bevor er die Nachricht verarbeitet.
  • Der Eigentumsübergang ist atomar – es gibt kein Fenster, in dem beide Bildschirme zuhören.

In der Theorie einfach, in der Praxis 3 Stunden Debugging. Der Konflikt trat nur auf bestimmten Geräten auf, was die Reproduktion erschwerte. Das ist die Art von Bug, die man nur beim Testen auf echten Geräten findet – nicht in einem Emulator.

Wie integriert man Personalisierung in ein Freemium-Modell?

Die KI-Personalisierung ist jetzt Teil der differenzierenden Funktionen in den RevenueCat-Abonnementplänen:

  • Kostenloser Plan: Grundlegender Kontext (Name, Sprache). Die KI weiß, wie du heißt, das ist alles.
  • Pro-Plan: Vollständiger Kontext (persönliche Situation, Beruf, Gewohnheiten) + Auswahl der TTS-Stimme. Die KI kennt dich wirklich.
  • Team-Plan: Alles Pro + Gruppenkontext (Team, Projekte, Fachterminologie). Die KI kennt dein Team.

Das ist ein natürlicher Monetarisierungshebel. Personalisierung ist die Funktion, die die größte Bindung schafft – sobald deine KI dich kennt, möchtest du nicht mehr zu einem generischen Assistenten zurückkehren. Das ist genau die Art von Feature Gate, die die Freemium-Strategie für Produktivitäts-Apps empfiehlt.

Welche Auswirkungen hat dies auf die Backend-Architektur?

Das Hinzufügen der Personalisierung erforderte 1800 Codezeilen, verteilt auf Frontend und Backend. Auf der Node.js-Backend-Seite sind die Hauptänderungen:

  • Dynamischer System-Prompt: Der Benutzerkontext wird bei jeder WebSocket-Verbindung aus Supabase geladen und in den Prompt injiziert. Im Speicher zwischengespeichert, um einen DB-Aufruf bei jeder Nachricht zu vermeiden.
  • TTS-Vorschau-Endpunkt: Ein neuer WebSocket-Endpunkt, der speziell für Sprachvorschauen vorgesehen ist und vom Hauptkonversationsfluss isoliert ist.
  • Kontextvalidierung: Das LLM, das den Kontext extrahiert, filtert sensible Informationen (Nummern, Adressen) – nur strukturelle Informationen werden beibehalten.

Das Konversationsverlaufssystem wurde ebenfalls aktualisiert, um den Kontext in den Metadaten zu berücksichtigen – so kann man sehen, wann und wie der Kontext geändert wurde.

730+ Commits, 2 Tage vor dem Start: War das der richtige Zeitpunkt für diese Funktion?

Es war die letzte Funktion vor dem öffentlichen Start. Die App weiß jetzt, mit wem sie spricht. Es bleibt der letzte Schliff, die letzten Tests auf den Geräten der Beta-Tester und der große Sprung.

Eine große Funktion zwei Tage vor dem Start hinzuzufügen, ist riskant. Aber Personalisierung ist die Art von Funktion, die das gesamte App-Erlebnis verändert. Ohne sie wäre TAMSIV ein gutes Sprachwerkzeug gewesen. Mit ihr ist es ein Assistent, der dich kennt. Und das ist es, was den Unterschied zu Alternativen wie Todoist ausmachen wird.

Häufig gestellte Fragen

Sind die Personalisierungsdaten sicher?

Ja. Der Kontext wird in Supabase mit denselben RLS-Richtlinien (Row Level Security) wie alle Benutzerdaten gespeichert. Nur der authentifizierte Benutzer kann seinen Kontext lesen oder ändern. Das LLM, das den Kontext extrahiert, filtert automatisch sensible Informationen (Telefonnummern, Adressen) – nur strukturelle Informationen werden beibehalten.

Kann man seinen Kontext nach der Konfiguration ändern oder löschen?

Ja, jederzeit. Der Button "Meine KI konfigurieren" ermöglicht es, einen neuen Kontext aufzuzeichnen, der den alten ersetzt. Ein "Zurücksetzen"-Button löscht den Kontext vollständig und kehrt zum generischen Assistentenmodus zurück.

Warum OpenAI TTS statt Google oder Azure für die Sprachsynthese?

Nachdem ich alle drei getestet habe, bietet OpenAI TTS (Modell Nova) die natürlichste Stimme auf Französisch. Google TTS ist gut, aber etwas roboterhafter. Azure ist ausgezeichnet auf Englisch, aber weniger überzeugend auf Französisch. Die Kosten sind vergleichbar (~0,015 EUR/1000 Zeichen für OpenAI).

Kann sich der WebSocket-Konflikt mit anderen Bildschirmen wiederholen?

Das System des aktiven Besitzers ist generisch – es schützt vor Konflikten zwischen Bildschirmen, die denselben Kanal teilen. Wenn ein zukünftiger Bildschirm den WebSocket benötigt, muss nur ein Wert zum Typ activeOwner hinzugefügt und das Erwerbs-/Freigabeprotokoll eingehalten werden.

Funktioniert die Personalisierung in allen unterstützten Sprachen?

Ja. Die Kontextextraktion verwendet ein mehrsprachiges LLM über OpenRouter. Du kannst deine KI auf Französisch, Englisch, Deutsch, Spanisch, Italienisch oder Portugiesisch konfigurieren – der Kontext wird in der Sprache gespeichert, in der du ihn diktiert hast, und unverändert im System-Prompt verwendet.