Skip to content
MaxITServicePublic
forked from cjpais/Handy

About

A free, open source, and extensible speech-to-text application that allows you to speak to any text field. Additionally, connect ChatGPT (and others) easily to your workflow and instantly send messages and screenshots to it as well as use API for voice transcription. A fork of Handy.

Resources

Stars

58 stars

Watchers

3 watching

Forks

Β 
Β 

Latest commit

Β 

History

2,187 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AivoRelay

Branch tags: #branch/main #branch/release-microsoft-store

Hits

large_logo AI Voice Relay

AivoRelay Main Window

πŸŽ™οΈ AI-powered voice-to-text with smart integrations for Windows
A fork of cjpais/Handy with additional features

πŸ“₯ Download AivoRelay β€” Get the latest release!

πŸ›’ Microsoft Store Version β€” This is an official listing on the Microsoft Store. Note that the Store version is not updated as frequently as the desktop application available here on GitHub, but it does not require administrator rights to install, is signed by Microsoft, and is verified by Microsoft before releasing. It is currently outdated by few months, but will be worked on later.

✨ Key Features

Place cursor anywhere, press hotkey, speak, and watch your text appear in place!

Of course, basic speech-to-text, all that upstream can do. Lots of models: cloud, local, languages auto pick up, etc. If you use local speech-to-text models, then app is local and free. No data goes outside. If you use any cloud models, data goes outside. Then after speech-to-text model produced text, it can be processed by LLM model (this is handled via API to the server of your choice). And also there are some other processings that can be made, like replacing any text by regular expression or some minor form of post processing. Then there are some additional features that you might want to use or not: like relaying your text to the ChatGPT, running commands, making text out of audio files, recording computer audio as text and so on. The app is complex but capable and you can make it simpler by not using some features.

🎚️ Transcription Profiles

Quick-switch between language, prompt, and LLM post-processing presets with dedicated shortcuts: switch the currently active profile or assign each profile its own hotkey!

What Are Profiles?

Profiles let you create different transcription configurations and switch between them instantly. Perfect for:

  • Multilingual users β€” Switch between English, Russian, Finnish, etc.
  • Different use cases β€” One profile for dictation, another for code comments
  • Application-aware workflows β€” Automatically use a profile when the main Transcribe shortcut is pressed in a matching executable, window title, or install path
  • Translation workflows β€” Speak in one language, output in another + auto switch language with Windows language!
  • Everything you can imagine! β€” Seriously, you can invent so many uses!

Profile Settings

Profile Settings

Enable Different applications to use different profiles under your profiles list to attach automatic application rules (such as code.exe, title:Microsoft Teams, or path:*\Microsoft Office\*) to each custom profile. When disabled, this feature runs with zero background overhead (lazy loading). When enabled, you can also display a sleek chip with the detected application directly in the recording overlay. Rules are evaluated only when the main Transcribe shortcut starts; an explicit per-profile shortcut always keeps its assigned profile, and an unmatched application keeps your manually active profile.

LLM Post-Processing Override

Each profile can override the global LLM post-processing settings:

  • Enable/Disable β€” Turn LLM processing on/off per profile
  • Custom Prompt β€” Use a different prompt than the global one
  • Custom Model β€” Use a different LLM model per profile

Example: Create a "Finnish Translation" profile that takes any language input and outputs Finnish text via LLM.

The ${output} Variable

When writing LLM prompts, use ${output} as a placeholder for the transcribed text:

Translate this to Finnish: ${output}

How it works:

  1. You speak β†’ "Hello, how are you?"
  2. STT transcribes β†’ "Hello, how are you?"
  3. ${output} is replaced β†’ "Translate this to Finnish: Hello, how are you?"
  4. LLM processes β†’ "Hei, mitΓ€ kuuluu?"

Shortcuts

Assign key combinations to the following actions:

Shortcut Action
Main Transcribe Use an automatic application match, or fall back to the active profile
Cycle Profile Switch to the next active profile in cycle
Per-Profile Shortcuts Each profile can have its own dedicated shortcut if you don't want to cycle profiles but use all at once

Default Profile

The "Default Profile" uses your global settings (Speech / Mic). It cannot be deleted but can be customized or set as active.

Setup: Transcription Profiles

πŸ”Š Text to Speech (App can also do that!)

Read text aloud or turn complete documents into narrated MP3, Opus, or WAV files. AivoRelay can speak clipboard or selected text in most Windows applications and convert .txt and .md documents to audio with cloud, Windows, or optional local voices. Cloud services receive the supplied text and set their own pricing; Windows voices and local models keep synthesis on the device.

You do not need to understand every setting to begin. AivoRelay includes ready-made presets for every TTS provider and automatically opens the recommended preset the first time you select a provider on each TTS page.

The collapsed voice gallery on both TTS pages includes locally playable Opus samples with their provider, model, voice, and synthesis settings. Applying a card restores those exact voice settings without changing the selected output format or spending API credits on the preview.

Speak selected text

  1. Open Speak selected text in the sidebar.
  2. Choose a provider. Its recommended preset is loaded automatically the first time; you can select a different preset later.
  3. Add an API key if the selected cloud provider requires one. Windows voices and the unofficial Microsoft Read Aloud integration do not require a key; local models keep synthesis on the device after installation.
  4. Assign a keyboard shortcut under Actions. Other settings can stay at their defaults.
  5. Select text in a supported application and press the shortcut to hear it.

Text file to MP3, Opus, or WAV

Open Text file to mp3 in the sidebar to convert one or more .txt or .md documents, scan folders with optional subfolders, or automate a watched folder. Long documents are split at natural boundaries, and interrupted jobs can resume from saved progress. Optional AI cleanup may send text to the configured LLM and incur provider costs. Existing outputs are never overwritten.

Available choices include Soniox, Deepgram, OpenAI, OpenAI-compatible custom servers, Murf AI (Falcon 2 and Gen2), ElevenLabs (Eleven v3 and Multilingual v2), Cartesia Sonic 3.5, Windows installed voices, the unofficial Microsoft Read Aloud integration, and optional local Qwen or Kokoro models. File conversion and interactive speech keep separate active settings while sharing saved presets.

πŸ“Ί Live Preview (only if you want it)

See your transcription in real-time in a separate, customizable, always-on-top window.

  • Real-time stream β€” View final and interim results as you speak.
  • Customizable β€” Adjust opacity, colors, theme, and positioning.
  • Smart Positioning β€” Can follow your mouse cursor or stay in a fixed corner.
  • Hotkey Controls β€” Assign shortcuts to toggle visibility or trigger actions.

Setup: User Interface β†’ Live Preview Live Preview

πŸ”΄ Soniox Live Transcription

Real-time speech-to-text streaming β€” see your words appear as you speak!

Soniox Live Transcription

  • Live streaming β€” Words appear instantly during speech
  • Language hints β€” Guide recognition with expected languages

Setup: Models

🌐 Deepgram Support for live transcription

Use Deepgram for fast cloud transcription, including live speech-to-text.

  • Regular or live use β€” Works for standard recording and live transcription
  • Flexible tuning β€” Adjust settings for speed and accuracy
  • Speaker diarization β€” Can label different speakers in audio file transcription

Setup: Models

πŸ€– AI Replace Selection

Voice-controlled text editing β€” select text, speak instruction, get AI-transformed result.

  • Select code β†’ say "add error handling" β†’ improved code replaces selection
  • Select paragraph β†’ say "make it shorter" β†’ condensed version
  • Empty field + "no selection" mode β†’ say "write a greeting email" β†’ generated text
  • Works in any Windows application

AI Replace

In the demonstration above, first I ask to solve the mathematical task, and then to translate text to Finnish.

Setup: AI Replace

πŸŽ™οΈ Automatic Preferred Microphone Selection

If you frequently connect different headsets, USB microphones, or docking stations, you can give one preferred microphone priority whenever it is available. This is also useful with Windows Remote Desktop, where your redirected microphone may appear under a different nameβ€”often Remote Audioβ€”instead of the microphone you normally use.

AivoRelay checks the available input devices before every recording, automatically switches to the matching preferred microphone while it is present, and falls back to your last manually selected microphone when it disappears.

Set a case-insensitive microphone name mask such as Remote Audio (wildcards * and ? are also supported). The check runs only when recording starts, with no background device polling.

Automatic Microphone Selection

Setup: Audio Processing β†’ Automatic Microphone Selection

πŸ“€ Send to ChatGPT / Claude (Browser Connector)

Voice-to-AI bridge via the AivoRelay Connector browser extension β€” post your voice transcriptions, selected text, and screenshots directly into web AI chats (ChatGPT, Claude, Perplexity, Gemini, Grok, etc.) without manual copy-pasting.

  • Easy app-driven setup β€” AivoRelay can unpack/export the extension right from the app.
  • Generated password β€” The app creates and manages the connector password for you automatically.
  • CORS-ready local bridge β€” Built-in local web server connects securely on http://127.0.0.1:38243 (configurable port).
  • Built-in screenshots β€” Native screen region capture overlay (no external tools required) or optional tools like ShareX.

How it works

Mode Input What AI chat receives
Voice only Speak your question Your transcribed question
Voice + Selection Speak + selected text Question with context
Voice + Screenshot Speak + screen capture Question with image

Examples:

  • Say "what is recursion" β†’ AI chat gets your question
  • Select error log, say "why is this failing" β†’ AI chat gets question + the log
  • Capture chart, say "explain this" β†’ AI chat gets question + screenshot

Extension Setup

  1. Open Browser Connector in settings β€” enable the connector and export the bundled extension (a secure password is generated automatically).
  2. Install / load the AivoRelay Connector extension in Chrome, Edge, Brave, or other Chromium browsers (via chrome://extensions β†’ Developer mode β†’ Load unpacked).
  3. Open ChatGPT, Claude, Perplexity, or another supported AI chat in a browser tab.
  4. Click the extension icon in your browser toolbar β†’ "Bind to this tab" (connects to http://127.0.0.1:38243).
  5. Configure your desired shortcut keys under Actions to send voice, selections, or screenshots directly into the active tab!

Setup: Browser Connector

πŸ“Ί Live Monitor

Capture live audio from your computer speakers (loopback), microphone, or both to stream a real-time transcript right inside AivoRelay without typing into other apps. Supports speaker diarization with compatible cloud providers (Gemini Live, Soniox, Deepgram).

Live Monitor

Setup: Live Monitor

πŸ“ Transcribe Audio Files (with diarization for supporting API providers)

Drag and drop audio files to get a transcript.

  • Supports WAV, MP3, OGG, M4A, FLAC, WebM
  • Outputs Text, SRT (Subtitles), or VTT
  • Uses your local or cloud models (including Gemini, Soniox, Deepgram)
  • Deepgram can label different speakers in multi-speaker recordings

Setup: Transcribe File

✏️ Text Replacement

Automatically fix transcription errors and apply formatting rules.

Feature Description
Find & Replace Simple text substitution with special character support (\n, \t)
Case Insensitive Toggle to match "Hello" and "hello" as the same
Regular Expressions Advanced pattern matching with capture group support ($1, $2)

Examples:

  • Fix typos: teh β†’ the
  • Remove repeated words: \b(\w+)\s+\1\b β†’ $1 (regex)
  • Add paragraph breaks: .\n β†’ .\n\n

Applied after LLM post-processing, so you get the final word on the output!

Setup: Text Replacement

πŸ”  Custom Words (Fuzzy Matching)

Automatically recombine and fix complex terms split by speech-to-text (e.g., "Chat G P T" β†’ "ChatGPT") using fuzzy n-gram matching.

Setup: Text Replacement β†’ Custom Words

🧹 Audio Clean-Up & Smart Prompts

Automatically filter out filler words and stutters from transcriptions. Enhance LLM templates with dynamic context variables like ${current_app} and ${time_local}!

πŸ”  Smart Decapitalize After Edit

Avoid unwanted capitalization when continuing a sentence after a manual correction.

Smart Decapitalize

AivoRelay passively monitors your "edit" key (default: Backspace). If you press it to correct a transcription and then resume speaking, the next inserted text chunk will automatically start with a lowercase letter. This prevents the system from starting a new "sentence" with a capital letter when you are actually in the middle of a sentence.

  • Non-Blocking β€” Uses a passive listener, so your edit keys work exactly as usual.
  • One-Shot Trigger β€” The logic fires only once after a correction and then resets.
  • Configurable Timeout β€” Set how long the "resume" window remains active after your edit.
  • Real-time Support β€” Works seamlessly with Soniox Live transcription and standard modes.

Setup: Text Replacement β†’ Decapitalize After Manual Edit

☁️ Cloud STT Option

Use Gemini 3.5 Transcribe, Gemini Live (via Google Direct or Vercel), Soniox, Deepgram, Groq, or other OpenAI-compatible APIs β€” or keep using local Whisper. Your choice!

  • Fast cloud streaming with Gemini Live, Soniox, and Deepgram
  • No GPU? Use fast cloud APIs
  • Have a powerful GPU? Run locally for privacy
  • Switch between providers anytime

Setup: Models


πŸ—£οΈ Voice Command Center (Dangerous! Do not use)

Execute PowerShell scripts with your voice. Pre-write scripts... or make LLM write them on the fly (confirmation dialog window appears, you can cancel)

  • Say "lock computer" β†’ Locks Windows
  • Say "open notepad" β†’ Opens Notepad
  • Somewhat safe: Always shows confirmation before running
  • Smart: If no command matches, use AI to generate a script on the fly (e.g., "open Chrome and go to YouTube")

Setup: Voice Commands

πŸš€ Quick Start

  1. Download from Releases
  2. Install and run AivoRelay
  3. Press Ctrl+F8 β€” hold to record, release to transcribe!

πŸ“‹ Platform Notes

This extension has only been built and tested for Windows. If you need other platforms, Handy can do it but without additional features.

πŸ”§ Original Features of upstream app "Handy"

All original Handy features remain available:

  • Local Whisper transcription with multiple model sizes
  • Voice Activity Detection (VAD)
  • Global keyboard shortcuts (two engines: Tauri for performance, rdev for CapsLock/NumLock support β€” see Debug settings)
  • Push-to-talk mode
  • LLM post-processing
  • Transcription history

πŸ“„ License

MIT License β€” NO WARRANTIES.

Bundled and optional runtime components are listed in Third-Party Licenses.


My other projects:


πŸŽ™οΈ Recording Control CLI

With AivoRelay already running, invoke the same executable to control dictation without opening or focusing its settings window:

AivoRelay.exe recording start
AivoRelay.exe recording start --post-process
AivoRelay.exe recording stop
AivoRelay.exe recording toggle
AivoRelay.exe recording toggle --post-process
AivoRelay.exe recording cancel
AivoRelay.exe transcript clipboard
AivoRelay.exe transcript paste
AivoRelay.exe transcript paste --method ctrl_shift_v

Repeated start and stop are safe: starting while recording and stopping while idle do nothing. Start uses the manually selected transcription profile; stop preserves the active recording's profile, settings, and output mode, including recordings started by a profile shortcut. Start/stop/toggle do nothing while processing or while microphone startup/cleanup is in progress. Cancel uses the app's existing operation cancellation behavior.

Transcript commands use the latest completed dictation retained in History, prefer its post-processed text, and skip empty results. Paste uses the saved clipboard and auto-submit settings. --method overrides only that invocation; supported methods are ctrl_v, ctrl_shift_v, shift_insert, direct, and none (hyphenated spellings are also accepted).

The existing --toggle-transcription, --toggle-post-process, and --cancel flags remain available. Commands are sent through the existing single-instance transport; the caller exits after delivery, without a transcription result or execution acknowledgement. Structured recording/transcript commands do not support --json. Launch AivoRelay normally before using them; a command sent when no instance is running only launches the app.

⌨️ File Conversion CLI

AivoRelay exposes the same two app-managed file workflows in the current terminal:

Provider credentials and detailed conversion behavior remain configured in the matching app settings pages.

About

A free, open source, and extensible speech-to-text application that allows you to speak to any text field. Additionally, connect ChatGPT (and others) easily to your workflow and instantly send messages and screenshots to it as well as use API for voice transcription. A fork of Handy.

Resources

Stars

58 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages