talks back while you're still talking
Goyaah runs a full-duplex speech-to-speech model on your MacBook. It listens and speaks at the same time, so it can cut in, get cut off, laugh, and say "yeah" at the right moment. No speech-to-text in between, no server, no API key.
Open source. Built on NVIDIA's PersonaPlex and Kyutai's Moshi, ported to Apple Silicon. On an M4 Pro it makes each 80 ms of speech in 26 ms, in 7 GB of memory.
No turns
Most voice assistants wait for you to stop, turn your words into text, think, then speak. Goyaah's model takes both voices at once, twelve and a half times a second. Your audio goes in while its audio comes out, the whole time.
- It cuts in when it has something to say, and stops when you do.
- It says "mm-hm", "right" and "oh really?" while you're still talking.
- Tone survives. Laughs, sighs and sarcasm never get flattened into text.
Three calls, no retakes
The caller is a person with headphones on a MacBook. Jess is the model, running on the same laptop with a short prompt: a film nerd from Brooklyn who says what she thinks. Nobody steers her and nothing is cut. Subtitles were added afterwards. Tap a label to jump to that moment.
Runs on a MacBook
Any Apple Silicon Mac with 16 GB of memory or more. The one-time download is NVIDIA's 17 GB checkpoint, which is converted to a 5 GB 4-bit model on your machine. You need a Hugging Face account that has accepted the PersonaPlex license.
git clone https://github.com/rawheel/goyaah
cd goyaah
uv venv --python 3.12 && uv pip install -e .
uvx --from huggingface_hub hf auth login
.venv/bin/goyaah-convert --delete-original
.venv/bin/goyaah-serve
Then open localhost:8998, put on headphones and start a call. Two personas come with it: Jess, and Maya, a real-estate agent who books viewings from a list of homes. Calls are saved as recordings with subtitles, and nothing leaves your machine.
Under the hood
Sound becomes tokens through Kyutai's Mimi codec: twelve and a half frames a second, eight codebooks each. A seven-billion-parameter transformer reads both voices and writes the agent's next frame of audio, alongside a text stream of what it's about to say. Goyaah is a from-scratch port of that model to MLX, Apple's array framework: 4-bit weights, a ring buffer for attention, and the system prompt processed in one batched pass instead of frame by frame, so a call starts in a second rather than seven.
The caller's side of the subtitles comes from Whisper, running on the CPU so it never slows the voice model down.
Where it comes from
- MoshiKyutai, 2024The first open full-duplex speech model: one transformer, two audio streams, and an inner monologue in text.
- PersonaPlexNVIDIA, 2026Moshi fine-tuned on thousands of real phone calls and synthetic assistant dialogues, with a voice prompt and a role prompt so it can be anyone.
- Goyaah2026PersonaPlex running natively on Apple Silicon, with the personas, the chat view and the recordings you hear above. The port, not a new model.
The code is MIT. The weights are NVIDIA's, under the NVIDIA Open Model License, and are downloaded from Hugging Face after you accept it. Goyaah is a community project, not affiliated with NVIDIA, Kyutai or Block, whose Dessa page inspired this one.