Darkwood · Symfony 8 · Voice-first · 2026-05-17
Thèse
Roadmap narrative
Phase 1 · 2024
Phase 1
flowchart LR MIC[Micro] --> FFM[ffmpeg WAV] FFM --> CLI[whisper-cli] CLI --> OUT[stdout]
Limite du POC
Tout dans le terminal.
Texte après STOP seulement.
Une session, un process.
Phase 2
sessionId.Pourquoi Flow ?
flowchart TB MSG[Messenger START/STOP] --> IN[InputProviderFlow] IN --> REC[RecorderFlow] REC --> TR[TranscribeFlow] TR --> DSP[DisplayFlow]
Pourquoi Symfony ?
Contrôle asynchrone ciblé.
Sessions, historique, export.
Mercure, providers, use cases.
Multi-session
php bin/console voice:worker --session=demo
php bin/console voice:start --session=demo
php bin/console voice:stop --session=demo
Phase 3
Architecture
flowchart LR W[Worker] --> E[VoiceDomainEvent] E --> M[Mercure] E --> DB[(PostgreSQL)] M --> WEB[Browser Turbo] M --> iOS[Hotwire Native]
Événements
Architecture providers
whisper_cpp · whisper_cpp_stream
openai_batch · gpt-4o-transcribe
openai_realtime_whisper
Providers
flowchart TB ENV[FLOWVOX_TRANSCRIPTION_PROVIDER] --> REG[TranscriptionProviderRegistry] REG --> W[WhisperCpp] REG --> WS[WhisperCppStream] REG --> B[OpenAiBatch] REG --> R[OpenAiRealtime]
Phase 4
Realtime audio pipeline
sequenceDiagram participant W as Worker participant F as ffmpeg participant O as OpenAI Realtime participant M as Mercure W->>F: PCM stream F->>O: input_audio_buffer.append O-->>W: transcription_partial W->>M: publish
whisper-stream local
SDL2 + whisper-stream · fenêtre glissante
VAD OpenAI · gpt-4o-transcribe
Live demo
Phase 5
Hotwire Native
ux_is_native()
{% verbatim %}{% if not ux_is_native() %}
…
{% endif %}{% endverbatim %}
iOS validé
darkwood/navi
Phase 6 · Horizon
Realtime multilingue
Tool calling vocal
Workflows déclaratifs
Stack cible
flowchart TB FV[Flowvox] --> FLOW[darkwood/flow] FV --> NAVI[darkwood/navi] FV --> SAI[Symfony AI] FV --> UF[Uniflow] SAI --> RT[OpenAI Realtime] NAVI --> WF[Voice workflows]
Vision produit
État d'avancement
Workers + Flow
UI + Mercure
iOS native
Conclusion
Darkwood · Symfony · Uniflow
darkwood.com · Symfony AI · Flow · Navi