Summary
Talk Mode currently only supports ElevenLabs for TTS output. This feature request asks for native macOS TTS support using NSSpeechSynthesizer, which would enable:
- Free, unlimited voice conversations (no API costs)
- Zero latency (on-device processing)
- High-quality Siri neural voices (Voice 1-4 in multiple languages)
- Privacy (no cloud processing)
Proposed Implementation
Add a provider option to the talk config:
{
"talk": {
"provider": "macos", // "macos" | "elevenlabs" | "openai"
"macos": {
"voice": "com.apple.siri.natural.en-GB-D",
"rate": 1.0
},
"elevenlabs": { ... },
"interruptOnSpeech": true
}
}
In the Mac app's Talk Mode, check the provider and use NSSpeechSynthesizer for macOS:
switch config.talk.provider {
case "macos":
let synthesizer = NSSpeechSynthesizer()
synthesizer.setVoice(NSSpeechSynthesizer.VoiceName(config.talk.macos.voice))
synthesizer.startSpeaking(responseText)
case "elevenlabs":
// existing code
}
Benefits
| Feature |
ElevenLabs |
macOS Native |
| Cost |
$5-99/mo |
Free |
| Latency |
200-500ms |
<50ms |
| Privacy |
Cloud |
On-device |
| Limit |
30K-500K chars |
Unlimited |
Workaround
I've built a Voice Bridge daemon that watches session files and speaks responses via osascript say, but native integration would be cleaner.
Environment
- macOS 15+ (Sequoia)
- OpenClaw Mac app 2026.2.2
- Siri neural voices available via System Settings > Accessibility > Spoken Content
Thank you for considering this feature!
Summary
Talk Mode currently only supports ElevenLabs for TTS output. This feature request asks for native macOS TTS support using
NSSpeechSynthesizer, which would enable:Proposed Implementation
Add a
provideroption to thetalkconfig:{ "talk": { "provider": "macos", // "macos" | "elevenlabs" | "openai" "macos": { "voice": "com.apple.siri.natural.en-GB-D", "rate": 1.0 }, "elevenlabs": { ... }, "interruptOnSpeech": true } }In the Mac app's Talk Mode, check the provider and use
NSSpeechSynthesizerfor macOS:Benefits
Workaround
I've built a Voice Bridge daemon that watches session files and speaks responses via
osascript say, but native integration would be cleaner.Environment
Thank you for considering this feature!