⬆️ Flowvox-Update: Symfony wird zur Echtzeit-Sprachagentenplattform
vom 17. Mai 2026
Im Februar 2026 veröffentlichte ich einen ersten experimentellen Prototyp zur Sprachtranskription in PHP mit Whisper.cpp.
https://blog.darkwood.com/article/im-building-a-dictation-engine-in-php-flow-symfony-whisper-cpp
Das Ziel war einfach:
Nehmen Sie Ihre Stimme auf, transkribieren Sie sie lokal und exportieren Sie anschließend das Ergebnis.
Drei Monate später hat sich das Projekt erheblich weiterentwickelt.
Flowvox ist nicht mehr nur ein Konsolen-Prototyp.
Es handelt sich nun um eine Echtzeit-Sprachworker-Plattform, die mit Symfony 8, Messenger, Mercure, Symfony UX, OpenAI Realtime und Hotwire Native entwickelt wurde.
Warum dieses Update jetzt?
Der Grund ist ganz einfach: OpenAI hat seine Echtzeit-Audio-API gerade massiv aktualisiert.
In ihrer jüngsten Demonstration wurden mehrere neue Funktionen vorgestellt:
- Mehrsprachige Echtzeitübersetzung
- Reibungslose Streaming-Transkription
- Sprachagenten, die Anruftools nutzen können
- Hintergrundbegründung
- Erhaltung des Gesprächskontexts.
Es geht nicht mehr nur um Spracherkennung.
Die Stimme wird zu einer programmierbaren Schnittstelle.
Und genau in diese Richtung entwickelt sich Flowvox.
Der erste Prototyp: Whisper.cpp + Terminal
Die erste Version von Flowvox war extrem minimalistisch.
Architektur:
Microphone
→ ffmpeg
→ whisper.cpp
→ transcription locale
Das System funktionierte ausschließlich über die Kommandozeile:
php bin/console voice:start
php bin/console voice:stop
php bin/console voice:worker
Es gab:
- keine Benutzeroberfläche
- keine Echtzeit
- keine verteilte Orchestrierung
- kein Konzept von Sitzung.
Ziel war es lediglich zu überprüfen, ob eine lokale Transkription in PHP mit Whisper.cpp möglich ist.
Übergang zu einer verteilten Architektur
Die neue Version ändert ihre Philosophie komplett.
Der Kern des Systems beruht nun auf:
- Symfony Messenger
- dunkles Holz/Fluss
- Quecksilber
- Lehre
- Symfony UX
- Austauschbare Transkriptionsanbieter.
Vereinfachte Architektur:
flowchart LR
UI["Symfony UX"]
MQ["Messenger"]
W["Voice Worker"]
F["Flow Pipeline"]
OAI["OpenAI Realtime"]
WC["Whisper.cpp"]
M["Mercure"]
UI --> MQ
MQ --> W
W --> F
F --> WC
F --> OAI
W --> M
M --> UI
Der wichtige Punkt:
Der Worker ist nicht die Schnittstelle.
Die Benutzeroberfläche steuert ausschließlich unabhängige Sprachmitarbeiter.
Jede Sitzung hat ihre eigene Messenger-Warteschlange:
voice_demo
voice_mobile
voice_conference
voice_stream
Dies ermöglicht uns Folgendes:
- mehrere Arbeiter
- mehrere Geräte
- mehrere gleichzeitige Sitzungen
- eine verteilte Architektur.
Ablauf-Orchestrierung
Die Pipeline ist weiterhin auf Darkwood Flow angewiesen.
Drei Hauptschritte:
| Bühne | Rolle |
|---|---|
| InputProviderFlow | Lesen von START/STOP-Ereignissen |
| RecorderFlow | Audioaufnahme |
| TranscribeFlow | Transkription |
Der Prozess läuft dauerhaft und überwacht Messenger-Ereignisse.
Wenn ein START-Signal empfangen wird:
- Der Arbeiter startet die Aufzeichnung.
- ffmpeg erfasst den Ton
- Im Anschluss an die Sitzung folgt
- Veranstaltungen werden über Mercury veröffentlicht.
Wenn ein STOP empfangen wird:
- Die WAV-Datei ist fertiggestellt.
- Die Transkription beginnt
- Die Benutzeroberfläche empfängt Aktualisierungen.
Symfony UX + Mercury: Echtzeit
Eine der größten Entwicklungen im Projekt ist die Einführung einer echten Echtzeit-Weboberfläche.
Verwendeter Stack:
- Zweig
- Symfony UX
- Turbo
- Reiz
- Quecksilber.
Das Dashboard bietet Ihnen nun folgende Möglichkeiten:
- um die aktiven Arbeiter anzuzeigen
- eine Sitzung starten/beenden
- Live-Events verfolgen
- um die Transkripte anzuzeigen
- um auf den Verlauf zuzugreifen.
Echtzeitarchitektur:
sequenceDiagram
participant Worker
participant Mercure
participant Browser
Worker->>Mercure: publish event
Mercure->>Browser: live update
Browser->>UI: refresh transcript
Das Interesse ist enorm:
Symfony kann jetzt moderne Echtzeitanwendungen ohne React oder ein separates Frontend realisieren.
Transkriptionsanbieter
Eine weitere wichtige Entwicklung ist die Einführung einer DDD-Schicht mit austauschbaren Anbietern.
Flowvox kann jetzt mit mehreren Engines arbeiten:
| Anbieter | Typ |
|---|---|
| whisper_cpp | Lokal |
| whisper_cpp_stream | Lokale Echtzeit |
| openai_batch | Cloud-Batch |
| openai_realtime_whisper | Cloud-Echtzeit |
Die Auswahl erfolgt über eine Umgebungsvariable:
FLOWVOX_TRANSCRIPTION_PROVIDER=
Der Motor kann sich ändern.
Das Benutzererlebnis bleibt unverändert.
OpenAI Echtzeit-Flüstern
Dies ist wahrscheinlich die wichtigste Neuerung.
Vorher:
START
→ parler
→ STOP
→ transcription
JETZT :
START
→ streaming audio
→ transcription live
→ partials
→ UI temps réel
So funktioniert es:
flowchart LR
MIC["Micro"]
FFMPEG["ffmpeg"]
WS["WebSocket OpenAI"]
WORKER["Worker"]
MERCURE["Mercure"]
UI["Symfony UX"]
MIC --> FFMPEG
FFMPEG --> WS
WS --> WORKER
WORKER --> MERCURE
MERCURE --> UI
Der Worker sendet die Audio-Chunks via WebSocket an OpenAI Realtime.
Das Modell liefert Teiltranskripte.
Der Mitarbeiter veröffentlicht diese Ereignisse anschließend auf Mercury.
Und Symfony UX aktualisiert die Benutzeroberfläche live.
Mehrsprachige Echtzeitübersetzung
OpenAI stellt außerdem GPT Realtime Translate vor.
Dies ermöglicht Folgendes:
- auf Französisch sprechen
- ins Englische übersetzen
- oder sogar die Sprache während des Gesprächs dynamisch zu ändern.
Das Modell orientiert sich an der Satzstruktur und wartet mitunter auf Verben, bevor es übersetzt, wodurch das Ergebnis wesentlich natürlicher wirkt.
Das ist äußerst interessant, denn:
- Konferenzen
- Podcasts
- Kundensupport
- Ausbildung
- Medien.
Symfony UX Native + iOS
Eine weitere wichtige Entwicklung: die native mobile Integration.
Flowvox verwendet nun:
composer require symfony/ux-native
Die Idee ist, Folgendes zu bewahren:
- Zweig
- Symfony UX
- Turbo
- Reiz
unter Verwendung einer nativen mobilen Shell, die auf Hotwire Native basiert.
Architektur:
flowchart LR
Twig --> Turbo
Turbo --> WebView
WebView --> SwiftUI
Stimulus --> NativeBridge
Die iOS-Anwendung basiert auf einer WebView, die mit dem lokalen Symfony-Server verbunden ist.
Das Ergebnis:
- gleiche Anwendung
- gleiches Backend
- gleiche Benutzeroberfläche
- Webversion + native Version.
Darkwood Navi: Workflow-Rückverfolgbarkeit
Flowvox integriert auch Darkwood Navi.
Das Ziel:
- Ereignisse aufzeichnen
- Ausführungen überwachen
- Arbeitsabläufe nachverfolgen
- um die Behandlungen reproduzierbar zu machen.
Dies bereitet hauptsächlich die nächsten Schritte vor:
- Sprachagenten
- Werkzeugaufruf
- deklarative Workflows
- KI-Orchestrierung.
Langfristige Vision
Flowvox ist nicht mehr nur ein Transkriptionsprogramm.
Die Richtung wird deutlich ambitionierter:
eine programmierbare Sprachplattform für Symfony.
Die nächsten Schritte:
- GPT Echtzeitübersetzung
- Sprachagenten
- Werkzeugaufruf
- Ablauf-Orchestrierung
- Navi-Workflows
- Uniflow-Integration
- Sprachgesteuerte Automatisierung.
Das Ziel ist nicht mehr einfach nur:
„Sprich mit deiner App“.
Sondern vielmehr:
„Eine Anwendung zu haben, die per Sprache in Echtzeit reagiert, argumentiert und handelt“.
Abschluss
In nur wenigen Monaten hat Flowvox eine bemerkenswerte Entwicklung durchgemacht:
d’un POC terminal Whisper.cpp
→ à une plateforme vocale temps réel Symfony
Mit :
- verteilte Arbeiter
- Ablauf-Orchestrierung
- Symfony UX
- Quecksilber
- OpenAI Echtzeit
- Hotwire Native
- austauschbare Anbieter
- Navi-Rückverfolgbarkeit.
Die Stimme entwickelt sich allmählich zu einer programmierbaren Schnittstelle.
Und ich denke, dass Symfony jetzt alle notwendigen Bausteine besitzt, um eine hervorragende Plattform für diese Art von System zu werden.
Flowvox entwickelt sich ständig weiter und dient als Testumgebung für:
- Spracharbeiter
- Echtzeit-Orchestrierung
- sprachgesteuerte Agenten
- von Symfony UX
- von Symfony AI
- und deklarative Workflows mit Flow und Navi.
Ziel ist es nicht mehr nur, Audioaufnahmen zu transkribieren.
Das Ziel ist nun die Entwicklung programmierbarer Sprachschnittstellen, die Folgendes ermöglichen:
- zum Zuhören
- um zu begründen
- zum Übersetzen
- und in Echtzeit in externe Systeme einzugreifen.
Ressourcen
Sie können diesen Abschnitt am Ende des Artikels hinzufügen.
Ressourcen & Projekte
Der Quellcode und die Experimente rund um Flowvox sind öffentlich zugänglich:
Verwendete Technologien:
OpenAI-Ankündigungen und -Dokumentation: