劉偉 張遠(yuǎn) 董顯平 蔡樹培
【摘要】? ? 在電力行業(yè),調(diào)度工作位于日常工作的核心地位,負(fù)責(zé)依據(jù)各類信息采集設(shè)備反饋的數(shù)據(jù),及現(xiàn)場監(jiān)控人員提供的信息,結(jié)合電網(wǎng)實(shí)際運(yùn)行的參數(shù),綜合考慮各項(xiàng)生產(chǎn)工作的開展情況,由調(diào)度員通過電話、傳真等方式下達(dá)電力調(diào)度指令,確保電網(wǎng)持續(xù)安全運(yùn)行。對調(diào)度通話進(jìn)行錄音有助于事后還原、查證調(diào)度命令發(fā)出時(shí)的現(xiàn)場情況以及規(guī)范調(diào)度員的工作,并可用于培訓(xùn)目的。本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于B/S架構(gòu)的電力調(diào)度錄音查詢系統(tǒng),提供調(diào)度錄音,錄音文件轉(zhuǎn)文本,輸入關(guān)鍵字查詢錄音記錄,表單生成,數(shù)據(jù)統(tǒng)計(jì)等功能,適用于日常的電力調(diào)度工作,取得了良好的效果。
【關(guān)鍵字】? ? 電力調(diào)度? ? 錄音查詢? ? Elasticsearch
一、應(yīng)用場景
電力調(diào)度員日常工作的大量時(shí)間都消耗在錄音記錄的查詢上,為了找到特定的記錄,往往需要根據(jù)大致的發(fā)生時(shí)間逐條收聽涉及調(diào)度指令的錄音文件。由于電網(wǎng)所轄變電站、發(fā)電站等數(shù)量龐大,每天的調(diào)度指令多達(dá)上百條,純手工處理效率過低,且容易出錯(cuò)。因此電力調(diào)度部門提出開發(fā)一個(gè)調(diào)度錄音查詢系統(tǒng),具備調(diào)度錄音的采集與錄音文件的提取,錄音文件轉(zhuǎn)文本并全文存儲(chǔ),關(guān)鍵字檢索,各項(xiàng)表單生成等功能。
二、技術(shù)選型
錄音系統(tǒng)采用公司自有產(chǎn)品Logger 2G,相比前代錄音系統(tǒng),二代錄音系統(tǒng)支持云上集群化部署,可以動(dòng)態(tài)地增加節(jié)點(diǎn)來擴(kuò)充存儲(chǔ)空間,支持SIP協(xié)議主動(dòng)錄音,滿足業(yè)務(wù)量持續(xù)增長的需求。對外提供基于HTTP協(xié)議的RESTFul風(fēng)格的API接口,提供接口鑒權(quán),錄音記錄列表查詢,單條錄音記錄詳細(xì)信息查詢,錄音文件播放、下載等能力,可以滿足項(xiàng)目的需要。
錄音文件轉(zhuǎn)文本服務(wù),經(jīng)過對比測試,最終選擇百度智能云的60秒語音文件轉(zhuǎn)寫服務(wù),因其對特定方言識(shí)別的準(zhǔn)確率最高。
由于調(diào)度指令每天多達(dá)上百條,每一通調(diào)度電話的時(shí)長在10分鐘到20分鐘之間,因此經(jīng)過錄音文件轉(zhuǎn)文本識(shí)別后會(huì)產(chǎn)生上千字的調(diào)度文本,都要全量入庫保存,提取關(guān)鍵字并根據(jù)關(guān)鍵字進(jìn)行全文搜索。在如此大的數(shù)據(jù)量面前,傳統(tǒng)的諸如MySQL等關(guān)系型數(shù)據(jù)庫的性能就不能滿足了,尤其是在處理全文搜索請求時(shí)。因此,我們選用Elasticsearch搜索引擎來進(jìn)行錄音文本的存儲(chǔ)與搜索。
Elasticsearch是一個(gè)分布式、高擴(kuò)展、高實(shí)時(shí)性的搜索與數(shù)據(jù)分析引擎,它能很方便地使大量數(shù)據(jù)具備搜索、分析和探索的能力。充分利用Elasticsearch的水平伸縮性,能使數(shù)據(jù)在生產(chǎn)環(huán)境中更具價(jià)值[1]。通過在Mappings映射中安裝與配置IK分詞器,設(shè)置中文關(guān)鍵字詞典,可以輕松地從錄音文本記錄中提取調(diào)度關(guān)鍵字,形成詞頻記錄,方便用戶快速地檢索。Elasticsearch對外提供基于HTTP協(xié)議的RESTFul風(fēng)格的接口,提供數(shù)據(jù)插入、查詢、修改、刪除等操作能力,便于開發(fā)者使用各種語言開發(fā)的項(xiàng)目的集成。
三、系統(tǒng)架構(gòu)設(shè)計(jì)
本系統(tǒng)使用PHP7.3開發(fā),選用Laravel MVC,VueJS框架前后端分離開發(fā)模式,圖1為系統(tǒng)的架構(gòu)設(shè)計(jì)圖:
數(shù)據(jù)層由MySQL關(guān)系型數(shù)據(jù)庫,Elasticsearch搜索引擎和Redis內(nèi)存數(shù)據(jù)庫構(gòu)成。MySQL中保存系統(tǒng)的用戶信息,站場位置信息,錄音類別信息等關(guān)系型數(shù)據(jù)。Redis中保存接口訪問所需的token等具備時(shí)效性的信息。Elasticsearch中保存需要全文檢索的錄音記錄文本信息。來自瀏覽器的訪問請求通過Nginx Web服務(wù)器送入php7.3-fpm進(jìn)程解析,到達(dá)Web應(yīng)用層處理業(yè)務(wù)邏輯,處理過程中從數(shù)據(jù)層讀取所需數(shù)據(jù),進(jìn)行處理、包裝,最后將結(jié)果返回瀏覽器呈現(xiàn)給系統(tǒng)用戶。
Workerman定時(shí)任務(wù)負(fù)責(zé)從Logger 2G錄音服務(wù)器接口讀取錄音記錄及文件,經(jīng)過處理,送入語音識(shí)別服務(wù),并將識(shí)別結(jié)果的文字存儲(chǔ)到Elasticsearch搜索引擎,供應(yīng)用層讀取、解析。具體的錄音記錄處理流程如圖2所示:
四、主要功能實(shí)現(xiàn)
(一)錄音搜索
錄音搜索提供按關(guān)鍵字及時(shí)間范圍來搜索錄音記錄的功能,支持在線收聽錄音與下載錄音文件。頁面上按關(guān)鍵字出現(xiàn)的頻次顯示前20個(gè)關(guān)鍵字,供用戶點(diǎn)擊快速填充到關(guān)鍵字輸入欄。
錄音記錄列表中顯示搜索結(jié)果,包含錄音標(biāo)識(shí),通話開始時(shí)間,通話時(shí)長(以秒為單位),主叫Id,被叫Id,匹配到的錄音關(guān)鍵字文本記錄(以高亮顯示)等字段。點(diǎn)擊每條記錄的“播放錄音”按鈕即可在頁面上在線播放錄音,點(diǎn)擊“下載錄音”按鈕即可把錄音文件下載到本地。點(diǎn)擊每條錄音記錄左側(cè)的箭頭即可顯示該條記錄的詳細(xì)信息,包括完整錄音記錄文本,通話類型,錄音通道Id,呼叫方向,錄音記錄類型,通話結(jié)束時(shí)間等屬性。
(二) 工單生成
展開錄音記錄的詳細(xì)信息,點(diǎn)擊對應(yīng)工單的生成按鈕,例如“故障記錄單”,即可打開工單生成頁面。
頁面的左側(cè)為該條錄音記錄的詳細(xì)信息,頁面的右側(cè)為工單內(nèi)容的輸入表單,人工錄入故障記錄單的故障名稱、所屬設(shè)備、責(zé)任人、故障描述,系統(tǒng)自動(dòng)帶入發(fā)生時(shí)間、上報(bào)時(shí)間、發(fā)生位置、調(diào)度員信息,點(diǎn)擊提交按鈕,即可生成故障記錄單,并下載到本地操作終端上。圖3為工單生成頁面的截圖。
(三)關(guān)鍵字管理
此功能用于添加、管理Elasticsearch IK分詞器中所使用的關(guān)鍵字,用于對錄音記錄文本進(jìn)行檢索及詞頻統(tǒng)計(jì)。用戶每次對于關(guān)鍵字的添加、編輯、刪除操作都會(huì)在服務(wù)端生成一個(gè)字典文本文件,當(dāng)此文件被修改時(shí),Web服務(wù)器會(huì)在IK分詞器請求該文件時(shí)自動(dòng)返回相應(yīng)的Last-Modified 和 ETag響應(yīng)頭(header),供IK分詞器去抓取新的關(guān)鍵字進(jìn)而更新詞庫[2]。圖4為關(guān)鍵字管理頁面截圖。
(四)數(shù)據(jù)統(tǒng)計(jì)
此功能頁面上展示錄音記錄數(shù)量的統(tǒng)計(jì)數(shù)據(jù),包括錄音記錄歷史總計(jì),本年度總計(jì),本季度總計(jì),本月度總計(jì)及當(dāng)日總計(jì),同時(shí)展現(xiàn)當(dāng)日分小時(shí)錄音記錄量折線圖,供管理人員查看系統(tǒng)業(yè)務(wù)量統(tǒng)計(jì)數(shù)據(jù)。圖5為數(shù)據(jù)統(tǒng)計(jì)頁面截圖。
五、結(jié)束語
電力調(diào)度錄音綜合查詢系統(tǒng)的使用變以往逐條收聽查找錄音記錄的方式為文本搜索,大幅縮短了查找錄音記錄的時(shí)間。在線生成各種工單的功能幫助調(diào)度員減少忘提、漏提的情況,提高了調(diào)度工作的準(zhǔn)確度和完備度,在總體上大幅提升了電力調(diào)度工作的質(zhì)量與效率。
參? 考? 文? 獻(xiàn)
[1] 百度百科. https://baike.baidu.com/item/elasticsearch/3411206. 2021-07-07 CST
[2] Github. https://github.com/medcl/elasticsearch-analysis-ik/blob/master/README.md. 2019-04-19 UTC
劉偉(1979.02-),男,漢族,云南昆明,本科,中級(jí)工程師,研究方向:通信;
張遠(yuǎn)(1990.12-),男,漢族,河南襄城,研究生,中級(jí)工程師,研究方向:軟件開發(fā);
董顯平(1989.06-),男,拉祜族,云南臨滄,本科,高級(jí)工程師,研究方向:軟件開發(fā)者質(zhì)量保證;
蔡樹培(1989.07-),男,白族,云南大理,本科,高級(jí)工程師,研究方向:通信協(xié)議分析。