FluidVoice on Windows — my parallel Flutter port (status & approach) #718
SweetlyTranslateDev
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
FluidVoice on Windows — parallel Flutter port (status & approach)
I’ve been working on a parallel Windows port of FluidVoice and wanted to open this up for visibility, feedback, and expectations-setting.
If any of this helps the official Windows version development then hell yeah. I have over a year of very intensive development with STT systems and WASAPI C++ systems while developing my speech to speech translation software. I am more than happy to help with anything or answer any questions anyone may have. I did all of this today so it is not perfect by any means but it works very well since I have been using it today.
Where the work lives
windows-portThis is not a rewrite of the macOS Swift app, and it is not full feature parity with macOS FluidVoice. It’s a separate Windows desktop product path that reimplements the core dictation loop with Windows-native tech, while leaving the existing Swift / Xcode tree intact as the reference.
Why this approach
FluidVoice on macOS is deeply tied to Apple platforms (SwiftUI, CoreAudio, Accessibility, CoreML / FluidAudio, notch UI, etc.). A line-by-line Swift→Windows conversion wouldn’t map cleanly.
So the port follows a few rules:
Core loop (what works today)
How it was built
Architecture
flutter_app/— Flutter Windows shell (Home / Models / History / Settings)native_plugins/— C++ plugins for capture, hotkeys, speech, inject, overlay, tray, window chrome, autostart, credentialsdocs/— port plan, architecture, building, plugin API notesDart defines interfaces (
AudioCapture,SpeechEngine,TextInjector, hotkey source, etc.). Plugins implement them. The app talks to a unifiedspeech_runtimefacade (prepare/transcribe) instead of model-specific plugin APIs.Native pieces (rough mapping from macOS concepts)
speech_runtime(ggml)Phased delivery
Work landed roughly as:
WINDOWS_PORT_PLAN, architecture)tiny/base) with auto language detect + multilingual font fallbacksSpeech inference runs off the UI thread (worker isolate / native runtime) so ORT / whisper work doesn’t freeze the shell.
What’s included (MVP)
tiny.en,base.entiny,base(auto-detect)0.6b-v2-int8(English ONNX)scripts/windows/Models are not bundled; selected models download into AppData on first use. Release builds are strongly preferred for usable STT speed.
What’s intentionally not ported yet
This Windows build does not claim macOS 1.6.x parity. Still missing / out of scope for now:
speech_runtime)Known soft spots: injection reliability varies by target app; first Parakeet download/load is large; Bluetooth / device-recovery needs more real-world soak.
Docs / build entry points
If you’re exploring the tree:
WINDOWS.md— quick startdocs/BUILDING_WINDOWS.md— toolchain & packagingdocs/WINDOWS_PORT_PLAN.md— original plan / checklistdocs/ARCHITECTURE.md— layeringdocs/WINDOWS_RELEASE_NOTES.md— ported vs not-yet for release artifactsflutter_app/README.md— run / package commandsWhy I’m posting this
I want a clear public thread for:
Happy to answer questions about architecture choices (Flutter vs native, whisper.cpp vs sherpa-onnx, why batch PTT first, etc.). If maintainers want this tracked as an issue/project board item instead of (or in addition to) a Discussion, I’m fine with that too.
All reactions