kanzo
Self-hosted, sharable kanban for humans and agents. One 4.5 MB binary, 4.5 MB of RAM, 10 to 60 tokens per agent reply, starts in 2 ms, zero setup.
翻譯準備中
A native voice typing app for macOS
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Speaker lives in the menu bar and uses Fn as its default shortcut. Hold the key while speaking and release it to finish, or short-press once to start and again to stop. Speaker transcribes with your choice of Doubao, OpenAI, Alibaba Qwen, or, on macOS 26 and later, Apple on-device recognition, optionally refines the confirmed text with a separately selected text provider, and delivers the result to the input position that was focused when recording ended.
If Speaker cannot prove that the original input target is still safe and current, it keeps the result in a HUD for explicit copying instead of risking delivery to the wrong place.
[!NOTE] Speaker is in beta. Releases are signed with Apple Developer ID and notarized by Apple. Only download Speaker from this repository's Releases page.
Fn, choose a custom shortcut, and press Esc to cancel at any time.| Requirement | Details |
|---|---|
| Operating system | macOS 14 or later, on Apple silicon or Intel |
| Interface language | Simplified Chinese only |
| Transcription | Your own Doubao, OpenAI, or Alibaba Qwen API key; Doubao also requires an activated streaming ASR resource. Apple on-device recognition (macOS 26 and later) needs no key. |
| Refinement | An optional DeepSeek, OpenAI, Kimi, GLM, or Custom API key enables non-default Refinement Modes |
Speaker-<version>-<build>.dmg.Or install with Homebrew; this repository is the tap:
brew tap simonwong/speaker https://github.com/simonwong/speaker
brew install --cask simonwong/speaker/speaker
Later releases install from inside Speaker: use Check for Updates in Settings → About, or turn on automatic update checks in General settings. Speaker verifies each update's Ed25519 signature before installing it.
/Applications/Speaker.app in System Settings → Privacy & Security → Accessibility when macOS opens that page.Fn while speaking and release it to finish. A short press followed by another short press also starts and stops recording.Audio is sent only to the selected Speech Recognition Provider. It is never sent to text refinement providers or persisted as a normal application artifact.
Speaker allows up to five minutes per OpenAI recording and three minutes per Qwen recording with either method. Existing settings keep their original method. Streaming sends audio before final local validation; cancellation stops further transmission but cannot recall audio already received by the provider. Only confirmed final text reaches refinement and delivery. Neither method is guaranteed to be more accurate. Audio remains in memory. Saving a new provider Key does not send a paid probe; its first recognition attempt verifies actual account and model availability.
Speaker has no hosted account service or shared provider credentials. You supply your own provider keys. Provider keys are stored in macOS Keychain. Settings, Personal Dictionary entries, and Session Records are stored locally with owner-only persistence.
See Privacy for the complete data-handling contract, local storage paths, provider boundaries, retention behavior, and diagnostic redaction rules.
Building Speaker requires Swift 6 and the macOS 26 SDK, normally provided by Xcode 26 or compatible Command Line Tools. The wrappers take the active toolchain's macOS SDK from xcrun and refuse one older than macOS 26; no SDK path is hardcoded. Set SPEAKER_SDKROOT to use another macOS 26-or-later SDK.
Use the repository wrappers so local builds match CI:
./scripts/test
./scripts/build
| Command | Purpose |
|---|---|
./scripts/test | Run non-UI specifications and script checks without test windows |
./scripts/test --ui-only | Run native UI checks; test windows may appear |
./scripts/test --with-ui | Run the full deterministic gate used by CI |
./scripts/build | Build the debug SpeakerApp product |
./scripts/provider-smoke doubao|deepseek | Check a configured provider connection using locally saved credentials |
Bare swift build, swift run, and swift test do not use the repository's pinned SDK and cache configuration and therefore do not represent the supported build path.
Focused issues and pull requests are welcome. For substantial behavior or architecture changes, open a GitHub Issue first so the product contract and verification approach can be agreed before implementation. Keep changes scoped, use the repository scripts, and include deterministic specifications for changed behavior.
Speaker is available under the MIT License.