⬆️ Flowvox update : Symfony devient une plateforme d’agents vocaux temps réel
En février 2026, j’avais publié un premier prototype expérimental autour de la transcription vocale en PHP avec Whisper.cpp.
L’objectif était simple :
enregistrer sa voix, la retranscrire localement, puis exporter le résultat.
Trois mois plus tard, le projet a énormément évolué.
Flowvox n’est plus seulement un POC console.
C’est désormais une plateforme de workers vocaux temps réel construite avec Symfony 8, Messenger, Mercure, Symfony UX, OpenAI Realtime et Hotwire Native.
Pourquoi cette mise à jour maintenant ?
La raison est très simple : OpenAI vient de faire évoluer massivement son API audio temps réel.
Dans leur démonstration récente, plusieurs nouveautés ont été présentées :
-
traduction multilingue temps réel
-
transcription fluide en streaming
-
agents vocaux capables d’appeler des tools
-
raisonnement en arrière-plan
-
conservation du contexte conversationnel.
Ce n’est plus simplement de la reconnaissance vocale.
La voix devient une interface programmable.
Et c’est précisément la direction dans laquelle Flowvox évolue.
Le prototype initial : Whisper.cpp + terminal
La première version de Flowvox était extrêmement minimaliste.
Architecture :
Microphone → ffmpeg → whisper.cpp → transcription locale
Le système fonctionnait entièrement en ligne de commande :
php bin/console voice:start php bin/console voice:stop php bin/console voice:worker
Il n’y avait :
-
aucune UI
-
aucun temps réel
-
aucune orchestration distribuée
-
aucune notion de session.
L’objectif était uniquement de valider qu’il était possible de faire de la transcription locale en PHP avec Whisper.cpp.
Passage à une architecture distribuée
La nouvelle version change complètement de philosophie.
Le cœur du système repose maintenant sur :
-
Symfony Messenger
-
darkwood/flow
-
Mercure
-
Doctrine
-
Symfony UX
-
providers de transcription interchangeables.
Architecture simplifiée :
Symfony UX
Messenger
Voice Worker
Flow Pipeline
OpenAI Realtime
Whisper.cpp
Mercure
Le point important :
le worker n’est pas l’interface.
L’UI ne fait que piloter des workers vocaux indépendants.
Chaque session possède sa propre queue Messenger :
voice_demo voice_mobile voice_conference voice_stream
Cela permet d’avoir :
-
plusieurs workers
-
plusieurs appareils
-
plusieurs sessions simultanées
-
une architecture distribuée.
Flow orchestration
Le pipeline repose toujours sur Darkwood Flow.
Trois étapes principales :
ÉtapeRôleInputProviderFlowLecture des événements START / STOPRecorderFlowEnregistrement audioTranscribeFlowTranscription
Le worker reste long-running et écoute les événements Messenger.
Lorsqu’un START est reçu :
-
le worker démarre l’enregistrement
-
ffmpeg capture l’audio
-
la session est suivie
-
les événements sont publiés via Mercure.
Lorsqu’un STOP est reçu :
-
le fichier WAV est finalisé
-
la transcription démarre
-
l’UI reçoit les mises à jour.
Symfony UX + Mercure : le temps réel
Une des plus grosses évolutions du projet est l’arrivée d’une vraie interface web temps réel.
Stack utilisée :
-
Twig
-
Symfony UX
-
Turbo
-
Stimulus
-
Mercure.
Le dashboard permet maintenant :
-
de voir les workers actifs
-
de démarrer/arrêter une session
-
de suivre les événements live
-
d’afficher les transcriptions
-
d’accéder à l’historique.
Architecture temps réel :
UIBrowserMercureWorkerUIBrowserMercureWorkerpublish eventlive updaterefresh transcript
L’intérêt est énorme :
Symfony peut maintenant faire du temps réel moderne sans React ni frontend séparé.
Providers de transcription
Une autre évolution importante est l’introduction d’une couche DDD avec providers interchangeables.
Flowvox peut maintenant fonctionner avec plusieurs moteurs :
ProviderTypewhisper_cppLocalwhisper_cpp_streamLocal realtimeopenai_batchCloud batchopenai_realtime_whisperCloud realtime
La sélection se fait via une variable d’environnement :
FLOWVOX_TRANSCRIPTION_PROVIDER=
Le moteur peut changer.
L’UX reste identique.
OpenAI Realtime Whisper
C’est probablement la nouveauté la plus importante.
Avant :
START → parler → STOP → transcription
Maintenant :
START → streaming audio → transcription live → partials → UI temps réel
Le fonctionnement :
Micro
ffmpeg
WebSocket OpenAI
Worker
Mercure
Symfony UX
Le worker envoie les chunks audio à OpenAI Realtime via WebSocket.
Le modèle retourne des transcriptions partielles.
Le worker publie ensuite ces événements vers Mercure.
Et Symfony UX met à jour l’interface en direct.
Traduction multilingue temps réel
OpenAI introduit aussi GPT Realtime Translate.
Cela permet :
-
de parler en français
-
de traduire en anglais
-
ou même de changer dynamiquement de langue pendant la conversation.
Le modèle suit la structure de la phrase et attend parfois les verbes avant de traduire, ce qui rend le résultat beaucoup plus naturel.
C’est extrêmement intéressant pour :
-
conférences
-
podcasts
-
support client
-
éducation
-
médias.
Symfony UX Native + iOS
Autre grosse évolution : l’intégration native mobile.
Flowvox utilise maintenant :
composer require symfony/ux-native
L’idée est de conserver :
-
Twig
-
Symfony UX
-
Turbo
-
Stimulus
tout en utilisant un shell mobile natif basé sur Hotwire Native.
Architecture :
Twig
Turbo
WebView
SwiftUI
Stimulus
NativeBridge
L’application iOS repose sur une WebView connectée au serveur Symfony local.
Le résultat :
-
même application
-
même backend
-
même UI
-
version web + version native.
Darkwood Navi : traçabilité des workflows
Flowvox intègre aussi Darkwood Navi.
L’objectif :
-
enregistrer les événements
-
suivre les exécutions
-
tracer les workflows
-
rendre les traitements reproductibles.
Cela prépare surtout les prochaines étapes :
-
agents vocaux
-
tool calling
-
workflows déclaratifs
-
orchestration IA.
Vision long terme
Flowvox n’est plus seulement un moteur de transcription.
La direction devient beaucoup plus ambitieuse :
une plateforme vocale programmable pour Symfony.
Les prochaines étapes :
-
GPT Realtime Translate
-
agents vocaux
-
tool calling
-
orchestration Flow
-
workflows Navi
-
intégration Uniflow
-
automation pilotée par la voix.
L’objectif n’est plus simplement :
“parler à son application”.
Mais plutôt :
“avoir une application qui réagit, raisonne et agit en temps réel à travers la voix”.
Conclusion
En quelques mois, Flowvox est passé :
d’un POC terminal Whisper.cpp → à une plateforme vocale temps réel Symfony
Avec :
-
workers distribués
-
orchestration Flow
-
Symfony UX
-
Mercure
-
OpenAI Realtime
-
Hotwire Native
-
providers interchangeables
-
traçabilité Navi.
La voix devient progressivement une interface programmable.
Et je pense que Symfony possède aujourd’hui toutes les briques nécessaires pour devenir une excellente plateforme pour ce type de systèmes.
Flowvox continue d’évoluer comme terrain d’expérimentation autour :
-
des workers vocaux
-
de l’orchestration temps réel
-
des agents pilotés par la voix
-
de Symfony UX
-
de Symfony AI
-
et des workflows déclaratifs avec Flow et Navi.
L’objectif n’est plus simplement de retranscrire de l’audio.
L’objectif est maintenant de construire des interfaces vocales programmables capables :
-
d’écouter
-
de raisonner
-
de traduire
-
et d’agir dans des systèmes externes en temps réel.
Ressources
Tu peux ajouter cette section à la fin de l’article.
Ressources & projets
Le code source et les expérimentations autour de Flowvox sont disponibles publiquement :
Technologies utilisées :
Annonces et documentation OpenAI :
🎤 Sunday Labs #4 : ce que l’écosystème builder parisien cherche vraiment
🧩 Un agent IA aujourd’hui, c’est un stagiaire hypermotivé avec 400 onglets ouverts.
⚙️ NoLife Models - Vers une infrastructure locale des runtimes IA avec Symfony
💡 Devoxx France 2026 - L'Ère de l'Agentique au Cœur de Paris
💫 J’ai forcé 4 IA à recréer Mario de zéro avec Symfony AI et Godot
⚡️ Projection du film "Mon Extraordinaire"
✨ Le design transformatif : ne plus concevoir des usages, mais des métamorphoses
⚙️ Construire une architecture multi-agent gouvernée avec Symfony AI, Flow et Navi
🚀 Levée de fonds vs Bootstrap : deux chemins pour construire une boîte
🚀 J’ai reconstruit un LLM… avec des pixels.
🔊 DJ Matyo Live - Soundcloud set
🤖 Symfony AI in Action - Construire des systèmes IA réels avec Symfony
🐳 Agentic Workflows avec Docker - vers des systèmes autonomes, sécurisés et orchestrés
👨💻 Évaluation comparative de petits modèles de langage dans le monde réel
🚀 Sundays Lab #3 - Quand l’IA devient un terrain de jeu collectif
⚙️ Message-oriented vs Data-oriented orchestration - de la donnée à la connaissance
🤩 Relâcher les connecteurs - Des outils au langage
💡 J’ai créé une app IA RGPD en 1h avec Symfony
🗂️ Hellcats Over The Pacific - ouverture des archives
🧠 Ne rien dévoiler. Tout montrer – Bâtir des systèmes publics sur des fondations privées