Darkwood Blog Blog
  • Artikel
  • Auto
de
  • en
  • fr
Anmeldung
  • Blog
  • Artikel
  • Auto

⬆️ 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:

  1. Der Arbeiter startet die Aufzeichnung.
  2. ffmpeg erfasst den Ton
  3. Im Anschluss an die Sitzung folgt
  4. Veranstaltungen werden über Mercury veröffentlicht.

Wenn ein STOP empfangen wird:

  1. Die WAV-Datei ist fertiggestellt.
  2. Die Transkription beginnt
  3. 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

  • Flowvox-Ankündigung
  • Flowvox GitHub
  • Symfony UX Native
  • OpenAI Realtime API
  • whisper.cpp

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:

  • Flowvox (Symfony-Sprachplattform)
  • Flowvox iOS (Hotwire Native)
  • SlideWire-Präsentationsfolien

Verwendete Technologien:

  • Whisper.cpp
  • Symfony UX Native

OpenAI-Ankündigungen und -Dokumentation:

  • Ankündigung der OpenAI-Echtzeit-Audiomodelle
  • OpenAI Echtzeitübersetzungsdokumentation

Site

  • Sitemap
  • Kontakt
  • Impressum

Network

  • Hello
  • Blog
  • Apps
  • Photos

Social

Darkwood 2026, alle Rechte vorbehalten