Python实现文本转语音可以借助pyttsx3库完成,这是一个跨平台的离线文本转语音工具,支持Windows、macOS、Linux系统,不需要依赖外部网络服务,使用起来非常便捷。

pyttsx3库的安装
首先需要通过pip命令安装pyttsx3库,执行以下命令即可完成安装:
pip install pyttsx3
如果是Windows系统,安装完成后可以直接使用,如果是Linux系统,还需要额外安装espeak或者festival等语音引擎,否则可能会出现运行报错的情况。
基础文本转语音实现
安装完成后,就可以编写简单的代码实现文本转语音功能,基础实现步骤如下:
- 导入pyttsx3库
- 初始化语音引擎
- 设置要转换的文本内容
- 执行语音转换并等待播放完成
以下是完整的基础示例代码:
# 导入pyttsx3库 import pyttsx3 # 初始化语音引擎 engine = pyttsx3.init() # 设置要转换的文本内容 text = "欢迎学习Python文本转语音教程,这是基础演示内容" # 将文本添加到语音队列 engine.say(text) # 等待所有语音任务执行完成 engine.runAndWait()
运行上述代码后,系统会自动调用默认的语音引擎播放对应的文本内容,不需要额外配置就能直接使用。
常用配置调整
pyttsx3支持对语音的语速、音量、发音人等参数进行调整,满足不同的使用需求。
调整语速
默认语速可能不符合需求,可以通过setProperty方法调整语速,语速值越大,说话速度越快,默认语速一般是200左右。
import pyttsx3
engine = pyttsx3.init()
# 获取当前默认语速
default_rate = engine.getProperty("rate")
print(f"默认语速为:{default_rate}")
# 设置语速为150,比默认稍慢
engine.setProperty("rate", 150)
engine.say("这是调整语速后的语音演示内容")
engine.runAndWait()
调整音量
音量参数的取值范围是0.0到1.0,0.0表示静音,1.0表示最大音量,默认音量通常为1.0。
import pyttsx3
engine = pyttsx3.init()
# 获取当前默认音量
default_volume = engine.getProperty("volume")
print(f"默认音量为:{default_volume}")
# 设置音量为0.8
engine.setProperty("volume", 0.8)
engine.say("这是调整音量后的语音演示内容")
engine.runAndWait()
选择发音人
系统通常会自带多个发音人,比如男声、女声,可以通过获取发音人列表后选择对应的发音人。
import pyttsx3
engine = pyttsx3.init()
# 获取所有可用的发音人
voices = engine.getProperty("voices")
# 打印所有发音人信息
for index, voice in enumerate(voices):
print(f"发音人{index}:{voice.name},ID:{voice.id}")
# 选择第一个发音人(通常是男声)
engine.setProperty("voice", voices[0].id)
engine.say("这是第一个发音人播放的内容")
engine.runAndWait()
# 选择第二个发音人(通常是女声)
if len(voices) > 1:
engine.setProperty("voice", voices[1].id)
engine.say("这是第二个发音人播放的内容")
engine.runAndWait()
将语音保存为文件
除了直接播放语音,pyttsx3还支持将转换后的语音保存为MP3或者WAV格式的文件,方便后续使用。
import pyttsx3
engine = pyttsx3.init()
# 要转换的文本内容
text = "这是要保存到文件中的语音内容"
# 将语音保存到指定路径的文件,支持mp3、wav等格式
engine.save_to_file(text, "output.mp3")
# 等待保存完成
engine.runAndWait()
print("语音文件保存完成")
常见问题说明
在使用pyttsx3的过程中,可能会遇到一些问题,以下是一些常见问题的解决方法:
- 如果运行代码时没有声音,首先检查系统音量是否开启,其次检查是否正确调用了runAndWait方法,该方法必须调用才会执行语音任务。
- Linux系统下运行报错,一般是缺少语音引擎,安装espeak即可解决,执行命令sudo apt-get install espeak。
- 如果需要更复杂的语音效果,pyttsx3的功能相对基础,有更高需求可以考虑使用其他在线TTS服务或者更专业的语音库。