伴隨著智能硬件的爆發,設備的交互方式也逐漸的發生變化,語音交互也變得越來越方便,特別是智能音響等無屏設備語音交互也就是其唯一交互方式,語音交互簡單可以看作是前端的語音拾音、后端的語音識別、識別后根據語音提供相應的服務。語音交互通常不會自己研發,使用對應研發廠商提供支持,甚至小米,小度也是借助于三方方案提供商。三方方案提供商國內通常是科大訊飛、百度、聲智、思必馳四家,科大訊飛和百度更多是語音識別,聲智和思必馳則是在語音識別的基礎上以技能的方式提供三方服務,比如常見的音樂,電臺,新聞等,通常包括官方技能+三方基于官方平臺提供技能+團隊自研技能,兩家技能大同小異。本文章除了語音識別外還包括技能服務,所以科大訊飛和百度暫且不聊,重點在聲智和思必馳,還有就是更多是做開發記錄和要點記錄,具體的流程可以去后面的參考文章去詳細查看。
- 開發流程(兩者整體開發流程基本相似,技能差異點還多一些,所以不再分開描述)
- 對應的開發平臺注冊帳號且進行實名認證(吐槽一下兩者的開放平臺都不好找,特別是思必馳,思必馳官網的dui對話定制平臺則是其開放平臺,聲智則是叫開發框架,實名認證包括個人認證和公司認證,建議直接公司認證,必須認證不然后續無法購買服務)
- 創建設備并發布設備,發布成功后可以集成測試,發布設備前必須認證成功,不然一直待審核中,創建設備包括基本信息配置、技能配置、認證發布過程,思必馳創建過程中還可以配置麥的類型及其遠場、近場、回音等信息和退出語料、空識別/錯誤識別語料等
- 思必馳在主喚醒詞的基礎上可以免費額外配置一個喚醒詞,聲智客服說可以配置但是后臺未找到配置地方,付費都可以配置多個喚醒詞,具體價格可以詳詢此處就不暴露了。
- 技能配置:包括官方技能+三方技能+自研技能,根據產品需求盡可能使用已提供技能,若沒有則自研技能,具體的技能開發參考下面。需要注意的是聲智sdk針對音頻播放等進行了集成(借助于exoplayer),設備集成后可以直接播放音頻文件,思必馳則是提供了對應的音頻信息需要產品額外進行集成,具體可以參考產品需求進行選擇。
- 設備發布成功后則進行sdk集成開發,需要注意的是聲智引入的三方jar包比較多需要進行jar包沖突處理。具體不詳述,有問題可以評論溝通。
- 聲智中技能的開發
- 技能開發包括:基本信息配置+交互模型配置+服務部署+技能發布四個流程,基本信息配置和技能發布不詳述改填填按章辦事即可,重點描述交互模型和服務部署。
- 交互模型主要是意圖的配置,智能語音交互包含語音識別和語義識別,語音識別更多是硬件麥的識別,語義識別則更多是依賴于技能中的意圖,即一個技能可以做哪些事也是通過意圖定義的,比如提高音量則是一個意圖,亮度調整也是一個意圖。
- 聲智技能可以配置一個技能,技能中配置多個意圖,也可以拆分技能,單技能對應自己技能范圍內的意圖,比如一個技能XX控制則對應的語音、亮度、頁面跳轉等都配置成為意圖,也可以音量控制配置成技能對應音量相關的意圖。
- 意圖的配置包含幾個術語:詞典,語義槽,語料,意圖確認
- 詞典:見名思義,可以理解為詞庫,定義對應的詞語且每一個詞語可以定義多個同義詞,聲智系統識別時針對詞語和同義詞進行識別,詞典中的詞語可以在意圖語料配置中引用使用且可以所有意圖中引用使用,另外語料中的詞典中的詞語會被自動識別成為語義槽,在接口和返回數據中可以作為字段使用。還有就是聲智提供了系統詞典比如國家,城市,動物,之屋等。
- 語義槽:前面有描述詞典中的詞語在語料中會自動成為語義槽,語義槽可以裂解為語料中的核心語義詞語,通過語義槽可以簡單明了的識別改意圖作何操作,還有就是語義槽詞語會被單獨識別成為字段用于意圖服務接口處理和返回到前端業務處理等比如定義一個語義槽為系統數字,這個數字則會被特殊識別為字段用于業務邏輯。
- 語料:意圖的識別語音,可以配置多條,即語音識別后文本相似則指向改意圖,可以使用詞典中詞語。
- 意圖確認:語音交互多輪交互中第一次識別成功后配置語料進行確認識別是否準確,比如提升音量識別成功后根據配置的語料校驗是否提升音量,可選配置。
- 意圖的配置:語料配置+語義槽的配置(系統會自動識別)+意圖確認。
- 意圖配置完成后需要部署服務:聲智提供了兩種服務部署方式:自己搭建服務部署(有提供sdk開發部署到自己服務器或者聲智服務器)用于復雜情形的業務處理通常涉及到本身產品服務比如機票售賣涉及到自己服務數據庫的數據及其用戶的處理,簡單命令型的服務聲智提供了簡單的代碼編輯器編輯并發布服務,開發語言為node.js和Python,本人不太熟悉這兩種語言 但是通常情況下代碼也極其簡單,比著葫蘆畫票即可,編輯完成后可以發布發布后可以直接測試。
- 聲智針對意圖提供了響應模板,聲智針對模板封裝了其ui樣式,用戶可以針對意圖配置對應的響應模板,設備端可以監聽響應模板做一些邏輯操作,不配置響應模板設備端針對此意圖不會響應到代碼端但會播報配置的語音文案。響應模板可以傳遞一些數據到設備端用于校驗邏輯等操作。
- 思必馳中的技能的開發
- 技能開發包括:基本信息配置+ 創建任務+針對任務創建意圖并訓練意圖+針對意圖配置控件和對話并保存對話+發布技能(發布技能可以配置快捷任務和快捷意圖即通過技能語料識別對應的任務和意圖,通常配置歡迎語:比如XXX技能:語料:打開XXX技能:任務和意圖指向單個任務和意圖:可以配置為歡迎使用XXX技能 不建議執行對應的功能任務和意圖)
- 交互模型主要是意圖的配置,智能語音交互包含語音識別和語義識別,語音識別更多是硬件麥的識別,語義識別則更多是依賴于技能中的意圖,即一個技能可以做哪些事也是通過意圖定義的,比如提高音量則是一個意圖,亮度調整也是一個意圖。
- 思必馳技能和聲智不太一樣,思必馳技能和意圖之間有添加了一層叫做任務,即一個技能可以創建多個任務,每個任務又可以創建多個意圖,這樣產品通用型任務可以創建成一個技能+多個任務+多個意圖,更有條理性,比如:產品控制+音量/亮度/頁面跳轉任務+任務對應的多個意圖。
- 意圖的配置包含幾個術語:詞典,語義槽,語料,意圖確認,控件,對話。
- 詞典:見名思義,可以理解為詞庫,定義對應的詞語且每一個詞語可以定義多個同義詞,聲智系統識別時針對詞語和同義詞進行識別,詞典中的詞語可以在意圖語料配置中引用使用且可以所有意圖中引用使用,另外語料中的詞典中的詞語會被自動識別成為語義槽,在接口和返回數據中可以作為字段使用。還有就是思必馳提供了系統詞典比如國家,城市,動物,之屋等。
- 語義槽:前面有描述詞典中的詞語在語料中會自動成為語義槽,語義槽可以裂解為語料中的核心語義詞語,通過語義槽可以簡單明了的識別改意圖作何操作,還有就是語義槽詞語會被單獨識別成為字段用于意圖服務接口處理和返回到前端業務處理等比如定義一個語義槽為系統數字,這個數字則會被特殊識別為字段用于業務邏輯。思必馳的語義槽和聲智不一樣,思必馳的語義槽必須先通過詞典創建對應的語義槽后在意圖語料中才能夠直接使用。
- 語料:意圖的識別語音,可以配置多條,即語音識別后文本相似則指向改意圖,可以使用詞典中詞語。
- 意圖確認:語音交互多輪交互中第一次識別成功后配置語料進行確認識別是否準確,比如提升音量識別成功后根據配置的語料校驗是否提升音量,可選配置。
- 控件:類似與聲智的響應模板,思必馳也提供了一系列的模板,比如圖文,列表等也支持自定義模板,模板配置可以參考產品需求進行配置。
- 對話:思必馳和聲智不同,思必馳的技能不需要部署服務也可以理解為不需要用戶開發代碼,提供了一個等同于聲智部署服務的傻瓜配置頁面進行意圖響應模板的配置,包括控件的配置,是否使用接口服務配置,意圖是否存在動作和是否支持多輪對話的配置,思必馳可以配置命令及其響應文案,設備端可以監聽命令通過命令進行響應的操作處理。
- 意圖的配置:語料配置+語義槽的配置(系統會自動識別)+意圖確認+對話的配置。思必馳的意圖對話配置支持條件設置,簡單理解就是聲智的服務部署傻瓜化了,更適合不懂的Python和node.js語法或者開發的人員進行配置。
- 聲智的意圖服務部署和響應模板在思必馳中通過對話的配置實現了,不過思必馳需要注意的是意圖配置完成不要忘記訓練,對話配置完成不要忘記保存。
- 對比聲智和思必馳中的技能
- 借助思必馳的系統數值實現音量的百分比操作
- 意圖配置為:音量調整為百分之+語義槽(系統數值)
- 思必馳系統會識別語義槽數字此時在對話中可以將數字返回
- 在設備端收到數字以后根據命令和數字實現音量具體百分比調整
- 借助思必馳的系統數值實現音量的百分比操作
- 語音交互開發中的需要注意的問題
- 聲智sdk集成的時候,若使用aar方式集成,需要注意so編譯方式的選擇即v7,v8的選擇 扯淡的是聲智提供的v7和v8中的so文件不一樣,特別是集成其他so三方框架同時更容易出問題。
- 聲智的狀態監聽不能監聽音樂播放的結束,要監聽音樂播放的結束需要獲取到內部的音頻播放handler 然后添加播放監聽監聽音樂播放結束。
- 思必馳的集成音頻播放sdk沒有集成需要設備端單獨集成且進行管理
- 思必馳的初始化需要輪詢是否初始化成功建議進行權限檢測以后輪詢初始化思必馳的sdk,建議按照思必馳的demo去處理不要自己做。