Skip to content

davidbingmann/EchoType

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EchoType

EchoType is a macOS menu bar app for fast voice-to-text in any application.

It records from your microphone, sends the audio to Groq (model: whisper-large-v3), and inserts the resulting text at your current cursor position.

What It Does

  • Runs as a menu bar app (no Dock icon).
  • Works in any app you can type into (Mail, Slack, Notes, browsers, IDEs, etc.).
  • Uses a global hotkey:
    • Double-tap Control: start recording (will be translated to English before insert)
    • Triple-tap Control: start recording (transcribe only, no translation)
    • Single-tap Control while recording: stop, process, then insert
  • Plays system sounds for start/stop/error feedback.
  • Prompts for and stores your Groq API key.
  • Guides you through required macOS permissions.

Install

Requirements

  • macOS (tested on Apple Silicon)
  • A Groq API key
  • Internet access (audio is sent to Groq for transcription/translation)

Download & Install (Recommended)

  1. Download the latest EchoType.app.zip from the project’s Releases page.
  2. Double-click to unzip it.
  3. Move EchoType.app into your Applications folder.
  4. Open Applications and launch EchoType.

If macOS Blocks the App (Gatekeeper)

If you see a warning because the app is not signed/notarized:

  1. Try right-click EchoType.app -> Open (this often shows an “Open” button).
  2. Or go to System Settings -> Privacy & Security and click Open Anyway for EchoType.

First-Time Setup

  1. Launch EchoType.
  2. When prompted, paste your Groq API key (the full key is visible, not masked).
  3. Grant permissions when macOS asks (EchoType will remember your choices).

macOS Permissions (Required)

EchoType needs these permissions to work correctly:

  • Microphone: to record your voice
  • Input Monitoring: to detect the Control hotkey globally
  • Accessibility: to insert text into other apps at the cursor

If something doesn’t work, open the tray menu and click Permissions… to jump to the right Settings page. After changing permissions, quit and relaunch EchoType.

How To Use

  1. Click where you want the text to be inserted (place your caret).
  2. Double-tap Control to start recording (English translation mode).
  3. Speak.
  4. Single-tap Control to stop.
  5. EchoType transcribes/translates and inserts the text at your cursor.

Mode Summary

  • Double-tap Control: translate speech to English, then insert
  • Triple-tap Control: transcribe in the original spoken language, then insert

Tray Menu

EchoType includes a menu bar icon with:

  • Status line (Ready/Recording/Processing/Error)
  • Enable/Disable Hotkey
  • Permissions…
  • Set/Update Groq API Key…
  • Quit

Troubleshooting

Hotkey does nothing

  • Ensure Input Monitoring permission is enabled for EchoType.
  • Use tray menu -> Permissions… to open the exact settings page.
  • Quit and relaunch EchoType after granting permissions.

Text does not get inserted

  • Ensure Accessibility permission is enabled for EchoType.
  • Quit and relaunch after granting.

No audio / recording fails

  • Ensure Microphone permission is enabled for EchoType.
  • Ensure your default input device exists and works in macOS Sound settings.

Multiple tray icons / multiple instances

EchoType is single-instance. If you see duplicates, quit all instances and re-open the one in:

  • /Applications/EchoType.app

How It Works Internally

  1. Hotkey detection
    • Uses a CoreGraphics event tap (CGEventTap) to listen for Control key taps globally.
  2. Audio recording
    • Records the default input device via cpal.
    • Encodes audio as mono 16-bit WAV via hound.
  3. Speech-to-text
    • Sends the WAV to Groq’s OpenAI-compatible Whisper endpoints using reqwest.
    • Model: whisper-large-v3
    • Two modes:
      • Transcription: /audio/transcriptions
      • Translation to English: /audio/translations
  4. Text insertion
    • Types the result into the currently focused app using enigo.
    • Waits briefly for mouse/caret activity to settle so the text lands where you just clicked.

Build From Source (Developer Setup)

Prerequisites

  • Rust toolchain (stable)
  • cargo-bundle installed:
cargo install cargo-bundle

Bundle the macOS App

From the project root:

cargo bundle --release

The app bundle will be created at:

target/release/bundle/osx/EchoType.app

Install Locally

# Make sure EchoType is not running (menu bar icon -> Quit) before reinstalling.
rm -rf "/Applications/EchoType.app"
ditto "target/release/bundle/osx/EchoType.app" "/Applications/EchoType.app"
open "/Applications/EchoType.app"

Notes On Privacy

Audio is sent to Groq’s API for transcription/translation. Do not use EchoType for sensitive audio unless you understand and accept that.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors