A native macOS menu bar app providing local & cloud TTS/ASR services via an OpenAI-compatible API.
Features • Installation • API • OpenClaw • Models • Building • 中文
- Supported models — Kokoro TTS, Kitten TTS, Qwen3 TTS, MiMo v2 TTS, FireRedASR v2, Qwen3 ASR, and more (local or cloud)
- Menu bar app — runs quietly in the background on macOS (Apple Silicon)
- OpenAI-compatible API — drop-in replacement for
/v1/audio/speechand/v1/audio/transcriptions - Multiple engines — sherpa-onnx, speech-swift (Qwen3-TTS/ASR)
- Cloud TTS — cloud-model API access including OpenAI-compatible services, Xiaomi MiMo, and Alibaba Qwen3
- Audio format support — WAV, MP3, Opus (OGG/WebM), PCM, FLAC, AAC
- Model store — download and manage models from the built-in registry
- Works with OpenClaw — give OpenClaw local voice capabilities in one line of config
- Privacy first — local models keep data on your machine; cloud models are opt-in
- macOS 15.0+
- Apple Silicon (M1/M2/M3/M4/M5)
Download the latest .dmg or .zip from Releases, drag to Applications, and launch. No additional tools required.
OpenMeow listens on http://127.0.0.1:23333 by default.
| Endpoint | Method | Description |
|---|---|---|
/v1/audio/speech |
POST | Text-to-Speech |
/v1/audio/transcriptions |
POST | Speech-to-Text |
/v1/models |
GET | List available models |
/v1/voices |
GET | List available voices |
/health |
GET | Health check |
curl -X POST http://127.0.0.1:23333/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "kokoro-multi-lang-v1_0", "input": "Hello from OpenMeow!", "voice": "af_heart"}' \
--output speech.mp3curl -X POST http://127.0.0.1:23333/v1/audio/transcriptions \
-F "file=@audio.wav" \
-F "model=whisper-large-v3-turbo"OpenMeow speaks the same API as OpenAI, so OpenClaw can use it as a local voice backend with zero cloud dependency.
TTS — add to your OpenClaw config:
ASR — add to tools.media.audio:
"tools": {
"media": {
"audio": {
"enabled": true,
"models": [
{
"type": "cli",
"command": "/bin/sh",
"args": [
"-c",
"curl -s http://127.0.0.1:23333/v1/audio/transcriptions -F file=@{{MediaPath}} -F model=qwen3-asr-0.6b-mlx | jq -r .text"
],
"timeoutSeconds": 60
}
]
}
}
}| Model | Size | Languages |
|---|---|---|
| Kokoro Multi-lang v1.0 | 360 MB | Chinese, English |
| Kitten Nano v0.1 | 26 MB | English |
| Kitten Mini v0.1 | 18 MB | English |
| Qwen3-TTS 0.6B (MLX) | 1.7 GB | Multilingual |
| Qwen3-TTS 1.7B (MLX) | 3.2 GB | Multilingual |
| Model | Provider | Voices | Languages |
|---|---|---|---|
| OpenAI TTS (Cloud) | OpenAI / compatible | 6 | 14 languages |
| MiMo TTS v2 (Cloud) | Xiaomi MiMo | 3 | Chinese, English |
| Qwen3 TTS Flash (Cloud) | Alibaba DashScope | 44 | 10 languages (incl. Chinese dialects) |
| Model | Size | Languages |
|---|---|---|
| FireRedASR v2 | 200 MB | Chinese + 20 dialects |
| Qwen3-ASR 0.6B (MLX) | 680 MB | 30+ languages |
| Whisper Large v3 Turbo | 600 MB | 92+ languages |
| Whisper Base | 150 MB | 99 languages |
# 1. Clone
git clone https://github.com/user/openmeow.git
cd openmeow
# 2. Download frameworks
Scripts/download-sherpa-onnx.sh
Scripts/download-opus.sh
Scripts/download-lame.sh
# 3. Open in Xcode and build
open openmeow/openmeow.xcodeprojFrameworks (sherpa-onnx, opus, lame) are not included in the repo due to size. Build scripts download and compile them locally.
| Component | License | Link |
|---|---|---|
| sherpa-onnx | Apache-2.0 | On-device speech (TTS/ASR) |
| speech-swift | Apache-2.0 | Qwen3-TTS/ASR via MLX |
| LAME | LGPL-2.0 | MP3 encoder (dynamically linked) |
LAME is the only LGPL component and is dynamically linked as libmp3lame.dylib. You may replace it with your own build. See THIRD-PARTY-LICENSES for details.
