Skip to content
DylanBricarPublic
forked from Melvynx/Parler

About

A free, open-source and privacy-focused speech-to-text application that runs entirely offline. This fork actively maintains the project by integrating pending pull requests, fixing issues, and improving cross-platform support including Windows.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

 
 

Latest commit

 

History

1,104 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Phonara

A free, open-source, cross-platform speech-to-text desktop application that works completely offline.

Press a shortcut, speak, and your words appear in any text field. Everything runs locally on your machine without sending any information to the cloud.

How It Works

  1. Press a configurable shortcut: hold it, tap it to toggle, or select a fixed activation mode
  2. Speak while recording is active
  3. Release or tap again and Phonara transcribes your speech
  4. Get transcribed text pasted directly into your active app

Features

  • Multiple models: Whisper (Small/Medium/Turbo/Large), Parakeet V3, Moonshine, SenseVoice, GigaAM
  • Voice Activity Detection with Silero or Earshot (filters silence automatically)
  • GPU acceleration when available (Metal on macOS, Vulkan on Windows/Linux)
  • 24 languages supported in the UI
  • CLI control for automation (--toggle-transcription, --start-hidden, etc.)
  • Cross-platform: macOS (Intel + Apple Silicon), Windows (x64), Linux (x64, ARM64)

What's new in Phonara (vs upstream Parler)

New Features

  • Appearance settings - Theme mode (Light/Dark/System), accent color picker (8 colors + system detection), overlay customization moved to Appearance section
  • Overlay customization - Custom border color, background color, border width, width/height dimensions, distinct state colors (blue=transcribing, purple=processing), high visibility mode
  • Ollama LLM provider - Built-in support for local Ollama (localhost:11434, no API key required)
  • Local file transcription - Transcribe WAV files via file picker with 16kHz resampling (PR #381)
  • OS input language detection - Automatically follows keyboard layout for transcription language (PR #559)
  • LLM template variables - Use $time_local, $date, $language in LLM prompts (PR #704)
  • Text replacements - Exact find/replace rules with case-sensitivity option (PR #455)
  • Custom recordings directory - Choose where recordings are saved (PR #874)
  • Custom audio feedback sounds - Use your own WAV/MP3/OGG/FLAC files (PR #768)
  • Post-transcription hook - Run a script after transcription, receiving text via stdin (PR #930)
  • Symmetric audio bars - Mirrored audio visualization with 13 bars, 150-2500Hz range (PR #552)
  • Whisper initial prompt - Set a prompt to guide Whisper's transcription (Issue #199)
  • Windows microphone permission - Onboarding step for mic permission on Windows (PR #991)
  • Long audio chunking - Audio >28s is automatically split at silence boundaries with 0.5s overlap to prevent Whisper hallucinations
  • Hallucination filtering - Detects and removes punctuation-only output, repeated characters (!!!!!), spaced repetitions (! ! ! !), and stutter artifacts
  • Consistent language detection - First chunk language is forced for remaining chunks to prevent Whisper auto-detection errors
  • Flexible shortcut activation - Auto push-to-talk/toggle detection plus explicit hold-only and toggle-only modes
  • Audio channel selection - Select a channel on multi-channel microphones instead of always averaging inputs
  • Expanded model support - Current Parakeet GGUF, Moonshine streaming, translation-aware filters, and hardened mirror downloads
  • Secure Input diagnostics - macOS shortcut coverage is detected and explained when Secure Input blocks ordinary key events

Bug Fixes

  • Cancel deadlock - Cancel during recording no longer freezes the app (moved blocking work off main thread)
  • Escape crash - Rapid Escape key spam no longer crashes the app (CANCEL_SUPPRESSED atomic flag + catch_unwind)
  • Subsequent recordings - Fixed resampler state leak between recordings causing audio misalignment (Issue #828)
  • Whisper medium crash - Changed panic="abort" to panic="unwind" so larger models don't crash the app (Issue #870)
  • No microphone crash - Graceful fallback when no mic is connected (PR #477)
  • Bluetooth mic latency - Lazy stream close keeps mic open for 30s, eliminating BT activation delay (PR #747)
  • Clipboard image preservation - Images in clipboard are preserved during paste-via-clipboard (Issue #921)
  • Clipboard race condition - Write-verify-retry with delays for reliable clipboard access (Issue #502)
  • Overlay focus steal - Overlay no longer steals focus on Windows (Issue #315)
  • DPI scaling - Overlay uses logical coordinates for correct sizing at 150%+ DPI (Issue #263)
  • Corrupt model downloads - Stale/partial downloads are detected and re-downloaded automatically (Issue #858)
  • Admin window freeze - Windows SendInput replaces enigo for input simulation (Issue #434)
  • Volume slider precision - 1% step instead of 10% (PR #944)
  • Double-click tray - Opens main window (PR #369)
  • Recording tail preservation - Samples captured while a recording stops are no longer discarded
  • Microphone priorities - Remembers an ordered list of microphones, uses the first available one, and keeps disconnected favorites for their return
  • Reliable paste - Platform-specific transactions preserve clipboard content and clear stuck modifiers
  • Shortcut parity - Toggle presses arriving during transcription are queued instead of being lost
  • Private release logs - Production logs no longer contain transcription text

Infrastructure & Security

  • Log redaction - API keys are stripped from settings debug logs (transcription + post-processing keys)
  • XSS fix - Removed dangerouslySetInnerHTML in PostProcessingSettings
  • Clipboard hardening - Sanitized dotool stdin input to prevent injection
  • CI improvements - Separated signed/unsigned builds, Node.js 24 compatibility, proper Vulkan SDK setup
  • Cross-platform build scripts - scripts/build.sh and scripts/dev.sh with dependency checks
  • Custom LLM base URL - PHONARA_CUSTOM_LLM_BASE_URL env var for local LLM services (PR #633)

Installation

Download the latest release from the releases page, install, and launch.

Build from Source

Prerequisites

  • Rust (latest stable)
  • Bun
  • CMake
  • Windows only: LLVM 18.1.8 (LIBCLANG_PATH="C:/Program Files/LLVM/bin"), Vulkan SDK (VULKAN_SDK env var)
  • Linux only: libasound2-dev, libwebkit2gtk-4.1-dev, libgtk-3-dev, libgtk-layer-shell-dev, Vulkan SDK

Quick Build (recommended)

Use the provided scripts that handle dependency checks, VAD model download, and build:

# Production build (artifacts copied to target/)
./scripts/build.sh

# Development mode (hot reload)
./scripts/dev.sh

Manual Build

# Install dependencies
bun install

# Download VAD model (required)
mkdir -p src-tauri/resources/models
curl -o src-tauri/resources/models/silero_vad_v4.onnx https://blob.handy.computer/silero_vad_v4.onnx

# Development
bun run tauri dev

# Production build
bun run tauri build

Microphone preferences

In the general settings, add your microphones in order of preference. Move a microphone up or down to change its priority, or remove it from the list. An empty list follows the system default. If none of your favorites is available or can be opened, Phonara tries the system default without forgetting your preferences.

Disconnected microphones remain in the list. Phonara checks for device changes in the background and before each dictation. Connecting a higher-priority microphone changes the next dictation; it does not interrupt one already in progress. The settings show both the active microphone and the next choice. If the active microphone disconnects, Phonara ends that dictation, sends the audio already captured for transcription, and displays an interruption message.

Device availability normally comes from the operating system. On Windows, Phonara also checks the radio connection of the Corsair Virtuoso XT wireless receiver. If the receiver responds but the headset repeatedly does not, Phonara uses the next microphone after a few seconds. It detects the headset again when it reconnects, including after sleep or a switch to USB mode without a cable. This check does not need iCUE or record audio. Other wireless receivers may still appear available while their headsets are off. Silence alone does not cause Phonara to switch microphones.

Linux Notes

For text input, install the appropriate tool for your display server:

Display Server Tool Install
X11 xdotool sudo apt install xdotool
Wayland wtype sudo apt install wtype
Both dotool sudo apt install dotool

The recording overlay is disabled by default on Linux. Runtime dependency libgtk-layer-shell.so.0 may need to be installed separately.

Overlay & pasting (Linux/X11): the recording overlay window can interfere with pasting transcribed text into the target application. If you hit this, set Overlay Position to None in Settings → Appearance to disable the overlay, and enable Audio Feedback if you still want audible confirmation of the recording state. Users upgrading from an older version or importing settings from another platform may need to apply this manually.

Origins & Credits

Phonara is a maintained fork that combines work from two upstream projects:

  • cjpais/Handy by CJ Pais - The original speech-to-text application built with Tauri and Whisper. Provided the core architecture, audio pipeline, VAD integration, and model management system.
  • Melvynx/Parler by Melvynx - A fork of Handy that added UI improvements, settings refactoring, and additional features.

Phonara builds on both projects by actively integrating pending pull requests, fixing open issues, and adding full Windows support.

Last Reviewed Upstream Commits

Source Reviewed Through
cjpais/Handy 5a9451e7
Melvynx/Parler 1aaa38b6

The 2026-10-21 upstream review records all 62 newer Handy commits and the refreshed inventory of 105 open pull requests. Compatible reliability fixes are integrated selectively. The C++ engine now runs in a supervised worker with transcribe-cpp 0.4.0, while the existing ONNX engines and model identities remain available. Four new ASR packages extend the bundled catalogue. The review records the remaining differences and validation limits.

How to Contribute

  1. Check existing issues at github.com/cjpais/Handy/issues
  2. Fork the repository and create a feature branch
  3. Test thoroughly on your target platform
  4. Submit a pull request with clear description of changes
  5. Join the discussion - reach out at contact@handy.computer

The goal is to create both a useful tool and a foundation for others to build upon—a well-patterned, simple codebase that serves the community.

Sponsors

We're grateful for the support of our sponsors who help make Phonara possible:

Wordcab        Epicenter        Bolt AI

Related Projects

  • Handy CLI - The original Python command-line version
  • handy.computer - Project website with demos and documentation

License

MIT License - see LICENSE for details.

Handy is open-source software, but the Handy name, logo, icon, and brand assets are not open-source. Unofficial forks, rewrites, and redistributions must use their own branding and must not imply endorsement or affiliation.

Acknowledgments

  • Whisper by OpenAI for the speech recognition model
  • ggml and transcribe.cpp for amazing cross-platform speech-to-text inference/acceleration
  • Silero for great lightweight VAD
  • Tauri team for the excellent Rust-based app framework
  • Community contributors helping make Phonara and its upstream projects better

About

A free, open-source and privacy-focused speech-to-text application that runs entirely offline. This fork actively maintains the project by integrating pending pull requests, fixing issues, and improving cross-platform support including Windows.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages