一、什么是 macOS say?

macOS say 是 macOS 系统自带的命令行朗读工具,核心命令是:

say

它可以把文本转换成语音,也就是常说的 Text to Speech,文本转语音

常见用途包括:

  • 朗读英文单词
  • 朗读英文句子
  • 辅助英语发音练习
  • 朗读文本文件
  • 生成音频文件
  • 在脚本执行完成后进行语音提醒

有些工具或插件里可能会把它叫作 macos-say,但在 macOS 终端中真正执行的命令通常是 say


二、最基础用法

1. 朗读一个单词

say hello

2. 朗读一句话

say "Hello, how are you today?"

3. 朗读中文

say "你好,这是 macOS 的语音朗读功能。"

如果中文朗读效果不自然,可以尝试切换中文声音,具体方法见后文。


三、控制朗读速度

say 可以通过 -r 参数控制语速。

-r 可以理解为 rate,也就是朗读速率。

say -r 120 "algorithm"

数字越小,朗读越慢;数字越大,朗读越快。

常用语速参考

参数 大致效果 适合场景
-r 70 很慢 听清单词发音、拆音节
-r 90 慢速 英文单词发音练习
-r 120 稍慢 短句朗读、跟读练习
-r 160 正常偏慢 普通英文句子
-r 180 接近正常语速 日常听读
-r 220 偏快 快速浏览文本

例如:

say -r 90 "repository"
say -r 120 "repository"
say -r 180 "repository"

可以明显听出 90 最慢,120 适中,180 更接近日常朗读。


四、指定发音人 / 声音

1. 查看系统支持的声音

say -v '?'

该命令会列出当前 Mac 支持的所有声音。

不同 macOS 版本、不同系统语言配置下,可用声音可能不完全一样。


2. 使用指定声音朗读

say -v Samantha "algorithm"

常见英文声音示例:

say -v Samantha "repository"
say -v Daniel "schedule"
say -v Karen "database"

常见中文声音示例:

say -v Ting-Ting "你好,我正在学习英语发音。"

如果某个声音不存在,先执行:

say -v '?'

查看本机实际支持的声音名称。


五、练习英文单词的推荐方式

如果是为了练英文单词发音,推荐使用:

say -v Samantha -r 90 "entrepreneur"

这个组合的特点是:

  • 使用英文发音人
  • 语速比较慢
  • 适合听清楚单词细节

也可以读多遍:

say -v Samantha -r 90 "entrepreneur. entrepreneur. entrepreneur."

六、让单词读得更清楚

对于较长的英文单词,可以通过逗号制造停顿。

例如:

say -v Samantha -r 90 "re, po, si, to, ry"

或者先拆读,再完整读:

say -v Samantha -r 90 "re, po, si, to, ry. repository."

再比如:

say -v Samantha -r 90 "en, tre, pre, neur. entrepreneur."

这种方式适合练习较难单词。


七、生成音频文件

say 不只能直接朗读,还可以把语音保存成音频文件。

1. 生成 AIFF 文件

say "hello world" -o hello.aiff

生成后会得到:

hello.aiff

2. 指定声音和语速生成音频

say -v Samantha -r 100 "algorithm" -o algorithm.aiff

3. 生成 m4a 文件

部分 macOS 版本可以直接根据文件扩展名生成音频:

say -v Samantha -r 100 "hello world" -o hello.m4a

如果你的系统不支持直接输出 .m4a,可以先生成 .aiff,再用 ffmpeg 转换。


八、转换成 mp3

say 通常不直接输出 mp3。可以先生成 .aiff,再使用 ffmpeg 转成 .mp3

1. 先安装 ffmpeg

如果你已经安装了 Homebrew,可以执行:

brew install ffmpeg

2. 生成 AIFF

say -v Samantha -r 100 "repository" -o repository.aiff

3. 转成 MP3

ffmpeg -i repository.aiff repository.mp3

最终会得到:

repository.mp3

九、朗读文本文件

假设有一个文件 words.txt

algorithm
repository
database
entrepreneur

可以直接朗读整个文件:

say -f words.txt

也可以把文本文件朗读结果保存成音频:

say -f words.txt -o words.aiff

十、配合管道使用

say 也可以读取其他命令的输出。

1. 朗读 echo 输出

echo "database" | say

2. 朗读当前日期

date | say

3. 朗读当前目录文件名

ls | say

这个用法在脚本里比较方便。


十一、脚本执行完成后语音提醒

有些命令执行时间比较长,比如编译、打包、下载、测试。

可以在命令后面追加 say,让 Mac 在任务完成后提醒你。

例如:

npm run build && say "build finished"

或者:

go test ./... && say "tests passed"

失败时也可以提醒:

go test ./... || say "tests failed"

更完整一点:

go test ./... && say "tests passed" || say "tests failed"

这个用法非常适合长时间运行的任务。


十二、批量生成单词音频

假设有一个 words.txt 文件:

algorithm
repository
database
entrepreneur

可以用下面的脚本批量生成 .aiff 音频:

while read word; do
  say -v Samantha -r 100 "$word" -o "$word.aiff"
done < words.txt

执行后会生成:

algorithm.aiff
repository.aiff
database.aiff
entrepreneur.aiff

如果想批量转成 mp3:

for file in *.aiff; do
  ffmpeg -i "$file" "${file%.aiff}.mp3"
done

十三、批量生成「慢速 + 正常语速」两个版本

练英语时,有时需要慢速版和正常版。

while read word; do
  say -v Samantha -r 90 "$word" -o "${word}_slow.aiff"
  say -v Samantha -r 150 "$word" -o "${word}_normal.aiff"
done < words.txt

生成结果类似:

algorithm_slow.aiff
algorithm_normal.aiff
repository_slow.aiff
repository_normal.aiff

十四、给自己设置一个快捷命令

如果经常练英文单词,可以在 shell 配置里加一个函数。

如果你用的是 zsh,编辑:

vim ~/.zshrc

加入:

word_say() {
  say -v Samantha -r 90 "$1"
}

保存后执行:

source ~/.zshrc

以后就可以这样使用:

word_say entrepreneur
word_say repository
word_say algorithm

如果单词里有空格,需要加引号:

word_say "machine learning"

十五、常见问题

1. say -v Samantha 报错怎么办?

说明本机没有这个声音。

先执行:

say -v '?'

找到本机已有的声音,再替换命令里的声音名称。


2. 中文读得不自然怎么办?

可以尝试中文声音,例如:

say -v Ting-Ting "你好,这是中文朗读测试。"

如果本机没有中文声音,可以到系统设置里下载更多语音。

一般路径为:

系统设置 -> 辅助功能 -> 朗读内容 -> 系统声音

不同 macOS 版本菜单名称可能略有差异。


3. 如何让朗读更慢?

使用 -r 参数,例如:

say -r 90 "entrepreneur"

更慢可以使用:

say -r 70 "entrepreneur"

4. 90120 这些数字是什么意思?

它们表示朗读速率,可以大致理解为每分钟朗读多少个英文单词。

例如:

say -r 90 "algorithm"

大致表示以较慢速度朗读。

say -r 120 "algorithm"

90 快一些,但仍然偏慢。


5. 可以直接生成 mp3 吗?

通常不建议直接依赖 say 生成 mp3。

更稳定的方式是:

say "hello" -o hello.aiff
ffmpeg -i hello.aiff hello.mp3

十六、常用命令速查

场景 命令
朗读单词 say hello
朗读句子 say "Hello world"
慢速朗读 say -r 90 "repository"
指定声音 say -v Samantha "algorithm"
查看声音列表 say -v '?'
生成音频 say "hello" -o hello.aiff
朗读文本文件 say -f words.txt
配合管道 echo "hello" | say
任务完成提醒 npm run build && say "build finished"
转 mp3 ffmpeg -i hello.aiff hello.mp3

十七、个人推荐配置

如果主要用于英语单词发音练习,我推荐:

say -v Samantha -r 90 "your word"

如果用于句子跟读,可以使用:

say -v Samantha -r 120 "I am learning English pronunciation."

如果用于任务提醒,可以使用:

go test ./... && say "tests passed" || say "tests failed"

整体来看,say 是 macOS 上一个非常轻量但实用的工具。它不需要额外安装,适合英语学习、脚本提醒、文本朗读和简单音频生成等场景。