✓ Verified 💻 Development ✓ Enhanced Data

Say

Text-to-Speech via macOS say command with Siri Natural Voices.

Rating
4.4 (340 reviews)
Downloads
1,275 downloads
Version
1.0.0

Overview

Text-to-Speech via macOS say command with Siri Natural Voices.

Complete Documentation

View Source →

say

Use say for on-device text-to-speech on macOS.

Siri Natural Voices (recommended)

Siri voices are the best macOS TTS voices but cannot be selected via -v. Instead, run say without -v — it uses the system default voice. Switch languages via defaults write:

bash
# Switch to German
defaults write com.apple.speech.voice.prefs SystemTTSLanguage -string "de"
say "Hallo, wie geht's?" -o output_de.aiff

# Switch to Chinese (Mandarin)
defaults write com.apple.speech.voice.prefs SystemTTSLanguage -string "cmn"
say "你好,世界" -o output_zh.aiff

No process restart needed — the next say invocation picks up the new language immediately.

Prerequisites

Download the desired Siri voices first in System Settings > Accessibility > Spoken Content and set them as the system voice for each language.

Check which voices are currently configured:

bash
defaults read com.apple.Accessibility SpokenContentDefaultVoiceSelectionsByLanguage

Fallback: select voice via -v

For non-Siri voices, use -v directly:

bash
say -v 'Tingting (Enhanced)' "你好,世界"
say -v '?'  # list all installed voices (Siri voices not listed)

Output to file

bash
say -o output.aiff "Hello world"
ffmpeg -y -i output.aiff -ar 22050 -ac 1 output.wav  # convert to WAV

Options

  • -v — Select a non-Siri voice
  • -r — Speaking rate in words per minute (e.g. -r 150)
  • -o — Save to AIFF file instead of playing aloud

Notes

  • say adds natural pauses at punctuation — no manual sentence splitting needed
  • AIFF is the native output format; convert with ffmpeg for WAV/MP3
  • For batch generation: set language once, generate all clips, then switch — minimizes defaults write calls

Installation

Terminal bash

openclaw install say
    
Copied!

💻Code Examples

say "你好,世界" -o output_zh.aiff

say---o-outputzhaiff.txt
No process restart needed — the next `say` invocation picks up the new language immediately.

### Prerequisites

Download the desired Siri voices first in **System Settings > Accessibility > Spoken Content** and set them as the system voice for each language.

Check which voices are currently configured:

defaults read com.apple.Accessibility SpokenContentDefaultVoiceSelectionsByLanguage

defaults-read-comappleaccessibility-spokencontentdefaultvoiceselectionsbylanguage.txt
## Fallback: select voice via `-v`

For non-Siri voices, use `-v` directly:
example.sh
# Switch to German
defaults write com.apple.speech.voice.prefs SystemTTSLanguage -string "de"
say "Hallo, wie geht's?" -o output_de.aiff

# Switch to Chinese (Mandarin)
defaults write com.apple.speech.voice.prefs SystemTTSLanguage -string "cmn"
say "你好,世界" -o output_zh.aiff

Tags

#apple_apps-and-services

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author tobihagemann
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install say