macOS 系统中的 say
命令是一个简单而实用的文本转语音(Text-to-Speech, TTS)工具,它允许用户通过命令行将文本转换为语音输出,无需安装额外的第三方软件,作为 macOS 的内置功能,say
命令基于系统的语音合成引擎,支持多种语言、语音风格和参数调整,适用于自动化脚本、辅助功能、语音提示等多种场景,以下将从基本用法、参数详解、实际应用案例及注意事项等方面展开详细介绍。

基本用法
say
命令的基本语法非常简单,核心功能是直接朗读输入的文本,在终端中输入 say "Hello, World!"
,系统会立即通过默认语音朗读这句话,若未指定文本内容,say
命令会等待用户输入,直到按下 Ctrl+D
结束输入后再朗读。say
命令支持将文本保存为音频文件,使用 -o
参数可指定输出路径,say -o hello.aiff "Hello"
会生成一个名为 hello.aiff
的音频文件,默认格式为 AIFF,也可通过 -f
参数指定其他格式(如 caf
、wav
)。
参数详解
say
命令提供了丰富的参数选项,以满足不同场景的需求,以下为常用参数的说明:
参数 | 功能描述 | 示例 |
---|---|---|
-v <voice> |
指定语音类型(如语言、性别、口音) | say -v "Tingting" "你好" |
-r <rate> |
设置语速(范围:100-1000,默认为200) | say -r 150 "Slow speech" |
-o <file> |
输出音频文件至指定路径 | say -o output.aiff "Hello" |
-f <file> |
从文本文件中读取内容并朗读 | say -f text.txt |
-i |
交互模式,逐行读取文件并朗读 | say -i text.txt |
-q |
静默模式,不播放语音,仅生成音频文件 | say -q -o silent.aiff "Quiet" |
语音类型(-v
参数)
macOS 内置多种语音,支持英语、中文、法语、日语等语言,可通过 say -v ?
查看所有可用语音列表,中文语音包括 "Tingting"
(女声,普通话)、"Trinity"(女声,粤语)等;英语语音有 "Samantha"
(女声,美式)、"Daniel"(男声,英式)等,语音名称通常包含语言、性别和地区信息,en-US-Samantha
表示美式英语女声。
语速调整(-r
参数)
默认语速为 200,数值越大语速越快。say -r 100 "Slow"
会以较慢速度朗读,而 say -r 300 "Fast"
则会快速输出,对于需要清晰朗读的场景(如辅助功能),可适当降低语速;对于快速提示,可提高语速。

音频文件输出
-o
参数可将语音保存为音频文件,方便后续使用。say -o message.caf -v "Alex" "Welcome"
会生成使用 "Alex" 语音的 AIFF 格式文件(.caf
为 macOS 常用音频格式),若需压缩文件,可通过 afconvert
工具转换格式,如 afconvert output.aiff output.mp4 -d aac
。
实际应用案例
自动化脚本中的语音提示
在编写 Shell 脚本时,可通过 say
命令实现任务完成的语音提醒,以下脚本在文件复制完成后播放提示音:
cp -r source_dir/ dest_dir/ say "文件复制完成!"
辅助功能支持
对于视障用户,say
命令可帮助读取屏幕内容,结合 pbcopy
和 pbpaste
命令,实现剪贴板内容的语音朗读:
pbpaste | say -v "Tingting"
语音备忘录
通过 say
命令将文本转换为语音文件,制作语音备忘录,将会议内容保存为音频:

say -f meeting_notes.txt -o meeting_summary.aiff
注意事项
- 语音依赖系统语言:部分语音可能需要 macOS 系统支持对应语言,例如中文语音需在“系统设置”中启用中文语言包。
- 音频文件格式兼容性:默认生成的 AIFF 文件体积较大,可通过
afconvert
转换为 MP3 或 AAC 格式以节省空间。 - 脚本中的多行文本处理:若需朗读多行文本,可使用
here document
语法,say <<EOF 第一行 第二行 EOF
相关问答FAQs
Q1: 如何查看 macOS 系统支持的所有语音类型?
A1: 在终端中输入 say -v ?
或 say -v list
,系统会列出所有可用语音的名称、语言和性别信息。en-US-Samantha (English - United States, Female)
表示美式英语女声。
Q2: 如何调整 say
命令的语音音量?
A2: say
命令本身不直接支持音量调整,但可通过系统音量控制或结合 osascript
命令实现,以下命令可将系统音量设置为 50% 后朗读文本:
osascript -e "set volume output volume 50" say "当前音量为50%"