劉偉 張遠 董顯平 蔡樹培




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