分布式熱線錄音系統(tǒng)的整體設(shè)計(jì)及實(shí)現(xiàn)論文
1 概述。
近年來(lái)隨著移動(dòng)互聯(lián)網(wǎng)的迅速發(fā)展, 國(guó)內(nèi)外廣播電臺(tái)正在發(fā)生著深刻的變革[8]. 傳統(tǒng)廣播電臺(tái)面臨著巨大的挑戰(zhàn), 如何吸引廣大的聽眾, 尤其是吸引廣大的移動(dòng)智能終端的聽眾, 成為了廣播電臺(tái)的最大的問號(hào)。 隨著廣播電臺(tái)節(jié)目主持人與聽眾之間的互動(dòng)越來(lái)越頻繁, 傳統(tǒng)的電臺(tái)導(dǎo)播模式已無(wú)法滿足電臺(tái)節(jié)目業(yè)務(wù)的需求, 數(shù)字導(dǎo)播系統(tǒng)應(yīng)用而生。 數(shù)字導(dǎo)播系統(tǒng)是新媒體變革大趨勢(shì)中的產(chǎn)物, 它有效地解決了傳統(tǒng)導(dǎo)播設(shè)備無(wú)法滿足接聽大量聽眾來(lái)電的問題, 滿足了電臺(tái)和聽眾對(duì)節(jié)目形式的多種需求。
隨著數(shù)字導(dǎo)播的在各家電臺(tái)的部署和應(yīng)用, 聽眾參與電臺(tái)節(jié)目變得方便快捷, 熱線來(lái)電的數(shù)據(jù)統(tǒng)計(jì)為節(jié)目組提供有用的信息, 因此對(duì)熱線錄音系統(tǒng)的研究變得越來(lái)越重要。
傳統(tǒng)的熱線來(lái)電錄音功能, 是由錄音服務(wù)器直接進(jìn)行錄音的, 錄音文件資源也集中存儲(chǔ)在錄音服務(wù)器的硬件存儲(chǔ)設(shè)備中, 這時(shí)錄音服務(wù)器就需要很高的性能滿足實(shí)時(shí)的錄音和存儲(chǔ)大量的錄音文件。 為了能夠減少錄音服務(wù)器的負(fù)荷, 同時(shí)為了能夠保存大量的錄音文件資源, 通過(guò)對(duì)錄音功能的研究和分析, 設(shè)計(jì)出了分布式的熱線錄音系統(tǒng)。
該課題根據(jù)熱線錄音的特點(diǎn), 設(shè)計(jì)了基于硬件語(yǔ)音卡設(shè)備的熱線錄音系統(tǒng), 文件資源分布式地存儲(chǔ)在各個(gè)頻道工作站上。 本文將從分布式熱線錄音系統(tǒng)的相關(guān)技術(shù)、整體設(shè)計(jì)和錄音系統(tǒng)的實(shí)現(xiàn)來(lái)進(jìn)行講解。
2 相關(guān)技術(shù)介紹。
2.1 硬件錄音技術(shù)的研究和分析。
本課題在頻率工作站端的熱線語(yǔ)音板卡設(shè)備是杭州三匯公司生產(chǎn)的三匯語(yǔ)音卡, 使用的是 SHT 系列SHT–2B/USB 型號(hào)的語(yǔ)音卡, 這種型號(hào)采用 USB 接口,符合 1.1 協(xié)議的模擬電話線語(yǔ)音盒, 通過(guò)配置不同的功能模塊, 即可實(shí)現(xiàn)虛擬電話機(jī)、座席、外線接入等功能。 該型號(hào)的語(yǔ)音卡支持 DTMF 和 FSK 模式。 采用電信標(biāo)準(zhǔn)的回聲抵消算法, 支持 IP 電話應(yīng)用和語(yǔ)音識(shí)別應(yīng)用的 BargeIn. 它支持 4 通道全雙工錄音/放音, 不同的通道可以同時(shí)進(jìn)行不同格式的錄放音, 支持 G711A–law、μ–law、linear PCM、IMA–ADPCM、MP3、VOX 和 WINDOWS 標(biāo)準(zhǔn) WAV 格式, 可以方便地使用Cooledit 等多種聲音工具編輯和播放語(yǔ)音文件。
2.2 分布式文件系統(tǒng)(DFS)。
分布式文件系統(tǒng)[1,2](DFS)把一些分散的(分布在局域網(wǎng)內(nèi)各個(gè)計(jì)算機(jī)上)共享文件夾, 集合到一個(gè)文件夾內(nèi)(虛擬文件夾)。 利用分布式文件夾, 對(duì)于用戶來(lái)說(shuō),要訪問這些共享文件夾的時(shí)候, 只要打開這個(gè)虛擬共享文件夾, 就可以看到所有鏈接到虛擬共享文件夾內(nèi)的共享文件夾。 用戶感覺不到這是一個(gè)虛擬的共享文件夾, 感覺不到這些文件夾時(shí)分散于各個(gè)計(jì)算機(jī)上的。分布式文件系統(tǒng)的好處是: 集中訪問簡(jiǎn)化操作, 提高文件存取效率。
2.3 消息隊(duì)列和 RabbitMQ.
為實(shí)現(xiàn)業(yè)務(wù)服務(wù)器系統(tǒng)對(duì)頻率工作站錄音功能的實(shí)時(shí)控制與管理需要在業(yè)務(wù)服務(wù)器系統(tǒng)與頻率工作站之間建立可靠的通信手段以保障控制命令與狀態(tài)信息的實(shí)時(shí)交互。 在分布式熱線錄音系統(tǒng)中, 使用消息中間件服務(wù)器建立了一條基于標(biāo)準(zhǔn)消息隊(duì)列協(xié)議的業(yè)務(wù)服務(wù)器系統(tǒng)與頻率工作站交互的通道。
使用AMQP標(biāo)準(zhǔn)協(xié)議作為自定義業(yè)務(wù)協(xié)議的承載手段, AMQP 是一個(gè)提供統(tǒng)一消息服務(wù)的應(yīng)用層標(biāo)準(zhǔn)協(xié)議, 選用 RabbitMQ[3]消息隊(duì)列中間件開源項(xiàng)目作為消息中間件服務(wù)器。 RabbitMQ 消息隊(duì)列中間件開源項(xiàng)目AMQP的標(biāo)準(zhǔn)實(shí)現(xiàn), RabbitMQ定義了以下重要概念。
。1) Exchange, 消息交換機(jī), 它指定消息按什么規(guī)則, 路由到哪個(gè)隊(duì)列。
(2) Queue, 消息隊(duì)列載體, 每個(gè)消息都會(huì)被投入到一個(gè)或多個(gè)隊(duì)列。
(3) Binding, 綁定, 作用是把 exchange 和 queue 按照路由規(guī)則綁定起來(lái)。
(4) Routing Key, 路由關(guān)鍵字, exchange 根據(jù)路由關(guān)鍵字進(jìn)行消息投遞。
3 分布式熱線錄音系統(tǒng)的整體設(shè)計(jì)。
3.1 分布式熱線錄音系統(tǒng)的整體設(shè)計(jì)目標(biāo)。
數(shù)字導(dǎo)播系統(tǒng)是以圖形界面實(shí)現(xiàn)人機(jī)交互, 集導(dǎo)播計(jì)算機(jī)、主持人計(jì)算機(jī)、導(dǎo)播話機(jī)等為一體的數(shù)字音頻系統(tǒng)。 分布式熱線錄音系統(tǒng)是數(shù)字導(dǎo)播系統(tǒng)的業(yè)務(wù)子系統(tǒng), 實(shí)現(xiàn)頻率工作站的錄音及相關(guān)管理功能以及對(duì)頻率工作站上的錄音文件資源進(jìn)行的管理。 分布式熱線錄音系統(tǒng)由錄音服務(wù)器、消息中間件服務(wù)器、WEB 服務(wù)器和若干個(gè)頻率工作站組成, 分布式熱線錄音系統(tǒng)的拓?fù)鋱D如圖 1 所示。 通過(guò)對(duì)用戶需求的調(diào)研及詳細(xì)分析得到了用戶的詳細(xì)需求, 并根據(jù)用戶需求設(shè)計(jì)了分布式熱線錄音系統(tǒng)的整體架構(gòu)。
3.2 整體結(jié)構(gòu)設(shè)計(jì)。
錄音服務(wù)器的主要功能是提供對(duì)頻率工作站錄音策略的管理功能、提供與頻率工作站的交互接口即錄音服務(wù)接口協(xié)議以完成對(duì)頻率工作站的錄音操作的實(shí)時(shí)控制、提供對(duì)頻率工作站的錄音資源的快速檢索能力。
消息中間件服務(wù)器建立了一條基于標(biāo)準(zhǔn)消息隊(duì)列協(xié)議的業(yè)務(wù)服務(wù)器系統(tǒng)與頻率工作站交互的通道, 使用 AMQP 協(xié)議承載錄音服務(wù)接口協(xié)議。
Web 服務(wù)器主要為業(yè)務(wù)服務(wù)器系統(tǒng)提供 Web 能力,為用戶提供管理分布式熱線錄音系統(tǒng)的用戶界面交互接口。
分布式文件系統(tǒng)(DFS)為分布式錄音系統(tǒng)提供了統(tǒng)一的分布式文件管理能力, 利用 DFS 地址映射能力將不同地址的頻率工作站映射到統(tǒng)一的域名下面, 通過(guò)自定義的 Uri 構(gòu)造規(guī)則實(shí)現(xiàn)對(duì)頻率工作站錄音文件的訪問及獲取, DFS 只為分布式錄音系統(tǒng)提供了文件管理能力, 需要配合其他通信及交互手段實(shí)現(xiàn)對(duì)頻率工作站實(shí)時(shí)錄音的控制功能。
頻率工作站是分布式熱線錄音系統(tǒng)中實(shí)現(xiàn)錄音操作的獨(dú)立功能單元。 頻率工作站依據(jù)錄音策略對(duì)導(dǎo)播熱線語(yǔ)音通話進(jìn)行錄音操作。 頻率工作站錄音系統(tǒng)主要包含四個(gè)功能模塊, 各個(gè)模塊相互配合并利用相關(guān)技術(shù)實(shí)現(xiàn)頻率工作站導(dǎo)播熱線語(yǔ)音通話的錄音功能。
頻率工作站的四個(gè)業(yè)務(wù)功能模塊分別是:
。1)錄音服務(wù)協(xié)議棧模塊。
(2)錄音策略管理模塊。
。3)SIP[4,5]終端功能模塊。
。4)語(yǔ)音設(shè)備控制模塊。
分布式熱線錄音系統(tǒng)的整體結(jié)構(gòu)如圖 2 所示:
4 分布式熱線錄音系統(tǒng)的實(shí)現(xiàn)。
4.1 頻率工作站的實(shí)時(shí)錄音功能的設(shè)計(jì)。
頻率工作站是分布式熱線錄音系統(tǒng)的錄音功能的實(shí)體, 本課題講述的分布式熱線錄音系統(tǒng)包含有若干個(gè)的頻率工作站。 每一個(gè)頻率工作站都單獨(dú)完成熱線錄音功能和對(duì)錄音文件資源的存儲(chǔ)。 頻率工作站是由導(dǎo)播計(jì)算機(jī)和若干部熱線座機(jī)組成的, 這些熱線座機(jī)通過(guò)語(yǔ)音板卡設(shè)備與導(dǎo)播計(jì)算機(jī)進(jìn)行連接。 頻率工作站進(jìn)行熱線通話錄音的過(guò)程是: 當(dāng)聽眾向某個(gè)頻率工作站打進(jìn)熱線來(lái)電的時(shí)候, 首先外來(lái)熱線要與頻率工作站的熱線接通, 接通之后, 頻率工作站通過(guò)各個(gè)功能模塊相互配合共同完成熱線錄音功能。 錄音資源以文件的形式存儲(chǔ)在頻率工作站的硬件存儲(chǔ)設(shè)備當(dāng)中。 如圖 3 為頻率工作站的拓?fù)鋱D。
4.2 錄音服務(wù)器業(yè)務(wù)功能的設(shè)計(jì)與實(shí)現(xiàn)。
錄音服務(wù)器管理和控制頻率工作站按照一定的錄音策略進(jìn)行錄音和管理頻率工作站上的錄音文件。 頻率工作站能夠按照一定的錄音策略進(jìn)行熱線錄音。設(shè)計(jì)錄音策略表。 設(shè)計(jì)全錄音, 分時(shí)錄音等多種錄音策略。 錄音策略信息表的設(shè)計(jì)如圖 4 所示。
分布式熱線錄音系統(tǒng)頻率工作站的錄音文件存儲(chǔ)在頻率工作站上。 通過(guò)錄音服務(wù)器上的錄音文件索引信息表來(lái)統(tǒng)一管理錄音文件, 錄音服務(wù)器和頻率工作站上的數(shù)據(jù)庫(kù)通過(guò)數(shù)據(jù)庫(kù)訪問的方式進(jìn)行數(shù)據(jù)傳輸,通過(guò)訪問頻率工作站數(shù)據(jù)庫(kù)中錄音文件索引表, 對(duì)錄音文件進(jìn)行查詢, 刪除, 修改, 下載等操作。 錄音文件索引表的設(shè)計(jì)如圖 5 所示。
4.3 業(yè)務(wù)服務(wù)器系統(tǒng)與頻率工作站通信機(jī)制的.設(shè)計(jì)與實(shí)現(xiàn)。
本課題使用AMQP標(biāo)準(zhǔn)協(xié)議作為自定義業(yè)務(wù)協(xié)議的承載手段, AMQP 是一個(gè)提供統(tǒng)一消息服務(wù)的應(yīng)用層標(biāo)準(zhǔn)協(xié)議, 選用 Rabbitmq 消息隊(duì)列中間件開源項(xiàng)目作為消息中間件服務(wù)器。
在消息隊(duì)列服務(wù)的基礎(chǔ)上根據(jù)分布式熱線錄音系統(tǒng)的整體設(shè)計(jì)及通信需要設(shè)計(jì)了自定義業(yè)務(wù)協(xié)議, 熱線錄音接口協(xié)議。 熱線錄音接口協(xié)議 RSI(RecordService Interface)對(duì)業(yè)務(wù)服務(wù)器系統(tǒng)與頻率工作站間的通信過(guò)程和類型進(jìn)行了分類與描述, 業(yè)務(wù)服務(wù)器與頻率工作站通過(guò) RSI 協(xié)議可以完成狀態(tài)變化的通知, 業(yè)務(wù)功能執(zhí)行等功能。
RSI 將業(yè)務(wù)服務(wù)器與頻率工作站間的交互分為事件、命令、請(qǐng)求及響應(yīng)幾種類型。
事件: 表示功能實(shí)體產(chǎn)生某些需要由接收者了解的信息。
命令: 表示功能實(shí)體要求立即實(shí)現(xiàn)某種操作。
請(qǐng)求及響應(yīng): 表示功能實(shí)體發(fā)出請(qǐng)求消息, 并且期待產(chǎn)生相應(yīng)的反應(yīng)。
RSI 相關(guān)協(xié)議如表 1.
4.4 語(yǔ)音板卡設(shè)備錄音功能的設(shè)計(jì)與實(shí)現(xiàn)。
頻率工作站是實(shí)現(xiàn)語(yǔ)音板卡設(shè)備錄音功能的載體。(SIPAgent)是若干封裝了“SIPHelloSDK.dll”API 的 SIP代理, 用于和其他 SIP 終端之間的語(yǔ)音交互[7]. 板卡控制模塊(CardManager)是封裝了“SHP_A3.dll”API 的基于三匯語(yǔ)音板卡的驅(qū)動(dòng)控制程序, 主要負(fù)責(zé)控制話機(jī)的行為及狀態(tài), 接收話機(jī)的行為及狀態(tài), 以及對(duì)話機(jī)進(jìn)行內(nèi)存錄音, 放音的操作。 SIPAgent進(jìn)程與板卡控制進(jìn)程通過(guò)基于 UDP 的進(jìn)程間通信協(xié)議(IPC 協(xié)議)進(jìn)行進(jìn)行相關(guān)業(yè)務(wù)信息, 電話控制信息, 狀態(tài)信息與初始化信息的交互, 同時(shí) SIPAgent 進(jìn)程還會(huì)與其他控制進(jìn)程進(jìn)一步交互。詳細(xì)的 IPC 協(xié)議如表 2 所示。
建立SIPAgent進(jìn)程和語(yǔ)音板卡設(shè)備之間的連接主要分為兩個(gè)步驟: (1)初始化階段。 CardManager 先啟動(dòng),檢測(cè)自身和 SIPAgent 的 UDP 消息端口是否可用, 若SIPAgent 的 UDP 消息端口被占用, 則重新申請(qǐng)一個(gè)可用的 UDP 端口, 開啟守護(hù)進(jìn)程。 成功后, 板卡驅(qū)動(dòng)進(jìn)程 先 啟 動(dòng) , 向 SIPAgent 發(fā) 送 IPC 協(xié) 議–23(UDPList)[9,10], 若某些 SIPAgent 進(jìn)程未啟動(dòng), 就不會(huì)收到響應(yīng)。 此時(shí) SIP 代理進(jìn)程啟動(dòng)并發(fā)送(Request), CardManager 收到請(qǐng)求并發(fā)送(Response),完成對(duì)應(yīng)信息的初始化。 (2)語(yǔ)音數(shù)據(jù)傳輸階段。 SIP 代理進(jìn)程在初始化時(shí)會(huì)從數(shù)據(jù)庫(kù)或 XML 配置文件中讀取“SIP 代理進(jìn)程-板卡通道”對(duì)應(yīng)關(guān)系, 因此 SIP 代理進(jìn)程已知自己對(duì)應(yīng)的通道。 將SIPServer服務(wù)器接入的語(yǔ)音數(shù)據(jù)接入到 SIPAgent. SIPAgent 將語(yǔ)音數(shù)據(jù)通過(guò)語(yǔ)音UDP端口發(fā)送給CardManager. SIPAgent的Socket綁定相應(yīng)的 UDP 端口, CardManager 中通道對(duì)應(yīng)的語(yǔ)音UDP端口始終處于監(jiān)聽(Listen)狀態(tài), 當(dāng)監(jiān)聽到發(fā)送來(lái)的語(yǔ)音數(shù)據(jù)后, 接受語(yǔ)音數(shù)據(jù)并將其存放到相應(yīng)通道對(duì)應(yīng)的環(huán)狀緩沖區(qū)中, 同時(shí)獲取到 SIP 代理進(jìn)程對(duì)應(yīng)的 IP 和 UDP 語(yǔ)音端口, 以便向其發(fā)送語(yǔ)音消息。
語(yǔ)音數(shù)據(jù)具體的傳輸方式是: 在內(nèi)存中建立 3 個(gè)錄音緩沖區(qū)和 3 個(gè)放音緩沖區(qū), 用來(lái)對(duì)通道話機(jī)進(jìn)行錄音放音操作。 環(huán)狀緩沖區(qū)在開始接受一定數(shù)據(jù)后,觸發(fā)響應(yīng)的通知(BufferNotice), 這時(shí)就開啟乒乓內(nèi)存的錄音和放音。 首先從換裝緩沖區(qū)中取出一段語(yǔ)音數(shù)據(jù)存入放音緩沖區(qū) 1 和放音緩沖區(qū) 2 中, 當(dāng)緩沖區(qū)完成錄音放音操作而終止時(shí), 會(huì)調(diào)用任務(wù)開始時(shí)設(shè)置的回調(diào)函數(shù)。 回調(diào)函數(shù)會(huì)分配給下一個(gè)緩沖區(qū) 3 新的錄音和放音任務(wù)。 三個(gè)緩沖區(qū)是互不干擾的, 會(huì)出現(xiàn)1–2–3–1–2–3……交替工作的狀態(tài), 提高了多線程的讀寫效率。 三個(gè)錄音緩沖區(qū)也是相同的工作原理, 只不過(guò)錄音緩沖區(qū)的語(yǔ)音數(shù)據(jù)會(huì)直接發(fā)送到SIPAgent的語(yǔ)音 UDP 端口, 然后通過(guò)網(wǎng)路將語(yǔ)音數(shù)據(jù)發(fā)送到 SIPServer 上。在錄音數(shù)據(jù)的傳輸過(guò)程中, 通過(guò)錄音模塊分別獲取內(nèi)存中錄音和放音緩沖區(qū)內(nèi)的音頻數(shù)據(jù), 按照乒乓錄音的過(guò)程進(jìn)行錄音, 并且錄制成 wav 格式的音頻文件存儲(chǔ)到頻率工作站指定的 Record 文件夾下。
5 結(jié)束語(yǔ)。
本文 通過(guò)對(duì)熱線 錄音系統(tǒng)的 調(diào)研 , 并且 對(duì)Rabbitmq 和 SIP 終端程序與語(yǔ)音板卡連接的研究, 設(shè)計(jì)了分布式的熱線錄音系統(tǒng)的整體框架。 首先對(duì)分布式熱線錄音系統(tǒng)整體框架進(jìn)行了分析和設(shè)計(jì), 接著對(duì)幾個(gè)重要的技術(shù)模塊進(jìn)行了詳細(xì)的分析和設(shè)計(jì), 逐步完成了對(duì)整個(gè)熱線錄音系統(tǒng)的設(shè)計(jì)。
參考文獻(xiàn)
1 李龍來(lái),吳杰,呂智慧,楊明; Web 服務(wù)的分布式文件系統(tǒng)管理與優(yōu)化方案。計(jì)算機(jī)工程與設(shè)計(jì),2012,33(1):58–62.
2 方君,陳華平,宋滸,劉曉茜。分布式文件系統(tǒng) K–DFS 的設(shè)計(jì)與實(shí)現(xiàn)。華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,38(增刊 I)。
3 袁佳,郭燕慧; Rabbitmq 的海量日志的分布式處理。軟件,2013,34(7):19–23.
4 劉舒然。基于 SIP 協(xié)議的即時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[碩士學(xué)位論文].北京:北京交通大學(xué)。2012.
5 王卓毅; SIP 協(xié)議的網(wǎng)絡(luò)電話設(shè)計(jì)與實(shí)現(xiàn)[碩士學(xué)位論文].西安:西安電子科技大學(xué)。2012.
6 高曉婷; AMQP 的信息發(fā)布與訂閱[碩士學(xué)位論文].杭州:浙江工業(yè)大學(xué)。2013.
【分布式熱線錄音系統(tǒng)的整體設(shè)計(jì)及實(shí)現(xiàn)論文】相關(guān)文章:
淺析基于云計(jì)算的分布式數(shù)據(jù)挖掘系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)論文11-14
橋梁整體設(shè)計(jì)技巧論文11-11
分布式電源系統(tǒng)設(shè)計(jì)論文11-13
整體廚柜的節(jié)能設(shè)計(jì)研究論文11-04
解讀整體把握,實(shí)現(xiàn)長(zhǎng)文短教(必修教學(xué)論文)12-06
GIS設(shè)計(jì)與實(shí)現(xiàn)論文范例07-15
酒店管理的設(shè)計(jì)與實(shí)現(xiàn)論文01-14