EchoWrite

A magical voice-to-text dictation tool that turns your spoken words into typed text anywhere your cursor blinks—terminals, browsers, IDEs, you name it. Because sometimes your fingers need a break, but your ideas don't.

Type Desktop Developer Tool
Platform Linux (extensible)
Status Production Ready
Tech Python & AI Transcription
View on GitHub
Terminal
# Hold Ctrl+Alt and speak...
$ 
// "Creating a new function to handle user authentication"

// Recorded 3.2s • Transcribing...
function handleUserAuthentication() {
  // TODO: Implement auth logic
}
// Magic! Pasted automatically at your cursor ✨
$ 
          
EchoWrite captures your voice, transcribes with AI, and automatically pastes the result wherever your cursor is—no context switching required.

The Problem (That Needed Solving)

You're deep in the zone, coding in your terminal, when you need to write a detailed commit message. Or you're documenting a complex function, and your fingers are cramping from typing. Maybe you just think faster than you type.

The Typing Bottleneck

Traditional dictation tools force you to context-switch: open an app, click record, copy text, switch back, paste. EchoWrite eliminates all that friction with a single hotkey that works everywhere.

What Makes It Magic

Global Hotkey Recording

Press and hold Ctrl+Alt from anywhere—your IDE, browser, terminal, or even Slack. Release to transcribe. Press Escape mid-recording if you change your mind. It just works.

Lightning-Fast AI Transcription

Leverages Replicate's whisper model that chews through 150 minutes of audio in ~100 seconds. Your 5-second recording transcribes before you can say "whoa, that was fast."

Smart Vocabulary Corrections

Knows that "n8n" isn't nonsense and "Retell" isn't "retail." Custom regex patterns automatically fix technical terms, so your code comments actually make sense.

Seamless Integration

Automatically copies to clipboard and pastes with Ctrl+V at your cursor position. Works universally, no API integrations needed. Your fingers never leave the keyboard.

Plugin Architecture

Extensible status indicators via plugins. Already includes i3status bar integration (for the window manager crew), with hooks for notifications, system tray, or even a web dashboard.

Under the Hood

Built with extensibility in mind, EchoWrite uses clean OOP patterns that make it a joy to hack on and extend.

2,000+ Lines

Of thoughtful Python code, built with proper abstraction layers, error handling, and documentation that doesn't suck.

60+ Tests

Comprehensive test suite with mocking, integration tests, and coverage reporting. Because shipping without tests is like driving blindfolded.

5 Major Modules

Main application, provider system, plugin architecture, status management, and configuration—each with a single responsibility and clear interfaces.

The Good Architecture Stuff

Provider Pattern

Abstract base class for transcription services. Want to swap Replicate for OpenAI Whisper, Google Cloud, or run local models? Just implement the interface. No core code changes needed.

Plugin System

Status indicators use the observer pattern. The StatusManager notifies all registered plugins when state changes. Add desktop notifications, system tray icons, or a web dashboard with minimal effort.

Thread-Safe Recording

Audio capture runs in a separate daemon thread so hotkey detection stays responsive. Chunked recording (100ms chunks) means instant stop when you release the keys.

Where It Shines

Writing Commit Messages

"Fixed the race condition in the user authentication middleware and added proper error handling for edge cases." All without typing a single character.

Documenting Code

Speak naturally: "This function takes three parameters, validates the input, and returns a promise that resolves to either a user object or throws a validation error." Perfect JSDoc comments, every time.

Slack Messages

Respond to that long thread without breaking your typing flow. Just hold the hotkey and ramble your thoughts while your fingers keep coding.

Email Replies

That detailed technical explanation you've been putting off? Speak it out in your terminal, and it's already in your email composer.

The Stack

Python 3.8+ Replicate API SoundDevice SciPy Keyboard Pyperclip PyAutoGUI Pytest Threading

What's Next

The architecture is built for growth. Some ideas I'm playing with:

  • Real-time transcription: Streaming during recording instead of waiting until you release the key
  • Multiple providers: OpenAI Whisper, Google Cloud, Azure Speech, or even local Whisper models
  • Desktop GUI: For those who prefer a visual interface alongside the hotkey workflow
  • Custom commands: "Hey EchoWrite, create a new React component named Header"