Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ClaudeVoice

A macOS menu-bar voice input app. Press a trigger key, speak, and text is typed into the focused input field.

Features

  • Native On-Device ASR via qwen3-asr-swift (MLX Swift):
    • Qwen3-ASR 1.7B -- best accuracy on Apple Silicon (default)
    • Qwen3-ASR 0.6B -- faster, lower latency variant
  • Additional Engines (switchable from menu bar):
    • Apple (Streaming) -- built-in, no setup needed
    • Cohere Transcribe -- via remote vLLM server
  • Recording Modes: Hold, Toggle (Enter to send), Auto (silence detection)
  • LLM Refinement (optional): Clean up filler words using local Ollama LLM
  • Languages: Chinese, English, Japanese, Korean, Auto
  • HUD Capsule: Floating waveform animation with real-time transcription preview
  • Streaming: Partial results displayed during recording
  • Unicode Typing: Direct CGEvent text injection (no clipboard)

Requirements

  • macOS 15.0+
  • Apple Silicon (M1/M2/M3/M4)
  • Xcode (for Metal shader compilation)
  • Accessibility permission (for key monitoring)
  • Microphone permission

Quick Start

# Build and install the app
make install

# Run the app
open /Applications/ClaudeVoice15.app

Grant Accessibility and Microphone permissions when prompted.

The app runs as a menu-bar icon (no Dock icon). Click the microphone icon to configure.

Models are downloaded automatically from HuggingFace on first use (~680MB for 0.6B, ~3.2GB for 1.7B).

ASR Engines

Qwen3-ASR (Native) -- Default, Recommended

Runs entirely on-device via MLX Swift. No server, no network, no setup.

  • 1.7B: Best accuracy (default)
  • 0.6B: Lower latency

Switch between models from the menu bar under STT Engine.

Apple (Streaming) -- No setup needed

Built-in macOS speech recognition. Works out of the box.

Cohere Transcribe -- Best overall accuracy

Requires a GPU server with vLLM:

# On a GPU server:
docker run -d --gpus '"device=0"' -p 8000:8000 \
  vllm/vllm-openai:latest \
  --model CohereLabs/cohere-transcribe-03-2026 --port 8000 --host 0.0.0.0

LLM Refinement (Optional)

Removes filler words from transcription using a local LLM via Ollama:

# Install Ollama, then pull a small model:
ollama pull qwen3:1.7b

Enable from menu bar: LLM Refinement (Ollama).

Default Trigger Key

Right Option key. Changeable from menu bar.

Architecture

File Description
AppDelegate.swift Central orchestrator, recording flow, mode handling
AudioEngine.swift AVAudioEngine, RMS calculation, WAV/Float export
NativeASREngine.swift On-device Qwen3-ASR inference via MLX Swift
WhisperClient.swift OpenAI-compatible API client (Cohere)
SpeechRecognizer.swift Apple SFSpeechRecognizer streaming wrapper
LLMRefiner.swift Ollama LLM integration for text cleanup
TextInjector.swift CGEvent Unicode text typing
FnKeyMonitor.swift Global hotkey monitoring via CGEvent tap
MenuBarManager.swift NSStatusItem menu bar UI
CapsulePanel.swift Floating HUD window
WaveformView.swift 5-bar waveform animation
Settings.swift UserDefaults persistence

License

MIT

About

macOS menu-bar voice input with multi-engine ASR (Apple, Whisper, Qwen3-ASR, Cohere)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages