I didnt want to pay for superwhisper, so just asked claude to create me my own version
A macOS menu bar app for speech-to-text transcription using WhisperKit. Record audio with a global hotkey and automatically paste transcribed text anywhere.
- Menu bar app - Lives in your menu bar, not in the Dock
- Global hotkey - Press
Option+Spaceto start/stop recording from anywhere - Local transcription - Uses WhisperKit for completely offline, private transcription
- Auto-paste - Transcribed text is automatically pasted at your cursor (and kept in clipboard as backup)
- Multiple models - Choose between tiny (fast), base (balanced), or small (accurate)
- Multi-language - Supports English, Ukrainian, Spanish, French, German, Italian, Portuguese, Chinese, Japanese, Korean
- Microphone selection - Choose which input device to use (built-in mic, AirPods, external mic)
- Visual feedback - Animated overlay shows recording status with audio level visualization
- Cancel recording - Click the X button on the overlay to cancel without transcribing
- Speech statistics - Track your speaking speed, total recordings, and words transcribed
- macOS 13.0 or later
- Apple Silicon (M1/M2/M3) or Intel Mac
- Clone and build:
git clone https://github.com/ronskulia/whisper.git
cd whisper/WhisperType
xcodebuild -scheme WhisperType -configuration Release build- Copy to Applications:
cp -r ~/Library/Developer/Xcode/DerivedData/WhisperType-*/Build/Products/Release/WhisperType.app /Applications/- Launch:
open /Applications/WhisperType.app- Clone the repository:
git clone https://github.com/ronskulia/whisper.git
cd whisper/WhisperType
open WhisperType.xcodeproj-
Build the app: Press
Cmd+B(first build takes 2-3 minutes to download dependencies) -
Install to Applications:
- Go to Product → Show Build Folder in Finder
- Navigate to
Products/Release/ - Drag
WhisperType.appto your/Applicationsfolder
On first run, WhisperType will:
- Request Microphone permission (required for recording)
- Request Accessibility permission (required for global hotkeys and pasting text)
- Download the Whisper model (~39MB for tiny model)
- Press
Option+Spaceto start recording (overlay appears at top of screen) - Speak clearly into your microphone (waves animate based on your voice)
- Press
Option+Spaceagain to stop recording (or click the X to cancel) - Wait a moment while the audio is transcribed ("Processing..." appears)
- The transcribed text is automatically pasted at your cursor
- If no cursor is active, text stays in clipboard - just press
Cmd+Vto paste anywhere
Click the menu bar icon → Settings to access two tabs:
Settings Tab:
- Change Whisper model (tiny/base/small)
- Change transcription language
- Select microphone input device
- View permission status (Microphone & Accessibility)
Stats Tab:
- View average speaking speed (words per minute)
- See total recordings count
- Track total words transcribed
- Check total recording time
WhisperType/
├── App/
│ ├── WhisperTypeApp.swift # App entry point
│ └── AppDelegate.swift # App lifecycle, wires controllers
├── Controllers/
│ ├── MenuBarController.swift # Menu bar UI
│ └── RecordingController.swift # Orchestrates recording → transcription → paste
├── Services/
│ ├── AudioRecorder.swift # AVAudioEngine recording
│ ├── WhisperEngine.swift # WhisperKit integration
│ ├── HotkeyManager.swift # Global hotkey registration
│ └── TextInserter.swift # CGEvent-based paste simulation
├── Views/
│ ├── OverlayWindow.swift # Floating recording indicator
│ ├── OverlayView.swift # SwiftUI recording animation
│ └── SettingsView.swift # Settings UI
└── Models/
├── RecordingState.swift # State machine for recording
└── Settings.swift # User preferences
- WhisperKit - https://github.com/argmaxinc/whisperkit (automatically downloaded by Xcode)
- HotKey - https://github.com/soffes/HotKey (for global hotkeys)
- Uses WhisperKit's
AudioProcessorfor 16kHz mono audio recording - Transcribes using WhisperKit's Swift API
- Pastes text using CGEvent keyboard simulation
- Preserves clipboard contents before/after paste
- Menu bar app (LSUIElement=true, no dock icon)
See LICENSE file for details.
- Go to System Settings → Privacy & Security → Accessibility
- Ensure WhisperType is enabled
- Same as above - Accessibility permission is required for paste simulation
- Speak for at least 1 second
- Check microphone input level in System Settings
- Try speaking louder or closer to the microphone
- Check internet connection
- Model files are cached in WhisperKit's default location
- Restart the app to retry download