pyttsx3(Python Text-to-Speech eXtended version 3)是一个跨平台的 Python 库,用于将文本转换为语音(Text-to-Speech, TTS)。它可以在不依赖互联网连接的情况下,在本地将文本朗读出来,支持 Windows、macOS 和 Linux 系统。

一、安装

pip install pyttsx3

如果使用的是Linux系统,还需要额外安装espeak

sudo apt-get install espeak

如果语音输出还是不能正常工作,那么就需要安装espeak-ng和libespeak1

 sudo apt update && sudo apt install espeak-ng libespeak1

二、使用

官方PyPI链接:官方介绍

1、简单的快速使用示例:

import pyttsx3

# 初始化引擎
engine = pyttsx3.init()

# 设置要朗读的文本
engine.say("你好,我是Python文本转语音引擎")

# 开始朗读并等待完成
engine.runAndWait()

2、关键用法速查表

名称 类型 作用 用法示例 备注 / 返回值
pyttsx3.init() 函数 初始化 TTS 引擎(离线) engine = pyttsx3.init() 返回 Engine 实例;自动选择平台后端(SAPI5/macOS/Linux)
pyttsx3.Engine TTS 引擎主对象 由 init() 返回 所有语音操作均通过此对象进行
engine.say(text) 方法 将文本加入播报队列 engine.say("Hello") 非阻塞;需调用 runAndWait() 才会发声
engine.save_to_file(text, filename) 方法 将文本合成并保存为音频文件 engine.save_to_file("Hi", "output.wav") 文件格式通常为 .wav必须调用 runAndWait() 才生效
engine.runAndWait() 方法 执行队列中的所有任务并等待完成 engine.runAndWait() 阻塞式调用;用于触发播放或保存
engine.stop() 方法 立即停止当前及后续播报 engine.stop() 中断正在运行的 runAndWait()
engine.getProperty(name) 方法 获取引擎属性值 rate = engine.getProperty('rate') 常用属性:'rate'(语速)、'volume'(音量 0.0–1.0)、'voices'(语音列表)
engine.setProperty(name, value) 方法 设置引擎属性 engine.setProperty('rate', 200) 属性名区分大小写;设置无效值可能被忽略
engine.getProperty('voices') 方法 获取系统支持的语音列表 voices = engine.getProperty('voices') 返回 list[Voice];每个 Voice 包含 idnamelanguages 等
engine.setProperty('voice', voice_id) 方法 切换语音 engine.setProperty('voice', voices[0].id) voice_id 必须来自有效 Voice.id
Voice.id 属性 语音唯一标识符 v.id 用于 setProperty('voice', ...);不可读但可设
Voice.name 属性 语音显示名称 v.name 如 'Microsoft Huihui Desktop - Chinese (Simplified)'
Voice.languages 属性 支持的语言标签 v.languages 可能为 ['zh-CN'][b'\x05z\x04h\x04'](macOS 编码)等;判断中文需谨慎
engine.connect(event, callback) 方法 绑定播报事件回调 engine.connect('finished-utterance', on_end) 事件类型:
• 'started-utterance'
• 'finished-utterance'
• 'started-word'(部分平台支持)
engine.startLoop(useDriverLoop=False)
engine.endLoop()
方法 手动控制事件循环(高级) engine.startLoop(False)
# 自定义逻辑
engine.endLoop()
一般不需要使用;仅在 GUI 或异步环境中替代 runAndWait()

3、设置参数和音色

import pyttsx3

# 初始化 TTS 引擎
engine = pyttsx3.init()

# 设置语音参数(可选)
engine.setProperty('rate', 150)    # 语速(默认约200)
engine.setProperty('volume', 0.9)  # 音量(0.0 到 1.0)

# 获取可用语音列表
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)  # 选择第二个语音(通常是女声)

# 朗读文本
engine.say("你好,欢迎使用 pyttsx3!")
engine.runAndWait()  # 等待语音播放完成
Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐