什么是 gTTS?
gTTS 是一个开源 Python 库和命令行工具,通过调用 Google Translate 的文本转语音接口,将文本转换成 MP3 语音。你可以把输出写入文件、写入用于音频处理的类文件对象,或直接输出到 stdout。gTTS 由 Pierre Nicolas Durette 开发,采用 MIT 协议,是 PyPI 上下载量最高的TTS包之一,每周下载量约 17.5 万。如果你想用三行 Python 代码把字符串转成 MP3,gTTS 往往就是你搜到的第一个结果。
但要注意,gTTS 并不是 Google Cloud Text-to-Speech。它用的是 Google Translate 页面上“收听”按钮背后的未公开接口。这一点差别决定了下文所有内容 —— gTTS 的优势、局限,以及什么时候该换别的方案。

什么时候使用 gTTS?
如果你需要免费又快速地搭建原型、用一行代码把文本转成 MP3、做多语言演示、兴趣项目、课堂示例,或让无障碍脚本朗读Google Docs导出内容,就可以用 gTTS。如果你需要生产级可靠性、明确的服务保障、声音克隆、SSML 控制、神经/富有表现力的声音、音频流式、或清晰的商用授权,就不太建议用 gTTS。
gTTS 是如何工作的?
gTTS 并不会在本地合成语音。它只是把请求拼好,发到 Google Translate “收听”用的接口,再把返回的 MP3 下载下来。因此你必须联网,不能离线用,音频是在 Google 服务器上生成的,而不是在你的电脑上。这个接口是非官方的,项目本身和 Google 或 Google Cloud 没任何关联,一旦上游服务调整,请求就可能突然失效。
安装
bash
pip install gTTS
gTTS 需要 Python 3.7 及以上版本,支持 macOS、Windows、Linux。PyPI 当前发布为2.5.4(2024年11月)。在基于 Debian 的系统(如树莓派 OS)请注意大小写:pip 包叫 gTTS,apt 包叫 python3-gtts。如果用 pip 安装时遇到 externally-managed-environment 错误,请改用虚拟环境。
基础用法
最简用例:
python
from gtts import gTTS
tts = gTTS("Hello, world.")tts.save("hello.mp3")
命令行下:
bash
gtts-cli "hello" --output hello.mp3
选择语言和口音
python
tts = gTTS("Bonjour le monde", lang="fr")tts.save("bonjour.mp3")
gTTS 还支持通过 tld 参数指定区域副标签,例如
tld="co.uk" 可以得到英式英语口音,tld="ca" 可以得到加拿大法语,这都是通过不同的 Google Translate 顶级域来实现的。
慢速模式
python
tts = gTTS("Read this slowly.", lang="en", slow=True)tts.save("slow.mp3")
这基本就是所有能调的语音参数了。没有音调选项、没有语速滑块,只有 slow=True,也没有多种声音可选,更不支持 SSML。
流式写入内存而非磁盘
python
from io import BytesIOfrom gtts import gTTS
buf = BytesIO()gTTS("Stream me").write_to_fp(buf)buf.seek(0)# now feed buf into pydub, ffmpeg, a web response, etc.
预处理与长文本
gTTS 的分句能力做得不错。它能自动把超长文本拆成接口要求的小块(每次请求上限约 100 个字符),保持语调连贯,还能处理缩写、小数和其他标点问题。你也可以自定义预处理器,把产品名或首字母缩写替换成音标,解决发音不准的问题。
gTTS 有哪些优点?
gTTS(Google Text-to-Speech)因轻量、好上手、易集成而很受开发者欢迎。它可以生成 MP3 文件,支持输出到文件、类文件对象或 stdout,用于自动化和脚本都很灵活。它支持约 60 种语言和多种地区变体,能覆盖简单的多语言场景。命令行工具(gtts-cli)方便配合 shell 脚本使用,自定义分词和预处理器可以专门处理缩写、数字和替换。Python API 极其简洁,适合在 Jupyter、Flask、Discord 等轻量项目中使用,上手成本很低。
gTTS 有哪些不足?
虽然简单易用,gTTS 的限制也不少。它用的是 Google Translate 的标准语音,实用但不如新一代神经文本转语音那样自然、有情感、更逼真。用户无法在同一种语言下切换不同声音,没有SSML、音调、语速微调等高级控制。gTTS 必须先拿到完整 MP3 文件,不能流式播放,交互延迟更高。每次请求都要联网,无法离线,用在对可靠性和低延迟要求高的场景就不太合适。
gTTS 对开发者的局限有哪些?
1. 非公开接口的限速
这是一旦走出“hello world”就会踩的大坑。gTTS 自身没有配额,因为它调用的上游服务也没公开限额。实际使用中,一个 IP 每小时大致能推几万字符,再多就会被 Google 返回 HTTP 429,限额还会随整体流量波动。如果你的应用要为多用户批量生成音频,长时间只靠一台服务器,迟早会撞限,而且没有任何 SLA 可申诉。
2. 接口可能随时变更
gTTS 调的是 Google Translate 的内部接口,而不是有版本管理的公开 API,Google 可以随时修改请求或返回格式,历史上也多次突然调整导致 gTTS 集体失效。维护者修好后你
pip install -U gTTS,脚本又能跑了。对兴趣脚本来说还能接受,对生产环境半夜两点就很致命。
3. 维护节奏偏慢
项目仍在更新,过去一年至少发过一个版本,但 issue 处理偏慢且只有 1 名维护者。一些项目健康度扫描工具会把它归为“非活跃”。对 MIT 协议的免费小工具来说没问题,但作为收费产品的关键依赖就需要谨慎权衡。
4. 商业使用与条款不清晰
gTTS 用的是 Google Translate 前端接口,而不是 Google Cloud TTS,对生成音频的商用授权并没有明确说法。库本身是 MIT 协议,但你拿到的音频字节受 Google 服务条款约束,正式 API 的条款并不适用。如果你需要官方、清晰的授权说明,gTTS 给不了。
5. 敏感数据会离开本地
所有要合成的文本都会发到 Google 服务器。如果你要朗读内部文档、客户数据,或拉取Google Docs内容,这就成了上线前必须评估的数据合规问题。
gTTS 与 Google Cloud Text-to-Speech 有什么区别?
gTTS 和 Google Cloud Text-to-Speech 名字相似,但完全是两回事。主要区别如下:
如果你在生产环境里确实要用“Google”家的声音,基本就得选 Google Cloud TTS,而不是 gTTS。
什么时候该升级到专业 TTS API?
什么时候应该从 gTTS 升级到专业文本转语音 API,主要取决于你对音频质量、可靠性和可定制能力的要求。gTTS 很适合做原型、作品集、个人无障碍工具、教学场景和轻量实验,因为它简单、免费又好用。但如果你要面向真实付费用户、产品体验高度依赖语音,或者需要有 SLA 兜底的低延迟服务,就应该考虑升级。如果你还需要多音色、声音克隆、SSML 支持、音频流式输出、语速语调控制,以及明确的商用授权等,高级 API 往往会是更优解。随着项目从实验走向生产,这些功能通常会变成刚需。
该选 gTTS 还是 Speechify API?
Speechify 文本转语音 API 是官方付费服务,支持神经声音、多种音色、SSML,合同中也有明确的商用授权,而不是对未公开接口的二次封装。如果你遇到 gTTS 的限额、音质或条款不清等问题,可以考虑迁移过去。
常见问题
gTTS 是免费的吗?
是的,gTTS 是基于 MIT 协议的免费 Python 库,但如果你需要对输出音频有明确商用授权,更建议使用付费服务,例如Speechify API。
gTTS 能离线用吗?
不能。gTTS 依赖网络和 Google 服务器,Speechify API 也同样是云端服务,需要保持联网。
gTTS 可以拿来商用吗?
gTTS 输出音频的商用授权并不明确,因为它依赖的是未公开的 Google 接口,而Speechify API 提供了写在协议里的商用许可。
gTTS 如何更换声音?
基本换不了。gTTS 每种语言只有一种声音,而Speechify API 提供多种神经音色可选。
gTTS 支持 SSML 吗?
不支持。gTTS 不提供SSML,也没有音高和语速的精细调节。Speechify API 则支持 SSML 和全韵律控制。
gTTS 为什么会返回 HTTP 429?
这是因为你触发了 Google Translate 未公开接口的限速。很多开发者因此转用带 SLA 的服务,比如Speechify API。
gTTS 和 Google Cloud Text-to-Speech 是同一个东西吗?
不是。gTTS 用的是 Google Translate 的非官方接口,而 Google Cloud TTS 是独立的付费产品,Speechify API 也是面向生产环境的付费神经音色方案。
生产环境里最好用的 Python TTS 库是哪一个?
gTTS 更适合做原型,而不是直接扛生产流量。在生产环境中,多数开发者会选择Speechify API这类付费方案。
gTTS 支持声音克隆吗?
不支持。声音克隆 并不在 gTTS 的功能范围内,但可以用Speechify API 来实现。
gTTS 如何实现流式语音?
gTTS 不支持实时流式播放,只能返回完整 MP3 文件。如果你需要低延迟流式,建议选用Speechify API。

