Login / Sign up
Discover Bonzai
Terms of Use
Legal notice
Privacy
Region
Language
matyo91
matyo91
12
Subscribers
Facebook
X
Whatsapp
Telegram
👉 You must follow matyo91 to access chat.
Feed Shop About

🚀 Je construis un moteur de dictĂ©e en PHP (Flow + Symfony + Whisper.cpp)

Facebook
Twitter
Whatsapp
Telegram
12 hours ago


Construire un moteur de dictée en 2026 est trivial.

Construire une architecture propre autour d’un moteur de dictĂ©e est plus intĂ©ressant.

Cet article prĂ©sente Flowvox, un MVP de moteur de transcription audio dĂ©veloppĂ© en PHP, en s’appuyant sur :

  • Symfony

  • Symfony Messenger

  • Flow : orchestrateur maison

  • ffmpeg

  • whisper.cpp

Le code source est disponible en open source : 👉 https://github.com/darkwood-com/flowvox

L’objectif n’était pas simplement d’utiliser Whisper. L’objectif Ă©tait de structurer correctement le pipeline.

Le problĂšme : la transcription n’est qu’une Ă©tape

Un moteur vocal minimal peut se résumer à :

Audio → Texte

Mais dans un systÚme réel, plusieurs contraintes apparaissent :

  • DĂ©clenchement start / stop

  • Finalisation propre du fichier audio

  • Gestion d’état du recorder

  • Orchestration des Ă©tapes

  • Extension vers post-traitement (rĂ©sumĂ©, LLM, analyse)

La question devient alors :

Comment modéliser un pipeline audio propre, extensible et maßtrisé ?

Stack technique

Le MVP repose sur :

  • PHP 8+

  • Symfony

  • Symfony Messenger

  • Flow (orchestrateur)

  • ffmpeg (captation audio locale)

  • whisper.cpp (transcription open source locale)

Aucune API distante. Aucun service cloud. Transcription 100% locale.

Architecture générale

L’architecture est organisĂ©e en trois flows :

InputProvider → Recorder → Transcribe

Chaque Ă©tape est isolĂ©e et responsable d’un rĂŽle prĂ©cis.

InputProviderFlow

Responsabilité :

  • Écouter les commandes voice:start et voice:stop

  • Émettre un VoiceControlEvent

Les commandes CLI déclenchent des messages via Symfony Messenger.

Le worker, en arriÚre-plan, reçoit ces événements et les injecte dans Flow.

Ce découplage permet :

  • Un contrĂŽle granulaire

  • Une gestion multi-session

  • Une sĂ©paration claire des responsabilitĂ©s

RecorderFlow

Responsabilité :

  • Piloter une instance de VoiceRecorder

  • GĂ©rer le cycle de vie d’un processus ffmpeg

Le VoiceRecorder encapsule un processus systÚme lancé via :

Symfony\Component\Process\Process

ProblĂšme central :

Comment gérer proprement start / stop sans corrompre le fichier audio ?

Trois états sont explicitement modélisés :

  • idle

  • recording

  • stopping

Lors d’un stop, un SIGINT est envoyĂ© Ă  ffmpeg afin de finaliser correctement le header WAV.

L’état stopping Ă©vite :

  • Les double-start

  • Les conflits concurrents

  • Les fichiers incomplets

Le processus est maßtrisé, pas subi.

TranscribeFlow

Responsabilité :

  • Recevoir un fichier WAV finalisĂ©

  • Lancer whisper.cpp

  • Produire un texte transcrit

Whisper est exécuté localement via CLI.

Le MVP reste volontairement simple :

  • Pas de streaming

  • Pas de chunking temps rĂ©el

  • Une transcription synchrone

L’objectif est de valider l’intĂ©gration et l’orchestration.

Worker et orchestration

Le moteur fonctionne via un worker Symfony :

php bin/console voice:worker

Ce worker :

  1. Instancie Flow

  2. Enregistre les flows

  3. Écoute Symfony Messenger

  4. Ordonne l’exĂ©cution des Ă©tapes

Commandes disponibles :

voice:start voice:stop voice:worker-list

Le flux complet devient :

voice:start → Recorder dĂ©marre → voice:stop → Recorder finalise → TranscribeFlow s’exĂ©cute → Texte produit

Sans état global externe.

Pourquoi Flow ?

Flow permet :

  • Une architecture orientĂ©e pipeline

  • Des stratĂ©gies d’Input Processing (IP Strategy)

  • Une gestion explicite des Ă©vĂ©nements

  • Une sĂ©paration nette entre orchestration et logique mĂ©tier

Le systĂšme n’est pas couplĂ© Ă  Whisper.

Whisper est une implémentation. Flow est la structure.

Ce que valide le MVP

  • Gestion propre d’un processus systĂšme

  • ModĂ©lisation explicite des Ă©tats

  • Orchestration Ă©vĂ©nementielle

  • ExtensibilitĂ© du pipeline

Ce n’est pas un produit.

C’est une base architecturale.

Évolutions possibles

Les prochaines itérations naturelles :

  • Streaming par chunk audio

  • Transcription parallĂšle

  • Post-traitement LLM

  • IntĂ©gration NativePHP (desktop)

  • Support mobile

  • Batching multi-modĂšles

Mais ces Ă©volutions ne changent pas le cƓur :

Une architecture claire. Une orchestration maßtrisée. Un pipeline extensible.

Code source

Le dépÎt open source est disponible ici :

👉 https://github.com/darkwood-com/flowvox

Contributions, suggestions et retours sont les bienvenus.

Conclusion

Construire un moteur vocal en PHP est simple.

Construire une architecture propre autour d’un moteur vocal est plus intĂ©ressant.

Flowvox valide un principe :

La transcription n’est qu’un composant. L’orchestration est la vĂ©ritable structure.

matyo91
matyo91
€99.00

Consulting Automation avec Flow

Open
Follow matyo91 to comment
matyo91

matyo91

Je t'aide Ă  automatiser tes process
12
Visit this Bonzai
Follow matyo91 to get the latest updates.

⚔ DĂ©couverte de l'extension cataclysme Hearthstone

2 days ago
5

đŸ€– DĂ©veloppement parallĂšle d'IA avec Cursor et Git Worktrees

1 week ago
19

đŸ€– Comment rendre Darkwood prĂȘt pour les agents

1 week ago
31

đŸ§‘â€đŸ’» Codeur vs Vibe codeur

1 week ago
21

🚹 Darkwood IaExceptionBundle — Quand les erreurs commencent Ă  s'expliquer d'elles-mĂȘmes

1 week ago
22

⚙ FOSDEM 2026 : signaux structurels de l’écosystĂšme open source

3 weeks ago
35

♟ DĂ©gĂąts de dĂ©fausse infini

1 month ago
43

📝 Gouvernance IT : reprendre le contrîle sans ralentir l’innovation

1 month ago
42

⭐ Monter LĂ©gende avec le Guerrier QuĂȘte (Enter the Lost City)

1 month ago
51

⭐ Monter lĂ©gende avec le deck Paladin Aggro Bubule

1 month ago
50

🎄 Offre de fin d’annĂ©e – Formation Flow (PHP)

1 month ago
54

⭐ Meetup AFUP Paris DĂ©cembre 2025

2 months ago
53

đŸ›ïž Open Source Experience 2025 : un Ă©cosystĂšme qui s’organise, s’affirme et accĂ©lĂšre

2 months ago
59

ai-PULSE 2025 : l'Europe de l'IA passe à la vitesse supérieure

2 months ago
60

đŸ§© Meetup AFUP Paris – Novembre 2025

2 months ago
69

đŸ€– L’IA CafĂ© Club #12 : CrĂ©ation, business, cinĂ©ma
 l’IA sous toutes ses formes Ă  la Monnaie de Paris

2 months ago
75

🎼 Comprendre l’ECS : la brique invisible derriùre les jeux modernes

4 months ago
104

🚀 Uniflow 1.1.18

4 months ago
107

🎹 Programmation rĂ©cursive de pipes

4 months ago
107

🚀 Veille tech semaine 39

4 months ago
112
© 2026 Bonzai Privacy Legal notice Terms of Use