我们先安装需要的库pyttsx3文字朗读模块:
常用方法是在输入命令:pip install 所需的模块 -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com (使用国内的镜像网站)
输入命令:pip install pyttsx3 -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
输入命令(pip list)显示已安装的第三方模块,查看是否安装成功
若未安装成功,也可使用https://pypi.python.org网站包含的安装包,输入命令pip --trusted-host pypi.python.org install 安装包名字(pip --trusted-host pypi.python.org install pyttsx3)
然而我在运行时发生了报错,无法运行出现:AttributeError: partially initialized module 'pyttsx3' has no attribute 'init' (most likely due to a circular import),我们去谷歌翻译了一下(英语不好,狗头保命!)
翻译后:AttributeError:部分初始化的模块'pyttsx3'没有属性'init'(很可能是由于循环导入)
抓住翻译过来的意思,(很可能是由于循环导入)。撇了一眼文件的命名,就突然灵光一闪,咦!
我的命名是pyttsx3,而这就是我要对应使用的模块,难不成是模块名称重复造成。说干就干,马上修改文件的命名,不出所料的成功运行了。
具体为什么不能使用模块名进行文件命名,于是我百度了一下嘿嘿:
由此可见我们在命名是不应该使用模块名进行文件命名,否则python在查找模块时出现错误,只有将文件名pygame修改成任意非相同的名称即可解决。
既然我们是要让代码开口说话,那pyttsx3模块就不仅仅是只是只有普通一个朗读那么简单,我们可以进行语速控制、音量控制、更换发音人声音,以及可以将文本输出音频。
(一)语速控制:
rate = engine.getProperty('rate') #获取当前音频语速,范围一般为0-200,默认值为200
engine.setProperty('rate', 200) #改变语速
(二)音量控制:
volume = engine.getProperty('volume') #设置音量
engine.setProperty('volume',0.6) #范围一般为0.0~1.0 默认值为1.0
(一 + 二)语速音量同时控制:
import pyttsx3 #导包,调用pyttsx3模块
engine = pyttsx3.init() #初始化一个朗读引擎
engine.setProperty('volume', 0.5) #设置音量 范围为0.0-1.0 默认值为1.0
rate = engine.getProperty('rate') #获取当前音频语速,范围为0-200 默认值为200
engine.setProperty('rate', rate+100) #改变语速
engine.say("六十六岁刘老六,修了六十六座走马楼,楼上摆了六十六瓶苏合油。") #播放
engine.runAndWait() #运行并且等到播放完毕,没有本语句是没有声音的
engine.setProperty('volume', 0.9) #设置音量 范围为0.0-1.0 默认值为1.0
engine.setProperty('rate', rate) #默认语速为200
engine.say("六十六岁刘老六,修了六十六座走马楼,楼上摆了六十六瓶苏合油。") #模块阅读,中英文都可
engine.runAndWait() #运行并且等到播放完毕,没有本语句是没有声音的
print(rate)
(三)更换发音人声音:
系统内部声音,设置男性声音(voices[0].id)、设置女性声音(voices[1].id)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) #设置当前声音为“男性”,当前声音可读中文也可读英文
engine.setProperty('voice', voices[1].id) #设置当前声音为“女性”,当前声音不可读中文
eg:
voices = engine.getProperty('voices')
for vice in voices:
engine.setProperty('voice', voices[0].id)
engine.say('Hello World. Hello Python,byebye!')
engine.say('阿巴阿巴阿巴阿巴阿巴阿巴阿巴!')
engine.runAndWait()
(四)保存到..文件:
import pyttsx3
engine = pyttsx3.init()
engine.save_to_file("你好",'D:/xxx.mp3') #朗读音频保存为MP3文件
engine.runAndWait()