Flowvox repose sur plusieurs couches indépendantes.
01 — Workers vocaux
Chaque session est pilotée par un worker Symfony.
Exemple :
php bin/console voice:worker --session=demo
Le worker écoute des commandes :
START STOP RECORD TRANSCRIBE
Le contrôle passe par Messenger.
L’audio passe ensuite dans une pipeline Flow.
02 — Pipeline
Le pipeline vocal suit une logique simple :
control → record → transcribe → publish → persist
Chaque étape peut être remplacée.
Le système peut utiliser :
ffmpeg whisper-stream whisper.cpp OpenAI realtime OpenAI batch
Sans modifier le reste de l’architecture.
03 — Temps réel
Flowvox diffuse les transcriptions en live via Mercure.
Le dashboard reçoit :
les partiels les états de session les événements workers les résultats finaux
Sans polling.
L’interface reste synchronisée en permanence.
04 — Dashboard
L’UI repose sur :
Twig UX Turbo Mercure Stimulus
Le dashboard permet :
de voir les sessions actives de démarrer/stopper un worker de suivre la transcription live de rechercher l’historique d’exporter les résultats
Formats disponibles :
txt md srt vtt Local-first
Flowvox privilégie une approche locale.
Le moteur whisper.cpp peut fonctionner directement sur la machine :
FLOWVOX_TRANSCRIPTION_PROVIDER=whisper_cpp
Ou en streaming temps réel :
FLOWVOX_WHISPER_MODE=stream
Le microphone est géré localement.
Aucun navigateur. Aucune capture distante.
Seulement :
audio pipeline transcription
Une architecture modulaire
Le projet est organisé autour de composants séparés :
Infrastructure Symfony 8 Messenger Mercure Doctrine SQLite / PostgreSQL Audio ffmpeg whisper-stream SDL2 IA / transcription whisper.cpp OpenAI batch OpenAI realtime Interface Twig Turbo Hotwire Native Application native
Flowvox peut aussi fonctionner comme application mobile.
Le projet utilise :
symfony/ux-native Hotwire Native iOS WKWebView
Le même code Twig est partagé entre :
le web iOS Android
L’interface adapte certains comportements via :
L’objectif :
une seule UI plusieurs environnements
Une approche orientée orchestration
Flowvox ne cherche pas seulement à transcrire.
Le projet cherche surtout à orchestrer des flux vocaux.
Chaque événement devient :
observable diffusable persistable réutilisable
Les workers peuvent être vus comme des agents spécialisés.
MVP
Le MVP couvre déjà :
workers multi-session contrôle START / STOP transcription locale streaming temps réel dashboard web diffusion Mercure export support OpenAI support whisper.cpp À terme
Flowvox pourrait devenir une base pour :
assistants vocaux locaux journaux de réunion transcription continue moteurs de dictée agents conversationnels workflows audio IA systèmes temps réel
Pas seulement une app de transcription.
Plutôt :
une infrastructure vocale orchestrée
