会说话的代码 Python pyttsx3,及AttributeError:partially initialized module......(......)报错,解决方法

安装pyttsx3

我们先安装需要的库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)

使用VsCode编辑器,敲出一个简单的示例:

然而我在运行时发生了报错,无法运行出现: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()

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值