張暄博,魏銘毅,杜偉,王沛沛
(1.國電雙維內(nèi)蒙古上海廟能源有限公司,內(nèi)蒙古鄂爾多斯 016200;2.國能智深控制技術(shù)有限公司,北京 102209)
火力發(fā)電在中國發(fā)電方式中占據(jù)重要位置,對于保障中國能源安全有巨大貢獻(xiàn)。當(dāng)前火電機(jī)組的運(yùn)行參數(shù)等由集控值班人員在集控室DCS 界面當(dāng)中完成設(shè)定。一旦發(fā)生故障,需要多人員協(xié)同操作,人員之間溝通成本較高。國內(nèi)對電力機(jī)器人研究起步較晚,從1999 年開始研究帶電作業(yè)機(jī)器人[1]。山東電力研究院、國網(wǎng)山東省電力公司濟(jì)寧供電公司和山東魯能智能技術(shù)公司合作先后開發(fā)了四代帶電作業(yè)機(jī)器人[2]。機(jī)器人采用絕緣性好、質(zhì)量輕的絕緣材料,能夠完成復(fù)雜的帶電任務(wù)。變電站巡檢機(jī)器人可以作為無人值班站的“值班人員”進(jìn)行變電站設(shè)備巡檢,通過磁軌跡導(dǎo)航,依靠室外輪式移動,精準(zhǔn)定位設(shè)備,按照最優(yōu)的路線進(jìn)行巡檢,將巡檢結(jié)果上送到監(jiān)控中心校驗(yàn)[3-4]。2009年以來,國內(nèi)無人機(jī)巡檢逐步走向常態(tài)化,以無人機(jī)作為載體,裝載可見光照相機(jī)等設(shè)備,對架空輸電線路進(jìn)行巡檢。
人機(jī)語音交互是新一代交互模式,人與機(jī)器之間通過自然的對話進(jìn)行交互,可以得到機(jī)器的決策和反饋結(jié)果。人機(jī)語音交互技術(shù)的發(fā)展,使人與機(jī)器人之間有了自然的交互方式,可以讓機(jī)器人更自然地服務(wù)人類。本文基于Robot Operator 設(shè)計了一種虛擬機(jī)器人軟件,采用外掛式操作DCS 系統(tǒng),在原有火電機(jī)組設(shè)備的基礎(chǔ)上,減少了火電機(jī)組集控值班員的工作強(qiáng)度,提高了工作效率,達(dá)到了集控室“減員增效”的目的,為建設(shè)智慧電廠提供了一種新思路。
設(shè)計目標(biāo):以火電機(jī)組集控值班員為服務(wù)對象,模擬集控值班員操作流程和形式,接收語音指令,完成指定設(shè)備操作,判斷設(shè)備運(yùn)行狀態(tài),并且能以語音形式回復(fù)。Robot Operator 將語音識別、操作動作模擬、圖像識別等技術(shù)相融合,模擬人的操作行為,實(shí)現(xiàn)火電廠集控室少人化操作。
系統(tǒng)分為2 個部分:學(xué)習(xí)模型和操作模型。學(xué)習(xí)模型借鑒教師/學(xué)生的仿真操作教學(xué)形式,教師在DCS界面上進(jìn)行語音講解和操作演示,系統(tǒng)通過捕捉鼠鍵動作獲得并儲存相關(guān)的操作動作信息。操作模型通過與集控操作員交互,完成相應(yīng)操作。系統(tǒng)可減輕集控操作人員的工作強(qiáng)度,達(dá)到火電機(jī)組集控室減員增效的目的。
集控值班員與軟件之間通過語音進(jìn)行交互,采用了語音識別、語音合成等技術(shù)[5]。虛擬操作機(jī)器人軟件編程開發(fā)工具為Visual Studio2017;語音應(yīng)用程序開發(fā)包使用微軟的Microsoft Speech SDK 5.1 進(jìn)行語音功能開發(fā),Speech SDK 5.1 全面支持中文語音應(yīng)用程序的開發(fā),提供了語音識別引擎相關(guān)組件、應(yīng)用程序?qū)咏涌诘任臋n。Speech SDK 5.1 開發(fā)包包含SAPI相關(guān)的程序接口,通過SAPI提供的基本程序接口進(jìn)行開發(fā)。SAPI架構(gòu)在COM 組件基礎(chǔ)上,底層協(xié)議以COM 組件形式獨(dú)立于應(yīng)用程序?qū)?,主要?yōu)點(diǎn)是擴(kuò)展性好、應(yīng)用場景多。
語音識別過程:通過一系列的初始化后,設(shè)置識別引擎返回消息,當(dāng)語音識別事件發(fā)生后,識別引擎自動向程序窗口發(fā)送是否識別成功的消息,根據(jù)情況進(jìn)行相應(yīng)的處理。具體流程如圖1 所示。
圖1 語音識別流程圖
2.1.1 初始化COM 端口
Speech SDK 5.1 提供的是COM 組件形式,在調(diào)用SAPI之前對COM 組件進(jìn)行初始化。在CWinApp 的子類中調(diào)用CoInitializeEX 初始化COM 組件。代碼實(shí)現(xiàn)如下:
2.1.2 創(chuàng)建識別引擎
創(chuàng)建識別引擎使用共享(Share)型。代碼實(shí)現(xiàn)如下:
2.1.3 創(chuàng)建識別上下文
調(diào)用ISpRecognizer::CreateRecoContext 識別上下文接口ISpRecoContext。代碼實(shí)現(xiàn)如下:
hr=m_cpRecoEngine->CreateRecoContext(&m_cp RecoCtxt)
2.1.4 設(shè)置識別引擎返回消息
程序首先調(diào)用API函數(shù)SetNotifyWindowMessage將自身的主窗口句柄和消息類型通過傳參輸入,然后程序調(diào)用接口ISpRecoContext 的方法SetInterest 指明程序的消息,當(dāng)語音識別引擎檢測到相關(guān)的事件后自動向程序發(fā)送上述設(shè)定好的消息。代碼實(shí)現(xiàn)如下:
2.1.5 創(chuàng)建加載語法
為了提高語音識別率,操作命令的語法規(guī)則采用SPAI中“命令與控制模式”。語法規(guī)則用XML 語言形式儲存到文件中,然后通過Speech SDK 5.1 自有編譯器編譯成.cfg 文件。在程序運(yùn)行時加入,首先利用ISpRecoContext::CreateGrammar 創(chuàng)建語法對象,然后調(diào)用LoadCmdFromFile 方法從外部文件將語法規(guī)則加載進(jìn)來。代碼實(shí)現(xiàn)如下:
2.1.6 處理消息
開始識別時,通過SetRuleState 激活語法進(jìn)行識別,獲得識別消息后進(jìn)行處理,通過CSpEvent 與當(dāng)前的識別上下文聯(lián)系;隨后通過判斷event ID 來確定消息的類型,做相應(yīng)處理。代碼實(shí)現(xiàn)如下:
對于中文而言,微軟提供了Simple Chinese。成功安裝Speech SDK 5.1 后,語音合成的具體程序步驟如下。
第一,調(diào)用API函數(shù)CoInitialize 初始化COM 組件,代碼實(shí)現(xiàn)如下:
第二,使用SpFindBestToken 函數(shù),傳入?yún)?shù),設(shè)置中文語言類型。
第三,調(diào)用CoCreateInstance API函數(shù)創(chuàng)建COM語音合成接口ISpVoice。代碼實(shí)現(xiàn)如下:
第四,調(diào)用ISpVoice 接口方法SetVoice,加載前面所設(shè)置的聲音類型。代碼實(shí)現(xiàn)如下:
ISpVoice::SetVoice(ISpObjectToken*pToken);
第五,初始化工作全部完成后,在需要的地方調(diào)用ISpVoice 接口中的Speak 方法朗讀文本,代碼實(shí)現(xiàn)如下:
根據(jù)集控值班員工作特點(diǎn),學(xué)習(xí)模型采用動詞(關(guān)鍵字)+設(shè)備詞(可選詞)的模式設(shè)計。對操作指令進(jìn)行解析,將操作動作分為調(diào)節(jié)類和非調(diào)節(jié)類,該設(shè)計模式實(shí)現(xiàn)對保存文件命名的規(guī)范統(tǒng)一,而且使人機(jī)語音交互過程的指令變得簡單。2 類語義解析模塊如下。
調(diào)節(jié)類:主要以調(diào)節(jié)設(shè)備的開度為主,如圖2 所示。非調(diào)節(jié)類:主要以啟動、關(guān)閉設(shè)備為主,如圖3所示。
圖2 調(diào)節(jié)類語義解析模塊
圖3 非調(diào)節(jié)類語義解析模塊
參考火電機(jī)組仿真培訓(xùn)操作手冊,了解設(shè)備的運(yùn)行規(guī)程,結(jié)合集控值班員發(fā)布指令,軟件設(shè)計了對應(yīng)的XML 文件。文件分為操作動作類型庫和設(shè)備庫。語音交互庫的設(shè)計具有靈活性高、針對性強(qiáng)的特點(diǎn),因此方便修改、擴(kuò)展語音關(guān)鍵字。操作動作類型庫如表1所示。以鍋爐上水系統(tǒng)為例列舉系統(tǒng)設(shè)備庫,如表2所示。
表1 操作動作類型庫
表2 鍋爐上水系統(tǒng)設(shè)備庫
本文根據(jù)語音指令操作,自主判斷操作結(jié)果,實(shí)現(xiàn)集控值班員操作的智能化,具備學(xué)習(xí)能力。借鑒教師/學(xué)生的仿真操作教學(xué)形式,教師在DCS 界面上進(jìn)行語音講解和操作演示,系統(tǒng)能夠“記憶”設(shè)備和操作信息知識。各項(xiàng)操作和狀態(tài)判斷完全模擬值班員的行為,均為自主進(jìn)行,不需要DCS 軟件開放數(shù)據(jù)接口。后續(xù)為虛擬機(jī)器人在智慧電廠的應(yīng)用提供了新思路。