Skip to content

strangeloopcanon/talk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

talk

macOS only (Apple Silicon recommended). Requires Python 3.11+.

Local-first dictation for macOS. Press a hotkey, talk, text appears at your cursor.

  • Parakeet local transcription by default (zero API cost on Apple Silicon).
  • OpenAI gpt-4o-transcribe fallback with one env switch.
  • Automatic paste at cursor (clipboard-safe restore).

Install

pip install talktype

That's it. On first run, Parakeet model weights (~1.2 GB) download automatically.

Alternative: from source

git clone https://github.com/strangeloopcanon/talk.git
cd talk
./scripts/install_macos.sh
./scripts/doctor_macos.sh
./scripts/run_macos.sh

Packaging (macOS app bundle)

To build/notarize your own macOS bundle:

export TALK_APP_NAME="Talk"             # optional
export TALK_CODE_SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)"
export TALK_NOTARY_KEYCHAIN_PROFILE="your-notary-profile"
export TALK_BUNDLE_ID="com.yourname.talk"   # required (example)
export NOTARY_TIMEOUT="2h"                  # optional

./scripts/build_dmg.sh

TALK_CODE_SIGN_IDENTITY, TALK_NOTARY_KEYCHAIN_PROFILE, and TALK_BUNDLE_ID are required for signing/notarization. TALK_APP_NAME defaults to Talk.

Usage

talk run
  • Press Ctrl+Shift+D to start recording.
  • Press Ctrl+Shift+D again to stop, transcribe, and paste.
  • Press Ctrl+Shift+Q to quit.

Preflight checks

talk doctor

File transcription

talk transcribe-file /path/to/sample.wav

macOS permissions

You must grant Talk (or your terminal app, if using the CLI):

  • Microphone -- for audio recording
  • Accessibility -- for paste keystroke automation
  • Input Monitoring -- for global hotkeys

Go to System Settings > Privacy & Security and enable Talk.app in each section.

If paste fails but transcription works, Accessibility permission is usually the issue.

After rebuilding Talk.app, macOS invalidates the old permissions because the binary changes. You must remove and re-add Talk.app in both Input Monitoring and Accessibility.

Configuration

Works out of the box with zero configuration. To customize, create ~/.config/talk/.env:

mkdir -p ~/.config/talk

Key options (all have sensible defaults):

Variable Default Notes
DICTATE_BACKEND parakeet parakeet (local) or openai (cloud)
DICTATE_HOTKEY <ctrl>+<shift>+d Toggle recording
DICTATE_QUIT_HOTKEY <ctrl>+<shift>+q Quit the app
DICTATE_AUTOPASTE true Paste transcription at cursor
PARAKEET_MODEL mlx-community/parakeet-tdt-0.6b-v3 Local model
OPENAI_API_KEY (empty) Required if backend=openai

See .env.example for the full list.

Switching backend

# In ~/.config/talk/.env or as env vars:
DICTATE_BACKEND=openai
OPENAI_API_KEY=sk-...

Cleanup

Parakeet model weights are cached in ~/.cache/huggingface/hub/. To reclaim disk space:

rm -rf ~/.cache/huggingface/hub/models--mlx-community--parakeet-tdt-0.6b-v3

About

Local-first dictation tool for macOS — Parakeet MLX + OpenAI fallback

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors