Reed is a local voice studio for Apple silicon. It designs, clones, and plays speech on your Mac. Reference clips and generated audio stay on this machine. The only network use is downloading model weights from Hugging Face.
On an Apple silicon Mac that already has Homebrew:
curl -fsSL https://raw.githubusercontent.com/ganya002/Reed/main/install.sh | bash
That installs uv, ffmpeg, and Node.js if they are missing, clones Reed into ~/Reed, builds the studio, and starts it. Set REED_DIR to choose a different folder.
If Reed is already cloned, and uv, Node.js, and ffmpeg are installed:
./run
Then open http://127.0.0.1:8733
The server binds to 127.0.0.1 only. ./run creates a project virtualenv with Python 3.12, installs the pinned stack from uv.lock, builds the studio, and starts it.
Inference is MLX Audio 0.4.4. Reed does not use CUDA or FlashAttention.
| Mode | Checkpoint | API |
|---|---|---|
| Design a voice | mlx-community/Qwen3-TTS-12Hz-1.7B-VoiceDesign-8bit or -bf16 |
generate_voice_design |
| Clone a voice | mlx-community/Qwen3-TTS-12Hz-0.6B-Base-8bit, plus 1.7B 8-bit and bfloat16 |
generate with ref_audio and ref_text |
| Preset voice | mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit, plus 1.7B 8-bit and bfloat16 |
generate_custom_voice |
These are MLX conversions of the official Qwen/Qwen3-TTS-12Hz-* checkpoints. The 8-bit VoiceDesign, Base, and CustomVoice models are the practical defaults on a 16 GB Mac. bfloat16 is available when you want more precision and have the disk and memory for it.
Official languages are Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish, and Italian. Norwegian is offered as an experiment: these checkpoints have no Norwegian language token, and Reed says so in the studio. It does not promise pronunciation or dialect.
The 0.6B CustomVoice checkpoint does not support delivery instructions. The 1.7B CustomVoice checkpoint does. Base clone checkpoints follow the reference clip and do not take a written voice description.
Preset speakers are the published CustomVoice voices: Vivian, Serena, Uncle_Fu, Dylan, Eric, Ryan, Aiden, Ono_Anna, and Sohee. They are not voices you designed or cloned.
Models, history, and references live in data/ inside this project. Deleting a take or a reference removes the local audio. A checkpoint is marked ready only after its weights, speech tokenizer, and config are present and the file sizes match the repository manifest.
uv sync --python 3.12 --group dev
uv run pytest
npm --prefix frontend run dev
uv run --python 3.12 uvicorn --app-dir backend reed.main:app --host 127.0.0.1 --port 8733
npm --prefix frontend ci
npm --prefix frontend exec -- playwright install chromium
npm --prefix frontend run test:ui
npm --prefix frontend run build
The browser tests use explicit mock API responses and do not download models or perform inference. They cover applied-voice state and request payloads, reload persistence, saved voices, history reuse, keyboard behavior, model download progress, disconnected state, and responsive layouts. The history test also captures light, dark, and mobile screenshots in frontend/test-results/.
Real speech generation still needs an Apple silicon Mac with an installed model. The existing Python test test_hardware_reports_this_mac expects an Apple M4 specifically and will fail on another machine.