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.
{ "stt": { "model": "base" } }
Under the Microphone picker in Settings → Voice, choose Test microphone to open the selected input, or the system default shown as System default (device name), and watch a live Microphone level bar. Speak, and the bar should move. The audio goes only to the level meter: nothing is recorded, sent, or transcribed, and the test never plays through your speakers.
If the device disconnects, the strip says so. Stop test, changing the picked device, or leaving Settings releases the microphone.
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:
{ "stt": { "provider": "transcribe" } }
If you have uploaded a custom vocabulary to Amazon Transcribe, dictation can use it so names and terms are spelled right. In Settings → Voice, with the provider set to Amazon Transcribe, the Custom vocabulary picker appears below AWS Profile (Transcribe) and AWS Region (Transcribe) once you have allowed Kiro Crew to call AWS, or while a vocabulary is already stored.
The picker lists the vocabularies in READY state for that profile and region, each as its name and language, plus None. Listing them needs the transcribe:ListVocabularies permission; the panel names that permission when the credentials lack it. The chosen vocabulary is sent with every dictation stream, including voice memos.
The panel warns when the stored vocabulary is missing or not ready in that region, or was built for a language other than your dictation language. Amazon Transcribe refuses it in those cases, so dictation fails until you choose another vocabulary or None. The local provider ignores this setting.
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. The Start dictation with a key section of Settings → Voice holds the controls:
While the switch is off, the key and mode controls are dimmed so you can still see which key you turned off.
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, then use Test microphone in Settings → Voice to confirm the level bar moves |
| Dictation starts when you did not mean it to | Turn off Use a key to start dictation in Settings → Voice, or pick a different Shortcut key |
| Transcribe dictation fails after choosing a vocabulary | Check the warning under Custom vocabulary: the vocabulary must be READY in that region and built for your dictation language. Choose another one or None |
| 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