利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

其實TTS播報這事在智能家居玩家群體裡時非常稀鬆平常的一件事,玩的人也非常多。一般以兩個流派為主,一個是DLNA串流播報,不過因為國內主(PIAN)流(YI)的智能音箱對DLNA的支持基本都不是很好,例如天貓精靈是先天殘疾。小愛同學是後天被打殘的,至今未愈。而叮咚依舊是”智障“本身,DLNA之後會出現不可預期的狀況。所以更多人選擇了第二個流派,就是藍牙播報,而藍牙播報的話,其實對音箱是不是智能的就毫無要求了,哪怕是普通的藍牙音箱也可以勝任。但是,無論是DLNA還是藍牙連接,都需要我們先自行做好TTS的轉換,也就是先要自己把文字內容轉化成音頻文件,然後系統再將音頻文件串流到音箱上進行播報。當然,TTS這部分其實也是有多個開放平臺可以使用的,例如百度和微軟。這方面的文章其實網上也有許多,不過今天在這要說的是使用一個非(YOU)主(DIAN)流(GUI)的智能音箱——若琪自帶的WEBHOOK來實現TTS語音播報以及偽主動詢問的案例。

一、TTS播報有什麼用?

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

在很長的時間裡,我一直覺得TTS播報這事是沒有啥意義的,所以這功能我也一直沒有去仔細研究。因為我自己更期望的功能是主動問詢,比如當你在家,氣溫有點熱的時候,音箱就能主動詢問說”是否需要打開空調?“當然,空調只是舉例,是冷是熱我自己會不知道麼,還需要你來提醒。但是在domoticz群裡交流的時候,@blindlight 點化了下,說是如果連TTS都不做,從何去談主動詢問。並且即使不能實現主動詢問,語音播報也能作為自動提醒功能,例如室外空氣質量較差,TTS就可以提醒你關窗。出門時候,TTS也能提醒天氣情況等等。當然,還是那句話,不管你用不用,技術就在那,但是千萬別為了用技術而去用,從而導致音箱整天就在那呱噪的想個不停,例如我目前在用的其實只有回家歡迎播報並詢問是否需要打開客廳電視以及抽油煙機和淨化器自動開啟告知,因為新風系統的自動控制,家裡顆粒物汙染除了做菜時會高以外,其餘時刻都挺好,而如果不是在做菜或有人抽菸啥的,PM濃度上升必然有蹊蹺,所以適當提醒,可以杜絕某些隱患(例如鍋燒糊了)。

二、如何利用若琪實現TTS播報?

雖然若琪在國內智能家居生態圈裡的佔比並不十分大(主要還是貴),但是若琪官方卻提供了非常完善的API可以方便大家折騰。例如這次TTS使用的技能就是官方提供的WEBHOOK功能。詳細點擊連接

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

其實根據官方說明,這個WEBHOOK的用法非常簡單,就是通過http post相關信息至指定URL,然後智能音箱執行指定操作,除了TTS播報外,還能執行ASR指令(利用文本來執行指令),串流音樂。這兒我們只需要在若琪APP-家庭-設置(右上角小齒輪)-Webhook裡創建一條新的Webhook並記錄下其URL:

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

然後再去我的頁面抄錄下TTS播報所使用的若琪的序列號。如果你有多個若琪的話,可以全部記錄下來,播報時可以通過指定序列號來選擇不同的設備進行播報:

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

準備工作做完了之後,我們就可以找一個在線http post測試的網頁進行測試:

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

如果看到Response裡面出現Congratulations! You've triggered the webhook就說明一切就緒,你也可以打開若琪app查看:

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

”可以看到各位值友,大家好~i“已被若琪正確播報,不過我多打了i。下面進入實戰應用。

三、實戰應用

在本文前段就提過,若琪的價格相對天貓,叮咚,甚至小愛來說都是偏貴的。而根據樓主的一番查詢,用於播報最便宜的若琪設備是若琪梵星。這款產品在京東的售價為399元,並且標明為合作專供。這主要是因為梵星這款產品並不是直接面向消費者的,一般都是合作定製款,所以我們可以轉戰”閒魚“

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

我是在閒魚上花了200元收了一臺全新未拆封的,基本也是梵星在閒魚平臺的均價了。要是拆封二手的價格還會更低一些,不過也就差一杯咖啡錢。

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

收到貨,和賣家描述一致,原封未拆,是電信版的,據說是電信套餐送的,為啥我就沒?回頭抽空了也去電信問問。

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

側邊寫的清清楚楚,這是一臺智能語音遙控器,並非智能音箱,不過其內容資源並沒有閹割,可能只是因為音質太差,不配使用音箱這個名字。

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

打開包裝,其簡介也符合遙控器定位,只宣傳語音控制功能。

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

整套遙控器包括主機,數據線,電源和說明書。

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

主機上貼膜有簡單的使用說明。

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

背面銘牌再次強調,我只是個遙控器。

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

電源接口與時俱進用了TYPE C,以及還有一個3.5mm立體聲耳機接口,可以連接其他音箱。

聯網配置啥的就不說了,語音提示,step by step就好。我配好了之後就把它粘在冰箱上了:

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

白色配白色,毫不起眼,真是完美。

接著就是系統了,如果你是home assitant玩家,那麼祝賀你,hassbian論壇上有各種現成插件,直接配置使用就好了,例如囧大的:

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

而即使你是domoticz玩家,也沒關係,因為py腳本我已經給你準備好了:

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

代碼不長,就不給文件了,自己注意空格問題。第二段elif的內容其實與第一段相同,只是在text字段多了he, siri的字段,用於喚醒siri,假裝是主動詢問。這裡的he並不是筆誤,實測hey, siri無法喚醒siri。你也可以把這個換成天貓精靈,小愛同學,叮咚,叮咚等你需要主動喚醒的其他智能音箱。而在執行時,domo內腳本如下:

不觸發siri的命令:

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

觸發siri的命令:

利用若琪WEBHOOK實現TTS主動播報及偽主動問詢

中間的變量可以自己設。基本上就是播報和主動詢問,這裡主動詢問的話還需要另一臺智能音箱來執行,略顯複雜,但是我就是這麼任性。當然,如果若琪的接口ASR能設定一個文本喚醒詞,通過webhook喚醒音箱的話,就可以直接使用一臺若琪來實現了。

至於主動詢問,開始時我的思路是播報時就將相關的設備開關設定到待機狀態,然後SIRI裡有一個場景就叫”好的“這樣詢問完成後,我只要回答”好的“,相應設備就執行動作。不過在配置的時候發現,其實直接回復”打開XX“也並不比”好的“麻煩,就給省了。而關於若琪,其實單單作為TTS播報設備來說有點浪費,因為其綁定QQ音樂,資源相對還是比較豐富的,不過本篇文章主要還是講解TTS的,所以其餘內容就不做展開。

當然,Webhook裡還有個ASR功能,只要將腳本里"type" : "tts"改成"type" : "asr",text的內容為指令就能執行,例如每天早上起來後可以觸發”今天天氣怎麼樣?“的asr指令,若琪就會為您播報當天天氣,提醒出行注意事項。

最後祝大家玩的開心。


分享到:


相關文章: