Python使用gTTS实现文本转语音的终极指南

 更新时间:2026年05月21日 08:08:18   作者:detayun  
gTTS是一款基于Google翻译API的Python文本转语音库,支持100+种语言,只需几行代码即可生成MP3语音文件,下面我们就来看看它的具体应用吧

几行代码,就能让冰冷的文字变成生动的语音——这就是gTTS的魔力。

一、什么是gTTS?

gTTS(Google Text-to-Speech) 是一款基于Google翻译TTS API的Python开源库,它能将任意文本转换为自然流畅的语音,并保存为MP3文件。

核心优势一览

特性说明
多语言支持覆盖全球100+种语言和方言
极简使用几行代码即可完成语音合成
完全免费无需付费,享受Google语音合成技术
口音定制支持不同地区的本地化发音
语速可调支持正常/慢速两档切换

二、安装:一键搞定

打开终端,执行以下命令:

pip install gTTS

如果你想从源码安装:

git clone https://gitcode.com/gh_mirrors/gt/gTTS
cd gTTS
pip install .

环境要求: Python 3.7+,稳定的网络连接(需要访问Google服务)

三、快速上手:你的第一条语音

3.1 Python方式(推荐)

from gtts import gTTS

# 创建语音对象
tts = gTTS(text='你好,欢迎来到文本转语音的世界!', lang='zh-CN')

# 保存为MP3文件
tts.save('hello.mp3')

print("✅ 语音文件已生成:hello.mp3")

运行后,当前目录下就会出现一个hello.mp3文件——就是这么简单!

3.2 命令行方式(更快)

不想写代码?直接用命令行:

gtts-cli "你好,世界!" --lang zh-CN --output hello.mp3

还可以从文件读取文本:

gtts-cli -f textfile.txt --output speech.mp3

查看所有支持的语言:

gtts-cli --all

四、进阶玩法:解锁gTTS的隐藏技能

技能一:多语言混合合成

想让一段音频里既有中文又有英文?轻松实现:

from gtts import gTTS

tts_en = gTTS('Hello, welcome!', lang='en')
tts_zh = gTTS('你好,欢迎使用语音合成!', lang='zh-CN')

with open('mixed.mp3', 'wb') as f:
    tts_en.write_to_fp(f)
    tts_zh.write_to_fp(f)

技能二:语速调节

# 正常语速
tts_normal = gTTS('这是正常语速', lang='zh-CN', slow=False)

# 慢速播放(适合教学场景,语速约慢30%)
tts_slow = gTTS('这是慢速播放', lang='zh-CN', slow=True)
tts_slow.save('slow_speech.mp3')

技能三:地区口音定制(重磅功能!)

这是gTTS最强大的特性之一!通过调整tld参数,可以获取不同地区的发音特色:

语言/口音语言代码推荐tld
英语(美国)enus
英语(英国)enco.uk
英语(澳大利亚)encom.au
法语(法国)frfr
法语(加拿大)frca
葡萄牙语(巴西)ptcom.br
西班牙语(墨西哥)escom.mx
# 英式英语
tts_uk = gTTS('Hello world', lang='en', tld='co.uk')
tts_uk.save('hello_uk.mp3')

# 美式英语
tts_us = gTTS('Hello world', lang='en', tld='us')
tts_us.save('hello_us.mp3')

小技巧: 不指定tld时默认使用com,系统会根据你的网络位置自动选择最匹配的地区口音。在中国使用en语言代码,通常会得到美式英语发音。

技能四:流式处理(内存友好)

对于内存敏感的场景,使用BytesIO进行流式处理:

from gtts import gTTS
from io import BytesIO

mp3_fp = BytesIO()
tts = gTTS('Hello world', lang='en')
tts.write_to_fp(mp3_fp)

# 此时mp3_fp包含音频数据,可直接传递给播放器
audio_data = mp3_fp.getvalue()

如果想直接播放(需安装pydub和ffmpeg):

from pydub import AudioSegment
from pydub.playback import play

mp3_fp.seek(0)
audio = AudioSegment.from_file(mp3_fp, format="mp3")
play(audio)

五、实战应用场景

场景示例代码
有声读物gTTS(text=章节内容, lang='zh-CN').save(f'chapter_{i}.mp3')
教育应用gTTS(text=单词, lang='en', slow=True).save('word.mp3')
无障碍工具为视障用户提供文本转语音功能
语音助手为Python应用添加语音反馈
播客制作批量转换文本为音频片段

批量处理长文本

当处理长篇文本时,建议分段处理以获得更好的语音效果:

def text_to_speech_long(text, filename, lang='zh-CN'):
    paragraphs = text.split('\n\n')
    with open(filename, 'wb') as f:
        for paragraph in paragraphs:
            if paragraph.strip():
                tts = gTTS(text=paragraph, lang=lang)
                tts.write_to_fp(f)

六、常用语言代码速查表

语言代码语言代码
中文(简体)zh-CN日语ja
中文(繁体)zh-TW韩语ko
英语en德语de
西班牙语es法语fr
俄语ru葡萄牙语pt
意大利语it阿拉伯语ar

完整语言列表可通过 from gtts.lang import tts_langs; print(tts_langs()) 获取。

七、故障排除指南

问题解决方案
音频文件无法播放确认文件扩展名为.mp3,检查播放器是否支持MP3格式
语音生成失败验证文本非空,检查语言代码是否正确
安装失败确保Python≥3.7,检查网络连接,可尝试国内镜像源
某种语言不工作查看gtts/langs.py确认是否支持,或使用--nocheck跳过验证
请求被屏蔽设置代理:tts.save('out.mp3', proxies={'http': 'http://ip:port'})

八、gTTS vs 其他TTS方案

方案特点适用场景
gTTS免费、多语言、在线个人项目、快速原型
pyttsx3离线、跨平台无网络环境、系统集成
Edge TTS微软免费TTS、神经语音高质量语音需求
Google Cloud TTS付费、稳定商业应用、高并发
Amazon PollyAWS高质量TTS企业级应用

九、最佳实践建议

  1. 网络优先: gTTS依赖Google服务,确保网络可访问相关域名
  2. 异常处理: 务必用try-except包裹网络请求
  3. 批量优化: 复用gTTS实例,减少网络请求次数
  4. 文本预处理: gTTS内置智能分词器,但长文本仍建议手动分段
  5. 商用谨慎: 免费版有请求频率限制,商业用途建议使用官方API

写在最后

gTTS用最简洁的方式,架起了文字与声音之间的桥梁。无论你是想给应用加个语音提示,还是制作有声读物,它都是最快上手的选择。

记住:实践是最好的老师。 现在就打开终端,输入pip install gTTS,让你的代码开口说话吧!

以上就是Python使用gTTS实现文本转语音的终极指南的详细内容,更多关于Python gTTS文本转语音的资料请关注脚本之家其它相关文章!

相关文章

  • Python中的if判断语句中包含or问题

    Python中的if判断语句中包含or问题

    这篇文章主要介绍了Python中的if判断语句中包含or问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python selenium爬取微信公众号文章代码详解

    Python selenium爬取微信公众号文章代码详解

    这篇文章主要介绍了Python selenium爬取微信公众号历史文章代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • django实现同一个ip十分钟内只能注册一次的实例

    django实现同一个ip十分钟内只能注册一次的实例

    下面小编就为大家带来一篇django实现同一个ip十分钟内只能注册一次的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 使用python绘制人人网好友关系图示例

    使用python绘制人人网好友关系图示例

    这篇文章主要介绍了使用python绘制人人网好友关系图示例,需要的朋友可以参考下
    2014-04-04
  • 打开Jupyter Notebook不自动跳转到浏览器问题以及解决方案

    打开Jupyter Notebook不自动跳转到浏览器问题以及解决方案

    这篇文章主要介绍了打开Jupyter Notebook不自动跳转到浏览器问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • python批量处理URL并提取内容且按序保存到本地

    python批量处理URL并提取内容且按序保存到本地

    这篇文章主要为大家详细介绍了如何使用python实现批量处理URL并提取内容且按序保存到本地,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-07-07
  • Python读取csv文件实例解析

    Python读取csv文件实例解析

    这篇文章主要介绍了Python读取csv文件实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • python实现电脑操控安卓手机

    python实现电脑操控安卓手机

    网上虽然有很多教程,但是随着版本的更新总有各种各样的坑,本文以亲身踏坑经历介绍了电脑使用python操控安卓手机,从安装到使用方法,感兴趣的可以了解一下
    2021-05-05
  • 一篇文章带你了解python标准库--random模块

    一篇文章带你了解python标准库--random模块

    这篇文章主要给大家介绍了关于Python中random模块常用方法的使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • Python实现的拉格朗日插值法示例

    Python实现的拉格朗日插值法示例

    这篇文章主要介绍了Python实现的拉格朗日插值法,简单介绍了拉格朗日插值法的原理并结合完整实例形式给出了拉格朗日插值法的具体实现与使用技巧,需要的朋友可以参考下
    2019-01-01

最新评论