QVocalWriter is a cross-platform, local-first application for working with spoken and written language. It started as a speech-to-text tool for long-form writing and has grown into a modular toolset with independent features for transcription, translation, and assistant-based chat.
The project is under active initial development, with an emphasis on clean C++ APIs, a QML-based UI, and extensibility across platforms.
The focus remains on:
- Long-form content (articles, blog posts, books)
- Offline or self-hosted model usage
- Clear separation between features and models
- Privacy-respecting workflows
QVocalWriter is intentionally designed as a lightweight alternative to tools like LM Studio, focusing on native performance and low resource usage.
Unlike Electron-based applications, QVocalWriter is built with Qt and C++, resulting in:
- Significantly lower memory usage
- Far fewer file handles and background processes
- Faster startup times
- Better coexistence with development tools on the same system
On my Linux workstation, QVocalWriter uses approximately 83 MB of memory before any models are loaded, making it suitable for systems where heavier frameworks struggle or interfere with other applications.
The goal is not to replicate every feature of larger all-in-one tools, but to provide a simple, efficient, and transparent way to work with local language models without unnecessary overhead.
-
Transcription Convert speech to text with support for longer recordings and structured output.
-
Translation Translate text or transcriptions between languages using local models.
-
Assistant Chat Interact with a local language model for drafting, rewriting, summarizing, or refining text, as well as researching, experimenting, or playing with local models of various sizes and capabilities.
Each feature is designed to work independently, sharing models and infrastructure where it makes sense, but without tight coupling.
- CMake
- Qt 6.10 or later (Qt Quick and QML modules)
mkdir build
cd build
cmake ..
cmake --build ../build/bin/QVocalWriter