下面是“pyttsx3实现中文文字转语音的方法”的完整攻略:
首先,需要安装pyttsx3,可以使用pip安装:
pip install pyttsx3
接着,创建pyttsx3的Engine实例。Engine是pyttsx3中的核心类,负责把文字转换成语音。可以使用如下代码创建一个Engine实例:
import pyttsx3
engine = pyttsx3.init()
Engine创建好后,可以进行一些配置。例如,设置语音的名称、语速、音量等。可以使用如下方法进行配置:
voices = engine.getProperty('voices') # 获取所有的语音名称,Windows上有两种:'Microsoft Zira' 和 'Microsoft David'。在Linux上通常只有一个。
engine.setProperty('voice', voices[0].id) # 设置使用第一个语音名称
engine.setProperty('rate', 150) # 设置语速为150
engine.setProperty('volume', 0.9) # 设置音量为0.9
Engine实例创建好并且配置好后,就可以开始把文字转换成语音了。可以使用如下代码完成文字转换:
engine.say('你好,欢迎来到我的网站!')
engine.runAndWait()
这段代码会把“你好,欢迎来到我的网站!”这个字符串转换成语音,然后播放出来。
下面展示一个完整的示例,代码可以将一个HTML文件中的文字内容读取出来,然后使用pyttsx3转换成语音并播放出来。
from bs4 import BeautifulSoup
import pyttsx3
# 读取HTML文件
with open('example.html', 'r', encoding='utf-8') as f:
html = f.read()
# 使用BeautifulSoup解析HTML文件
soup = BeautifulSoup(html, 'html.parser')
# 获取HTML中的文字内容
text = soup.get_text().strip()
# 初始化Engine实例
engine = pyttsx3.init()
# 设置语音参数
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)
engine.setProperty('rate', 150)
engine.setProperty('volume', 0.9)
# 把文字转换成语音并播放
engine.say(text)
engine.runAndWait()
下面的示例代码,将一个列表中的文字内容批量转换成语音并保存成MP3文件。
import pyttsx3
# 待转换的文字列表
text_list = [
'你好,欢迎来到我的网站!',
'今天天气真好啊!',
'Python是一门非常好用的编程语言!'
]
# 初始化Engine实例
engine = pyttsx3.init()
# 设置语音参数
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)
engine.setProperty('rate', 150)
engine.setProperty('volume', 0.9)
# 遍历列表,把每条文字转换成语音并保存成MP3文件
for i, text in enumerate(text_list):
engine.save_to_file(text, f'{i}.mp3')
engine.runAndWait()
这段代码会生成三个MP3文件分别对应列表中的三条文字。注意,此时需要安装pydub库,因为pyttsx3自带的保存MP3文件功能可能存在问题。安装pydub可以使用如下命令:
pip install pydub