昨天没事干用百度语音调戏了一波室友,感觉很好玩,所以今天就想着模拟一下我们老师上课的点名系统(当然是渣渣版的啦)大致了解了一下后决定还是用大python吧,毕竟真的很省事。
话不多说看代码:
import pyttsx3
import time
engine = pyttsx3.init()
with open("name.txt","r") as f:
fnamelist = f.readlines()
engine.say('二零一八枪毙名单点名开始')
engine.runAndWait()
time.sleep(1)
for S in fnamelist:
engine.say(S)
engine.runAndWait()
time.sleep(1)
engine.say('点名完毕')
engine.runAndWait()
注意2018会读成“两千零一十八”所以这里写成“二零一八”。
name.txt为名册。
小问题及解决方案:
1:很多人可能会在网上看教程讲的是pyttsx,这个我也安装了,不过会出现“no module named ‘engine’”这样的问题。而pyttsx3是可以直接用的(仅限于使用python3的,因为python2我没用过我也不清楚)。
2:网上很多人的样例代码中都有这么两行
import sys
sys.setdefaultencoding('utf8')
然而python3默认utf-8在新版本的python中已经不支持setdefaultencoding函数了。所以不用写,否则会报错:module 'sys' has no attribute 'setdefaultencoding'
另外reload()也是同上,在新版本中不再支持了。