python每隔30s检查一次_用Python写一个“离线语音提示器”

0f4b9dabddd2ef94e6aec096054218de.png

最近迎来了考试季,万能的信息技术老师,再次被派到各个监控室、广播室等等处理各种信号。由于这项事务性工作,流程虽然简单,但责任重大:既不能过分紧张,也不能过于松散。所以,考试期间写了个单机的语言提醒小程序,功能很简单,就是每隔一会提醒一下下一次铃声的时间。这样,我们就多了个“AI”小助手,来提醒我们别忘记了工作。

环境:

Win7系统,外网未连接,主机接有返听音箱。

准备:

这里明显要用语音合成,既然是离线状态,肯定没法调用百度AI之类的接口。装一个离线语音包又有点兴师动众,所以干脆我们就用微软自带的Speech SDK吧。注意,很多Ghost版的系统,可能去掉了这块功能,需要重新安装。经过上网学习,我们发现只需安装pyttsx3这个库。

思路:

把所有的铃声,放到一个列表里。然后遍历列表,找到当前时间对应的下一个打铃的时间。然后判读相差的“分”数(并没有精确到秒,只是是大致提醒),调用语音合成输出。

编码:

import datetime,timeimport pyttsx3engine = pyttsx3.init()ringTimes=["8:30","9:00","11:00","14:00","14:30","15:30","15:55","16:20","17:20"]def alarmTime(): currTime=datetime.datetime.now() h,m,s=currTime.hour,currTime.minute,currTime.second for t in ringTimes: t2=int(t.split(':')[0])*60+int(t.split(':')[1]) t1=h*60+m if t1and t2-t1<=30 and m%5==0: tip="距离下一个铃声还有不到%d分钟" % (t2-t1) print(tip) engine.say(tip) engine.runAndWait() breakwhile True: alarmTime() time.sleep(60)

效果:

效果就是铃声前N分钟,每隔m分钟,比如铃声前半小时每5分钟提示一次。这些,都可以自由修改。于是就听到我们预想的播报啦。

你也可以适当修改一下生成的语言语速:

c8a836aa73c82ca988173dfda84923df.png

后记:

写这些小玩意,实际是Python比较专长的东西。毕竟有很多现成的库可以直接调用,写起来也非常简单,只需要简单组织一下逻辑就好。例如每隔一分钟去查询是不是5的倍数的分,然后大致的提醒我们,这就足够了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值