分布式熱線錄音系統的整體設計及實現論文
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.
【分布式熱線錄音系統的整體設計及實現論文】相關文章:
橋梁整體設計技巧論文11-11
分布式電源系統設計論文11-13
整體廚柜的節能設計研究論文11-04
GIS設計與實現論文范例07-15
酒店管理的設計與實現論文01-14
展館漫游系統設計與實現論文11-15
BSP 系統的設計與實現分析論文11-19