專利名稱:一種語音報文的處理方法和報文處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù),特別涉及語音報文的處理技術(shù)。
背景技術(shù):
在現(xiàn)代通信網(wǎng)絡(luò)中,各個通信設(shè)備(如媒體網(wǎng)關(guān))上都有網(wǎng)絡(luò)處理器,用于處理各種各樣復(fù)雜的業(yè)務(wù)。尤其是一些業(yè)務(wù)流量大的媒體設(shè)備上,對網(wǎng)絡(luò)處理器的處理能力要求非常高。在某些情況下,出于對成本、靈活性的考慮,采用普通CPU處理各種網(wǎng)絡(luò)業(yè)務(wù)。
在各種通信業(yè)務(wù)中,放音業(yè)務(wù)是一種基本的、傳統(tǒng)的電話業(yè)務(wù)。主叫呼叫被叫過程中,主被叫尚未接通時,主叫用戶會聽到“嘟——嘟——”的回鈴音,這種回鈴音的播放就是一種放音業(yè)務(wù)。特別地,智能提示音業(yè)務(wù)也是一種放音業(yè)務(wù),如查詢余額,提示余額為“x”“元”“y”“角”“z”“分”,則其中的“元”、“角”、“分”各自分別是語音片斷,是以PCM碼或其它編碼格式存儲在內(nèi)存的語音數(shù)據(jù)。
以放音業(yè)務(wù)的報文處理為例,現(xiàn)有的方案如圖1所示步驟101、102報文處理器收到發(fā)送語音報文指示消息時,從內(nèi)存中讀取一報文分片;語音數(shù)據(jù)是以PCM碼或其它編碼格式存儲在內(nèi)存中,報文處理器讀取報文分片是根據(jù)需要發(fā)送的語音報文的具體要求(如語音編解碼方式),控制讀取的語音數(shù)據(jù)的長度為報文凈荷分片(以下稱報文分片)的大小。比如如果DSP(數(shù)字信號處理器)采用G.711 20ms打包間隔的編解碼方式處理語音報文,一個分片是160字節(jié);如果采用是AMR編解碼方式,一個分片最短可以12字節(jié),最長31字節(jié)。
步驟103報文處理器將報文分片轉(zhuǎn)換成一幀語音報文,發(fā)送給物理層設(shè)備(如FPGA接口);該步驟中,將語音數(shù)據(jù)轉(zhuǎn)換成一幀語音報文的過程如下報文處理器根據(jù)讀取的報文分片生成報文首部,將報文首部和報文分片依次發(fā)送至物理層設(shè)備,這樣物理層設(shè)備接收到的就是一個完整的語音報文。
步驟104物理層設(shè)備將語音報文轉(zhuǎn)發(fā)至DSP。
步驟105DSP接收語音報文,經(jīng)過編解碼轉(zhuǎn)換或者其它處理后,發(fā)送至TDM網(wǎng)絡(luò)或者IP網(wǎng)絡(luò)。
其中,報文處理器可以普通CPU,也可以是專用的網(wǎng)絡(luò)處理器。網(wǎng)絡(luò)處理器是專用于網(wǎng)絡(luò)設(shè)備(如路由器、網(wǎng)關(guān)等)的處理器,針對網(wǎng)絡(luò)處理進行優(yōu)化,和普通CPU相比,具有多內(nèi)核、特別設(shè)置了大量位域操作指令、硬件支持的多線程調(diào)度和切換、專用的指令存儲空間等特點。
上述方案中,只有報文處理器收到發(fā)送語音報文指示消息時,才從內(nèi)存中讀取報文分片,進行后續(xù)報文發(fā)送處理。如果報文處理器的能力不足,可能會導(dǎo)致報文處理任務(wù)未完成的情況下,處理器時間就被其它業(yè)務(wù)的任務(wù)處理搶占,則會影響報文的正常處理。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種語音報文的處理方法和報文處理器,提高報文處理的效率。
為實現(xiàn)上述目的,本發(fā)明提供了一種語音報文處理的方法,應(yīng)用于放音業(yè)務(wù)處理,該方法包括步驟A報文處理器判斷當(dāng)前是否需要發(fā)送語音報文,如果需要,則執(zhí)行步驟B,如果不需要,則執(zhí)行步驟C;步驟B所述報文處理器從報文分片隊列中讀取報文分片,轉(zhuǎn)換成語音報文,所述報文處理器發(fā)送該語音報文;步驟C所述報文處理器從語音數(shù)據(jù)存儲區(qū)讀取報文分片置入報文分片隊列。
本發(fā)明的方法中,所述步驟B包括步驟B1所述報文處理器判斷所述報文分片隊列是否為空,如果不為空,則執(zhí)行步驟B2;步驟B2所述報文處理器從所述報文分片隊列中讀取報文分片,轉(zhuǎn)至步驟B3;步驟B3所述報文處理器將所述報文分片轉(zhuǎn)換成語音報文,發(fā)送至物理層設(shè)備。
進一步,所述步驟B還可以包括步驟B4物理層設(shè)備將所述語音報文發(fā)送至數(shù)字信號處理器,所述數(shù)字信號處理器將所述語音報文編解碼后發(fā)送至IP網(wǎng)絡(luò)或TDM網(wǎng)絡(luò)。
特別地,所述步驟B3中,所述報文處理器采用多幀復(fù)用方式將所述報文分片轉(zhuǎn)換成語音報文;或者所述報文處理器直接讀取一個報文分片轉(zhuǎn)換成語音報文。
而且,步驟B2中讀取報文分片的數(shù)量由所述數(shù)字信號處理器的緩存大小和所述報文分片的大小確定;所述報文分片的大小由所述語音報文的編解碼方式確定。
本發(fā)明的方法中,所述步驟A包括步驟A1所述報文處理器獲取系統(tǒng)時間;步驟A2所述報文處理器比較所述系統(tǒng)時間和下一語音報文的報文發(fā)送時間,如果所述系統(tǒng)時間達到所述報文發(fā)送時間,則報文處理器發(fā)送下一個語音報文。
特別地,所述方法進一步可以包括設(shè)置所述報文發(fā)送時間戳的允許窗口,如果所述系統(tǒng)時間在所述報文發(fā)送時間戳的允許窗口范圍中,則報文處理器需要發(fā)送下一個語音報文。
本發(fā)明的方法中,所述步驟C包括步驟C1所述報文處理器判斷所述報文分片隊列是否有空閑項,如果有,則所述報文處理器從所述語音數(shù)據(jù)存儲區(qū)中讀取報文分片,所述報文處理器將報文分片置入報文分片隊列。
本發(fā)明還提供了一種報文處理器,包括報文發(fā)送單元、數(shù)據(jù)接收單元、處理決策單元、報文處理單元,所述處理決策單元獲取系統(tǒng)時間,根據(jù)所述系統(tǒng)時間分析下一步操作,發(fā)出操作指令;所述數(shù)據(jù)接收單元從語音數(shù)據(jù)存儲區(qū)讀取報文分片,發(fā)送至所述報文處理單元處理;所述報文處理單元接收所述數(shù)據(jù)接收單元發(fā)送的報文分片,將所述報文分片置入報文分片隊列;所述報文處理單元從所述報文分片隊列中讀取報文分片,轉(zhuǎn)換成語音報文后發(fā)送至所述報文發(fā)送單元;所述報文發(fā)送單元接收所述報文處理單元發(fā)送的語音報文,發(fā)送至物理層設(shè)備。
特別地,所述報文處理單元包括報文復(fù)用單元;所述報文處理單元從所述報文分片隊列中讀取報文分片后,所述報文復(fù)用單元采用多幀復(fù)用方式將所述報文分片轉(zhuǎn)換成語音報文發(fā)送至所述報文發(fā)送單元。
通過比較可以發(fā)現(xiàn),本發(fā)明的技術(shù)方案與現(xiàn)有技術(shù)的主要區(qū)別在于,利用了報文分片隊列緩存機制,將讀取語音數(shù)據(jù),生成報文分片的操作和其他操作分開,有效地利用了報文處理器資源,提高報文處理的效率。
圖1是現(xiàn)有技術(shù)中報文處理流程示意圖;圖2是本發(fā)明報文處理流程示意圖一;圖3是本發(fā)明報文處理流程示意圖二;圖4是本發(fā)明的報文處理器結(jié)構(gòu)示意圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進一步地詳細(xì)描述。
本發(fā)明核心在于,在放音業(yè)務(wù)處理過程中,在內(nèi)存中設(shè)置報文分片隊列,用于緩存報文分片。在報文處理器需要發(fā)送語音報文時,報文處理器從報文分片隊列中讀取報文分片,并為讀取的報文分片封裝報文首部,轉(zhuǎn)換成語音報文,發(fā)送給物理層設(shè)備處理;在報文處理器不需要發(fā)送語音報文時,報文處理器從內(nèi)存中讀取報文分片,將報文分片置入報文分片隊列。
在網(wǎng)絡(luò)多媒體通信中,一個會話一般對應(yīng)一個語音通道,用于完成語音報文的處理;每個語音通道都有相應(yīng)的語音報文處理進程,需要設(shè)置一個報文分片隊列,報文分片隊列長度(指可存儲報文分片的數(shù)量)可以根據(jù)系統(tǒng)的具體情況設(shè)置或調(diào)整。一個語音通道中語音報文的具體處理如下報文處理器獲得系統(tǒng)時間,判斷當(dāng)前是否是發(fā)送語音報文的時刻,即當(dāng)前是否需要發(fā)送語音報文;如果不需要發(fā)送語音報文,則執(zhí)行語音報文處理流程(如圖2);如果需要發(fā)送語音報文,則執(zhí)行語音報文發(fā)送流程(如圖3)。
系統(tǒng)進行放音業(yè)務(wù)處理時,報文處理器接收發(fā)送語音報文的指示消息后,發(fā)出的第一個語音報文中的時間戳就是發(fā)送該語音報文的時刻,報文處理器根據(jù)該語音報文的打包長度可以計算出下一個待發(fā)送的語音報文的報文發(fā)送時間戳,即是下一個語音報文要發(fā)出的時刻;以后每發(fā)出一個語音報文后,都根據(jù)當(dāng)前發(fā)出的語音報文的時間戳和打包長度計算下一個報文的報文發(fā)送時間戳。
以G.711 20ms打包間隔的編解碼方式為例,發(fā)送第一個語音報文的具體時刻為T1,則下一個語音報文的時間戳即發(fā)送時刻為T1+20ms。
實際處理過程中,由于語音報文處理會有會抖動等現(xiàn)象,因此可能會為發(fā)送下一個語音報文的時間戳設(shè)置一個允許窗口,該允許窗口可以根據(jù)允許的抖動值進行調(diào)整。所謂允許窗口就是指發(fā)送下一個語音報文的允許時刻范圍,如果獲得的系統(tǒng)時間在該范圍內(nèi),則進行語音報文發(fā)送流程。
如圖2所示,語音報文處理流程包括如下步驟步驟201報文處理器判斷報文分片隊列是否有空閑項(即報文分片隊列中是否可以置入新的報文分片),如果報文分片隊列已滿,則轉(zhuǎn)至步驟204;否則轉(zhuǎn)至步驟202;步驟202報文處理器從語音數(shù)據(jù)存儲區(qū)中讀取報文分片;該步驟中,語音數(shù)據(jù)存儲區(qū)是存儲語音片段數(shù)據(jù)的內(nèi)存區(qū)域;同現(xiàn)有技術(shù)的處理方式一樣,報文處理器讀取報文分片是根據(jù)需要發(fā)送的語音報文的具體要求(如語音編解碼方式),控制讀取的語音數(shù)據(jù)的長度為報文分片的大小。比如如果DSP(數(shù)字信號處理器)采用G.711 20ms打包間隔的編解碼方式處理語音報文,一個分片是160字節(jié);如果采用是AMR編解碼方式,一個分片最短可以12字節(jié),最長31字節(jié)。
步驟203報文處理器將報文分片置入報文分片隊列;步驟204結(jié)束本次語音報文處理。
如圖3所示,語音報文發(fā)送流程包括如下步驟
步驟301報文處理器判斷報文分片隊列是否為空(即報文分片隊列中是否有未處理的報文分片),如果報文分片隊列為空,則轉(zhuǎn)至步驟305;否則,轉(zhuǎn)至步驟302;步驟302報文處理器從報文分片隊列中讀取報文分片;步驟303采用多幀復(fù)用方式將步驟302中讀取的報文分片轉(zhuǎn)換成語音報文,發(fā)送至物理層設(shè)備;該步驟中,所謂多幀復(fù)用方式將報文分片轉(zhuǎn)換成語音報文的過程是報文處理器根據(jù)讀取的報文分片生成報文首部,將報文首部和各報文分片依次發(fā)送至物理層設(shè)備,這樣物理層設(shè)備接收到的就是一個完整的語音報文。
在步驟302中,可以根據(jù)DSP的緩存能力確定讀取報文分片的數(shù)量。以采用G.71120ms打包間隔的編解碼方式處理語音報文為例,一個報文分片為160字節(jié),如果DSP可以緩存1000字節(jié),則報文處理器可以采用多幀復(fù)用方式發(fā)送語音報文,將1000/160即6個報文分片共用一個報文首部,復(fù)用成一個語音報文。
在步驟302、303中,報文處理器可以不采用多幀復(fù)用方式,而直接讀取一個報文分片轉(zhuǎn)換成語音報文。
步驟304物理層設(shè)備將語音報文發(fā)送給DSP,由DSP經(jīng)過編解碼轉(zhuǎn)換或者其它處理后,發(fā)送至TDM網(wǎng)絡(luò)或者IP網(wǎng)絡(luò);步驟305結(jié)束本次語音報文處理。
圖2、3分別描述了語音報文處理流程和語音報文發(fā)送流程的具體步驟。其中,在語音報文處理流程中,報文處理器從語音數(shù)據(jù)存儲區(qū)中讀取報文分片。如果從語音數(shù)據(jù)存儲區(qū)讀取報文分片時,已經(jīng)到達了語音片段數(shù)據(jù)尾部,則報文處理器在報文分片隊列中加入一個特殊的業(yè)務(wù)結(jié)束指示報文分片,指示放音業(yè)務(wù)處理過程結(jié)束;在語音報文發(fā)送流程,報文處理器讀取該業(yè)務(wù)結(jié)束指示報文分片后,結(jié)束本次放音業(yè)務(wù)處理。具體從軟件實現(xiàn)角度來說,報文處理器可以將該業(yè)務(wù)結(jié)束指示轉(zhuǎn)換成業(yè)務(wù)結(jié)束指示消息發(fā)送給應(yīng)用層,或者由底層軟件發(fā)送給上層軟件,指示本次放音業(yè)務(wù)處理結(jié)束。
上面描述的是一個語音通道的處理情況。如果有多個用戶同時在線,啟動了多個會話,則需要分配相應(yīng)數(shù)量的語音通道。此時,為了提高報文處理器的效率,以處理更多的會話,多個語音通道之間的切換處理一般采用輪轉(zhuǎn)算法,可以保證調(diào)度公平。
本發(fā)明的方法和現(xiàn)有技術(shù)相比,現(xiàn)有技術(shù)是將讀取報文分片、發(fā)送語音報文等處理放在一起,每次發(fā)送報文都必須讀取報文分片并轉(zhuǎn)換成語音報文后發(fā)送。由于語音數(shù)據(jù)是存放在內(nèi)存中,報文處理器訪問內(nèi)存存在瓶頸問題,即訪問內(nèi)存導(dǎo)致報文處理器執(zhí)行指令產(chǎn)生等待的情況,將降低報文處理器的性能,可能會對語音報文的及時發(fā)出造成影響,同時由于語音業(yè)務(wù)實時性高,因此要求報文處理器具有較高的性能;本發(fā)明則利用發(fā)送報文的空閑處理時間,將讀取語音數(shù)據(jù)、拆分報文分片等復(fù)雜操作提前完成,降低了對報文處理器的性能要求。
采用本發(fā)明的方法,需要對報文處理器進行一些必要的改進。如圖4所示,為本發(fā)明報文處理器的結(jié)構(gòu)示意圖。
報文處理器包括數(shù)據(jù)接收單元、報文處理單元、報文發(fā)送單元及處理決策單元;其中,處理決策單元獲取系統(tǒng)時間,根據(jù)所述系統(tǒng)時間分析下一步操作,發(fā)出操作指令。具體來說,處理決策單元負(fù)責(zé)報文處理器處理工作的總調(diào)度,即決定報文處理器下一步的處理,并發(fā)出操作指令,包括判斷下一步操作是發(fā)送語音報文還是讀取報文分片,以及報文發(fā)送完成后判斷是否繼續(xù)發(fā)送語音報文、是否采用多幀復(fù)用方式組裝報文等。
數(shù)據(jù)接收單元從語音數(shù)據(jù)存儲區(qū)讀取報文分片,發(fā)送至報文處理單元處理。其中的語音數(shù)據(jù)存儲區(qū)是存儲語音片段數(shù)據(jù)的內(nèi)存區(qū)域。
報文處理單元將從數(shù)據(jù)接收單元接收報文分片,將報文分片置入報文分片隊列;報文處理單元還負(fù)責(zé)從報文分片隊列中讀取報文分片,轉(zhuǎn)換成語音報文后發(fā)送至報文發(fā)送單元;報文發(fā)送單元接收報文處理單元發(fā)送的語音報文,發(fā)送至物理層設(shè)備。
在報文處理過程中,為了提高報文處理器效率,一般對報文分片采用多幀復(fù)用方式處理,因此報文處理單元還可以包括報文復(fù)用單元;報文處理單元從報文分片隊列中讀取報文分片,報文復(fù)用單元采用多幀復(fù)用方式將讀取的報文分片轉(zhuǎn)換成語音報文發(fā)送至報文發(fā)送單元。
雖然通過參照本發(fā)明的某些優(yōu)選實施方式,已經(jīng)對本發(fā)明進行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對其作各種改變,而不偏離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種語音報文處理的方法,應(yīng)用于放音業(yè)務(wù)處理,其特征在于,所述方法包括步驟A報文處理器判斷當(dāng)前是否需要發(fā)送語音報文,如果需要,則執(zhí)行步驟B,如果不需要,則執(zhí)行步驟C;步驟B所述報文處理器從報文分片隊列中讀取報文分片,轉(zhuǎn)換成語音報文,所述報文處理器發(fā)送該語音報文;步驟C所述報文處理器從語音數(shù)據(jù)存儲區(qū)讀取報文分片置入報文分片隊列。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B包括步驟B1所述報文處理器判斷所述報文分片隊列是否為空,如果不為空,則執(zhí)行步驟B2;步驟B2所述報文處理器從所述報文分片隊列中讀取報文分片,轉(zhuǎn)至步驟B3;步驟B3所述報文處理器將所述報文分片轉(zhuǎn)換成語音報文,發(fā)送至物理層設(shè)備。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟B還包括步驟B4物理層設(shè)備將所述語音報文發(fā)送至數(shù)字信號處理器,所述數(shù)字信號處理器將所述語音報文編解碼后發(fā)送至IP網(wǎng)絡(luò)或TDM網(wǎng)絡(luò)。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟B3中,所述報文處理器采用多幀復(fù)用方式將所述報文分片轉(zhuǎn)換成語音報文;或者所述報文處理器直接讀取一個報文分片轉(zhuǎn)換成語音報文。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟B2中讀取報文分片的數(shù)量由所述數(shù)字信號處理器的緩存大小和所述報文分片的大小確定。
6.根據(jù)權(quán)利要求1或5所述的方法,其特征在于,所述報文分片的大小由所述語音報文的編解碼方式確定。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A包括步驟A1所述報文處理器獲取系統(tǒng)時間;步驟A2所述報文處理器比較所述系統(tǒng)時間和下一語音報文的報文發(fā)送時間,如果所述系統(tǒng)時間達到所述報文發(fā)送時間,則報文處理器發(fā)送下一個語音報文。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法進一步包括設(shè)置所述報文發(fā)送時間戳的允許窗口,如果所述系統(tǒng)時間在所述報文發(fā)送時間戳的允許窗口范圍中,則報文處理器需要發(fā)送下一個語音報文。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟C包括步驟C1所述報文處理器判斷所述報文分片隊列是否有空閑項,如果有,則所述報文處理器從所述語音數(shù)據(jù)存儲區(qū)中讀取報文分片,所述報文處理器將報文分片置入報文分片隊列。
10.一種報文處理器,其特征在于,包括報文發(fā)送單元、數(shù)據(jù)接收單元、處理決策單元、報文處理單元,所述處理決策單元獲取系統(tǒng)時間,根據(jù)所述系統(tǒng)時間分析下一步操作,發(fā)出操作指令;所述數(shù)據(jù)接收單元從語音數(shù)據(jù)存儲區(qū)讀取報文分片,發(fā)送至所述報文處理單元處理;所述報文處理單元接收所述數(shù)據(jù)接收單元發(fā)送的報文分片,將所述報文分片置入報文分片隊列;所述報文處理單元從所述報文分片隊列中讀取報文分片,轉(zhuǎn)換成語音報文后發(fā)送至所述報文發(fā)送單元;所述報文發(fā)送單元接收所述報文處理單元發(fā)送的語音報文,發(fā)送至物理層設(shè)備。
11.根據(jù)權(quán)利要求10的報文處理器,其特征在于,所述報文處理單元包括報文復(fù)用單元;所述報文處理單元從所述報文分片隊列中讀取報文分片后,所述報文復(fù)用單元采用多幀復(fù)用方式將所述報文分片轉(zhuǎn)換成語音報文發(fā)送至所述報文發(fā)送單元。
全文摘要
本發(fā)明涉及語音報文的處理技術(shù),公開了一種語音報文的處理方法和報文處理器。本發(fā)明中,在放音業(yè)務(wù)處理過程中,在內(nèi)存中設(shè)置報文分片隊列,用于緩存報文分片。在報文處理器需要發(fā)送語音報文時,報文處理器從報文分片隊列中讀取報文分片,并為讀取的報文分片封裝報文首部,轉(zhuǎn)換成語音報文,發(fā)送給物理層設(shè)備處理;在報文處理器不需要發(fā)送語音報文時,報文處理器從內(nèi)存中讀取報文分片,將報文分片置入報文分片隊列。本發(fā)明利用了報文分片隊列緩存機制,將讀取報文分片、發(fā)送語音報文等操作分開,有效地利用了報文處理器資源,提高報文處理的效率。
文檔編號H04M3/487GK101031092SQ20061003408
公開日2007年9月5日 申請日期2006年2月28日 優(yōu)先權(quán)日2006年2月28日
發(fā)明者蔡利劍 申請人:華為技術(shù)有限公司