BLOG · 2026-07-28

我做了一个 Mac 上的 TTS 工具

我做了一个 Mac 上的 TTS 工具。起因很简单:做完剧后书 APP 之后,需要一个听书功能。

翻了一圈,结果挺让人失望的。

iOS 上能用的 TTS 方案,要么要付费,要么音质跟机器人一样。装本地 TTS 模型的方案也试过——音质是好了,但你得配推理引擎,得有 N 卡做语音推理。手机上没有 N 卡,就算做成服务端方案,光是 GPU 服务器的月费就够买几百本有声书了。

然后我突然想起来一件事。

我的 MacBook 上不是有个 Siri 吗?那个朗读声音挺好的。

顺着这个念头去看了下 macOS 的语音系统——还真有。系统自带了大量高质量语音,中文的、英文的、日文的,而且关键是:它不需要本地推理引擎,不用 GPU,纯 CPU 就能跑出很自然的语音。

这不就解决了吗?不用付费,不用 GPU,就在那儿等着,只是没人把它包成一个可以直接接管道用的命令行工具而已。

所以我写了一个。

叫 tts_pipe,一个不到 50KB 的 Swift 二进制文件,做的事很简单:读文本,调 macOS 的 AVSpeechSynthesizer 合成语音,PCM 音频直接往 stdout 里写。不经过硬盘,不写临时文件,纯粹的 Unix 管道过滤器。

用法大概是这样:

echo "早,今天继续听书" | ./tts_pipe --stdin com.apple.voice.premium.zh-CN.Yun 0.5 | ffplay -f s16be -ar 22050 -ac 1 pipe:0 -

Yun 这个语音就是 Siri 用的那个——你下载一次免费的 Premium Voice,系统就用它来完成语音输出。不需要你去搞什么 Triton Server、vLLM、HuggingFace 模型仓库。

macOS 的 Premium 语音是 Apple 几十年的语音合成研发成果,中文有云、悦、涵、莉莉、丽莲,英文有 Samantha、Alex、Ava,日文有 Kyoko,德文、法文、韩文也有,质量超过一群开源的本地 TTS 方案。而且因为不涉及模型推理,延迟极低,功耗极低,开一整天也不发烫。

Mac 之外这几个语音其实谁都接触过——Siri 说的就是这些声音。你只是没想过原来可以这样把它从苹果的壳里拆出来,装进自己的应用里。

后来想既然 TTS 做了,不如把 STT(语音转文字)也加上。macOS 同样有本地的 SFSpeechRecognizer,用它的 Neural Engine 做推理,不上传、无 API Key、不计费。写了 stt_pipe,接上 sox 就能录音转文字。

一套下来总共就两个微小的可执行文件——TTS 大概 48K,STT 大概 44K。Python 也能调,Node 也能调,Dart Flutter 上接着用当然更没问题,因为本来就是给 APP 做的。

这也是为什么我把整个方案开源成了 macOS Voice Toolkit。不是为了做一个「最好的 TTS」,而是发现系统里已经有了足够好的——它不需要 GPU、不需要付费、不需要联网、音质还不差。你只需要把它接出来。

说来也有点讽刺。我们找了一圈的 API、SaaS、推理服务,最后答案就躺在系统设置里——辅助功能——语音内容——管理语音。好像很多东西都是这样:最好的方案,往往不是最新的,而是最被忽略的。

开源地址:https://github.com/rrlab-tech/mac-tts

万一你的 APP 也需要一个听书功能,或者你只是想有个能朗读 Markdown、PDF、代码注释的命令行工具——试试看。