分散式熱線錄音系統的整體設計及實現論文

分散式熱線錄音系統的整體設計及實現論文

  1 概述。

  近年來隨著移動網際網路的迅速發展, 國內外廣播電臺正在發生著深刻的變革[8]. 傳統廣播電臺面臨著巨大的挑戰, 如何吸引廣大的聽眾, 尤其是吸引廣大的移動智慧終端的聽眾, 成為了廣播電臺的最大的問號。 隨著廣播電臺節目主持人與聽眾之間的互動越來越頻繁, 傳統的電臺導播模式已無法滿足電臺節目業務的需求, 數字導播系統應用而生。 數字導播系統是新媒體變革大趨勢中的產物, 它有效地解決了傳統導播裝置無法滿足接聽大量聽眾來電的問題, 滿足了電臺和聽眾對節目形式的多種需求。

  隨著數字導播的在各家電臺的部署和應用, 聽眾參與電臺節目變得方便快捷, 熱線來電的資料統計為節目組提供有用的資訊, 因此對熱線錄音系統的研究變得越來越重要。

  傳統的熱線來電錄音功能, 是由錄音伺服器直接進行錄音的, 錄音檔案資源也集中儲存在錄音伺服器的硬體儲存裝置中, 這時錄音伺服器就需要很高的效能滿足實時的錄音和儲存大量的錄音檔案。 為了能夠減少錄音伺服器的負荷, 同時為了能夠儲存大量的錄音檔案資源, 透過對錄音功能的研究和分析, 設計出了分散式的熱線錄音系統。

  該課題根據熱線錄音的特點, 設計了基於硬體語音卡裝置的熱線錄音系統, 檔案資源分散式地儲存在各個頻道工作站上。 本文將從分散式熱線錄音系統的相關技術、整體設計和錄音系統的實現來進行講解。

  2 相關技術介紹。

  2.1 硬體錄音技術的研究和分析。

  本課題在頻率工作站端的熱線語音板卡裝置是杭州三匯公司生產的三匯語音卡, 使用的是 SHT 系列SHT–2B/USB 型號的語音卡, 這種型號採用 USB 介面,符合 1.1 協議的模擬電話線語音盒, 透過配置不同的功能模組, 即可實現虛擬電話機、座席、外線接入等功能。 該型號的語音卡支援 DTMF 和 FSK 模式。 採用電信標準的回聲抵消演算法, 支援 IP 電話應用和語音識別應用的 BargeIn. 它支援 4 通道全雙工錄音/放音, 不同的通道可以同時進行不同格式的錄放音, 支援 G711A–law、μ–law、linear PCM、IMA–ADPCM、MP3、VOX 和 WINDOWS 標準 WAV 格式, 可以方便地使用Cooledit 等多種聲音工具編輯和播放語音檔案。

  2.2 分散式檔案系統(DFS)。

  分散式檔案系統[1,2](DFS)把一些分散的(分佈在區域網內各個計算機上)共享資料夾, 集合到一個資料夾內(虛擬資料夾)。 利用分散式資料夾, 對於使用者來說,要訪問這些共享資料夾的時候, 只要開啟這個虛擬共享資料夾, 就可以看到所有連結到虛擬共享資料夾內的共享資料夾。 使用者感覺不到這是一個虛擬的共享資料夾, 感覺不到這些資料夾時分散於各個計算機上的。分散式檔案系統的好處是: 集中訪問簡化操作, 提高檔案存取效率。

  2.3 訊息佇列和 RabbitMQ.

  為實現業務伺服器系統對頻率工作站錄音功能的實時控制與管理需要在業務伺服器系統與頻率工作站之間建立可靠的通訊手段以保障控制命令與狀態資訊的實時互動。 在分散式熱線錄音系統中, 使用訊息中介軟體伺服器建立了一條基於標準訊息佇列協議的業務伺服器系統與頻率工作站互動的通道。

  使用AMQP標準協議作為自定義業務協議的承載手段, AMQP 是一個提供統一訊息服務的應用層標準協議, 選用 RabbitMQ[3]訊息佇列中介軟體開源專案作為訊息中介軟體伺服器。 RabbitMQ 訊息佇列中介軟體開源專案AMQP的標準實現, RabbitMQ定義了以下重要概念。

  (1) Exchange, 訊息交換機, 它指定訊息按什麼規則, 路由到哪個佇列。

  (2) Queue, 訊息佇列載體, 每個訊息都會被投入到一個或多個佇列。

  (3) Binding, 繫結, 作用是把 exchange 和 queue 按照路由規則繫結起來。

  (4) Routing Key, 路由關鍵字, exchange 根據路由關鍵字進行訊息投遞。

  3 分散式熱線錄音系統的整體設計。

  3.1 分散式熱線錄音系統的整體設計目標。

  數字導播系統是以圖形介面實現人機互動, 集導播計算機、主持人計算機、導播話機等為一體的數字音訊系統。 分散式熱線錄音系統是數字導播系統的業務子系統, 實現頻率工作站的錄音及相關管理功能以及對頻率工作站上的錄音檔案資源進行的管理。 分散式熱線錄音系統由錄音伺服器、訊息中介軟體伺服器、WEB 伺服器和若干個頻率工作站組成, 分散式熱線錄音系統的拓撲圖如圖 1 所示。 透過對使用者需求的調研及詳細分析得到了使用者的詳細需求, 並根據使用者需求設計了分散式熱線錄音系統的整體架構。

  3.2 整體結構設計。

  錄音伺服器的主要功能是提供對頻率工作站錄音策略的管理功能、提供與頻率工作站的互動介面即錄音服務介面協議以完成對頻率工作站的錄音操作的實時控制、提供對頻率工作站的錄音資源的快速檢索能力。

  訊息中介軟體伺服器建立了一條基於標準訊息佇列協議的業務伺服器系統與頻率工作站互動的通道, 使用 AMQP 協議承載錄音服務介面協議。

  Web 伺服器主要為業務伺服器系統提供 Web 能力,為使用者提供管理分散式熱線錄音系統的使用者介面互動介面。

  分散式檔案系統(DFS)為分散式錄音系統提供了統一的分散式檔案管理能力, 利用 DFS 地址對映能力將不同地址的頻率工作站對映到統一的域名下面, 透過自定義的 Uri 構造規則實現對頻率工作站錄音檔案的訪問及獲取, DFS 只為分散式錄音系統提供了檔案管理能力, 需要配合其他通訊及互動手段實現對頻率工作站實時錄音的控制功能。

  頻率工作站是分散式熱線錄音系統中實現錄音操作的獨立功能單元。 頻率工作站依據錄音策略對導播熱線語音通話進行錄音操作。 頻率工作站錄音系統主要包含四個功能模組, 各個模組相互配合並利用相關技術實現頻率工作站導播熱線語音通話的錄音功能。

  頻率工作站的四個業務功能模組分別是:

  (1)錄音服務協議棧模組。

  (2)錄音策略管理模組。

  (3)SIP[4,5]終端功能模組。

  (4)語音裝置控制模組。

  分散式熱線錄音系統的整體結構如圖 2 所示:

  4 分散式熱線錄音系統的實現。

  4.1 頻率工作站的實時錄音功能的設計。

  頻率工作站是分散式熱線錄音系統的錄音功能的實體, 本課題講述的分散式熱線錄音系統包含有若干個的頻率工作站。 每一個頻率工作站都單獨完成熱線錄音功能和對錄音檔案資源的儲存。 頻率工作站是由導播計算機和若干部熱線座機組成的, 這些熱線座機透過語音板卡裝置與導播計算機進行連線。 頻率工作站進行熱線通話錄音的過程是: 當聽眾向某個頻率工作站打進熱線來電的時候, 首先外來熱線要與頻率工作站的熱線接通, 接通之後, 頻率工作站透過各個功能模組相互配合共同完成熱線錄音功能。 錄音資源以檔案的形式儲存在頻率工作站的硬體儲存裝置當中。 如圖 3 為頻率工作站的拓撲圖。

  4.2 錄音伺服器業務功能的設計與實現。

  錄音伺服器管理和控制頻率工作站按照一定的錄音策略進行錄音和管理頻率工作站上的錄音檔案。 頻率工作站能夠按照一定的錄音策略進行熱線錄音。設計錄音策略表。 設計全錄音, 分時錄音等多種錄音策略。 錄音策略資訊表的設計如圖 4 所示。

  分散式熱線錄音系統頻率工作站的錄音檔案儲存在頻率工作站上。 通過錄音伺服器上的錄音檔案索引資訊表來統一管理錄音檔案, 錄音伺服器和頻率工作站上的資料庫透過資料庫訪問的方式進行資料傳輸,透過訪問頻率工作站資料庫中錄音檔案索引表, 對錄音檔案進行查詢, 刪除, 修改, 下載等操作。 錄音檔案索引表的設計如圖 5 所示。

  4.3 業務伺服器系統與頻率工作站通訊機制的.設計與實現。

  本課題使用AMQP標準協議作為自定義業務協議的承載手段, AMQP 是一個提供統一訊息服務的應用層標準協議, 選用 Rabbitmq 訊息佇列中介軟體開源專案作為訊息中介軟體伺服器。

  在訊息佇列服務的基礎上根據分散式熱線錄音系統的整體設計及通訊需要設計了自定義業務協議, 熱線錄音介面協議。 熱線錄音介面協議 RSI(RecordService Interface)對業務伺服器系統與頻率工作站間的通訊過程和型別進行了分類與描述, 業務伺服器與頻率工作站透過 RSI 協議可以完成狀態變化的通知, 業務功能執行等功能。

  RSI 將業務伺服器與頻率工作站間的互動分為事件、命令、請求及響應幾種型別。

  事件: 表示功能實體產生某些需要由接收者瞭解的資訊。

  命令: 表示功能實體要求立即實現某種操作。

  請求及響應: 表示功能實體發出請求訊息, 並且期待產生相應的反應。

  RSI 相關協議如表 1.

  4.4 語音板卡裝置錄音功能的設計與實現。

  頻率工作站是實現語音板卡裝置錄音功能的載體。(SIPAgent)是若干封裝了“SIPHelloSDK.dll”API 的 SIP代理, 用於和其他 SIP 終端之間的語音互動[7]. 板卡控制模組(CardManager)是封裝了“SHP_A3.dll”API 的基於三匯語音板卡的驅動控制程式, 主要負責控制話機的行為及狀態, 接收話機的行為及狀態, 以及對話機進行內存錄音, 放音的操作。 SIPAgent程序與板卡控制程序透過基於 UDP 的程序間通訊協議(IPC 協議)進行進行相關業務資訊, 電話控制資訊, 狀態資訊與初始化資訊的互動, 同時 SIPAgent 程序還會與其他控制程序進一步互動。詳細的 IPC 協議如表 2 所示。

  建立SIPAgent程序和語音板卡裝置之間的連線主要分為兩個步驟: (1)初始化階段。 CardManager 先啟動,檢測自身和 SIPAgent 的 UDP 訊息埠是否可用, 若SIPAgent 的 UDP 訊息埠被佔用, 則重新申請一個可用的 UDP 埠, 開啟守護程序。 成功後, 板卡驅動程序 先 啟 動 , 向 SIPAgent 發 送 IPC 協 議–23(UDPList)[9,10], 若某些 SIPAgent 程序未啟動, 就不會收到響應。 此時 SIP 代理程序啟動併發送(Request), CardManager 收到請求併發送(Response),完成對應資訊的初始化。 (2)語音資料傳輸階段。 SIP 代理程序在初始化時會從資料庫或 XML 配置檔案中讀取“SIP 代理程序-板卡通道”對應關係, 因此 SIP 代理程序已知自己對應的通道。 將SIPServer伺服器接入的語音資料接入到 SIPAgent. SIPAgent 將語音資料透過語音UDP埠傳送給CardManager. SIPAgent的Socket繫結相應的 UDP 埠, CardManager 中通道對應的語音UDP埠始終處於監聽(Listen)狀態, 當監聽到傳送來的語音資料後, 接受語音資料並將其存放到相應通道對應的環狀緩衝區中, 同時獲取到 SIP 代理程序對應的 IP 和 UDP 語音埠, 以便向其傳送語音訊息。

  語音資料具體的傳輸方式是: 在記憶體中建立 3 個錄音緩衝區和 3 個放音緩衝區, 用來對通道話機進行錄音放音操作。 環狀緩衝區在開始接受一定資料後,觸發響應的通知(BufferNotice), 這時就開啟乒乓記憶體的錄音和放音。 首先從換裝緩衝區中取出一段語音資料存入放音緩衝區 1 和放音緩衝區 2 中, 當緩衝區完成錄音放音操作而終止時, 會呼叫任務開始時設定的回撥函式。 回撥函式會分配給下一個緩衝區 3 新的錄音和放音任務。 三個緩衝區是互不干擾的, 會出現1–2–3–1–2–3……交替工作的狀態, 提高了多執行緒的讀寫效率。 三個錄音緩衝區也是相同的工作原理, 只不過錄音緩衝區的語音資料會直接傳送到SIPAgent的語音 UDP 埠, 然後透過網路將語音資料傳送到 SIPServer 上。在錄音資料的傳輸過程中, 通過錄音模組分別獲取記憶體中錄音和放音緩衝區內的音訊資料, 按照乒乓錄音的過程進行錄音, 並且錄製成 wav 格式的音訊檔案儲存到頻率工作站指定的 Record 資料夾下。

  5 結束語。

  本文 透過對熱線 錄音系統的 調研 , 並且 對Rabbitmq 和 SIP 終端程式與語音板卡連線的研究, 設計了分散式的熱線錄音系統的整體框架。 首先對分散式熱線錄音系統整體框架進行了分析和設計, 接著對幾個重要的技術模組進行了詳細的分析和設計, 逐步完成了對整個熱線錄音系統的設計。

  參考文獻

  1 李龍來,吳傑,呂智慧,楊明。基於 Web 服務的分散式檔案系統管理與最佳化方案。計算機工程與設計,2012,33(1):58–62.

  2 方君,陳華平,宋滸,劉曉茜。分散式檔案系統 K–DFS 的設計與實現。華中科技大學學報(自然科學版),2010,38(增刊 I)。

  3 袁佳,郭燕慧。基於 Rabbitmq 的海量日誌的分散式處理。軟體,2013,34(7):19–23.

  4 劉舒然。基於 SIP 協議的即時通訊系統的設計與實現[碩士學位論文].北京:北京交通大學。2012.

  5 王卓毅。基於 SIP 協議的網路電話設計與實現[碩士學位論文].西安:西安電子科技大學。2012.

  6 高曉婷。基於 AMQP 的資訊釋出與訂閱[碩士學位論文].杭州:浙江工業大學。2013.

最近訪問