国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

面向接口/協議?看DuerOS的技能開發

開發 開發工具
一般地,開發一個對話系統或者機器人問答系統會涉及諸多領域的技術,除了硬件系統之外,還包括語言識別,自然語言處理/識別,知識圖譜的搭建,自然語言生成及TTS播報等等,這對于企業及開發者個人而言,幾乎是難以完成的任務。

 一般地,開發一個對話系統或者機器人問答系統會涉及諸多領域的技術,除了硬件系統之外,還包括語言識別,自然語言處理/識別,知識圖譜的搭建,自然語言生成及TTS播報等等,這對于企業及開發者個人而言,幾乎是難以完成的任務。

[[259075]] 

有幸的是,對話式AI操作系統例如DuerOS的誕生,使我們可以直面業務邏輯,相對輕松地完成語音類服務的開發與實現。在過去的研發中,經常使用的往往是面向接口的設計方法,那么,面向對話式操作系統的開發,是如何實現的呢? 

接口

在OO的時候,通常會講到SOLID原則:

  • 單一職責
  • 開閉原則
  • 里氏替換
  • 接口隔離
  • 依賴反轉

其中接口隔離是其中的一項重要原則。接口的概念外延較廣泛,wiki上的解釋是這樣的:

  • An interface is a shared boundary across which two or more separate components of a computer system exchange information. The exchange can be between software, computer hardware, peripheral devices, humans, and combinations of these.

接口大體上從載體上分為硬件接口和軟件接口,從交互上可以分為人機接口和機-機(M2M)接口。軟件中的接口為組件可以提供了常量、數據類型、過程類型、異常規范和方法簽名等。有時,公共變量也被定義為接口的一部分。接口是一種很高的抽象,很多時候都會涉及到接口,因此要注意上下文和具體的應用場景。

在面向對象的編程語言中,尤其是不支持多繼承的編程語言,往往有著特殊的具體含義,interface 一詞成為了關鍵字,例如Java。Java接口中所用的方法一般都是抽象方法和常量,但是在Java8及以后的版本中,開始支持靜態成員以及默認的函數實現,例如:

  1. public interface MyTestInterface { 
  2.     int MAX_STORAGE_SIZE = 1024; 
  3.  
  4.     default void doTest() { 
  5.         System.out.println("Hello, Test!"); 
  6.     } 

盡管如此,作為一個從Java 1.2 開始使用的老程序員而言,Java的發展還是略顯遲緩。 

關于接口描述語言(IDL),大約最早出現在是CORBA的規范中,自己在1999年初次使用IDL的時候,非常感嘆它的神奇,在當時簡直就是跨平臺開發的基礎。實際上,OMG IDL不是作為程序設計語言體現在CORBA體系結構中的,而是用來描述產生對象調用請求的客戶對象和服務對象之間的接口的語言。IDL文件描述數據類型和方法框架,而服務對象則為一個指定的對象實現提供上述數據和方法。一般地,IDL文件描述了服務器提供的服務功能,客戶機可以根據該接口文件描述的方法向服務器提出業務請求。在大多數CORBA產品中都提供了IDL到相關編程語言的編譯器。 在Android的應用開發中,AIDL實際上就是IDL的一個領域應用而已。

那么接口和協議有什么聯系和區別呢?

協議

協議,一般是指通信協議,例如大家熟知的互聯網協議——TCP/IP。

在編程語言中,協議指示的是調用方和目標對象之間的交互鏈。一般描述為:

  • 對象可以理解的消息。
  • 這些消息可能附帶的參數。
  • 這些消息返回的結果類型。
  • 盡管修改了對象的狀態,但仍然保留的不變量。
  • 需要由客戶端處理到對象的異常情況。
  • 對于通信而言,還包括方法的調用序列和決策點,例如在UML交互圖中的表示:通信圖、序列圖、交互概述圖/活動圖等。

在面向對象的編程語言中,同樣地,也有把protocol作為關鍵字的編程語言,例如Objective-C。在Objective-C中,同樣不支持多繼承,即不允許一個類有多個父類,于是Objective-C提供了類似的實現方法,也就是協議。協議有點類似于Java里的接口,不同點就是在協議里,可以提供可選的方法,不要求全部繼承。例如:

  1. @protocol myprotocolName 
  2. - (void)requiredMethod; 
  3. @optional 
  4. - (void)anOptionalMethod1; 
  5. - (void)anOptionalMethodn; 
  6. - (void)otherOptionalMethod; 
  7. @required 
  8. - (void)anotherRequiredMethod; 
  9. @end 

Objective-C的協議包括正式協議和非正式協議,這里不再贅述。 

協議和接口在很多時候是交疊的,但視角不同,接口面向的是實體對象,而協議聚焦在交互上。本質上,任何的協議都是有字典和語法兩部分組成,從而形成通信上的共識。

對程序員而言,往往更關注傳輸協議和應用協議。傳輸協議主要完成數據裝配,多路復用,差錯檢測和流量控制。應用協議才是具體業務的數據和狀態描述及內容交互。

那么,對話系統的應用開發是如何面向接口和協議的呢?

對話系統的應用技能開發

DuerOS 是對話式人工智能交互系統,簡稱對話式AI系統。應用DuerOS的典型產品之一就是智能音箱。

 

談到在智能音箱上的應用開發,往往讓人聯想到使用音箱提供的SDK,例如Android SDK 或者 Linux的SDK,然后將應用下載到音箱上。這種理解還停留在多年前的APP開發階段,對人工智能操作系統存在著極大的誤區,可以參見感知人工智能操作系統。 

在基于DuerOS的設備例如智能音箱上,應用的開發和Web服務的開發沒什么區別。 簡單地,可以把智能音箱理解成瀏覽器,只是原來的鼠標點擊和鍵盤輸入換成了語音交互即可。在智能設備上開發應用是通過DuerOS Bot Platform(簡稱DBP)實現的,交互協議稱為DuerOS Conversation Service(簡稱DCS),包括了智能終端與DuerOS之間的協議,和DuerOS與應用服務(Bot)之間的協議。

作為開發者, 我們主要實現DuerOS與應用服務(Bot)之間的協議,方便起見,把它也叫做DBP協議。

DBP 協議淺析

DBP協議把HTTP/HTTPS 作為傳輸協議,關于http的相關內容可以參見溫故知新,HTTP/2。 DBP協議中應用協議的數據是通過JSON來表述。

請求與響應

智能音箱上的應用實際上就是對DBP協議中的請求作出響應的Web服務。 一個典型的request 結構示例如下:

  1. {  
  2.     "version""2.0"
  3.     "session": { 
  4.     }, 
  5.     "context": { 
  6.         "System": { 
  7.             "user": { 
  8.             }, 
  9.             "application": { 
  10.             }, 
  11.             "device": { 
  12.                 "deviceId""{{STRING}}"
  13.                 "supportedInterfaces": { 
  14.                     "VoiceInput": {}, 
  15.                     "VoiceOutput": {}, 
  16.                     "AudioPlayer": {}, 
  17.                     "VideoPlayer": {}, 
  18.                     "Display": {} 
  19.                 } 
  20.             } 
  21.         }, 
  22.         "AudioPlayer": {}, 
  23.         "VideoPlayer": {} 
  24.     }, 
  25.     "request": {} 

session表示用戶會話信息,一次session過程是從開始用戶調起技能到結束,表示用戶與技能的一次會話。

Context描述了設備端的狀態數據,能力配置參數以及用戶相關信息,包括System即系統參數和播放器的狀態。

request 才是具體的payload, 是經DuerOS 經過AI處理后的用戶請求。

Response 是開發者實現的主要內容, 結構示例如下:

  1.     "version" : "2.0"
  2.     "context" : { 
  3.         "intent" : { 
  4.             "name" : "{{STRING}}"
  5.             "slots" : { 
  6.                 "{{STRING}}" : { 
  7.                 } 
  8.             } 
  9.         }, 
  10.         "expectResponse" : [ 
  11.         {} 
  12.     ], 
  13.     }, 
  14.  
  15.     "session" : { 
  16.         "attributes" : {  
  17.             "{{STRING}}""{{STRING}}" 
  18.         }, 
  19.     }, 
  20.     "response" : { 
  21.         "outputSpeech" : { 
  22.             "type" : "{{STRING}}"
  23.             "text" : "{{STRING}}"
  24.             "ssml" : "{{STRING}}"
  25.         }, 
  26.         "reprompt" : { 
  27.             "outputSpeech" : { 
  28.                 "type" : "{{STRING}}"
  29.                 "text" : "{{STRING}}"
  30.                 "ssml" : "{{STRING}}"
  31.             } 
  32.         }, 
  33.         "card" : {} 
  34.         "directives" : [], 
  35.         "expectSpeech": {{BOOLEAN}}, 
  36.         "shouldEndSession" : {{BOOLEAN}} 
  37.     } 

Context用于反饋給DuerOS的intent結果;Intent是技能應用認為對本次query更加合理的意圖解析,expectResponse用于推測用戶可能的回復,DuerOS會在后續的query中優化意圖解析模型。關于意圖和槽位,可以參見感知自然語言理解(NLU)。

session存儲了在DuerOS 會話的屬性數據,如果本次session不結束,那么在下一個發送給技能的請求中,在session.attributes字段會攜帶這些屬性給到至技能應用,相當于數據到終端上繞了一圈。

response是技能應用回復給DuerOS的payload,包括語音播報的內容和風格,展現輸出和技能指令等。

一對Request/Response構成了DBP協議的主體。 

事件和指令

事件和指令是DBP協議中的重要消息形式,從智能終端和DuerOS發往我們開發的技能應用的消息稱為事件,從技能應應用發往智能終端和DuerOS的消息稱為指令。

在用戶通過語音輸入后,DuerOS會對語音請求進行識別和理解,并將理解結果發送給技能應用。有三個事件相當于定義了應用技能的生命周期:

  • LaunchRequest:代表開啟技能應用
  • IntentRequest:相當于進入技能應用的消息處理循環
  • SessionEndedRequest:相當于被動結束技能應用,當然,技能應用可以主動退出。

智能終端上的處理狀態事件是通過DuerOS透傳給技能應用的,主要包括音頻播放器audioplayer的音頻播放事件集和視頻播放器videoplayer的視頻播放事件集,對于有屏終端而言,還包括form事件,即用戶屏幕上的點擊事件等。 

具體地,音頻事件包括:

  • AudioPlayer.PlaybackStarted事件
  • AudioPlayer.PlaybackStopped事件
  • AudioPlayer.PlaybackFinished事件
  • AudioPlayer.PlaybackNearlyFinished事件
  • AudioPlayer.ProgressReportIntervalElapsed事件

視頻播放事件包括:

  • VideoPlayer.PlaybackStarted事件
  • VideoPlayer.PlaybackStopped事件
  • VideoPlayer.PlaybackFinished事件
  • VideoPlayer.PlaybackNearlyFinished事件
  • VideoPlayer.ProgressReportIntervalElapsed事件
  • VideoPlayer.ProgressReportDelayElapsed事件
  • VideoPlayer.PlaybackStutterStarted事件
  • VideoPlayer.PlaybackStutterFinished事件
  • VideoPlayer.PlaybackPaused事件
  • VideoPlayer.PlaybackResumed事件
  • VideoPlayer.PlaybackQueueCleared事件
  • PlaybackScheduledStopReached事件

Form事件包括顯示控件的點擊事件,主要包括Form.ButtonClicked和Form.RadioButtonClicked事件等。為了方便開發,增強展示形式的表現力,DBP協議還提供了展現卡片和展現模版,對于的事件包括Display.ElementSelected事件和Display.ButtonClicked事件。 

對這些事件的處理,技能應用相當于得到了用戶、智能設備狀態和DuerOS數據的輸入,然后通過指令(directive)的形式完成交互。

在對話過程中,技能應用可以發出的指令有Dialog.ElicitSlot, Dialog.ConfirmSlot,Dialog.ConfirmIntent和Dialog.Delegate,分別用于槽位的填充和確認,意圖的確認,以及通知DuerOS來處理NLU。

在音/視頻播放中,技能應用可以發出的指令有AudioPlayer.Play和AudioPlayer.Stop 來通知音頻播放器開始和停止播放,VideoPlayer.Play和 VideoPlayer.Stop來通知視頻播放器開始和停止播放 VideoPlayer.ClearQueue用來清除播放的資源隊列。

在有屏的智能設備上,Form的事件處理可以理解成一般的HTML表單處理,而展示模版的指令只有一個Hint,用于展現技能應用的引導詞。技能引導詞是技能展現的提示信息,引導用戶與技能應用進行交互。每個技能都可以設計引導詞,讓用戶更快速的使用技能。

由此可見,DBP協議的主要部分相對簡單,清晰明了。 

小結

即使理解了協議的格式和內容,自己實現整個DBP協議也是需要一定的工作量的。所幸的是,DBP平臺提供了多種編程語言的SDK,對DBP協議的實現進行了封裝,基于這些SDK(Java/JavaScript/Go/PHP/Python),我們的開發變得相對簡單,使我們可以聚焦于應用的業務邏輯。

DBP平臺還提供了大量的技能開發模版,相當于簡化的開發框架,使對話式AI系統的技能應用開發更為簡單。另外,DBP平臺提供的小技能開發,更是無需編程即可實現一些簡單技能應用的開發。

參考資料

https://dueros.baidu.com/dbp

Pugh Ken,“Interface-Oriented Design”,Pragmatic Bookshelf,2006

威廉·斯托林斯,《數據與計算機通信(第十版)》,電子工業出版社,2015

【本文來自51CTO專欄作者“老曹”的原創文章,作者微信公眾號:喔家ArchiSelf,id:wrieless-com】 

戳這里,看該作者更多好文

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2019-11-22 09:05:20

DuerOS編程語音

2021-01-27 12:02:50

AndroidDuerOS調試

2009-07-30 10:28:56

Web高性能開發

2013-09-10 09:35:53

移動開發者全能開發者技能

2020-08-03 07:55:18

AppDuerOS手機

2018-07-04 17:24:22

百度AI開發者

2022-07-30 23:41:53

面向過程面向對象面向協議編程

2010-07-09 11:12:09

UDP協議

2024-06-28 11:29:20

數據學習模型機器學習

2012-11-05 10:36:40

IBMdw

2021-01-14 08:16:41

Python接口編程

2012-03-07 14:37:03

JavaJavaMail

2013-07-30 09:42:41

實現編程接口編程對象編程

2016-12-12 15:22:41

編程

2021-06-04 09:01:27

Cocoa 協議編程 Swift

2021-06-03 08:55:58

面向協議編程

2018-05-23 16:20:30

IoT協議思考

2020-09-28 06:50:02

DuerOS 智能語音

2025-03-11 14:45:31

2022-04-01 10:27:04

面向對象串口協議代碼
點贊
收藏

51CTO技術棧公眾號

色伦专区97中文字幕| 韩国三级中文字幕hd久久精品| 亚洲免费在线观看视频| 男人免费av| 一区二区不卡在线视频 午夜欧美不卡在| 999大胆视频| 欧美三级乱人伦电影| 色呦呦网站在线观看| 欧美极品欧美精品欧美视频| 在线不卡视频| 免费一级大片| 日韩精品有码在线观看| 你懂的在线观看一区二区| 国模私拍一区二区三区| 欧美xxx网站| 色老头一区二区三区| 久久影视一区| 五月伊人六月| 欧美性猛交xxx乱久交| 日本人妖一区二区| 在线伊人免费视频| 欧美国产视频日韩| 狠狠色丁香婷婷综合| 四虎影院在线域名免费观看| 免费av一区二区| 蜜臀久久99精品久久久久久9 | 成人短剧在线观看| 亚洲性xxxx| 老妇喷水一区二区三区| 四虎影视精品成人| 日韩免费在线播放| 国产精品乱码一区二区三区软件| 绿色成人影院| 日本免费高清一区| 一本大道久久精品懂色aⅴ| 婷婷亚洲精品| 国产一级特黄a大片免费| 亚洲性日韩精品一区二区| 亚洲综合国产| p色视频免费在线观看| 国产色婷婷国产综合在线理论片a| 国产视频一区在线观看| 国产精品99久久久久久董美香 | 国产精品国产三级国产专播品爱网 | 欧美a视频在线| 亚洲精品一区二区毛豆| 欧洲一区二区三区在线| 欧美日韩黑人| 天天噜天天色| 国产91|九色| 亚洲欧美综合另类在线卡通| 99精品国产九九国产精品| 国产欧美日韩网站| 色噜噜狠狠色综合网图区| 成人激情小说网站| 日日狠狠久久| www黄色av| 欧美多人乱p欧美4p久久| 久久综合久久久久88| 日韩城人网站| 一级特黄性色生活片| 欧美激情伊人电影| 中文字幕一区二区三区av | 日韩欧美三级一区二区| 日韩欧美亚洲一区二区| 日韩精品视频网| 第一福利在线视频| 麻豆md0077饥渴少妇| 亚洲欧洲视频在线| 成人app下载| 精品国产鲁一鲁****| 天天综合天天操| 国产精品扒开腿做爽爽爽视频| 亚洲国产aⅴ天堂久久| 中国精品18videos性欧美| 国产免费a∨片在线观看不卡| 国产久一道中文一区| 欧美大片国产精品| 国产99久久久国产精品潘金网站| 亚洲91在线| 妞干网在线观看| 亚洲va久久久噜噜噜| 欧美日韩免费不卡视频一区二区三区 | 亚洲国产一区二区三区a毛片| 日本中文字幕在线播放| 亚洲国产精品一区在线观看不卡| 亚洲国产精品推荐| 久久久久亚洲蜜桃| 精品国产一区二区三区香蕉沈先生| 污黄色在线观看| 日韩精品伦理第一区| 在线观看视频亚洲| 自拍偷拍亚洲激情| 亚洲国产美女| 亚洲国产伊人| 天堂在线中文资源| 亚洲图片欧洲图片日韩av| 欧美精品性视频| 色综合色综合色综合色综合色综合| 日日摸夜夜添夜夜添国产精品| 91超碰碰碰碰久久久久久综合| 国产高清视频网站| 91精品在线国产| 亚洲福利视频网站| 中文字幕一区二区日韩精品绯色| 午夜欧美视频| 精品176极品一区| 日本一区视频| 国产中文字幕乱人伦在线观看| 欧美性在线视频| 欧美一区二区三区系列电影| 26uuu亚洲综合色欧美 | 亚洲美洲欧洲综合国产一区| 国产亚洲成av人片在线观看 | 国产精品一 二 三| 中文字幕精品网| 婷婷丁香激情综合| 国产一区二区精品久久99| 网红女主播少妇精品视频| 日本最黄一级片免费在线| 成人在线免费在线观看| 欧美激情专区| 久久久久久国产精品| 69久久夜色精品国产69蝌蚪网| 99re这里只有精品6| 欧美在线亚洲| 精品亚洲a∨| 久青草国产在线| 噜噜噜久久亚洲精品国产品麻豆| 国产主播欧美精品| 色青青草原桃花久久综合| 日韩欧美在线免费观看| 99在线精品一区二区三区| 欧美二区视频| av成人资源| aaa在线播放视频| 一二三在线视频社区| 日本免费a视频| 国产精品久久精品国产| 欧美激情视频一区二区| 日韩视频免费观看高清完整版在线观看| 欧美高清在线一区| 国产一区二区h| 国内揄拍国内精品久久| 国产精品jk白丝蜜臀av小说| 亚洲精品白浆| 中文字幕一区免费| 男人的天堂99| 在线观看福利一区| 亚洲一区二区三区久久| 欧美成人午夜激情| 日韩电影中文字幕在线观看| 一区二区高清免费观看影视大全 | 91麻豆精品国产综合久久久久久| 国产欧美一区二区精品久导航| 天堂蜜桃91精品| 99久久亚洲精品蜜臀| 亚洲精品国产九九九| 91福利在线免费| 久久视频www| 校园春色影音先锋| 牛夜精品久久久久久久| 97久久国产亚洲精品超碰热| 蜜桃麻豆www久久国产精品| 成人在线免费观看视视频| 高清一区二区三区四区五区| 一区二区日韩精品| 日韩欧美一级在线播放| 日韩欧美在线视频观看| 亚洲日本一区二区三区| 99re热视频这里只精品| 国产一区不卡精品| 日韩福利视频导航| 99精品国产在热久久婷婷| 外国成人免费视频| 精品精品99| 免费av一区二区三区四区| 玖玖玖视频精品| 欧美日韩卡一| 电影亚洲精品噜噜在线观看| 97在线超碰| 激情网站在线| 青草av在线| 人交獸av完整版在线观看| 男人资源在线播放| 香蕉视频免费在线播放| 福利片在线观看| eeuss影院在线观看| 你懂的免费在线观看视频网站| 欧美最顶级a∨艳星| 最新理论片影院| 在线播放evaelfie极品| 午夜视频国产| 中文字幕在线观| 在线资源av| 成人在线二区| 污影院在线观看| 深夜成人影院| 国产高清日韩| 偷拍亚洲精品|