前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 環境: Win7系統,外網未連接,主機接有返聽音箱。 準備: 這裡明顯要用語音合成,既然是離線狀態,肯定沒法調用百度AI之類的介面。裝一個離線語音包又有點興師動眾,所以乾脆我 ...
前言
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。
環境:
Win7系統,外網未連接,主機接有返聽音箱。
準備:
這裡明顯要用語音合成,既然是離線狀態,肯定沒法調用百度AI之類的介面。裝一個離線語音包又有點興師動眾,所以乾脆我們就用微軟自帶的Speech SDK吧。註意,很多Ghost版的系統,可能去掉了這塊功能,需要重新安裝。經過上網學習,我們發現只需安裝pyttsx3這個庫。
思路:
把所有的鈴聲,放到一個列表裡。然後遍歷列表,找到當前時間對應的下一個打鈴的時間。然後判讀相差的“分”數(並沒有精確到秒,只是是大致提醒),調用語音合成輸出。
編碼:
import datetime,time import pyttsx3 engine = 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 t1<t2 and t2-t1<=30 and m%5==0: tip="距離下一個鈴聲還有不到%d分鐘" % (t2-t1) print(tip) engine.say(tip) engine.runAndWait() break while True: alarmTime() time.sleep(60)
效果:
效果就是鈴聲前N分鐘,每隔m分鐘,比如鈴聲前半小時每5分鐘提示一次。這些,都可以自由修改。於是就聽到我們預想的播報啦。
你也可以適當修改一下生成的語言語速:
後記:
寫這些小玩意,實際是Python比較專長的東西。畢竟有很多現成的庫可以直接調用,寫起來也非常簡單,只需要簡單組織一下邏輯就好。例如每隔一分鐘去查詢是不是5的倍數的分,然後大致的提醒我們,這就足夠了。