Skip to content

[✨ FEATURE] Remote transcription backend with the ability to run the speech-to-text model on a separate machine #547

Description

@salimhamed

Problem

All of FluidVoice's speech engines run on-device. The SpeechModel catalog (FluidAudio/CoreML Parakeet, Qwen3, Cohere, Nemotron, Apple Speech, whisper.cpp) is exclusively local, and every
TranscriptionProvider implementation loads and executes the model on the Mac running the client.

This means transcription quality and latency are capped by the hardware of the machine you're dictating on. As a result, users cannot:

  • Use a lightweight or older Mac (including Intel Macs, which are locked out of all the Apple Silicon–only FluidAudio models) as the dictation client while a more powerful machine on the
    LAN does the inference.
  • Run a single larger, higher-accuracy model (e.g. Whisper Large, or a GPU-served model) on a home server and share it across several Macs.

The built-in local API server exposes POST /v1/transcribe, so a FluidVoice instance can already serve transcriptions, but it binds only to 127.0.0.1, and the app has no way to consume a remote transcription endpoint.

The AI-enhancement layer already supports custom OpenAI-compatible base URLs for the post-processing LLM, so remote inference is an established pattern in the app, just not for speech to text.

Proposed solution

Add a "Remote server" speech engine option alongside the existing local models:

  1. New TranscriptionProvider implementation that sends captured audio to a user-configured HTTP endpoint and returns the transcript.
  2. Settings UI under Speech Recognition, including: base URL, optional API key, model name, and a "Test connection" button. This mirrors the custom-endpoint UX that already exists for AI post-processing providers.
  3. Wire format would support the OpenAI-compatible POST /v1/audio/transcriptions (multipart WAV upload) so the feature works out of the box with the broad ecosystem of self-hostable servers (e.g., whisper.cpp server, faster-whisper/speaches, LocalAI, vLLM, ONNX/NIM Parakeet servers, etc.)
  4. Optionally, allow the existing built-in local API server to bind to a LAN interface (opt-in, with an API token). This would allow one FluidVoice install on a powerful Mac to act as the transcription backend for other FluidVoice clients.

Streaming preview can be out of scope for a first version.

Alternatives considered

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions