本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及語音會議創(chuàng)建方法、會議服務(wù)器及系統(tǒng)。
背景技術(shù):
在企業(yè)的日常運(yùn)營中,不同地區(qū)的用戶會通過會議服務(wù)器就某個專題進(jìn)行語音會議交流。傳統(tǒng)會議服務(wù)器利用通信設(shè)備配套的數(shù)字信號處理(digitalsignalprocessing,簡稱dsp)芯片處理語音信息。隨著中央處理器(centralprocessingunit,簡稱cpu)的處理性能提升,現(xiàn)有會議服務(wù)器實(shí)現(xiàn)了在單個cpu上對語音編解碼及混音的功能。
但是由于單個cpu的容量有限,基于單個cpu的會議服務(wù)器的單個會議可參與的用戶較少,最多在100方左右。現(xiàn)有會議服務(wù)器無法滿足某些特定的場景,比如200—300人的遠(yuǎn)程培訓(xùn)、講座等。雖然現(xiàn)有多個cpu的總?cè)萘繚M足大容量會議的需求,但是現(xiàn)有技術(shù)卻無法利用多個cpu召開同一個大容量的會議。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種語音會議的創(chuàng)建方法、會議服務(wù)器及系統(tǒng),可以實(shí)現(xiàn)跨cpu的會議,擴(kuò)大了會議服務(wù)器可創(chuàng)建的單個會議的容量。
第一方面,本發(fā)明提供了一種語音會議的創(chuàng)建方法,該方法應(yīng)用于具有多個中央處理器cpu的會議服務(wù)器,包括:
會議服務(wù)器接收終端發(fā)送的會議創(chuàng)建請求,會議創(chuàng)建請求中攜帶會議的容量信息;根據(jù)會議創(chuàng)建請求中攜帶的會議的容量信息,確定會議服務(wù)器包 括的多個cpu的總?cè)萘看笥诨蛘叩扔跁h的容量;從多個cpu中選取總?cè)萘繚M足會議的容量的至少兩個cpu;在至少兩個cpu之間建立通信連接,創(chuàng)建由至少兩個cpu進(jìn)行語音信息處理的會議。因此,本發(fā)明實(shí)施例提供的方案能夠?qū)崿F(xiàn)跨cpu的會議,擴(kuò)大了會議服務(wù)器可創(chuàng)建的單個會議的容量。
在一種可能的設(shè)計(jì)中,將至少兩個cpu分為主cpu和m-1個輔cpu,其中m為大于或者等于2的正整數(shù);在主cpu和所述m-1個輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息;將接入會議的終端的語音信息分配到m個cpu進(jìn)行語音信息處理,創(chuàng)建會議。
具體地,通過設(shè)置主cpu和輔cpu,以及將主cpu和m-1個輔cpu中的每一個輔cpu建立通信連接的方式,實(shí)現(xiàn)了終端的語音信息之間跨cpu互通,實(shí)現(xiàn)了單個會議跨cpu。
在一種可能的設(shè)計(jì)中,為所述主cpu配置m-1個會議資源點(diǎn),分別為所述m-1個輔cpu中的每一個輔cpu配置一個會議資源點(diǎn);將所述主cpu的m-1個會議資源點(diǎn)分別與所述m-1個輔cpu中的每一個輔cpu的會議資源點(diǎn)配對;所述主cpu分別與所述m-1個輔cpu中的每一個輔cpu通過配對的會議資源點(diǎn)交換語音信息。
在一種可能的設(shè)計(jì)中,分別為所述m-1個輔cpu中的每一個輔cpu配置第一共享內(nèi)存和第二共享內(nèi)存;所述主cpu將所述至少兩個cpu中除第i個輔cpu的語音信息存放在所述第i個輔cpu的第一共享內(nèi)存中;所述主cpu從所述第i個輔cpu的第二共享內(nèi)存中獲取第i個輔cpu的語音信息,其中,i為大于或者等于1且小于或者等于m-1的正整數(shù)。
更具體地,通過為主cpu和輔cpu建立通信通道直接交換語音信息的方式;或者通過為主cpu和輔cpu配置共享內(nèi)存通過間接存取的方式交換語音信息等方式,實(shí)現(xiàn)了主cpu和輔cpu之間的互通。在實(shí)際應(yīng)用中,可根據(jù)實(shí)際軟硬件性能,選擇其中一種或者兩種方式的結(jié)合,實(shí)現(xiàn)跨cpu會議。
需要說明的是,對于接入會議的終端的分配,可以采取平衡負(fù)載原則,將接入會議的終端的語音信息平均分配到至少兩個cpu;或者可以采取最大負(fù)載原則,將接入會議的終端的語音信息依次分配到至少兩個cpu。在實(shí)際應(yīng)用中,可根據(jù)實(shí)際設(shè)計(jì)的需要,選擇其中一種分配方式,將終端的語音信息分配到各cpu進(jìn)行處理。
在一種可能的設(shè)計(jì)中,會議服務(wù)器運(yùn)行一個會議控制進(jìn)程,多個cpu中的每一個cpu上運(yùn)行一個語音處理進(jìn)程;語音處理進(jìn)程用于對語音信息進(jìn)行編解碼及混音,會議控制進(jìn)程用于管理和調(diào)度語音處理進(jìn)程;會議控制進(jìn)程從多個cpu中選取總?cè)萘繚M足會議的容量的至少兩個cpu;會議控制進(jìn)程在至少兩個cpu上運(yùn)行的至少兩個語音處理進(jìn)程之間建立通信連接,會議控制進(jìn)程將接入會議的終端的語音信息分配到至少兩個語音處理進(jìn)程進(jìn)行語音信息處理,創(chuàng)建會議。
具體地,可根據(jù)實(shí)際設(shè)計(jì),將會議服務(wù)器拆分成會議控制和語音處理兩部分,在相應(yīng)的cpu上布置相關(guān)進(jìn)程,完成相應(yīng)的方法步驟或功能。各cpu上運(yùn)行的語音處理進(jìn)程之間的互通方式可參見上述主cpu和輔cpu之間實(shí)現(xiàn)互通的方式。
第二方面,本發(fā)明提供了一種會議服務(wù)器,具有多個中央處理器cpu,包括:
接收單元,用于接收終端發(fā)送的會議創(chuàng)建請求,會議創(chuàng)建請求中攜帶會議的容量信息;確定單元,用于根據(jù)會議創(chuàng)建請求中攜帶的會議的容量信息,確定會議服務(wù)器包括的多個cpu的總?cè)萘看笥诨蛘叩扔跁h的容量;選取單元,用于從多個cpu中選取總?cè)萘繚M足會議的容量的至少兩個cpu;創(chuàng)建單元,用于在至少兩個cpu之間建立通信連接,創(chuàng)建由至少兩個cpu進(jìn)行語音信息處理的會議。
在一種可能的設(shè)計(jì)中,創(chuàng)建單元具體用于:將至少兩個cpu分為主cpu和m-1個輔cpu,其中m為大于或者等于2的正整數(shù);在主cpu和m-1個 輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息;將接入會議的終端的語音信息分配到m個cpu進(jìn)行語音信息處理,創(chuàng)建會議。
在一種可能的設(shè)計(jì)中,創(chuàng)建單元包括:第一配置子單元,用于為主cpu配置m-1個會議資源點(diǎn),分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點(diǎn);配對子單元,用于將主cpu的m-1個會議資源點(diǎn)分別與m-1個輔cpu中的每一個輔cpu的會議資源點(diǎn)配對;主cpu分別與m-1個輔cpu中的每一個輔cpu通過配對的會議資源點(diǎn)交換語音信息。
在一種可能的設(shè)計(jì)中,創(chuàng)建單元包括:第二配置子單元,用于分別為m-1個輔cpu中的每一個輔cpu配置第一共享內(nèi)存和第二共享內(nèi)存;其中,主cpu將所述至少兩個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內(nèi)存中;主cpu從第i個輔cpu的第二共享內(nèi)存中獲取第i個輔cpu的語音信息,其中,i為大于或者等于1且小于或者等于m-1的正整數(shù)。
在一種可能的設(shè)計(jì)中,會議服務(wù)器運(yùn)行一個會議控制進(jìn)程,多個cpu中的每一個cpu上運(yùn)行一個語音處理進(jìn)程;語音處理進(jìn)程用于對語音信息進(jìn)行編解碼及混音,會議控制進(jìn)程用于管理和調(diào)度語音處理進(jìn)程;會議控制進(jìn)程從多個cpu中選取總?cè)萘繚M足會議的容量的至少兩個cpu;會議控制進(jìn)程在至少兩個cpu上運(yùn)行的至少兩個語音處理進(jìn)程之間建立通信連接,會議控制進(jìn)程將接入會議的終端的語音信息分配到至少兩個語音處理進(jìn)程進(jìn)行語音信息處理,創(chuàng)建會議。
第三方面,本發(fā)明提供了一種會議服務(wù)器,包括:網(wǎng)卡、存儲器、多個處理器和總線;網(wǎng)卡配置多個通信接口,其中,終端通過通信接口交換語音信息;存儲器用于存儲程序和終端的語音信息;網(wǎng)卡、存儲器和處理器通過總線通信;當(dāng)會議服務(wù)器運(yùn)行時(shí),處理器用于執(zhí)行存儲器存儲的程序,以執(zhí)行上述第一方面所述的方法。
第四方面,本發(fā)明提供了一種語音會議的創(chuàng)建系統(tǒng),包括:
終端,用于向會議服務(wù)器發(fā)送會議創(chuàng)建請求,會議創(chuàng)建請求中攜帶會議的容量信息;會議服務(wù)器,用于接收終端發(fā)送的會議創(chuàng)建請求,根據(jù)會議創(chuàng)建請求中攜帶的會議的容量信息,確定會議服務(wù)器包括的多個cpu的總?cè)萘看笥诨蛘叩扔跁h的容量;從多個cpu中選取總?cè)萘繚M足會議的容量的至少兩個cpu;在至少兩個cpu之間建立通信連接,創(chuàng)建由至少兩個cpu進(jìn)行語音信息處理的會議。
在一種可能的設(shè)計(jì)中,會議服務(wù)器具體用于:將至少兩個cpu分為主cpu和m-1個輔cpu,其中m為大于或者等于2的正整數(shù);在主cpu和m-1個輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息;將接入會議的終端的語音信息分配到至少兩個cpu進(jìn)行語音信息處理,創(chuàng)建會議。
在一種可能的設(shè)計(jì)中,會議服務(wù)器具體用于:為主cpu配置m-1個會議資源點(diǎn),分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點(diǎn);將主cpu的m-1個會議資源點(diǎn)分別與m-1個輔cpu中的每一個輔cpu的會議資源點(diǎn)配對;主cpu分別與m-1個輔cpu中的每一個輔cpu通過配對的會議資源點(diǎn)交換語音信息。
在一種可能的設(shè)計(jì)中,會議服務(wù)器具體用于:分別為m-1個輔cpu中的每一個輔cpu配置第一共享內(nèi)存和第二共享內(nèi)存;主cpu將至少兩個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內(nèi)存中;主cpu從第i個輔cpu的第二共享內(nèi)存中獲取第i個輔cpu的語音信息,其中,i為大于或者等于1且小于或者等于m-1的正整數(shù)。
基于上述技術(shù)方案,本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法、會議服務(wù)器及系統(tǒng),可以實(shí)現(xiàn)跨cpu的單個會議,擴(kuò)大了多cpu核的會議服務(wù)器可創(chuàng)建的單個會議的容量,利用了各cpu的碎片資源,提升了用戶體驗(yàn)及cpu利用率。
附圖說明
圖1為語音會議使用場景架構(gòu)圖;
圖2為本發(fā)明實(shí)施例提供的一種語音會議創(chuàng)建方法流程圖;
圖3為本發(fā)明實(shí)施提供的主cpu和輔cpu之間建立通信連接一種具體的實(shí)現(xiàn)方式;
圖4為本發(fā)明實(shí)施提供的會議控制進(jìn)程與語音處理進(jìn)程之間的通信連接關(guān)系圖;
圖5為本發(fā)明實(shí)施例提供的一種語音會議創(chuàng)建流程圖;
圖6為本發(fā)明實(shí)施提供的主cpu和輔cpu之間建立通信連接另一種具體的實(shí)現(xiàn)方式;
圖7為本發(fā)明實(shí)施例提供的另一種語音會議創(chuàng)建流程圖;
圖8為本發(fā)明實(shí)施例提供的一種語音會議創(chuàng)建信令流程圖;
圖9為本發(fā)明實(shí)施例提供的一種參會人員入會流程圖;
圖10為本發(fā)明實(shí)施例提供的另一種語音會議創(chuàng)建信令流程圖;
圖11為本發(fā)明實(shí)施例提供的另一種參會人員入會流程圖;
圖12a為本發(fā)明實(shí)施例提供的一種會議服務(wù)器結(jié)構(gòu)示意圖;
圖12b為本發(fā)明實(shí)施例提供的另一種會議服務(wù)器結(jié)構(gòu)示意圖;
圖13a為本發(fā)明實(shí)施例提供的一種創(chuàng)建單元1204結(jié)構(gòu)示意圖;
圖13b為本發(fā)明實(shí)施例提供的另一種創(chuàng)建單元1204結(jié)構(gòu)示意圖;
圖14為本發(fā)明實(shí)施例提供的又一種會議服務(wù)器結(jié)構(gòu)示意圖;
圖15為本發(fā)明實(shí)施例提供的一種語音會議創(chuàng)建系統(tǒng)架構(gòu)圖。
具體實(shí)施方式
下面將結(jié)合附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞 動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例描述的會議服務(wù)器框架以及業(yè)務(wù)場景是為了更加清楚的說明本發(fā)明實(shí)施例的技術(shù)方案,并不構(gòu)成對于本發(fā)明實(shí)施例提供的技術(shù)方案的限定,本領(lǐng)域普通技術(shù)人員可知,隨著會議服務(wù)器的演變和新業(yè)務(wù)場景的出現(xiàn),本發(fā)明實(shí)施例提供的技術(shù)方案對于類似的技術(shù)問題,同樣適用。
圖1示出了語音會議使用場景架構(gòu)圖。如圖1所示,多個用戶語音終端通過會議服務(wù)器相互通話。其中,用戶語音終端可以包括具有無線或有線語音通話功能的電腦終端、手機(jī)終端和話機(jī)終端等等。具體地,將上述可做語音通話的設(shè)備統(tǒng)稱為終端。各終端分別與會議服務(wù)器對接,通過會議服務(wù)器將語音混音、編碼及解碼,實(shí)現(xiàn)多方語音會議。本發(fā)明所涉及的會議服務(wù)器可以是通用服務(wù)器,如基于x86的pcserver。
在一個示例中,有的終端需要通過公共交換電話網(wǎng)絡(luò)(publicswitchedtelephonenetwork,簡稱pstn)撥打或接聽電話,終端需要與pstn網(wǎng)關(guān)對接后,再接入會議服務(wù)器,因此,將需要與pstn網(wǎng)關(guān)對接的終端統(tǒng)稱為pstn終端。普通終端可以直接與會議服務(wù)器對接。
進(jìn)一步地,pstn網(wǎng)關(guān)將pstn終端發(fā)送的pstn語音數(shù)據(jù)轉(zhuǎn)換成實(shí)時(shí)傳輸協(xié)議(real-timetransportprotocol,簡稱rtp)網(wǎng)絡(luò)報(bào)文,并將轉(zhuǎn)換后的rtp網(wǎng)絡(luò)報(bào)文發(fā)送到會議服務(wù)器。同時(shí),pstn網(wǎng)關(guān)將從會議服務(wù)器接收到的rtp網(wǎng)絡(luò)報(bào)文轉(zhuǎn)換成pstn語音數(shù)據(jù)給pstn終端。普通終端直接將語音數(shù)據(jù)轉(zhuǎn)換成rtp網(wǎng)絡(luò)報(bào)文發(fā)送到會議服務(wù)器,并接收會議服務(wù)器發(fā)送的rtp網(wǎng)絡(luò)報(bào)文,將收到的rtp網(wǎng)絡(luò)報(bào)文解碼成語音數(shù)據(jù)。以下實(shí)施例中可能涉及pstn終端和(普通)終端,其具體涉及的語音數(shù)據(jù)格式可參照此部分的解釋,將不予贅述。
以下以圖2為例說明本發(fā)明提供的語音會議創(chuàng)建方法流程,圖2為本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法流程圖,所述方法應(yīng)用于具有多個中央處 理器cpu的會議服務(wù)器,所述方法具體包括步驟201—204:
在步驟201,會議服務(wù)器接收終端發(fā)送的會議創(chuàng)建請求,會議創(chuàng)建請求中攜帶會議的容量信息。
具體地,會議的容量信息包括預(yù)留參會人數(shù)、及對cpu處理能力和cpu存儲能力的要求信息。
其中,會議服務(wù)器接收終端發(fā)送的會議創(chuàng)建請求之前,向多個cpu中的每一個cpu發(fā)送容量查詢請求,統(tǒng)計(jì)每一個cpu的容量。
在步驟202,根據(jù)會議創(chuàng)建請求中攜帶的會議的容量信息,確定會議服務(wù)器包括的多個cpu的總?cè)萘看笥诨蛘叩扔跁h的容量。
具體地,會議服務(wù)器中包括的多個cpu的總?cè)萘靠衫斫鉃闀h服務(wù)器包括的各個cpu剩余可用容量的總和。
在步驟203,從多個cpu中選取總?cè)萘繚M足會議的容量的至少兩個cpu。
具體地,當(dāng)單個cpu的容量不能滿足會議的容量時(shí),選擇其中總?cè)萘繚M足會議的容量的至少兩個cpu。
需要說明的是,將終端的語音信息平均分配到至少兩個cpu,或者將終端的語音信息依次分配到至少兩個cpu,當(dāng)一個cpu的剩余容量達(dá)到閾值時(shí),則分配到下一個cpu。
在步驟204,在至少兩個cpu之間建立通信連接,創(chuàng)建由至少兩個cpu進(jìn)行語音信息處理的會議。
具體地,會議服務(wù)器可將至少兩個cpu分為主cpu和m-1個輔cpu,其中,m為大于或者等于2的正整數(shù)。在主cpu和每個輔cpu之間建立通信連接,使得m個cpu下的終端的語音信息互通。其中,m-1個輔cpu之間通過主cpu交換語音信息,創(chuàng)建由m個cpu進(jìn)行語音信息處理的會議。
可以理解的是,至少兩個cpu其數(shù)量可用m代表,m≥2,且m為正整數(shù)。下文中提到的m個cpu即代表至少兩個cpu。需要說明的是,對于接入會議的終端的分配,可以采取平衡負(fù)載原則,將接入會議的終端的語音信 息平均分配到m個cpu進(jìn)行語音信息處理?;蛘呖梢圆扇∽畲筘?fù)載原則,將接入會議的終端的語音信息依次分配到m個cpu中的每一個cpu進(jìn)行語音信息處理,其中,當(dāng)m個cpu中的第m個cpu的剩余容量小于或者等于第一閾值時(shí),將會停止為第m個cpu分配接入會議的終端的語音信息,其中,m-1≥m≥1,且m為正整數(shù)。具體地,接入會議的終端的語音信息的的分配原則并不局限與本發(fā)明實(shí)施例提供的方式,還可采取其他方式。
具體地,在主cpu和輔cpu之間建立通信連接的方法可包括多種途徑,例如可為主cpu和輔cpu建立通信通道直接交換語音信息,或者可為主cpu和輔cpu配置共享內(nèi)存通過間接存取的方式交換語音信息等,具體可參見圖3—圖7所示。
以下以圖3為例說明本發(fā)明實(shí)施例提供語音會議創(chuàng)建方法,圖3為本發(fā)明實(shí)施提供的主cpu和輔cpu之間建立通信連接的一種具體的實(shí)現(xiàn)方式,如圖3所示,主cpu和每一個輔cpu之間通過配對的會議資源點(diǎn)建立通信連接,直接交換語音信息。
可以理解的是,這里的會議資源點(diǎn)指的是可以進(jìn)行信息傳輸?shù)膶?shí)體或者虛擬端口,其命名不限于會議資源點(diǎn)。
在一個示例中,設(shè)輔cpu共有m-1個,會議服務(wù)器為主cpu配置m-1個會議資源點(diǎn),分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點(diǎn)。將主cpu的m-1個會議資源點(diǎn)分別與m-1個輔cpu中的每一個輔cpu的會議資源點(diǎn)一一配對。例如,將主cpu配置m-1個會議資源點(diǎn)中的第i個會議資源點(diǎn)與第i個輔cpu的會議資源點(diǎn)進(jìn)行配對。其中,m-1≥i≥1,且i為正整數(shù)。主cpu與m-1個輔cpu中的每一個輔cpu分別通過已經(jīng)配對成功的會議資源點(diǎn)交換語音信息。主cpu獲取每一個輔cpu的語音信息,并將m個cpu中除第i個輔cpu的語音信息發(fā)送給第i個輔cpu。
以下以圖4為例說明本發(fā)明實(shí)施例提供語音會議創(chuàng)建方法。
在一個可能的設(shè)計(jì)中,可將會議服務(wù)器拆分成會議控制和語音處理兩部分,會議控制單獨(dú)部署一個進(jìn)程,記為會議控制進(jìn)程;語音處理單獨(dú)部署n個進(jìn)程,記為n個語音處理進(jìn)程。每個語音處理進(jìn)程單獨(dú)綁定一個cpu核,會議控制進(jìn)程可根據(jù)實(shí)際情況選擇不綁定cpu核,或者綁定語音處理進(jìn)程外的其他cpu核。每個語音處理進(jìn)程只能在其綁定的cpu核上運(yùn)行。會議控制進(jìn)程統(tǒng)一管理和調(diào)度語音處理進(jìn)程,語音處理進(jìn)程用于對語音數(shù)據(jù)進(jìn)行編解碼及混音。
圖4為本發(fā)明實(shí)施提供的會議控制進(jìn)程與語音處理進(jìn)程之間的通信連接關(guān)系圖,如圖4所示,會議控制進(jìn)程41與每一個語音處理進(jìn)程42均有通信連接,用以會議控制進(jìn)程41統(tǒng)一管理和調(diào)度每一個語音處理進(jìn)程42。
進(jìn)一步地,可指定其中一個語音處理進(jìn)程42為主處理進(jìn)程421,其余語音處理進(jìn)程為輔處理進(jìn)程422。其中,主處理進(jìn)程421分別與輔處理進(jìn)程422中的每一個輔處理進(jìn)程422建立通信連接,以主處理進(jìn)程421為中心點(diǎn)分別和各個輔處理進(jìn)程422實(shí)現(xiàn)星狀互通。各個輔處理進(jìn)程422通過主處理進(jìn)程交換語音信息。
可以理解的是,通過會議控制進(jìn)程41管理和調(diào)控每一個語音處理進(jìn)程42,將參會終端的語音信息分配到各語音處理進(jìn)程42,進(jìn)一步,通過將語音處理進(jìn)程劃分主處理進(jìn)程421和輔處理進(jìn)程422,并為主處理進(jìn)程421和各輔處理進(jìn)程422之間建立通信連接,將不同語音處理進(jìn)程下的終端的語音信息互通,創(chuàng)建了跨cpu的語音會議。具體主處理進(jìn)程421和各輔處理進(jìn)程422之間建立通信連接的方法可參考圖3、圖5所示的主cpu與各輔cpu之間建立通信連接的方法。為了方便區(qū)分,每個語音處理進(jìn)程42設(shè)有專用進(jìn)程標(biāo)識??梢岳斫獾氖?,為了簡化說明,以下提到語音處理進(jìn)程42的容量即指代語音處理進(jìn)程42所綁定的cpu的容量。
以下以圖5為例說明本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法,圖5為本 發(fā)明實(shí)施例提供的一種語音會議創(chuàng)建流程圖,其中,會議服務(wù)器包括應(yīng)用進(jìn)程50、操作系統(tǒng)(operatingsystem,簡稱os)51和硬件52。
具體地,應(yīng)用進(jìn)程50用于在cpu上運(yùn)行,以處理終端的語音信息。可包括會議控制進(jìn)程501和多個語音處理進(jìn)程502。操作系統(tǒng)51用于執(zhí)行應(yīng)用進(jìn)程50。硬件52包括多個cpu、內(nèi)存和網(wǎng)卡,用于接收語音信息,并對語音信息進(jìn)行存儲、處理和轉(zhuǎn)發(fā)。
具體地,當(dāng)創(chuàng)建一個會議a時(shí),會議控制進(jìn)程501判斷會議a的會議容量;當(dāng)單個語音處理進(jìn)程502的容量不能滿足要求時(shí),查找總?cè)萘磕軌驖M足會議a的m個語音處理進(jìn)程502數(shù)量及進(jìn)程標(biāo)識,將會議a建立在標(biāo)識的m個語音處理進(jìn)程502上。可以理解的是,在會議a進(jìn)行過程中,當(dāng)會議a中參加會議的人員開始超過起始預(yù)訂人員時(shí),可動態(tài)擴(kuò)容,直至將會議服務(wù)器中所有語音處理進(jìn)程502的容量占用為止。
具體地,參會人員可以自行通過終端撥打統(tǒng)一會議接入碼、然后輸入會議的身份標(biāo)識號(identity,簡稱id)和密碼的方式接入會議,或者通過會議服務(wù)器召集的方式邀請指定會議人員對應(yīng)的終端接入會議。
進(jìn)一步地,會議控制進(jìn)程可以按照均衡負(fù)載原則,將終端的語音信息平均分配到各個語音處理進(jìn)程?;蛘邥h控制進(jìn)程可以按照最大負(fù)載原則將終端的語音信息依次接入不同的語音處理進(jìn)程。
同樣地,會議控制進(jìn)程501將m個語音處理進(jìn)程502分為主處理進(jìn)程和m-1個輔處理進(jìn)程,其中,主處理進(jìn)程和m-1個輔處理進(jìn)程互通的方法可參見圖3通過配對的會議資源點(diǎn)建立通信連接的方式,在此不復(fù)贅述。其數(shù)據(jù)交互信令流程參見步驟531—539:
假設(shè)patn終端a、終端c、終端d同時(shí)說話,其中,會議控制進(jìn)程記為conf_ctrl,語音處理進(jìn)程記為conf_media1、…、conf_median,n≥1,且n為正整數(shù)。conf_ctrl將pstn終端a、終端c的語音通過rtp網(wǎng)絡(luò)報(bào)文方式傳送到conf_media0,conf_ctrl將終端d的語音通過rtp網(wǎng)絡(luò)報(bào)文方 式傳送到conf_media1。
在步驟531,pstn網(wǎng)關(guān)將pstn終端a發(fā)送的pstn語音信息轉(zhuǎn)換成rtp網(wǎng)絡(luò)報(bào)文,并發(fā)送到conf_media0。
在步驟532,終端c將語音信息編碼打包成rtp網(wǎng)絡(luò)報(bào)文發(fā)送給會議服務(wù)器的conf_media0。
在步驟533,終端d將語音信息編碼打包成rtp網(wǎng)絡(luò)報(bào)文發(fā)送給會議服務(wù)器的conf_media1。
設(shè)定conf_media0為主處理進(jìn)程,conf_media1為輔處理進(jìn)程。同時(shí),輔處理進(jìn)程還可包括其他語音處理進(jìn)程,例如圖5中的conf_median。
設(shè)輔處理進(jìn)程有m-1個,conf_ctrl為主處理進(jìn)程分配m-1個會議資源點(diǎn),為各個輔處理進(jìn)程分配一個會議資源點(diǎn),并將主處理進(jìn)程與各輔處理進(jìn)程的會議資源點(diǎn)一一配對。則,各個語音處理進(jìn)程之間可以通過網(wǎng)絡(luò)報(bào)文的形式交換語音信息。主處理進(jìn)程獲取每一個輔處理進(jìn)程的語音信息,然后主處理進(jìn)程將m個語音處理進(jìn)程中除第i個輔處理進(jìn)程的語音信息發(fā)送給第i個輔處理進(jìn)程,其中,m-1≥i≥1,且i為正整數(shù)。
在步驟534,conf_media0利用綁定的cpu0將pstn終端a和終端c的語音解碼后,再混音打包成一路語音編碼以rtp網(wǎng)絡(luò)報(bào)文的方式通過已配對的會議資源點(diǎn)發(fā)送到conf_media1。
在步驟535,conf_media1利用綁定的cpu3將終端d的語音解碼后,單獨(dú)混音一路編碼后以rtp網(wǎng)絡(luò)報(bào)文的方式通過已配對的會議資源點(diǎn)發(fā)送給conf_media0。
在一個示例中,設(shè)定conf_media0為主處理進(jìn)程,輔處理進(jìn)程還可包括conf_media2。輔處理進(jìn)程conf_media1和conf_media2分別將語音信息通過rtp網(wǎng)絡(luò)報(bào)文的方式發(fā)送給主處理進(jìn)程conf_media0。主處理進(jìn)程conf_media0將conf_media1和語conf_media2的語音信息解碼后,將conf_media0和conf_media2包括的語音信息混音編碼通過rtp網(wǎng)絡(luò)報(bào)文的 方式發(fā)送給conf_media1,將conf_media0和conf_media1包括的語音信息混音編碼通過rtp網(wǎng)絡(luò)報(bào)文的方式發(fā)送給conf_media2。
在步驟536,conf_media0將conf_media1和用戶a、c的語音解碼,并將解碼后的conf_media1和終端c的語音混音一路編碼后以rtp網(wǎng)絡(luò)報(bào)文格式發(fā)送pstn終端a,pstn網(wǎng)關(guān)將從會議服務(wù)器收到的rtp網(wǎng)絡(luò)報(bào)文轉(zhuǎn)換成pstn語音數(shù)據(jù)給pstn終端a。
在步驟537,conf_media0將conf_media1和用戶a、c的語音解碼,并將解碼后的conf_media1和pstn終端a的語音混音一路編碼后以rtp網(wǎng)絡(luò)報(bào)文格式發(fā)送終端c。
在步驟538,conf_media1將conf_media0和終端d的語音解碼,并將解碼后的conf_media0和終端d的語音混音一路編碼后以rtp網(wǎng)絡(luò)報(bào)文格式發(fā)送終端b。
在步驟539,conf_media1將conf_media0和終端d的語音解碼,并將解碼后的conf_media0語音單獨(dú)混音一路編碼后以rtp網(wǎng)絡(luò)報(bào)文格式發(fā)送給終端d。
以下以圖6為例說明本發(fā)明實(shí)施例提供語音會議創(chuàng)建方法,圖6為本發(fā)明實(shí)施提供的主cpu和輔cpu之間建立通信連接另一種具體的實(shí)現(xiàn)方式,如圖6所示,主cpu和每一個輔cpu之間通過共享內(nèi)存存取終端語音信息的方式建立通信連接。
在一個示例中,設(shè)輔cpu共有m-1個,會議服務(wù)器分別為m-1個輔cpu中的每一個輔cpu配置共享內(nèi)存,包括第一共享內(nèi)存和第二共享內(nèi)存。主cpu將m個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內(nèi)存中,主cpu從第i個輔cpu的第二共享內(nèi)存中獲取第i個輔cpu的語音信息,其中,m-1≥i≥1,且i為正整數(shù)。
本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法,通過為單一會議下的cpu建立 通信連接,實(shí)現(xiàn)了跨cpu的語音會議,增加了單個會議可容納的人數(shù)。同時(shí),本發(fā)明充分利用不同cpu的剩余容量,將多個cpu的資源利用去碎片化,提升了用戶體驗(yàn)及cpu的利用率。
以下以圖7為例說明本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法,圖7為本發(fā)明實(shí)施例提供的另一種語音會議創(chuàng)建流程圖,如圖7所示,會議服務(wù)器包括應(yīng)用進(jìn)程70、會議控制進(jìn)程701、語音處理進(jìn)程702、os71、硬件72。具體參見圖6中的說明,在此不予贅述。
具體地,圖4或圖7所示通過配置共享內(nèi)存間接存取的方式交換語音信息的語音會議,其數(shù)據(jù)交互信令參見步驟731—739:
具體地,步驟731—步驟733、以及步驟736—739可參照圖6步驟631—步驟633、以及步驟636—639所述,在此不予贅述。以下介紹步驟734—步驟735:
設(shè)輔處理進(jìn)程有m-1個,conf_ctrl為每個輔處理進(jìn)程配置2個共享內(nèi)存,分別記為共享內(nèi)存0和共享內(nèi)存1。即共配置共享內(nèi)存2×(m-1)個,其中m-1個共享內(nèi)存0由主處理進(jìn)程做生產(chǎn)者(數(shù)據(jù)發(fā)送方)、m-1輔處理進(jìn)程做消費(fèi)者(數(shù)據(jù)接收方);剩余m-1個共享內(nèi)存1由m-1個輔處理進(jìn)程做生產(chǎn)者(數(shù)據(jù)發(fā)送方)、主處理進(jìn)程做消費(fèi)者(數(shù)據(jù)接收方)。
具體地,主處理進(jìn)程從第i個輔處理進(jìn)程的共享內(nèi)存1中獲取第i個輔處理進(jìn)程的語音信息,主處理進(jìn)程將m個語音處理進(jìn)程中除第i個輔處理進(jìn)程的語音信息存放在第i個輔處理進(jìn)程的共享內(nèi)存0中,其中,m-1≥i≥1,且i為正整數(shù)。以下設(shè)定conf_media0為主處理進(jìn)程,conf_media1為輔處理進(jìn)程。
在步驟734,conf_media0利用綁定的cpu0將pstn終端a和終端c的語音解碼后,再混音打包成一路語音編碼存放在conf_media1的共享內(nèi)存0。conf_media1通過它的共享內(nèi)存0獲取conf_media0的語音信息。
在步驟735,conf_media1利用綁定的cpu1將終端d語音單獨(dú)混音一路編碼后存放在conf_media1的共享內(nèi)存1。conf_media0通過conf_media1的共享內(nèi)存1獲取conf_media1的語音信息。
在一個示例中,設(shè)定conf_media0為主處理進(jìn)程,輔處理進(jìn)程還可包括conf_media2。主處理進(jìn)程conf_media0分別通過輔處理進(jìn)程conf_media1和conf_media2的共享內(nèi)存1獲取conf_media1和conf_media2的語音信息。主處理進(jìn)程conf_media0將conf_media1和語conf_media2的語音信息解碼后,將conf_media0和conf_media2包括的語音信息混音編碼存放在conf_media1的共享內(nèi)存0,將conf_media0和conf_media1包括的語音信息混音編碼存放在conf_media2的共享內(nèi)存0。
需要說明的是,采用建立通信通道直接交換語音信息創(chuàng)建語音會議的方法,相對較簡單,但對cpu的處理能力要求高一些;另外,采用配置共享內(nèi)存間接存取的方式交換語音信息創(chuàng)建語音會議的方法,對內(nèi)存的需要高一些。本發(fā)明實(shí)施例可根據(jù)具體的硬件信息,選擇采取哪種方案使得cpu之間互通,具有很好的靈活性。
以下以圖8為例說明本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法,圖8為本發(fā)明實(shí)施例提供的一種語音會議創(chuàng)建信令流程圖,如圖8所示,包括步驟801—步驟812:
在步驟801,會議控制進(jìn)程啟動時(shí),從各語音處理進(jìn)程獲取對應(yīng)的各cpu的容量信息。
在步驟802,查詢會議能力。
具體地,會議控制進(jìn)程啟動時(shí),通過進(jìn)程間消息通信的方式分別向n個語音處理進(jìn)程發(fā)送會議資源的初始容量查詢請求。
在步驟803,會議能力響應(yīng)。
具體地,各語音處理進(jìn)程收到查詢請求后,將初始容量上報(bào)給會議控制 進(jìn)程。
在步驟804,保存各進(jìn)程的會議容量,后續(xù)由會議控制進(jìn)程統(tǒng)一管理調(diào)度。
在步驟805,創(chuàng)建會議a。
具體地,終端向會議服務(wù)器發(fā)出創(chuàng)建會議a的請求,其中,終端發(fā)送的會議a的創(chuàng)建請求中攜帶會議a的容量信息。如果所有語音處理進(jìn)程對應(yīng)的cpu總?cè)萘坎粔騽?chuàng)建會議a,直接向終端返回失?。蝗绻S鄷h資源足夠,則創(chuàng)建會議a。
在步驟806,檢查會議a的預(yù)留容量,根據(jù)各個進(jìn)程當(dāng)前剩余的會議能力判斷是否需要在多于一個的語音處理進(jìn)程上建立會議。
具體地,設(shè)m個語音處理進(jìn)程對應(yīng)的cpu總?cè)萘繚M足會議a的容量需求。當(dāng)m≥2時(shí),指定其中一個語音處理進(jìn)程為主處理進(jìn)程,其余m-1個語音處理進(jìn)程為輔處理進(jìn)程,以主處理進(jìn)程為中心點(diǎn)分別和m-1個輔處理進(jìn)程實(shí)現(xiàn)星狀互通。其具體互通方法可參照圖3—圖7的介紹,在此不予贅述。以下以其中一種通過配對會議資源點(diǎn)直接交換語音信息的方式為例,說明本發(fā)明。
在步驟807,申請會議a1,會議a1在語音處理進(jìn)程1所在的cpu1上運(yùn)行。設(shè)定語音處理進(jìn)程1為主處理進(jìn)程,進(jìn)一步地,并獲取會議a1的會議資源點(diǎn),假設(shè)是端口p1,p2…p(m-1)。
在步驟808,申請會議a2,會議a2在語音處理進(jìn)程2所在的cpu2上運(yùn)行,并獲取會議a2的會議資源點(diǎn),假設(shè)是端口pm。
在步驟809,申請會議am,會議am在語音處理進(jìn)程m所在的cpum上運(yùn)行,并獲取會議am的會議資源點(diǎn),假設(shè)是端口p(2m-2)。
需要說明的是,這里的語音處理進(jìn)程與cpu對應(yīng)的順序和標(biāo)號只是為了方便解釋本發(fā)明,它們各自的標(biāo)號可以不是固定的,只需滿足一個語音處理進(jìn)程綁定一個cpu即可。
在步驟810,將系統(tǒng)資源點(diǎn)配對,將語音處理進(jìn)程1的會議資源點(diǎn)p1與 語音處理進(jìn)程2的會議資源點(diǎn)pm配對,使用<內(nèi)部ip地址p1,內(nèi)部ip地址pm>對,在語音處理進(jìn)程1上開啟會議通道,使用<內(nèi)部ip地址pm,內(nèi)部ip地址p1>對在語音處理進(jìn)程2上開啟會議通道,此時(shí)語音處理進(jìn)程1和語音處理進(jìn)程2就互通了。依次對各個輔處理進(jìn)程處理,直到主處理進(jìn)程1和所有相關(guān)的輔處理進(jìn)程互通。
在步驟811,語音處理進(jìn)程1與語音處理進(jìn)程2互通。
在步驟812,語音處理進(jìn)程1與語音處理進(jìn)程m互通。
具體地,使用<內(nèi)部ip地址p(m-1),內(nèi)部ip地址p(2m-2)>對,在語音處理進(jìn)程1上開啟會議通道,使用<內(nèi)部ip地址p(2m-2),內(nèi)部ip地址p(m-1)>對在語音處理進(jìn)程m上開啟會議通道,語音處理進(jìn)程1與語音處理進(jìn)程m互通。
需要說明的是,主處理進(jìn)程與各輔處理進(jìn)程通過rtp網(wǎng)絡(luò)報(bào)文方式交換語音信息。傳送的細(xì)節(jié)依賴于會議服務(wù)器操作系統(tǒng)的傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議(transmissioncontrolprotocol/internetprotocol,簡稱tcp/ip)棧處理完成,在此不予贅述。
以下以圖9為例說明本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法,圖9為本發(fā)明實(shí)施例提供的一種參會人員入會流程圖,如圖9所示,包括步驟901—步驟917:
在步驟901,語音處理進(jìn)程1與語音處理進(jìn)程2互通。
在步驟902,語音處理進(jìn)程1與語音處理進(jìn)程m互通。
具體地,步驟901和步驟902可參見步驟810—步驟812所述,在此不予贅述。
在步驟903,終端a撥打會議接入碼,輸入會議a的id及對應(yīng)密碼。
具體地,其中一個參會終端向會議服務(wù)器發(fā)送會議a創(chuàng)建請求,若會議控制進(jìn)程檢查所有語音處理進(jìn)程總?cè)萘繚M足會議a使用,則創(chuàng)建會議a。會 議服務(wù)器為會議a設(shè)定統(tǒng)一的會議接入碼、會議id和密碼。
在步驟904,按照均衡負(fù)載原則,將終端a分配到語音處理進(jìn)程1。
具體地,將參會人員的語音信息平均分配到各語音處理進(jìn)程。
在步驟905,將終端a的信息設(shè)置到語音處理進(jìn)程1。
在步驟906,將語音處理進(jìn)程1上的會議通道信息告知到終端a。
在步驟907,終端a與語音處理進(jìn)程1互通。
在步驟908,終端b撥打會議接入碼,輸入會議a的id及對應(yīng)密碼。
在步驟909,按照均衡負(fù)載原則,將終端b分配到語音處理進(jìn)程2。
在步驟910,將終端b的信息設(shè)置到語音處理進(jìn)程2。
在步驟911,將語音處理進(jìn)程2上的會議通道信息告知到終端b。
在步驟912,終端b與語音處理進(jìn)程2互通。
在步驟913,邀請終端c入會,按照均衡負(fù)載原則,將終端c分配到語音處理進(jìn)程m。
具體地,會議控制進(jìn)程邀請邀請終端c入會的同時(shí),將語音處理進(jìn)程m上的會議通道信息告知到終端c。
在步驟914,邀請終端c接入會議a。
在步驟915,終端c應(yīng)答入會。
在步驟916,將終端c的信息設(shè)置到語音處理進(jìn)程m。
在步驟917,終端c與語音處理進(jìn)程m互通。
進(jìn)一步地,因所有語音處理進(jìn)程都是通過相應(yīng)的會議控制進(jìn)程統(tǒng)一管理調(diào)度,因此實(shí)際參加會議的人員并未感知到這種內(nèi)部處理的差異。但是卻實(shí)現(xiàn)了跨cpu會議和各cpu資源利用去碎片化。
以下以圖10為例說明本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法,圖10為本發(fā)明實(shí)施例提供的另一種語音會議創(chuàng)建信令流程圖,如圖10所示,包括步驟1001—步驟1009:
具體地,步驟1001—步驟1006參見步驟801—步驟806所述,在此不予贅述。以下介紹步驟1007—步驟1009:
終端向會議服務(wù)器發(fā)出創(chuàng)建會議a的請求,其中,終端發(fā)送的會議a的創(chuàng)建請求中攜帶會議a的容量信息。如果所有語音處理進(jìn)程對應(yīng)的cpu總?cè)萘繚M足會議a的容量需求,則創(chuàng)建會議a。設(shè)m個語音處理進(jìn)程對應(yīng)的cpu總?cè)萘繚M足會議a的容量需求,以m大于等于2為例,會議a創(chuàng)建的時(shí)候,會議控制進(jìn)程指定m個語音處理進(jìn)程中的一個語音處理進(jìn)程為主處理進(jìn)程,其他m-1個語音處理進(jìn)程為輔處理進(jìn)程。主處理進(jìn)程可以通過共享內(nèi)存方案實(shí)現(xiàn)與各輔處理進(jìn)程交換語音數(shù)據(jù)。參見步驟1007—步驟1009:
在步驟1007,申請會議a1。
在步驟1008,申請會議a2。
具體地,設(shè)會議a1所在的語音處理進(jìn)程1為主處理進(jìn)程,會議控制進(jìn)程會為會議a2所在的語音處理進(jìn)程2和語音處理進(jìn)程1配置共享內(nèi)存0和共享內(nèi)存1。
在步驟1009,申請會議am。
具體地,會議控制進(jìn)程會為會議am所在的語音處理進(jìn)程m和語音處理進(jìn)程1配置共享內(nèi)存0和共享內(nèi)存1。
需要說明的是,采用共享內(nèi)存方案時(shí),當(dāng)會議a創(chuàng)建成功之后,創(chuàng)建2(m-1)個共享內(nèi)存塊分別作為在主處理進(jìn)程和各輔處理進(jìn)程之間交換語音編碼數(shù)據(jù)的載體。進(jìn)一步地,為了方便區(qū)分各個共享內(nèi)存,將第i個輔處理進(jìn)程做消費(fèi)者的共享內(nèi)存命名為第i個輔處理進(jìn)程的第一共享內(nèi)存或共享內(nèi)存0,將第i個輔處理進(jìn)程做生產(chǎn)者的共享內(nèi)存命名為第i個輔處理進(jìn)程的第二共享內(nèi)存或共享內(nèi)存1。
具體地,共享內(nèi)存的大小依賴于采用的編解碼程序及設(shè)置的最大時(shí)延而定,在共享內(nèi)存中存放的一幀數(shù)據(jù)的大小由采用的語音編解碼程序而定,以20ms打包時(shí)長,64kbps速率的g711編解碼程序?yàn)槔?,一幀?shù)據(jù)為160字節(jié), 假定允許的最大時(shí)延是200ms,那么一塊共享內(nèi)存只要能夠存儲10幀數(shù)據(jù)就足夠,即1600字節(jié)大小即已足夠??梢岳斫獾氖牵鲜鰯?shù)據(jù)只用來解釋本發(fā)明,并不用于限定本發(fā)明。
以下以圖11為例說明本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法,圖11為本發(fā)明實(shí)施例提供的另一種參會人員入會流程圖,如圖11所示,包括步驟1101—步驟1117:
在步驟1101,終端a撥打會議接入碼,輸入會議a的id及對應(yīng)密碼。
在步驟1102,按照最大負(fù)載原則,將終端a分配到語音處理進(jìn)程1。
在步驟1103,將終端a的信息設(shè)置到語音處理進(jìn)程1。
在步驟1104,將語音處理進(jìn)程1上的會議通道信息告知到終端a。
在步驟1105,終端a與語音處理進(jìn)程1互通。
在步驟1106,終端b撥打會議接入碼,輸入會議a的id及對應(yīng)密碼。
在步驟1107,按照最大負(fù)載原則,發(fā)現(xiàn)語音處理進(jìn)程1已到達(dá)分擔(dān)臨界,遂分配到語音處理進(jìn)程2,并為語音處理進(jìn)程1和語音處理進(jìn)程2分別分配一個系統(tǒng)資源點(diǎn)進(jìn)行互通。
在步驟1108,將語音處理進(jìn)程2的系統(tǒng)資源信息設(shè)置到語音處理進(jìn)程1。
在步驟1109,將語音處理進(jìn)程1的系統(tǒng)資源信息設(shè)置到語音處理進(jìn)程2。
在步驟1110,語音處理進(jìn)程1與語音處理進(jìn)程2互通。
在步驟1111,將語音處理進(jìn)程2上的會議通道信息告知到終端b。
在步驟1112,終端b與語音處理進(jìn)程2互通。
在步驟1113,邀請終端c入會,按照最大負(fù)載原則,將終端c分配到語音處理進(jìn)程2。
在步驟1114,邀請終端c接入會議a。
在步驟1115,終端c應(yīng)答入會。
在步驟1116,將終端c的信息設(shè)置到語音處理進(jìn)程m。
在步驟1117,終端c與語音處理進(jìn)程m互通。
需要說明的是,無論是采用均衡負(fù)載原則分配終端的語音信息還是采用最大負(fù)載原則分配終端的語音信息。參見圖3、圖5—圖7所示,會議服務(wù)器內(nèi)部各cpu運(yùn)行的語音處理進(jìn)程之間都可通過配對的會議資源點(diǎn)或者共享內(nèi)存方案交換語音信息。
具體地,可根據(jù)參會人員的分配原則決定主處理進(jìn)程與各輔處理進(jìn)程互通的時(shí)間。
例如圖9所示的實(shí)施例,會議控制進(jìn)程根據(jù)均衡負(fù)載原則將終端的語音信息平均分配到各個語音處理進(jìn)程,那么,主處理進(jìn)程與各輔處理進(jìn)程互通可以在各個終端接入會議服務(wù)器之前完成。
又例如圖11所示的實(shí)施例,會議控制進(jìn)程根據(jù)最大負(fù)載原則,按照參會人員的先后順序,先將參會人員語音信息分流到各個語音處理進(jìn)程。那么,主處理進(jìn)程與各輔處理進(jìn)程互通可以在各個終端接入會議服務(wù)器的過程中完成,當(dāng)每啟用一個輔處理進(jìn)程時(shí),將該新啟用的輔處理進(jìn)程與主處理進(jìn)程互通。
本發(fā)明實(shí)施例提供的語音會議創(chuàng)建方法,利用進(jìn)程綁定及分布式調(diào)度的機(jī)制實(shí)現(xiàn)語音會議跨cpu處理的方法,實(shí)現(xiàn)了多個cpu會議資源去碎片化的方法。能夠在通用服務(wù)器上充分利用多個cpu的能力實(shí)現(xiàn)大容量語音會議。對通用服務(wù)器上多個cpu時(shí)資源利用去碎片化,提升用戶體驗(yàn)及cpu的利用率。
以下以圖12a為例說明本發(fā)明實(shí)施例提供的會議服務(wù)器,圖12a為本發(fā)明實(shí)施例提供的一種會議服務(wù)器結(jié)構(gòu)示意圖,其中,該會議服務(wù)器具有多個cpu,如圖12a所示,包括:
接收單元1201,用于接收終端發(fā)送的會議創(chuàng)建請求,會議創(chuàng)建請求中攜帶會議的容量信息。
確定單元1202,用于根據(jù)會議創(chuàng)建請求中攜帶的會議的容量信息,確定會議服務(wù)器包括的多個cpu的總?cè)萘看笥诨蛘叩扔跁h的容量。
選取單元1203,用于從多個cpu中選取總?cè)萘繚M足會議的容量的至少兩個cpu。
其中,可將至少兩個cpu設(shè)為m個cpu,m為大于或者等于2的正整數(shù)。
創(chuàng)建單元1204,用于在至少兩個cpu之間建立通信連接,創(chuàng)建由至少兩個cpu進(jìn)行語音信息處理的會議。
具體地,將m個cpu分為主cpu和m-1個輔cpu;在主cpu和m-1個輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息。將接入會議的終端的語音信息分配到m個cpu進(jìn)行語音信息處理,創(chuàng)建會議。
進(jìn)一步,將接入會議的終端的語音信息平均分配到m個cpu進(jìn)行語音信息處理?;蛘邔⒔尤霑h的終端的語音信息依次分配到m個cpu中的每一個cpu進(jìn)行語音信息處理,其中,當(dāng)m個cpu中的第m個cpu的剩余容量小于或者等于第一閾值時(shí),將會停止為第m個cpu分配所述接入會議的終端的語音信息,其中,m-1≥m≥1,且m為正整數(shù)。
具體各單元以及各單元之間的工作過程可參見圖2所示的方法實(shí)施例,在此不予贅述。
以下以圖12b為例說明本發(fā)明實(shí)施例提供的會議服務(wù)器,圖12b為本發(fā)明實(shí)施例提供的另一種會議服務(wù)器結(jié)構(gòu)示意圖,如圖12b所示,該會議服務(wù)器除包括圖12a中的1201、1202、1203和1204四個單元之外,還包括:
查詢單元1205,用于在接收單元1201接收終端發(fā)送的會議創(chuàng)建請求之前,向多個cpu中的每一個cpu發(fā)送容量查詢請求,統(tǒng)計(jì)每一個cpu的容量。其中,1201、1202、1203和1204四個單元的具體功能可參照圖12a中的 描述,在此不予贅述。
其中,1201、1202、1203、1204和1205各單元在會議服務(wù)器包括的多個cpu上執(zhí)行,完成相關(guān)功能。
需要說明的是,上述圖2-圖11以語音會議創(chuàng)建的方法步驟的角度對本發(fā)明實(shí)施例提供的方案進(jìn)行了介紹。可以理解的是,1201、1202、1203、1204和1205各單元等是為了實(shí)現(xiàn)上述功能,其包含了執(zhí)行各個功能相應(yīng)的硬件結(jié)構(gòu)和/或軟件模塊。本領(lǐng)域技術(shù)人員應(yīng)該很容易意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,本發(fā)明能夠以硬件或硬件和計(jì)算機(jī)軟件的結(jié)合形式來實(shí)現(xiàn)。某個功能究竟以硬件還是計(jì)算機(jī)軟件驅(qū)動硬件的方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
本發(fā)明實(shí)施例可以根據(jù)上述方法示例對1201、1202、1203、1204和1205等進(jìn)行功能模塊的劃分,例如,可以對應(yīng)各個功能劃分各個功能模塊,也可以將兩個或兩個以上的功能集成在一個處理模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。需要說明的是,本發(fā)明實(shí)施例中對模塊的劃分是示意性的,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式。
以下以圖13a為例說明本發(fā)明實(shí)施例提供的創(chuàng)建單元1204,圖13a為本發(fā)明實(shí)施例提供的一種創(chuàng)建單元1204結(jié)構(gòu)示意圖,如圖13a所示,包括:
第一配置子單元1214a,用于為主cpu配置m-1個會議資源點(diǎn),分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點(diǎn);
配對子單元1224a,用于將主cpu的m-1個會議資源點(diǎn)分別與m-1個輔cpu中的每一個輔cpu的會議資源點(diǎn)配對;主cpu分別與m-1個輔cpu中的每一個輔cpu通過配對的會議資源點(diǎn)交換語音信息。
可以理解的是,1214a、1224a的工作過程可參見圖3所示的方法實(shí)施例,在此不予贅述。
以下以圖13b為例說明本發(fā)明實(shí)施例提供的創(chuàng)建單元1204,圖13b為本發(fā)明實(shí)施例提供的另一種創(chuàng)建單元1204結(jié)構(gòu)示意圖,如圖13b所示,包括:
第二配置子單元1214b,用于分別為m-1個輔cpu中的每一個輔cpu配置第一共享內(nèi)存和第二共享內(nèi)存。
具體地,主cpu將m個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內(nèi)存中;主cpu從第i個輔cpu的第二共享內(nèi)存中獲取第i個輔cpu的語音信息,其中,m-1≥i≥1,且i為正整數(shù)。
可以理解的是,1214b的工作過程可參見圖6所示的方法實(shí)施例,在此不予贅述。
在一個示例中,本發(fā)明實(shí)施例提供的會議服務(wù)器運(yùn)行一個會議控制進(jìn)程,會議服務(wù)器包括多個cpu,其中,多個cpu中的每一個cpu上運(yùn)行一個語音處理進(jìn)程;語音處理進(jìn)程用于對語音信息進(jìn)行編解碼及混音,會議控制進(jìn)程用于管理和調(diào)度所述語音處理進(jìn)程。會議控制進(jìn)程從多個cpu中選取總?cè)萘繚M足會議的容量的至少兩個cpu;會議控制進(jìn)程在至少兩個cpu上運(yùn)行的至少兩個語音處理進(jìn)程之間建立通信連接,會議控制進(jìn)程將接入會議的終端的語音信息分配到至少兩個語音處理進(jìn)程進(jìn)行語音信息處理,創(chuàng)建會議。
可以理解的是,基于上述會議控制進(jìn)程和語音處理進(jìn)程的會議服務(wù)器的具體工作方式,可參見圖4—圖5、圖7—圖11所示的方法實(shí)施例中的描述,在此不予贅述。
以下以圖14為例說明本發(fā)明實(shí)施例提供的會議服務(wù)器,圖14為本發(fā)明實(shí)施例提供的又一種會議服務(wù)器結(jié)構(gòu)示意圖,如圖14所示,包括:網(wǎng)卡1401、 存儲器1402、多個處理器1403和總線1404。
具體地,網(wǎng)卡1404配置多個通信接口,其中,接入會議的終端通過所述通信接口交換語音信息;存儲器1402用于存儲程序和終端的語音信息;網(wǎng)卡1401、存儲器1402和處理器1403通過總線1404通信;當(dāng)會議服務(wù)器運(yùn)行時(shí),處理器1403用于執(zhí)行存儲器1402存儲的程序,使得處理器1403執(zhí)行上述圖2—圖11方法實(shí)施例中的方法步驟。
其中,存儲器1402可以是一個存儲裝置,也可以是多個存儲元件的統(tǒng)稱,且用于存儲運(yùn)行會議服務(wù)器所需的程序以及數(shù)據(jù)等信息。且存儲器1402可以包括隨機(jī)存取存儲器(randomaccessmemory,簡稱ram)、閃存、只讀存儲器(readonlymemory,簡稱rom)、可擦除可編程只讀存儲器(erasableprogrammablerom,簡稱eprom)、電可擦可編程只讀存儲器(electricallyeprom,簡稱eeprom)、寄存器、硬盤、移動硬盤、只讀光盤(cd-rom)、閃存(flash)或者本領(lǐng)域熟知的任何其它形式的存儲介質(zhì)等中的一個或多個存儲介質(zhì)的組合。
處理器1403可以是cpu,通用處理器,dsp,專用集成電路(application-specificintegratedcircuit,簡稱asic),現(xiàn)場可編程門陣列(fieldprogrammablegatearray,簡稱fpga)或者其他可編程邏輯器件、晶體管邏輯器件、硬件部件或者其任意組合。其可以實(shí)現(xiàn)或執(zhí)行結(jié)合本發(fā)明公開內(nèi)容所描述的各種示例性的邏輯方框,單元和電路。所述處理器也可以是實(shí)現(xiàn)計(jì)算功能的組合,例如包含一個或多個微處理器組合,dsp和微處理器的組合等等。
總線1404可以是工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(industrystandardarchitecture,簡稱isa)總線、外部設(shè)備互連(peripheralcomponent,簡稱pci)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(extendedindustrystandardarchitecture,簡稱eisa)總線等。該總線1404可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖14中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
具體地,處理器1403可用于執(zhí)行圖2—圖11所示的語音會議的創(chuàng)建方法。存儲器1402可用于存儲圖2—圖11所示的語音會議中所需的程序以及數(shù)據(jù),或者存儲處理器1403處理的終端的語音信息等。
進(jìn)一步,總線1404可用于連接圖12a、12b、13a或13b中的各單元。處理器1403可用于執(zhí)行1201、1202、1203、1204或1205各單元的功能,處理器1402可用于存儲1201、1202、1203、1204或1205各單元的數(shù)據(jù)。
以下以圖15為例說明本發(fā)明實(shí)施例提供的語音會議創(chuàng)建系統(tǒng),圖15為本發(fā)明實(shí)施例提供的一種語音會議創(chuàng)建系統(tǒng)架構(gòu)圖,如圖15所示,包括:終端1501、會議服務(wù)器1502。
終端1501,用于向會議服務(wù)器1502發(fā)送會議創(chuàng)建請求,其中,會議創(chuàng)建請求中攜帶會議的容量信息。
需要說明的是,終端1501為一個或多個。終端1501向會議服務(wù)器1502發(fā)送會議創(chuàng)建請求,創(chuàng)建會議。進(jìn)一步地,終端1501可通過向會議服務(wù)器1502發(fā)送會議接入碼、會議id和密碼的方式接入會議,或者終端1501可通過接受會議服務(wù)器1502的邀請的方式接入會議。
會議服務(wù)器1502,用于接收終端1501發(fā)送的會議創(chuàng)建請求,根據(jù)會議創(chuàng)建請求中攜帶的會議的容量信息,確定會議服務(wù)器1502包括的多個cpu的總?cè)萘看笥诨蛘叩扔跁h的容量;從多個cpu中選取總?cè)萘繚M足會議的容量的至少兩個cpu;在至少兩個cpu之間建立通信連接,創(chuàng)建由至少兩個cpu進(jìn)行語音信息處理的會議。
具體地,會議服務(wù)器1502將至少兩個cpu分為主cpu和m-1個輔cpu,其中m為大于或者等于2的正整數(shù);在主cpu和m-1個輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息;將接入會議的終端1501的語音信息分配到至少兩個cpu進(jìn)行語音信息處理,創(chuàng)建會議。
進(jìn)一步地,會議服務(wù)器1502為主cpu配置m-1個會議資源點(diǎn),分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點(diǎn);將主cpu的m-1個會議資源點(diǎn)分別與m-1個輔cpu中的每一個輔cpu的會議資源點(diǎn)配對;主cpu分別與m-1個輔cpu中的每一個輔cpu通過配對的會議資源點(diǎn)交換語音信息。
或者進(jìn)一步地,會議服務(wù)器1502分別為m-1個輔cpu中的每一個輔cpu配置第一共享內(nèi)存和第二共享內(nèi)存;主cpu將至少兩個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內(nèi)存中;主cpu從第i個輔cpu的第二共享內(nèi)存中獲取第i個輔cpu的語音信息,其中,i為大于或者等于1且小于或者等于m-1的正整數(shù)。
可以理解的是,本說明書中提到的cpu的語音信息指的是該cpu所處理的終端的語音信息。
具體地,圖15所示的語音會議創(chuàng)建系統(tǒng),其具體工作過程,可參見上述圖2-圖14所述的語音會議創(chuàng)建方法及會議服務(wù)器的工作過程,在此不予贅述。
本領(lǐng)域技術(shù)人員應(yīng)該可以意識到,在上述一個或多個示例中,本發(fā)明所描述的功能可以用硬件、軟件、固件或它們的任意組合來實(shí)現(xiàn)。當(dāng)使用軟件實(shí)現(xiàn)時(shí),可以將這些功能存儲在計(jì)算機(jī)可讀介質(zhì)中或者作為計(jì)算機(jī)可讀介質(zhì)上的一個或多個指令或代碼進(jìn)行傳輸。計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲介質(zhì)和通信介質(zhì),其中通信介質(zhì)包括便于從一個地方向另一個地方傳送計(jì)算機(jī)程序的任何介質(zhì)。存儲介質(zhì)可以是通用或?qū)S糜?jì)算機(jī)能夠存取的任何可用介質(zhì)。
以上所述的具體實(shí)施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的技術(shù)方案的基礎(chǔ)之上,所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包括在本發(fā)明的保護(hù)范圍之內(nèi)。