从入门到实战详解Python文本转语音的完全指南

 更新时间:2026年05月20日 08:13:29   作者:detayun  
本文介绍了如何使用Python的pyttsx3库实现文本转语音功能,主要内容包括pyttsx3的安装方法,5行代码快速实现语音播报以及保存音频文件和常见问题解决方案,有需要的小伙伴可以了解下

用Python让你的程序"开口说话"!支持中英文,5分钟上手 

什么是文本转语音?

文本转语音(Text-to-Speech, TTS) 就是让计算机把文字读出来。

应用场景:

  • 智能助手(如小爱同学、Siri)
  • 有声读物生成
  • 车载导航语音播报
  • 障碍辅助工具

Python 中最流行的 TTS 库是 pyttsx3,它离线运行、跨平台、支持中英文!

为什么选择 pyttsx3?

特性pyttsx3gTTSedge-tts
离线使用
支持中文
跨平台
自定义语音
速度⚡ 快🐢 慢(需联网)🐢 慢(需联网)

结论:离线 + 中文 + 可定制 → pyttsx3 是首选!

安装教程

步骤1:创建虚拟环境(推荐)

# 创建虚拟环境
python -m venv tts_env
# 激活环境
# Windows:
tts_env\Scripts\activate
# Mac/Linux:
source tts_env/bin/activate

步骤2:安装 pyttsx3

pip install pyttsx3
# 如果需要更好的兼容性,安装特定版本
pip install pyttsx3==2.90

步骤3:安装 pypiwin32(Windows 必需)

pip install pypiwin32

快速上手(5行代码)

import pyttsx3

engine = pyttsx3.init()
engine.say("你好,世界!Hello World!")
engine.runAndWait()

运行后,你的电脑就会说话了! 

进阶功能

1. 调整语速

import pyttsx3

engine = pyttsx3.init()

# 获取当前语速
rate = engine.getProperty('rate')
print(f"当前语速: {rate}")  # 默认 200

# 设置语速(范围 50-300)
engine.setProperty('rate', 150)  # 变慢
engine.say("这是慢速语音")
engine.runAndWait()
语速值效果
50🐢 极慢
150🚶 正常偏慢
200🏃 默认
300🚀 极快

2. 调整音量

import pyttsx3

engine = pyttsx3.init()

# 获取当前音量
volume = engine.getProperty('volume')
print(f"当前音量: {volume}")  # 默认 1.0

# 设置音量(范围 0.0 - 1.0)
engine.setProperty('volume', 0.8)  # 80% 音量
engine.say("这是80%音量的语音")
engine.runAndWait()

3. 切换语音(中英文)

import pyttsx3

engine = pyttsx3.init()

# 查看所有可用语音
voices = engine.getProperty('voices')
for i, voice in enumerate(voices):
    print(f"语音 {i}: {voice.name} (ID: {voice.id})")

# 切换到中文语音(通常是索引 1)
engine.setProperty('voice', voices[1].id)
engine.say("这是中文语音")
engine.runAndWait()

# 切换到英文语音(通常是索引 0)
engine.setProperty('voice', voices[0].id)
engine.say("This is English voice")
engine.runAndWait()

输出示例

语音 0: Microsoft David (ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0)
语音 1: Microsoft Huihui (ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0)

4. 保存为音频文件

import pyttsx3

engine = pyttsx3.init()

# 设置保存路径
engine.save_to_file("你好,这是保存的音频", "test.mp3")
engine.runAndWait()

print("✅ 音频已保存为 test.mp3")

常见问题及解决方案

问题1:SyntaxError: invalid syntax(海象运算符错误)

原因:Python 版本低于 3.8

解决

# 方案A:升级 Python 到 3.8+
# 方案B:降级 pyttsx3
pip install pyttsx3==2.90

问题2:_ctypes.COMError: (-2147200966, None, ...)

原因:Windows 语音引擎找不到可用语音

解决

import pyttsx3

engine = pyttsx3.init()

# 🔑 关键:手动设置语音
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)  # 使用第一个语音

engine.say("测试成功")
engine.runAndWait()

问题3:KeyError: None

原因:驱动初始化失败

解决

pip uninstall pyttsx3 -y
pip install pyttsx3==2.90
pip install pypiwin32

问题4:没有中文语音

解决

  1. 打开 Windows 设置 → 时间和语言 → 语音
  2. 点击 “添加语音”
  3. 搜索 “Chinese” 并安装
  4. 重启电脑

完整实战案例

案例1:智能朗读器(支持中英文切换)

import pyttsx3

class TextToSpeech:
    def __init__(self):
        self.engine = pyttsx3.init()
        self.voices = self.engine.getProperty('voices')
        
    def set_chinese(self):
        """切换到中文语音"""
        self.engine.setProperty('voice', self.voices[1].id)
        
    def set_english(self):
        """切换到英文语音"""
        self.engine.setProperty('voice', self.voices[0].id)
        
    def set_speed(self, rate=150):
        """设置语速"""
        self.engine.setProperty('rate', rate)
        
    def set_volume(self, volume=0.8):
        """设置音量"""
        self.engine.setProperty('volume', volume)
        
    def speak(self, text, lang='cn'):
        """朗读文本"""
        if lang == 'en':
            self.set_english()
        else:
            self.set_chinese()
        self.engine.say(text)
        self.engine.runAndWait()
        
    def save(self, text, filename='output.mp3'):
        """保存为音频文件"""
        self.engine.save_to_file(text, filename)
        self.engine.runAndWait()

# 🚀 使用示例
tts = TextToSpeech()

tts.speak("你好,欢迎使用Python文本转语音!")
tts.set_speed(120)
tts.speak("This is English voice, slower speed.")
tts.save("保存的音频测试", "test.mp3")

案例2:批量朗读文本文件

import pyttsx3

def read_file(filepath):
    engine = pyttsx3.init()
    engine.setProperty('voice', engine.getProperty('voices')[1].id)
    
    with open(filepath, 'r', encoding='utf-8') as f:
        text = f.read()
    
    engine.say(text)
    engine.runAndWait()

# 使用
read_file("article.txt")

总结

知识点命令/代码
安装pip install pyttsx3==2.90
初始化engine = pyttsx3.init()
说话engine.say("文本")
执行engine.runAndWait()
语速engine.setProperty('rate', 150)
音量engine.setProperty('volume', 0.8)
切换语音engine.setProperty('voice', voices[0].id)
保存文件engine.save_to_file("文本", "file.mp3")

延伸学习

特点适用场景
pyttsx3离线、可定制桌面应用、嵌入式
gTTS联网、音质好在线服务、API
edge-tts微软语音、自然高质量语音生成
pyttsx4pyttsx3 改进版未来替代方案

到此这篇关于从入门到实战详解Python文本转语音的完全指南的文章就介绍到这了,更多相关Python文本转语音内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现判断数组是否包含指定元素的方法

    python实现判断数组是否包含指定元素的方法

    这篇文章主要介绍了python实现判断数组是否包含指定元素的方法,涉及Python中in的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 利用OpenCV实现质心跟踪算法

    利用OpenCV实现质心跟踪算法

    质心跟踪算法不是正统的目标跟踪,而是在多目标跟踪中结合目标检测算法不同帧之间的相同目标做一个link。本文将利用OpenCV实现质心跟踪算法,感兴趣的可以试一试
    2022-01-01
  • 如何用Python中Tushare包轻松完成股票筛选(详细流程操作)

    如何用Python中Tushare包轻松完成股票筛选(详细流程操作)

    这篇文章主要介绍了如何用Python中Tushare包轻松完成股票筛选(详细流程操作),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python进阶篇之正则表达式常用语法总结

    Python进阶篇之正则表达式常用语法总结

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。本文为大家总结了一些正则表达式常用语法,希望有所帮助
    2022-08-08
  • 基于Linux系统中python matplotlib画图的中文显示问题的解决方法

    基于Linux系统中python matplotlib画图的中文显示问题的解决方法

    下面小编就为大家带来一篇基于Linux系统中python matplotlib画图的中文显示问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • python 去除txt文本中的空格、数字、特定字母等方法

    python 去除txt文本中的空格、数字、特定字母等方法

    今天小编就为大家分享一篇python 去除txt文本中的空格、数字、特定字母等方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Pandas中shift库的具体使用

    Pandas中shift库的具体使用

    shift函数是Pandas库中用于数据位移的函数,常用于时间序列数据的处理,本文主要介绍了Pandas中shift库的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Python实现量化模拟交易部署与风险管理控制详解

    Python实现量化模拟交易部署与风险管理控制详解

    这篇文章主要介绍了Python实现量化模拟交易部署与风险管理控制,在量化交易落地前,模拟交易是策略验证的安全沙箱,其核心价值在于用零成本环境暴露策略缺陷,以股票市场为例,同花顺与通达信模拟盘接口覆盖全品种行情与交易功能,但接口特性存在显著差异,需要的朋友可以参考下
    2026-02-02
  • Python游戏推箱子的实现

    Python游戏推箱子的实现

    这篇文章主要介绍了Python游戏推箱子的实现,推箱子游戏是一款可玩性极高的策略解谜手游,游戏中玩家将扮演一名可爱Q萌的角色,下面我们就看看看具体的实现过程吧,需要的小伙伴可以参考一下
    2021-12-12
  • 详解Python中元组的三个不常用特性

    详解Python中元组的三个不常用特性

    元组是Python中一种重要的内置数据类型。与列表一样,我们经常使用元组将多个对象保存为相应的数据容器。本文为大家总结了元组的三个不常用特性,感兴趣的小伙伴可以了解一下
    2022-07-07

最新评论