摘要:實(shí)時(shí)交互支持系統(tǒng)(Real-time Interactive Support System,RISS)是一種基于人工智能技術(shù)的自動(dòng)響應(yīng)系統(tǒng),旨在為用戶提供實(shí)時(shí)的、個(gè)性化的交互式支持。本文將對(duì)實(shí)時(shí)交互支持系統(tǒng)的核心設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行探討。
關(guān)鍵詞:實(shí)時(shí)交互;支持系統(tǒng);設(shè)計(jì);實(shí)現(xiàn)
一、引言
作為師生之間交流的工具,實(shí)時(shí)交互支持系統(tǒng)可以為他們提供最大限度的保障和服務(wù),提升學(xué)生學(xué)習(xí)的積極性和學(xué)習(xí)效率,從而能夠幫助實(shí)現(xiàn)最終的教學(xué)目的。
二、實(shí)時(shí)交互支持系統(tǒng)的需求分析
考慮到遠(yuǎn)程系統(tǒng)中可能的應(yīng)用場(chǎng)景,可以列出如下需求:
(1)考慮到系統(tǒng)后期的可擴(kuò)展性,可以按照需求構(gòu)建系統(tǒng)的基本元件庫,后期可以進(jìn)行增補(bǔ)。
(2)為了方便用戶對(duì)矢量圖中元素的選取和修改,需要提供矢量圖的拾取功能。
(3)為圖片的各種操作,比如旋轉(zhuǎn)、平移、縮放、添加、編輯、刪除等功能提供方便易用的操作界面。
(4)為了實(shí)現(xiàn)交互對(duì)象在多個(gè)用戶端同步顯示和實(shí)時(shí)更新,以提供較好的異地瀏覽和討論體驗(yàn),系統(tǒng)需要保證在多人參與的環(huán)境中操作信息能夠及時(shí)同步。
(5)為方便用戶隨時(shí)復(fù)習(xí)和查看已經(jīng)保存的信息,需要將文件保存為系統(tǒng)能識(shí)別的自定義格式。
(6)為了能夠進(jìn)行多人語音討論,需要提供容納多人語音通信的網(wǎng)絡(luò)通話功能。
(7)教師在其機(jī)器上進(jìn)行的操作,如果有需求,可以讓其操作在學(xué)生機(jī)器上重現(xiàn),以實(shí)現(xiàn)遠(yuǎn)程桌面功能。
(一)實(shí)時(shí)交互支持系統(tǒng)的解決方案
上面提到的大部分功能都能夠直接基于.NET框架實(shí)現(xiàn),但有部分功能需要對(duì)內(nèi)存進(jìn)行操作,而.NET這方面較難實(shí)現(xiàn)。對(duì)這部分功能,選擇VC++進(jìn)行COM開發(fā)以最終完成更為底層和復(fù)雜的工作。
(二).NET框架簡(jiǎn)介
.NET框架簡(jiǎn)化了當(dāng)前復(fù)雜網(wǎng)絡(luò)環(huán)境下應(yīng)用程序的開發(fā),具有如下優(yōu)點(diǎn):
(1)它是一種基于網(wǎng)絡(luò)的應(yīng)用服務(wù),基于該框架的軟件開發(fā)、維護(hù)和升級(jí)都可以在互聯(lián)網(wǎng)上完成,并且兼容多種類型的網(wǎng)絡(luò)設(shè)備。這得益于該框架基于XML語言對(duì)幾個(gè)常用協(xié)議進(jìn)行了定義,包括網(wǎng)頁服務(wù)描述語言(WSDL)、網(wǎng)頁服務(wù)發(fā)現(xiàn)協(xié)議(DISCO)和簡(jiǎn)單對(duì)象訪問協(xié)議(SOAP)等。
(2)該框架基于公共語言運(yùn)行時(shí)(Common Language Runtime,CLR)與類庫完美結(jié)合,所以可以支持多種編程語言,其強(qiáng)大的跨語言和跨平臺(tái)特性(繼承、異常處理、調(diào)試)使得多平臺(tái)交互變得非常容易。
(3)可以自動(dòng)管理內(nèi)存和進(jìn)行垃圾回收,不必編寫內(nèi)存管理代碼手動(dòng)管理內(nèi)存,可以避免編程過程中疏忽導(dǎo)致的內(nèi)存泄漏和非法引用錯(cuò)誤。
(4)由于避開了對(duì)注冊(cè)表的操作,并強(qiáng)制安全地執(zhí)行方式,讓代碼能夠在安全環(huán)境中執(zhí)行,這樣有效避免了惡意軟件代碼對(duì)系統(tǒng)的影響。
(5).NET與COM組件具有很好的互操作性,不僅可以通過生成代理的技術(shù)在.NET工程中使用COM組件,還能在其他的應(yīng)用中使用.NET的組件。
(6)框架的通信部分完全按照工業(yè)級(jí)別的標(biāo)準(zhǔn)產(chǎn)生,所以該框架下的代碼能夠很好地集成在其他代碼中。
.NET框架的獨(dú)特之處在于它有兩個(gè)重要的組成組件,即.NET框架類庫和公共語言運(yùn)行時(shí)庫。前者是一個(gè)綜合的面相對(duì)象類型集合,利用這些可重用的庫,開發(fā)者可以開發(fā)出從最簡(jiǎn)單的命令行程序到復(fù)雜的ASP.NET最新程序;后者主要提供了一些核心的底層功能,比如線程管理、內(nèi)存回收、線程處理等,公共語言運(yùn)行時(shí)庫還可以對(duì)運(yùn)行的程序進(jìn)行強(qiáng)制的類型檢查和安全檢查。
C#語言是微軟專為.NET框架開發(fā)的一種簡(jiǎn)單的、面向?qū)ο蟮?、類型安全的現(xiàn)代編程語言,它身上同時(shí)有VB運(yùn)行高效的特點(diǎn)和C語言功能強(qiáng)大的特點(diǎn),但是又避免了這兩種語言的一些缺點(diǎn)。比如,C#的代碼可以方便地與其他語言交互,還能夠直接使用.NET框架的諸多基本類庫,這讓項(xiàng)目的開發(fā)非常高效。另外,從語法的角度來看,C#比這兩種傳統(tǒng)編程語言更為簡(jiǎn)潔明了。為了避免C語言開發(fā)過程中出現(xiàn)的指針混亂問題,C#放棄了指針和相關(guān)算法,轉(zhuǎn)而采用完全面向?qū)ο蟮脑O(shè)計(jì),還提供了Windows下開發(fā)圖形界面程序的工具。
三、實(shí)時(shí)交互支持系統(tǒng)功能模塊的劃分
根據(jù)上面提到的需求分析,可以將整個(gè)實(shí)時(shí)交互系統(tǒng)分為以下幾種模塊:界面模塊、通信模塊、電子白板模塊、語音模塊和遠(yuǎn)程桌面模塊。
(一)界面與通信控制模塊
這個(gè)模塊主要負(fù)責(zé)信息的交換和通信,如上傳本地端對(duì)圖形的操作信息、下載和同步遠(yuǎn)程端的圖形操作信息、語音的采集、語音的接收、語音的回放、圖像的收和發(fā)等,甚至用戶與主界面之間的交互也是需要該模塊負(fù)責(zé)上傳和下載的。由于這些信息的通信需要同時(shí)進(jìn)行,采用多線程技術(shù)對(duì)于每個(gè)任務(wù)建立一個(gè)線程。
基于socket的網(wǎng)絡(luò)程序開發(fā)在TCP/IP網(wǎng)絡(luò)協(xié)議下非常普遍,很多基于互聯(lián)網(wǎng)的應(yīng)用都使用了socket。在TCP/IP網(wǎng)絡(luò)協(xié)議下,socket有些類似于計(jì)算機(jī)中的文件描述符,通過對(duì)文件描述符操作可以讀取和寫入文件,而對(duì)于socket進(jìn)行類似的操作可以發(fā)送和接收數(shù)據(jù)。為了簡(jiǎn)化通信協(xié)議和提高通信的安全性,本系統(tǒng)的網(wǎng)絡(luò)通信信道有兩個(gè),分別是控制信道和數(shù)據(jù)信道。前者負(fù)責(zé)指令的傳輸、身份的驗(yàn)證等工作,后者用來傳輸電子白板數(shù)據(jù)和語音圖像等數(shù)據(jù)。由于白板的圖像對(duì)于準(zhǔn)確性的要求較高,所以采用了面向連接的socket,對(duì)于語音來說,實(shí)時(shí)性要求較高,所以采用了無連接的socket。不同的服務(wù)都在數(shù)據(jù)通道中建立了自己的連接,這種采用多個(gè)信道的通信方式與很多經(jīng)典的軟件和服務(wù)非常相似。
系統(tǒng)的通信邏輯如下:①學(xué)生所在的客戶端主動(dòng)與教師所在的服務(wù)端主動(dòng)建立TCP連接,該連接用來傳輸命令;②客戶端發(fā)送帶用戶名和密碼的驗(yàn)證報(bào)文,教師端則對(duì)其進(jìn)行驗(yàn)證,如果正確則發(fā)送“接受連接”的報(bào)文,否則發(fā)送“拒絕連接”的報(bào)文,并告訴客戶端拒絕的原因;③在任何情況下,學(xué)生在斷開連接的時(shí)候都需要向教師端發(fā)送“退出”的報(bào)文,其中包含需要退出的賬號(hào)信息;④學(xué)生的客戶端可以向服務(wù)端請(qǐng)求多種類型的服務(wù)(如電子白板服務(wù)、語音服務(wù)、遠(yuǎn)程桌面服務(wù)等),如果請(qǐng)求被教師端接受,學(xué)生端會(huì)受到來自教師端的“回應(yīng)”報(bào)文,這個(gè)報(bào)文里包含該服務(wù)對(duì)應(yīng)的端口號(hào)和傳輸層所使用的協(xié)議(UDP或TCP),如果不同意,教師端不需要做任何回應(yīng);⑤學(xué)生根據(jù)收到的報(bào)文使用相應(yīng)的協(xié)議連接到對(duì)應(yīng)的端口上,并啟動(dòng)本地端的相關(guān)服務(wù),在接收服務(wù)的過程中,如果學(xué)生需要停止服務(wù),也需要向服務(wù)端發(fā)送“停止”報(bào)文。
(二)電子白板模塊
數(shù)據(jù)預(yù)處理子模塊主要負(fù)責(zé)讀取系統(tǒng)的和用戶自定義的圖庫文件。為了方便用戶隨時(shí)取用,這些圖庫元素通常被放在模具面板的左邊。如果用戶有更多繪圖方面的需求,可以自定義相應(yīng)的模具以提升圖形的繪制速度和圖像的質(zhì)量。這種方式不僅可以提供較好的擴(kuò)展性,還能方便用戶后期對(duì)圖庫進(jìn)行修改。這些自定義圖庫通常采用XML語言進(jìn)行描述,每個(gè)圖庫由多個(gè)模具文件組成,大量的圖元信息包含在這些模具文件中。為了同時(shí)滿足信息傳輸和交換的便利性及較為普遍的繪圖需求,需要精心設(shè)計(jì)圖元信息的描述方式。這個(gè)模塊負(fù)責(zé)繪圖的顯示和可能的交互,如旋轉(zhuǎn)、平移、縮放、裁剪等。電子白板的主要功能也就是對(duì)圖像的操作和同步顯示,所以這個(gè)模塊是整個(gè)系統(tǒng)的核心。為了方便對(duì)圖像的操作和管理,本系統(tǒng)劃分了連線圖元、標(biāo)注文本圖元、結(jié)構(gòu)圖元這三個(gè)基本的圖形元素,它們每個(gè)都是一個(gè)獨(dú)立的對(duì)象。
對(duì)圖像的元素進(jìn)行選擇和拾取是交互操作的基礎(chǔ),如果不能正確實(shí)現(xiàn)拾取操作,整個(gè)系統(tǒng)就沒有實(shí)用性。本系統(tǒng)先采用選擇框進(jìn)行篩選,然后判斷選擇框里面的元素與其距離,如果距離較近則選擇該元素,如果較遠(yuǎn)則拾取失敗。為了讓電子白板的內(nèi)容和操作在教師和所有學(xué)生之間實(shí)現(xiàn)同步顯示,需要預(yù)先制定好同步機(jī)制來同步所有對(duì)矢量圖(SVG)元素的操作。這里的同步有兩種方式:發(fā)送坐標(biāo)和發(fā)送操作指令(或變換矩陣)。前者需要將每個(gè)修改過后的圖形發(fā)送給客戶端,客戶端接收到信息之后對(duì)圖形進(jìn)行重繪;后者只需要在最開始的時(shí)候發(fā)送坐標(biāo)給客戶端,后面每次對(duì)圖形的操作只需要發(fā)送相應(yīng)的操作指令或變換矩陣即可。顯然,發(fā)送變換矩陣的方法在傳輸效率上要高得多,所以本文采用傳輸變換矩陣的方法,每個(gè)圖形實(shí)例只需要維護(hù)一個(gè)變換矩陣即可得到所有對(duì)該圖形的操作。
這里有一個(gè)比較關(guān)鍵的問題,即如果多個(gè)用戶在同一時(shí)間對(duì)某個(gè)圖像進(jìn)行操作,會(huì)導(dǎo)致操作上的沖突。例如,A想要修改某個(gè)圖形元素,而B想刪除該元素,到底是該刪除還是進(jìn)行修改則需要教師端決定。在本系統(tǒng)中,是學(xué)生端先將操作發(fā)送到教師端,這些操作被放入一個(gè)隊(duì)列,采用先到先服務(wù)的原則,教師端對(duì)該隊(duì)列中的操作逐個(gè)審閱,最后將最終的結(jié)果發(fā)送給所有學(xué)生端。例如,兩個(gè)學(xué)生在同一時(shí)間分別想要?jiǎng)h除和修改,則最終的結(jié)果就是圖形中的該元素被刪除。這種利用隊(duì)列維護(hù)操作的方法不僅實(shí)現(xiàn)簡(jiǎn)單,還能夠產(chǎn)生較為合理的結(jié)果。
(三)語音通信模塊
學(xué)生之間或?qū)W生與教師之間需要經(jīng)常進(jìn)行溝通,而文字信息在課堂上的溝通效率太低,所以一般采用語音的方式。系統(tǒng)的語音模塊提供了多人同時(shí)進(jìn)行語音的環(huán)境,這種交互方式對(duì)于小組討論非常有用。假設(shè)需要同時(shí)進(jìn)行語音的人分別為A、B、C、D,可以用兩種方法實(shí)現(xiàn)多人語音。第一種方法,每個(gè)人對(duì)其他所有人發(fā)送廣播,將自己的語音數(shù)據(jù)發(fā)送給每個(gè)人。這樣每個(gè)人都會(huì)得到三份數(shù)據(jù),這三份數(shù)據(jù)在本地端緩存,然后混合在一起形成較為真實(shí)的聊天室語音。很容易算出,這種方式對(duì)網(wǎng)絡(luò)產(chǎn)生的負(fù)載o(n2)。第一種方法,B、C、D三個(gè)人的數(shù)據(jù)都發(fā)送給A,A端在接收完數(shù)據(jù)之后進(jìn)行緩存并對(duì)三組聲音進(jìn)行混音,最后將得到的最終結(jié)果分別發(fā)送給B、C、D三個(gè)人。這種方法一個(gè)明顯的優(yōu)勢(shì)是網(wǎng)絡(luò)負(fù)荷小很多,非常適合較多人同時(shí)進(jìn)行的語音聊天。這種方法的網(wǎng)絡(luò)帶寬負(fù)荷只有o(n)。對(duì)比這兩種方法,第一種方法沒有中心節(jié)點(diǎn),所以不依賴于某一個(gè)節(jié)點(diǎn),最直接的表現(xiàn)就是延時(shí)較低,但是對(duì)網(wǎng)絡(luò)帶寬的占用較大;第二種方法有一個(gè)或多個(gè)中心節(jié)點(diǎn),能夠在很大程度上解決網(wǎng)絡(luò)帶寬的問題,但是帶來了較大的延時(shí)。
經(jīng)過測(cè)試,本系統(tǒng)中語音聊天的單向延時(shí)只要控制在150ms內(nèi)即可,雙向的延時(shí)只要不超過300ms就可以接受。對(duì)比了兩種方案,后者的延時(shí)完全能滿足要求,并且需要的帶寬更小,所以選擇第二種方法實(shí)現(xiàn)多人語音模塊。該模塊分為教師端和學(xué)生端,教師端扮演A的角色,學(xué)生端扮演B、C、D的角色,具體的流程如下:①學(xué)生的聲卡采集語音,并進(jìn)行編碼和壓縮,網(wǎng)卡則負(fù)責(zé)把壓縮后的數(shù)據(jù)發(fā)送給教師端;②教師端接收到來自不同學(xué)生的語音壓縮數(shù)據(jù)包之后對(duì)其進(jìn)行解壓縮操作;③等到所有學(xué)生端的數(shù)據(jù)接收完畢之后,教師端將多個(gè)語音進(jìn)行混音,并進(jìn)行編碼和壓縮;④教師端將處理過后的壓縮語音數(shù)據(jù)包發(fā)送出去,學(xué)生端在接收之后解壓縮并播放出來。為了進(jìn)一步減少所需要的網(wǎng)絡(luò)帶寬,該模塊在發(fā)送語音數(shù)據(jù)的時(shí)候采用了壓縮比很好且碼率較低的Cx729標(biāo)準(zhǔn)進(jìn)行壓縮,處理后的數(shù)據(jù)碼率大概只有8kbps。同時(shí)為了解決多臺(tái)電腦之間的時(shí)鐘誤差問題,需要在每臺(tái)電腦的緩存區(qū)域進(jìn)行一定的調(diào)整。
(四)遠(yuǎn)程桌面模塊
遠(yuǎn)程桌面模塊的主要作用就是共享屏幕,可以讓學(xué)生顯示教師的屏幕,也可以讓教師顯示某個(gè)學(xué)生的屏幕。由于屏幕的主要信息為靜態(tài)圖片或動(dòng)態(tài)圖片,如果在傳輸這些圖形對(duì)象的時(shí)候不進(jìn)行壓縮,會(huì)產(chǎn)生超大量的數(shù)據(jù)量,最終會(huì)導(dǎo)致整個(gè)網(wǎng)絡(luò)的堵塞。
在這種應(yīng)用場(chǎng)景下,傳輸?shù)膱D像主要為窗口圖像,比較適合這種圖像壓縮的算法為基于LZ的字典算法,不僅壓縮比較高,還能基本保證無損壓縮。本模塊的實(shí)現(xiàn)采用了基于LZ算法的Gzip壓縮,這是由于Gzip壓縮較為理想,還具有不錯(cuò)的性能。但是,在實(shí)際應(yīng)用中發(fā)現(xiàn),一張完整的桌面圖片經(jīng)過這種方式進(jìn)行壓縮大概需要消耗300ms的時(shí)間,這個(gè)時(shí)間對(duì)于遠(yuǎn)程桌面這種要求具有較好及時(shí)性的應(yīng)用來說非常致命。經(jīng)過分析,發(fā)現(xiàn)桌面圖片不同于普通視頻中的圖片,雖然桌面上的元素會(huì)動(dòng),但是大部分的圖像元素是沒有變化的,這些躍變的像素只占整個(gè)圖片非常小的一部分。連續(xù)的幀之間相同的像素占主要部分,對(duì)于相鄰的兩幀來講,大部分地方的像素差值為0。基于這一特點(diǎn),采用了幀間差分遠(yuǎn)程編碼方式對(duì)桌面圖像數(shù)據(jù)進(jìn)行編碼,可以大大降低數(shù)據(jù)的傳輸量。傳輸之前,最好是對(duì)數(shù)據(jù)進(jìn)行Gzip壓縮,這樣可以將每次壓縮需要的時(shí)間控制在10多個(gè)毫秒以內(nèi),保證了桌面圖像的流暢性。需要注意的是,這種編碼方式是一種差分方式,每次傳輸?shù)臄?shù)據(jù)都是基于上次圖像的差值,所以一旦某個(gè)包傳送失敗或傳送錯(cuò)誤,就會(huì)導(dǎo)致所有后續(xù)桌面圖像的錯(cuò)誤合成。為了避免這一問題,本系統(tǒng)會(huì)定期傳送一次完整的桌面圖像。
四、結(jié)束語
本文設(shè)計(jì)了實(shí)時(shí)交互系統(tǒng)中的核心模塊,詳細(xì)分析了每個(gè)模塊中需要解決的關(guān)鍵問題,提出了較為合理的解決方案,供相關(guān)人員參考。
作者單位:張玲玲 江蘇省宿城中等專業(yè)學(xué)校
參考文獻(xiàn):
[1]詹立彩,徐鶴,曠玲麗,等.遠(yuǎn)程教學(xué)的元宇宙應(yīng)用及其新生態(tài)構(gòu)建[J].福建開放大學(xué)學(xué)報(bào),2023(03):20-24.
[2]董向東.衛(wèi)星遠(yuǎn)程教學(xué)應(yīng)用研究[J].電化教育研究,2009(04):59-61.
[3]李文文.構(gòu)建與學(xué)生的特征尺度相適應(yīng)的遠(yuǎn)程教學(xué)環(huán)境[J].江蘇廣播電視大學(xué)學(xué)報(bào),2007(05):44-47.
[4]李相海,牛詠梅.淺談流媒體技術(shù)及其在遠(yuǎn)程教學(xué)中的應(yīng)用[J].中國(guó)科技信息,2007(21):213-214.
[5]張蕾.互聯(lián)網(wǎng)遠(yuǎn)程教學(xué)與開放教育的融合分析[J].電子技術(shù),2022,51(08):256-257.