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编写一个点名器的示例代码

    基于Python编写一个点名器的示例代码

    想起小学的时候老师想点名找小伙伴回答问题的时候,老师竟斥巨资买了个点名器。今日无聊便敲了敲小时候老师斥巨资买的点名器,希望对大家有帮助
    2022-07-07
  • 如何使用Selenium实现简单的网络自动化操作指南

    如何使用Selenium实现简单的网络自动化操作指南

    Selenium是一个用于Web应用测试的工具,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,这篇文章主要给大家介绍了关于如何使用Selenium实现简单的网络自动化操作的相关资料,需要的朋友可以参考下
    2024-03-03
  • django admin.py 外键,反向查询的实例

    django admin.py 外键,反向查询的实例

    今天小编就为大家分享一篇django admin.py 外键,反向查询的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 基于PyQT5制作一个课堂点名系统

    基于PyQT5制作一个课堂点名系统

    这篇文章主要为大家介绍一个基于PyQt5实现的抖音同款课堂点名系统,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试
    2022-02-02
  • Python操作Redis数据库的超详细教程

    Python操作Redis数据库的超详细教程

    大家应该都知道redis是一个基于内存的高效的键值型非关系数据库,下面这篇文章主要给大家介绍了关于Python操作Redis的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 在pytorch中查看可训练参数的例子

    在pytorch中查看可训练参数的例子

    今天小编就为大家分享一篇在pytorch中查看可训练参数的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python实现导出数据生成excel报表的方法示例

    Python实现导出数据生成excel报表的方法示例

    这篇文章主要介绍了Python实现导出数据生成excel报表的方法,结合完整实例形式分析了Python连接、查询mysql数据库并导出Excel报表的相关实现技巧,需要的朋友可以参考下
    2017-07-07
  • python获取外网ip地址的方法总结

    python获取外网ip地址的方法总结

    这篇文章主要介绍了python获取外网ip地址的方法,实例总结了四种常用的获取外网IP地址的技巧,需要的朋友可以参考下
    2015-07-07
  • Python爬虫设置代理IP(图文)

    Python爬虫设置代理IP(图文)

    在本篇内容里小编给大家分享了关于Python爬虫设置代理IP的相关知识点和步骤,需要的朋友们参考下。
    2018-12-12
  • python-地图可视化组件folium的操作

    python-地图可视化组件folium的操作

    这篇文章主要介绍了python-地图可视化组件folium的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论