在现代应用程序中,文本转语音(Text-to-Speech, TTS)技术越来越受到重视。pyttsx3库可以帮助你轻松实现文本转语音功能。
在各种操作系统上, 会使用系统默认的语音合成器(Windows:SAPI5,Linux/macOS:espeak)
一、安装
pip install pyttsx3
安装好,我们创建一个main.py文件,输入下面代码:
import pyttsx3
pyttsx3.speak("I will speak this text")
运行脚本,就能朗读文本内容。
python main.py
二、具体执行
2.1、初始化语音引擎
engine = pyttsx3.init()
# windows
engine = pyttsx3.init(driverName="sapi5")
# linux, 需要编译安装espeak支持
engine = pyttsx3.init(driverName="espeak")
2.2 设置语音参数
rate = engine.getProperty('rate') # 获取当前语速(默认约200)
engine.setProperty(
'rate', 125) # 设置较慢的语速(125字/分钟)
volume = engine.getProperty('volume') # 获取当前音量(0.0-1.0)
engine.setProperty('volume', 1.0) # 设置最大音量
voices = engine.getProperty('voices') # 获取可用声音列表
for voice in voices:
print(f"支持的声音列表: {voice}")
# 输出如下内容,我们可以中文,英文等。
.0
name=Microsoft Huihui Desktop - Chinese (Simplified)
languages=['zh-CN']
gender=Female
age=Adult>
.0
name=Microsoft Zira Desktop - English (United States)
languages=['en-US']
gender=Female
age=Adult>
2.3 朗读文本
engine.say("Hello World!") # 添加要朗读的文本
engine.runAndWait() # 执行并等待完成
2.4 保存语音文件
engine.save_to_file('Hello World', 'test.mp3')
engine.runAndWait() # 必须调用才能生成文件
三、优化处理
通过上面步骤,我们可以在电脑上读取文本内容了。 我们可以设置中文声音,调慢语速朗读。
engine = pyttsx3.init(driverName="sapi5")
# 设置中文女生声音
voices = engine.getProperty('voices')
for voice in voices:
if "Chinese" in voice.name:
engine.setProperty('voice', voice.id)
# 设置语速
engine.setProperty('rate', 125)
engine.say("你好,世界")
engine.runAndWait()
pyttsx3提供了事件回调机制,可以在语音开始、结束或发生错误时执行特定操作:
def onStart(name):
print(f'开始: {name}')
def onWord(name, location, length):
print(f'词: {name}, 位置: {location}, 长度: {length}')
def onEnd(name, completed):
print(f'结束: {name}, 完成: {completed}')
def onError(name, exception):
print(f"错误: {name}, 异常: {exception}")
# 连接回调函数
engine = pyttsx3.init()
engine.connect('started-utterance', onStart)
engine.connect('started-word', onWord)
engine.connect('finished-utterance', onEnd)
engine.connect('error', onError)
engine.say('这段文本将触发回调函数')
engine.runAndWait()
四、「注意事项」
- 「阻塞与非阻塞」:
runAndWait() 是阻塞方法,确保语音播放完毕后再继续程序。 - 「异步支持」:可通过事件循环实现异步(参考
engine.startLoop())。 - 「跨平台差异」:不同系统的语音质量和可用声音可能不同,Windows 通常支持更丰富的声音。
-
「中文支持」:部分系统需额外配置中文语音库(如 Linux 安装中文语音包)。
五、「常见问题」
- 「报错
No module named 'pyttsx3'」:确认是否已安装库,或尝试重启 Python 环境。 - 「无法播放中文」:检查系统是否支持中文语音(Windows 可在“设置-语音”中管理语音包)。
- 「保存文件失败」:确保路径可写,或尝试使用绝对路径。
通过上述步骤,你可以轻松使用 pyttsx3 实现文本转语音功能。