pyttsx3文本转语音使用指南
以下是 pyttsx3 的详细使用说明,这是一个 Python 文本转语音(TTS)库,支持离线使用且跨平台(Windows、Linux、macOS)。
安装
pip install pyttsx3
注意:
- Linux 系统可能需要安装依赖:
espeak或libespeak(例如 Ubuntu/Debian:sudo apt install espeak)。 - macOS 可能需要 Xcode 命令行工具。
基础使用
1. 初始化引擎
import pyttsx3
# 初始化 TTS 引擎
engine = pyttsx3.init()
2. 朗读文本
engine.say("你好,欢迎使用 pyttsx3 文本转语音库。")
engine.runAndWait() # 阻塞程序直到语音播放完成
调整语音参数
1. 获取当前属性
# 获取语速(默认值通常为 200)
rate = engine.getProperty('rate')
print(f"当前语速: {rate}")
# 获取音量(范围 0.0~1.0)
volume = engine.getProperty('volume')
print(f"当前音量: {volume}")
# 获取当前使用的声音
voices = engine.getProperty('voices')
current_voice = engine.getProperty('voice')
print(f"当前声音: {current_voice}")
2. 设置属性
# 设置语速(值越小语速越慢)
engine.setProperty('rate', 150)
# 设置音量(0.0~1.0)
engine.setProperty('volume', 0.8)
# 设置声音(通过索引选择不同语音)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) # 选择第一个声音
切换不同声音
不同系统支持的声音类型:
- Windows: SAPI5 驱动,通常包含多种系统语音(如中文、英文)。
- Linux:
espeak驱动,需安装额外语音包支持中文。 - macOS: NSSpeechSynthesizer 驱动。
# 列出所有可用声音
voices = engine.getProperty('voices')
for idx, voice in enumerate(voices):
print(f"声音 {idx}: {voice.name} | 语言: {voice.languages}")
# 选择特定声音(例如第二个)
engine.setProperty('voice', voices[1].id)
保存语音到文件
# 保存为音频文件(格式取决于系统,Windows 通常为 .wav)
engine.save_to_file("这是要保存的文本", "output.mp3")
engine.runAndWait() # 必须调用以生成文件
注意:部分系统可能不支持直接保存为 MP3,可尝试保存为 WAV 格式。
完整示例
import pyttsx3
# 初始化引擎
engine = pyttsx3.init()
# 设置参数
engine.setProperty('rate', 150)
engine.setProperty('volume', 0.9)
# 切换声音(示例:选择第二个声音)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)
# 朗读文本
engine.say("你好,这是一个测试语句。")
engine.say("Hello, this is a test sentence.")
# 保存为文件
engine.save_to_file("保存这段语音到文件。", "output.wav")
# 等待所有任务完成
engine.runAndWait()
注意事项
- 阻塞与非阻塞:
runAndWait()是阻塞方法,确保语音播放完毕后再继续程序。 - 异步支持:可通过事件循环实现异步(参考
engine.startLoop())。 - 跨平台差异:不同系统的语音质量和可用声音可能不同,Windows 通常支持更丰富的声音。
- 中文支持:部分系统需额外配置中文语音库(如 Linux 安装中文语音包)。
常见问题
- 报错
No module named 'pyttsx3':确认是否已安装库,或尝试重启 Python 环境。 - 无法播放中文:检查系统是否支持中文语音(Windows 可在“设置-语音”中管理语音包)。
- 保存文件失败:确保路径可写,或尝试使用绝对路径。
通过上述步骤,你可以轻松使用 pyttsx3 实现文本转语音功能。
浙公网安备 33010602011771号