Skip to content

avra-i/Vext

Repository files navigation

Vext screenshot 1 Vext screenshot 2

Vext screenshot 3 Vext screenshot 4

Vext screenshot 5

Vext

Vext is a local-first desktop speech-to-text utility built with Tauri, React, TypeScript, and Rust. It records microphone input, transcribes locally with whisper.cpp, applies user-defined dictionary replacements, and inserts the final text back into the previously targeted app using a Windows clipboard-preserving paste fallback.

Current architecture

  1. Frontend
    • React + TypeScript shell with Overview, History, Dictionary, Settings, and Setup pages
    • Browser-side WAV microphone capture
    • Local persistence in localStorage
  2. Native backend
    • Tauri command layer in Rust
    • whisper.cpp process execution
    • Foreground window capture and clipboard-based text insertion on Windows
  3. Core modules
    • src/lib/audio.ts: browser WAV capture
    • src/lib/dictionary.ts: replacement engine and punctuation cleanup
    • src/lib/stats.ts: aggregate stats
    • src/lib/storage.ts: local storage management
    • src-tauri/src/services/whisper.rs: local transcription via whisper-cli
    • src-tauri/src/services/insertion.rs: foreground target capture and insertion

Features included

  1. Hold-to-talk and toggle recording modes
  2. Sidebar-driven polished desktop UI
  3. Floating recording bar with status updates
  4. Local dictionary replacements with JSON export
  5. Searchable local history
  6. Privacy controls and delete/export local data actions
  7. Onboarding and setup checklist
  8. Basic tests for dictionary replacement, stats, and storage

Requirements

  1. Node.js 20+
  2. Rust stable
  3. Microsoft Visual Studio Build Tools for Tauri on Windows
  4. WebView2 Runtime on Windows

Install dependencies

npm.cmd install

Run in development

npm.cmd run tauri:dev

Run tests

npm.cmd test

Build executable

npm.cmd run tauri:build

Expected build outputs:

  1. src-tauri\target\release\Vext.exe
  2. src-tauri\target\release\bundle\nsis\Vext_0.1.0_x64-setup.exe

Installing whisper.cpp

  1. Clone the repository:
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
  1. Build the CLI:
cmake -B build
cmake --build build --config Release
  1. Use the built CLI path in Vext settings, typically:
<whisper.cpp>\build\bin\Release\whisper-cli.exe

Downloading Whisper models

  1. Download a model from the whisper.cpp model scripts or release assets
  2. Typical useful models:
    • ggml-tiny.en.bin
    • ggml-base.en.bin
    • ggml-small.en.bin
    • ggml-medium.en.bin
    • ggml-large-v3.bin
  3. Store the model on local disk and point Vext settings to the exact file path

Example model download from the whisper.cpp repo:

.\models\download-ggml-model.cmd base.en

Platform notes and permissions

Windows

  1. Microphone permission must be enabled in Windows Privacy settings
  2. Clipboard-based insertion works best when Vext and the target app are running at the same privilege level
  3. Some elevated apps, secure input fields, and sandboxed apps may reject pasted text or foreground restoration

macOS

The current insertion implementation is Windows-focused. A future port will need microphone and Accessibility permissions.

Linux

The current insertion implementation is Windows-focused. Browser-side audio capture still works in preview mode.

Tests included

  1. Dictionary replacement behavior
  2. Stats calculation
  3. History/settings local storage

Notes

  1. global hotkey, separate always-on-top recording bar window, and start-on-login are represented in the UI/settings model but are not fully wired to native OS hooks yet.
  2. The Windows insertion path currently uses clipboard-preserving paste as the primary reliable fallback.

About

Vext is an free open-source desktop application that converts voice into accurate text in real time. Built for productivity and seamless transcription, Vext allows users to effortlessly capture speech and turn it into text for notes, meetings, content creation, and everyday workflows.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors