【学习心得】Python好库推荐——pyttsx3
pyttsx3是一个跨平台的Python文本转语音库,支持Windows、macOS和Linux系统。通过pip install pyttsx3安装后,即可在本地实现TTS功能,无需联网。
·
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 包含 id, name, languages 等 |
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() # 等待语音播放完成更多推荐



所有评论(0)