Stop typing to ChatGPT and Claude. Start talking. SayToggle transforms your workflow with private voice input optimized for Apple Silicon — 2–4× faster than typing. Built for macOS with a global hotkey (⌥⌘C) and stunning vaporwave aesthetics.
- Built for AI Workflows
- 2-4x Faster than Typing
- Privacy‑first (100% Local)
- Apple Silicon (M1+)
Requirements: Apple Silicon (M1+), macOS 14+.
The AI Workflow Revolution
1
Think
Formulate your question or prompt
→
2
Spacebar or ⌥⌘C
In‑app toggle (Spacebar) or global hotkey
→
3
Speak
150-200 WPM voice input
→
4
Auto-paste
Instant clipboard to anywhere
→
5
Continue
Seamless AI conversation
Result: 2-4x faster AI interaction with beautiful, private processing
Transform Your AI Productivity
🤖 Built for AI Workflows
Designed from day one for ChatGPT, Claude, and AI conversations. Automatic clipboard copying, global hotkey (⌥⌘C), and multi-transcript concatenation for complex prompts.
⚡ 2-4x Faster Than Typing
Voice input at 150-200 WPM vs typical typing at 40-60 WPM. Saves 2+ hours per week for heavy AI users. ROI pays for itself in the first month.
🎨 Functional Art
The world's most beautiful speech-to-text app. Stunning vaporwave aesthetics with 8 gorgeous backgrounds and animated cellular automata. Daily tools should spark joy.
🔥 Seamless AI Integration
⌥⌘C from anywhere → Speak → Auto-paste to ChatGPT/Claude. No interruption to your flow state. Works in any app, no permissions needed.
🔒 Complete Privacy
Your voice never leaves your Mac. 100% local processing with Whisper.cpp and Metal acceleration. No cloud dependencies, no data collection, no subscriptions.
💬 Multi-Prompt Building
Select multiple transcript entries and automatically concatenate them for complex AI prompts. Perfect for building detailed instructions across multiple voice inputs.
⚡ Lightning Performance
15x faster than real-time on Apple Silicon. Sub-second transcription for instant AI input. 240+ chars/sec throughput means no waiting.
🛠️ Power User Features
Professional CLI, model management, benchmarking tools, and scriptable automation. Built by an AI user, for AI users who appreciate both beauty and power.
💎 Premium Experience
One-time purchase, no subscriptions. Professional aesthetics for work environments. The cost of 1.5 ChatGPT Plus months, but lifetime value.
Command Line Interface
$
saytoggle
╔═══════════════════════════════════════════════════════════╗
║ SayToggle — Whisper.cpp on Apple Silicon — Version 1.0.1 ║
╚═══════════════════════════════════════════════════════════╝
Hardware: GPU: Apple M1 Pro (Metal) | CPU: Apple M1 Pro (10 cores, arm64)
Input: :0 Model: small.en
Gain: +6 dB Rate: 16000 Hz mono
Press ENTER to START recording, then ENTER again to stop…
Recording… (press ENTER to stop)
Recording stopped.
✓ Copied transcript to clipboard.
┌─ Transcript ──────────────────────────────────────────────────────────────┐
│ Hello, this is a demonstration of SayToggle AI speech-to-text │
│ transcription running locally on my Mac with Metal acceleration. │
└──────────────────────────────────────────────────────────────────────────┘
$
saytoggle record -d 5
╔═══════════════════════════════════════════════════════════╗
║ SayToggle — Whisper.cpp on Apple Silicon — Version 1.0.1 ║
╚═══════════════════════════════════════════════════════════╝
Hardware: GPU: Apple M1 Pro (Metal) | CPU: Apple M1 Pro (10 cores, arm64)
Input: :0 Model: small.en
Gain: +6 dB Rate: 16000 Hz mono
Recording for 5 seconds...
Recording complete.
✓ Copied transcript to clipboard.
┌─ Transcript ──────────────────────────────────────────────────────────────┐
│ This is a timed recording that will automatically stop. │
└──────────────────────────────────────────────────────────────────────────┘
saytoggle
Main voice recording with toggle mode. Press ENTER to start/stop recording.
saytoggle validate
Validate environment, audio path, and bundled resources (JSON‑friendly).
saytoggle record -d 10
Record for specific duration (10 seconds) then auto-transcribe.
saytoggle config
Show current configuration: audio device, model, sample rate, gain settings.
saytoggle get-sound-cues
Show sound cue status. Use saytoggle set-sound-cues on|off to change.
saytoggle current-model
Display the currently active Whisper model (clean name for GUI parsing).
saytoggle verify-model --fast
Verify model integrity: file existence, size, magic bytes, fast hash check.
saytoggle bench-model --reps 3
Professional benchmark with beautiful progress bars, detailed metrics, and performance assessment.
saytoggle bench-model --json --quiet
Machine-readable JSON output for GUI consumption with progress events.
saytoggle activate-model medium.en-q5_0
Set active model (single source of truth stored in ~/.saytoggle/active_model.path).
saytoggle get-toggle-key
Display the current toggle key (space or enter).
saytoggle set-toggle-key space
Set the recording toggle to space (or use enter).
saytoggle transcribe-file audio.wav
Transcribe existing WAV file without recording new audio.
Performance Benchmarks
Optimized Performance
- RTF: ~0.07x (small.en on M1 Pro) — Excellent
- Throughput: ~260 chars/sec (small.en on M1 Pro)
- Models: 465MB–1.4GB with quantized options
- Default Model: small.en (465MB) for optimal speed/accuracy balance
- Acceleration: Metal GPU (Apple Silicon) via Whisper.cpp
Professional Benchmarking
GUI: Dedicated Benchmarks tab with visual progress tracking and detailed results
CLI: saytoggle bench-model --reps 3 with beautiful tables and performance assessments
Comprehensive metrics: RTF, throughput, efficiency ratings, with intelligent performance recommendations.
$
saytoggle bench-model --reps 3
Generating 10.0s test audio at 16000Hz...
✓ Generated test audio: /tmp/tmpkcbcby8p.wav
Benchmarking Model: small.en
Model Size: 465.0 MB
Audio Duration: 10.0s
Repetitions: 3 (1 warmup + 2 measured)
Warmup 1: 0.71s
Run 1: 0.70s (RTF: 0.070)
Run 2: 0.69s (RTF: 0.069)
Measured run 2/2 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:02
Benchmark Results: small.en
┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Metric ┃ Value ┃ Description ┃
┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ RTF │ 0.070 │ Real-Time Factor (lower is better) │
│ Throughput │ 216 chars/s │ Estimated character output rate │
│ Decode Time │ 0.70s │ Average processing time (10.0s audio) │
│ Efficiency │ Excellent │ Overall performance rating │
└─────────────┴─────────────┴───────────────────────────────────────┘
Excellent performance! Transcription is much faster than real-time.
Benchmark completed successfully!
Professional Benchmarking: Progress bars, comprehensive metrics, and intelligent performance assessments. Use --json for machine-readable output.
Support & Documentation
📧 Get Help
Have questions or need assistance?
Email: [email protected]
We typically respond within 24 hours.
💚 30-Day Money-Back Guarantee
If SayToggle doesn't work as described on your Mac, we'll refund you. No questions asked.
📚 Common Issues
- Installation: Drag to Applications folder, grant microphone permission when prompted
- Global hotkey: ⌥⌘C works without extra permissions (uses Carbon API)
- "No speech detected": Check System Settings → Sound → Input device
- Updates: We'll email you when new versions are available
Frequently Asked Questions
SayToggle was built specifically for AI users. Voice input (150-200 WPM) is 2-4x faster than typing (40-60 WPM). The ⌥⌘C global hotkey works from any app, auto-copies to clipboard, and integrates seamlessly with ChatGPT, Claude, and other AI tools. Heavy AI users save 2+ hours per week.
Which Macs are supported?Apple Silicon (M1 or newer) required. macOS 14+ for the app (optimized for macOS 15+). Not compatible with Intel-based Macs.
Which model should I use?The default small.en model (included) provides excellent speed/accuracy balance with 260+ chars/sec on M1 Pro. For even larger models, medium.en-q5_0 runs at ~130 chars/sec.
How do I benchmark performance?GUI: Open SayToggle → Benchmarks tab → select model → "Run Benchmark". CLI: saytoggle bench-model --reps 3 for beautiful tables.
Why does the app ask for permissions?Only microphone permission is needed for transcription. The global hotkey (⌥⌘C) works without any additional permissions using Apple's Carbon API.
Where are transcripts saved?Transcripts are automatically copied to clipboard and shown in the GUI history pane. You can multi-select and concatenate entries.
"No speech detected" — how do I fix it?Check System Settings → Sound → Input device. Move closer to microphone. Verify microphone permissions for Terminal/app.
Why is SayToggle better than other speech-to-text apps?SayToggle is the only speech-to-text app designed specifically for AI interaction. While others focus on dictation or note-taking, SayToggle optimizes the entire AI workflow: instant hotkey access (⌥⌘C), automatic clipboard copying, multi-prompt building, and stunning vaporwave aesthetics that make daily AI interaction a joy.
Does it work offline?Yes. All transcription runs locally on your Mac using Whisper.cpp with Metal acceleration. No cloud dependencies, complete privacy. Perfect for sensitive AI conversations.
How do I get SayToggle?Direct: Buy securely with Gumroad for $19 (one-time purchase) and receive an instant download link via email. No subscriptions, no license keys needed, 100% local processing.
What is the license?Personal Use License: One-time $19 purchase grants you the right to use SayToggle. Redistribution or reselling is not permitted. See the in‑app license viewer and LICENSE file for details.
How do I switch models?GUI: Models tab → download/verify → "Activate". CLI: saytoggle activate-model medium.en-q5_0 (stored in ~/.saytoggle/active_model.path)
Can I use languages other than English?English models (.en) are optimized by default for best performance. Broader language support with multilingual models is available but not the primary focus.
How do I report an issue?Include your Mac model/chip (M1/M2/M3/M4), macOS version, selected model, and specific error messages when reporting issues.
What's the difference between GUI and CLI?GUI offers visual model management, history, and animations. CLI provides scriptable access, global aliases, and integration with other tools. Both share the same model configuration.
How does model verification work?Verification checks file existence, size ranges, GGML/GGUF magic bytes, and optionally full SHA256 hash + Whisper.cpp load test for integrity.
What are the visual background options?Choose from 8 beautiful static backgrounds: Starfield (default), Vaporwave Gradient, Crystal Lattice, Neon City, Synthwave Grid, Neon Waves, Neon Hexagons, and Circuit Board. Plus animated Turmite colony cellular automata.
Does the global hotkey really work without permissions?Yes! ⌥⌘C uses Apple's Carbon RegisterEventHotkey API, which works system‑wide without requiring Input Monitoring or Accessibility permissions. It's the same API used by many Mac apps.