Voice is a first-class input and output mode in Crew. The default local STT provider runs in-process and downloads its own model on first use, so dictation works without installing any external binary. An optional AWS Transcribe cloud provider is also available. Local Piper text-to-speech (TTS) for replies requires no cloud service.
Both are on-demand. Voice input never fires until you press the mic; voice output never plays unless you enable it per-session or globally.
Crew runs a single local STT provider in-process. It downloads a model on first use and keeps it resident, so a short utterance transcribes in tens of milliseconds. No external binary is required. Dictation works on macOS desktop installs.
If a source install needs its audio decoder, open Settings → Voice and choose Download decoder. Crew downloads a verified decoder when one is available, rather than requiring you to install ffmpeg manually.
Two model sizes are available:
| Model | Download size | Notes |
|---|---|---|
base (default) | ~148 MB | Fast, works well for most dictation |
turbo | ~1.6 GB | Higher accuracy; a stored turbo setting from an earlier install still works |
The default for new installs is base. A stored turbo from a prior install resolves correctly but triggers the larger download.
{ "voice": { "stt_model": "base" } }
For cloud-grade accuracy, an AWS Transcribe provider is available. It streams audio to AWS and requires the voice extra and AWS credentials configured in your environment.
Install the extra:
pip install "kirocrew[voice]"
Configure the provider:
{ "voice": { "stt_provider": "transcribe" } }
As you dictate, in-flight words appear in the textarea and stabilize as the model firms up its transcription. Silence for approximately 1.5 seconds finalizes the utterance. Click the mic button again to stop early.
Live text is on by default for new installs. If you upgraded from an older install, check Settings → Voice to enable it.
The model's silence hallucinations and caption boilerplate (phrases like "Thank you for watching") are filtered before the text reaches your input.
Hold a key to dictate, or tap it to latch dictation on until you tap again. Configure the key, the mode, and test the strip in Settings → Voice.
Attach a voice memo as a file with @filename. The audio is transcribed automatically and inlined into the message.
Piper is a fast, local neural TTS engine. It runs entirely on your machine and streams audio word-by-word as the agent generates its reply.
Piper voice files are downloaded on first use and cached locally.
{ "voice": { "tts_provider": "piper", "tts_voice": "en_US-amy-medium", "tts_speed": 1.0 } }
| Key | Default | Purpose |
|---|---|---|
voice.tts_provider | piper | TTS engine (only piper today) |
voice.tts_voice | en_US-amy-medium | Piper voice file to use |
voice.tts_speed | 1.0 | Playback speed (0.5 to 2.0) |
Available voices: any Piper voice file. Drop a .onnx file into ~/.kiro/crew/voices/ and reference it by filename.
Speech settings that require a Gateway restart offer the restart action inline in the settings panel. You do not need to navigate away or find a separate restart command.
TTS skips content that would be difficult to listen to:
Override any of these from the voice settings panel.
Voice output stops when you stop the turn:
!stop command in Slack does the same for cross-surface useThe interrupt is bidirectional: stopping the reply also stops the TTS mid-word.
Voice input is dashboard-only. Slack voice memos work through Slack's voice-note feature. The Kiro CLI has its own separate voice mode; see CLI Voice mode.
Voice output works everywhere the dashboard is open, including remote hosts accessed over an SSH tunnel or mobile access.
voice extra installed and credentials configured| Problem | Fix |
|---|---|
| Mic button does nothing | Grant the browser microphone permission for the dashboard origin |
| TTS is silent | Check the dashboard tab's audio permission; confirm system output isn't muted |
| STT model not downloaded | Check Settings → Voice and your network connection; the model downloads once on first use |
| Transcription is inaccurate | Try a quieter room, switch to the turbo model, or use AWS Transcribe for cloud-grade accuracy |
| Live text not appearing | Enable live text in Settings → Voice |
| Settings change needs a restart | Use the inline restart action in the voice settings panel |
Voice