專利名稱:一種基于單芯片的多通道多語音編解碼器的調度方法
技術領域:
本發(fā)明涉及語音信號處理,具體涉及一種基于單芯片的多通道多語音編解碼器的調度方法。
背景技術:
基于互聯網協議語音通訊Vocie overIP,簡稱VoIP,是建立在互聯網協議IP技術上的分組化、數字化語音傳輸技術。數字信號處理芯片DSP具有高處理能力、獨立存儲控制和低成本的特性,適合于執(zhí)行VOIP語音處理系統(tǒng)中的語音信號處理功能,其應用大大推動了VoIP技術的發(fā)展和推廣。
語音編解碼器內置在DSP芯片中作為VoIP技術的一個核心,編解碼質量、占用帶寬、處理能力等直接關系VoIP性能實現。ITU-T發(fā)布的一系列應用于VoIP的語音壓縮編解碼標準G711、G723、G728、G729等,這些語音編碼算法都采用逐幀處理的方式,每收到包括多個樣點的一幀語音進行一次編碼,利用線形預測和矢量量化等技術去除語音信號之間的短期相關性和長期相關性,盡可能地降低語音編碼速率。VoIP媒體網關設備中通常需要支持上述多語音編解碼器選擇。
基于單DSP芯片平臺的VOIP語音處理系統(tǒng)多通道語音處理中,各通道之間一般來說采用通道輪詢架構設計在一定時間片內循環(huán)檢測各通道的狀態(tài),進行語音編解碼處理;所述時間片由VOIP語音處理系統(tǒng)的架構決定,通常依賴選用語音編解碼器的數據幀長特性。典型多通道語音處理流程,如圖1所示,包括步驟110)處理時間到;120)從Channel_1開始對當前Channel_Num通道語音信號處理;130)判斷所有Channel處理完畢?是進入步驟150;否進入步驟140);140)Channel_Num++,返回步驟120);150)等待下一處理時間開始。該流程就是DSP芯片程序實時循環(huán)處理所有有效語音通道。同時,多通道控制也可以通過多DSP芯片完成,但需要增加硬件;另外,VOIP語音處理系統(tǒng)中其他語音信號處理部分大都基于語音編解碼器的幀長單位,比如網絡組包解包處理的網絡模塊也基于語音編解碼器的輸入和輸出,因此整個DSP芯片的多通道調度處理是建立在語音編解碼器的調度處理特性之上。
按目前VOIP語音處理系統(tǒng)通道輪詢架構,當其語音編解碼器類型唯一,各通道處理的數據幀長也是一致,所有通道處理時間同步,DSP芯片平臺可根據所有語音信號處理負荷決定VOIP語音處理系統(tǒng)實現的最大通道數。當各通道的語音編解碼器不同時,由于語音編解碼器的處理幀長不同,且不同語音編解碼器算法的復雜程度相差較大,目標實現VOIP語音處理系統(tǒng)最大通道數時,通常通道輪詢會導致DSP處理能力瓶頸,具體如圖2所示為例,細線和粗線框分別調用G711和G723語音編解碼器,G711數據幀長10ms,G723幀長30ms,VOIP語音處理系統(tǒng)開啟6個有效通道,t0~t6相鄰時刻時間間隔為10ms周期,即時間片1,t0~t1時間間隔內,通道1/3/4的10ms幀長輸入數據有效,進行G711編解碼;通道2/5/6因數據無效不進行G723編解碼,通道1/3/4輪詢語音信號處理;時間間隔內t1~t2、t3~t4和t4~t5的處理相同。
2,t2~t3和t5~t6時間間隔內,此時所有通道的幀數據都有效,通道1/3/4數據為10ms幀長,通道2/5/6數據為30ms幀長,通道1~6輪詢語音信號處理。
3,若DSP芯片程序能在t2~t3時間間隔內完成所有通道的語音處理,則該VOIP語音處理系統(tǒng)實時性能夠保證。因語音編解碼器類型不同,各通道的處理運算量并不相同,G723實現需要的每秒百萬指令周期MIPS,需要DSP芯片處理能力單位遠遠大于G711,當DSP芯片需要實現通道數增加一定量時,就會出現在t3或t6時刻到來時,當前幀所有通道語音信號處理不能完成的現象。
在t2~t3和t5~t6時間間隔內沒有完成所有通道處理,對于DSP而言就是當前時間片內的運算能力瓶頸,如圖3所示,其中高出虛線的斜線塊為當前時間片內的運算能力瓶頸,目前采用以下方法解決(一)t3時刻后繼續(xù)未完成通道的語音信號處理,結果帶來下一時間片語音處理延遲,如圖3所示,t3時刻開始應執(zhí)行下一次輪詢開始通道1的G711編解碼而被迫延時至低于虛線的斜線塊之后。若DSP處理負荷不嚴重時,當前時間片的延遲可在后續(xù)時間片處理得到釋放,比如該具體實施例中G711編解碼占用運算量低。但,嚴重時可出現t3~t4時間間隔內,1/3/4通道沒有及時處理,導致t3~t4時間間隔內的輸入語音幀數據被沖洗,出現丟包現象,長時出現這種延時累積效應可導致VOIP語音處理系統(tǒng)出錯。通常避免該問題方法是根據語音信號處理的最大負荷來定義通道密度,保證最壞情形下VoIP語音處理系統(tǒng)的實時處理,比如該具體實施例中最大負荷是G723編解碼器。
(二)t3時刻上一時間片未完成通道的語音處理失效,保證下一時間片的通道輪詢,而損失當前時間片未處理通道信號數據。應用該方法,可根據時間片內所有通道處理占用的判斷,實時動態(tài)增加和減少通道密度,但無法或無法一次實現最大通道密度。
除通道輪詢架構方式之外,另一種多通道的不同處理幀長可采用多任務方式,依賴每個通道的信號處理建立獨立的任務,短幀長比如G711的10ms通道任務具有高優(yōu)先級別,長幀長比如G723的30ms低優(yōu)先級別。由VoIP語音處理系統(tǒng)通過不同任務的搶占和釋放實現語音處理的實時性,但同時多任務形式的語音信號處理雖然可解決多通道輪詢帶來的語音瓶頸或語音幀丟失,但通道開啟關閉需實時建立和取消任務,任務頻繁開啟和取消以及多個任務的頻繁切換會導致DSP芯片運算負荷的增加,同時DSP平臺要求提供實時操作系統(tǒng)RTOS支持。隨著通道密度的增加VOIP語音處理系統(tǒng)復雜性同樣增加,同樣帶來運算負荷的瓶頸,特別是強調在一塊DSP芯片上實現高通道密度VOIP語音處理系統(tǒng)時,以每個通道建立任務不具有實現意義。
發(fā)明內容
本發(fā)明需要解決的技術問題是提供一種基于單芯片的多通道多語音編解碼器的調度方法,無需實時監(jiān)測DSP芯片運算負荷,最大實現VoIP語音處理系統(tǒng)通道密度,解決傳統(tǒng)語音編解碼器調度中帶來的運算能力瓶頸和計算復雜程度。
本發(fā)明的上述技術問題這樣解決,提供一種基于單芯片的多通道多語音編解碼器的調度方法,在每一時間片內按順序詢問每一通道,包括以下步驟1.1)根據各語音編解碼器處理幀長的最大公約數確定時間片時間;1.2)計算各語音編解碼器同步循環(huán)周期相對于所述時間片的循環(huán)計數周期P;1.3)針對每一語音編解碼器在其循環(huán)計數周期P的各時隙平均分配調用該語音編解碼器的所有通道n。
按照本發(fā)明提供的調度方法,所述所有通道n是對應循環(huán)計數周期P的倍數,其循環(huán)計數周期的每一時隙分配n/P個通道。
按照本發(fā)明提供的調度方法,所述所有通道n不是對應循環(huán)計數周期P的倍數,其循環(huán)計數周期P的每一時隙分配小于或大于n/P的最接近整數個通道,該循環(huán)計數周期P總共分配n個通道。
按照本發(fā)明提供的調度方法,所述分配是將循環(huán)計數周期P分為連續(xù)的二部分,一部分分配小于n/P的最接近整數個通道,另一部分分配大于n/P的最接近整數個通道,該循環(huán)計數周期P總共分配n個通道。
按照本發(fā)明提供的調度方法,該循環(huán)計數周期P所有時隙總共分配調用該語音編解碼器的n個通道,其中任一通道在一個循環(huán)計數周期P內僅占用一個時隙。
按照本發(fā)明提供的調度方法,所述時隙對應所述時間片,所述同步循環(huán)周期是對應語音編解碼器的處理幀長,所述循環(huán)計數周期P等于所述處理幀長除以所述時間片。
按照本發(fā)明提供的調度方法,所述語音編解碼器是二種或二種以上,包括但不限制于在VoIP系統(tǒng)中常見的G711、G723、G728、G729、G722和G726語音編解碼中的一種或多種。
按照本發(fā)明提供的調度方法,所述語音編解碼器是二種或二種以上,包括但不限制于其他語音系統(tǒng)的編解碼器,如GSM-AMR/GSM-EFR/EVRC等。
按照本發(fā)明提供的調度方法,使用該調度方法打開新通道時,根據其調用的語音編解碼器選擇對應循環(huán)計數周期P,并在其內選擇啟用通道數最少的時隙進行分配,分配開啟后將對應語音編解碼器的該時隙啟用通道數加一。
按照本發(fā)明提供的調度方法,所述通道數最少的時隙可以是多個,任選其中之一進行分配,分配開啟后將對應語音編解碼器的該時隙啟用通道數加一。
按照本發(fā)明提供的調度方法,使用該調度方法關閉通道時,根據該通道調用的語音編解碼器和開啟時隙將對應語音編解碼器的該時隙啟用通道數減一。
按照本發(fā)明提供的調度方法,該調度方法應用在以一定時長為處理單位的多通道多語音編解碼器結構的系統(tǒng)中。
按照本發(fā)明提供的調度方法,所述系統(tǒng)包括但不限制于VOIP語音處理系統(tǒng)或媒體網關、無線語音編解碼處理系統(tǒng)中。
按照本發(fā)明提供的調度方法,所述芯片是DSP芯片,該調度方法主要應用在基于DSP芯片平臺上實現的VoIP語音處理系統(tǒng)中。
本發(fā)明提供的基于單芯片的多通道多語音編解碼器的調度方法,在單DSP芯片處理平臺上針對支持多語音編解碼器及多通道的VoIP語音處理系統(tǒng),對每一語音編解碼器在其循環(huán)計數周期P的各時隙平均分配調用該語音編解碼器的所有通道,這樣將各通道運行平均分配到VoIP語音處理系統(tǒng)定義時間片內,最大實現VoIP語音處理系統(tǒng)通道密度,能夠對于任意語音編解碼器組合實現,無需實時監(jiān)測DSP芯片運算負荷,解決了傳統(tǒng)語音編解碼器調度中帶來的運算能力瓶頸和復雜程度,較現有技術,有如下優(yōu)點①優(yōu)化多通道多語音編解碼器的調度方案,解決單一輪詢通道帶來運算瓶頸或多任務VoIP語音處理系統(tǒng)帶來的實現復雜度,提高通道實現密度。
②DSP芯片獨立分配策略,無需上層主機或CPU控制干預,通道循環(huán)計數周期分配算法簡單有效,提高運算效率。
③減少算法處理帶來的語音延遲。原通道輪詢時間片內依次處理所有通道,對于每一通道而言,總的算法處理延時為前面所有通道處理占用時間加上本通道處理延時,通道號越高,延遲越大。在相同實現總通道數的條件下,本發(fā)明通過平均各通道占用時間片。因此在一時間片內,需求處理通道數降低,也即降低各通道的算法處理帶來的語音延遲。
下面結合附圖和具體實施例進一步對本發(fā)明進行詳細說明。
圖1是目前典型語音編解碼器調度處理流程示意圖。
圖2是以語音編解碼器G711和G723為例的典型處理時序和通道調用對應示意圖。
圖3是DSP芯片運行圖2對應時序處理中運算能力瓶頸示意圖。
圖4是本發(fā)明提供的多語音編解碼器調度的時序和通道對應示意圖。
圖5是本發(fā)明對于通道循環(huán)周期分配的算法流程示意圖。
圖6是本發(fā)明具體實施例中通道輪詢處理流程示意圖。
具體實施例方式
首先,說明本發(fā)明的核心思想在DSP芯片總處理能力保證下,以處理幀長保證實時處理各通道數據的基礎上,通過對應同步循環(huán)周期中每個時間片內各語音編解碼器分配通道數的平均或最可能平均來實現DSP運行負荷的均衡,同步循環(huán)周期等于對應語音編解碼器處理幀長。本發(fā)明在以一定時長處理為單位的多通道多語音編解碼器結構各種語音處理系統(tǒng)中都具有可實現性。
第二步,說明本發(fā)明的出發(fā)點采用通道輪詢調度方法的程序架構清晰,而多任務調度方法成功解決通道輪詢帶來的運算負荷瓶頸。本發(fā)明解決方法正是結合兩種方法的各自優(yōu)點,即沿用通道簡單輪詢調度結構,又保證時間片內即時間片內各通道運算實時完成,提高VoIP語音處理系統(tǒng)處理性能。語音編解碼器之間不同處理幀長和不同運算負荷是引起時間片即時間片內運算瓶頸的直接原因。本發(fā)明的具體辦法是如VoIP語音處理系統(tǒng)中需求實現m種語音編解碼器,其中各語音編解碼器運算幀長分別為L1,L2......Lm,計算各處理幀長的最大公約數T作為程序時間片,對常用語音編解碼器類型而言公約數T為5ms或10ms。各語音編解碼器處理幀長占用的時間片倍數P為循環(huán)計數周期,例入語音編解碼器處理幀長30ms,時間片10ms,則循環(huán)計數周期P=3,即每3個時間片,也是使用該語音編解碼器各通道的同步循環(huán)周期,調用一次對應語音編解碼器處理該通道傳輸過來的數據,保證實時處理該通道數據幀。設VoIP語音處理系統(tǒng)中一類型語音編解碼器的所有開啟通道數n,在保證對于任一通道的處理時間間隔等于對應語音編解碼器處理幀長的基礎上將n個通道盡量平均分配到同步循環(huán)周期中每個時間片中調用,即每個時間片中應該調用該語音編解碼器的通道數為n/P,當n/P不是整數時,此時同步循環(huán)周期中每個時間片的具體該語音編解碼器的通道數是不同的,是大于或小于n/P的最接近整數,可以采用依次對同步循環(huán)周期中第一時間片分配INT(n/P), 第二時間片分配INT((n-INT(n/P))/(P-1))......。在DSP芯片總的處理能力保證下,通過同步循環(huán)周期中每個的時間片內各語音編解碼器分配通道數的平均或最可能平均來實現DSP芯片運行負荷的均衡。
第三步,說明本發(fā)明VoIP語音處理系統(tǒng),由以下模塊組成(一)時間片長決策模塊根據VoIP語音處理系統(tǒng)要實現各語音編解碼器處理幀長決定時間片及對應語音編解碼器的循環(huán)計數周期,保證對通道的實時處理,進一步為平均分配提供基準。
(二)通道調用循環(huán)計數周期分配模塊語音通道開啟后判斷當前配置語音編解碼器類型及相應幀長,分配該通道調用在循環(huán)計數周期內的具體時隙。
一個具體語音編解碼器分配實現如下,定義CHANNELNUM為VoIP語音處理系統(tǒng)最大實現通道密度,P為該語音編解碼器的循環(huán)計數周期,包括以下步驟1)定義語音編解碼器處理時隙start_frame[CHANNELNUM],用于記錄每個通道語音處理的時間片應占用的時隙;計數器變量frame_1、frame_2......frame_P為循環(huán)周期1、2、3.....P個時隙中分配到的通道數。
2)初始化frame_1、frame_2......frame_P變量值為0。
3)實時開啟通道后,比較找出frame_1、frame_2......frame_P最小值,最小的值表示對應時隙內分配的調用通道數最少,返回該時間片斷值j,計數器frame_j加1。當有大于1個相等最小值時,選擇其中任一時隙值,同時該計數器加1。
4)分配當前通道在循環(huán)計數周期中的處理時隙start_frame[]=j。
(三)通道輪詢調度同步模塊通道輪詢時判斷以P為周期大小的當前時間片的循環(huán)計數是否與上步驟中分配的通道處理時隙start_frame[]一致,若一致,則表明當前時間片應執(zhí)行該通道的語音處理;否則跳過繼續(xù)下一通道號的處理。
(四)通道分配周期關閉模塊通道實時關閉后更新該通道分配占用時隙,frame_j計數器減1。
最后,以本發(fā)明在三個語音編解碼器CodecA、CodecB、CodecC多通道VoIP語音處理系統(tǒng)的具體應用詳細說明本發(fā)明語音編解碼器CodecA、CodecB、CodecC的處理幀長假定分別為10ms、20ms、30ms,三個語音編解碼器處理幀長最大公約數為10ms,即VoIP語音處理系統(tǒng)時間片為10ms,取同步循環(huán)周期為3個時間片,有frame_1、frame_2和frame_3三個時隙。語音編解碼器CodecA、CodecB、CodecC的循環(huán)計數周期分別為1、2和3。語音編解碼器CodecA的循環(huán)計數周期為1,表示每個時間片中使用語音編解碼器CodecA的所有通道都需調用處理。
假定已開啟配置語音編解碼器CodecC的通道總數為13,根據時隙分配原理,此時按平均分配原則同步循環(huán)周期三個時隙分配給語音編解碼器CodecC的通道數量分別為frameC_1=4,frameC_2=4,frameC_3=5。
當前VoIP語音處理系統(tǒng)要求打開一個新通道n配置語音編解碼器CodeC,如圖5所示,此時通道具體時隙配置過程包括以下步驟510)通道開啟;520)判斷語音編解碼器類型為CodecC,循環(huán)計數周期P=3;530)找出CodecC均分時間片中有效開啟通道數最小時隙,此時frameC_1=frameC_2<frameC_3,最小時隙通道計數為frameC_2;
540)通道計數frameC_2++,frameC_2=5,返回時隙2;550)將返回時隙2分配給當前通道啟動時隙start_frame[n]=2;560)當前通道其他初始化程序。
進一步,通道調用的一個時間片內主處理流程,具體如圖6所示,包括以下步驟610)當前時間片開始,設置Channel_Num=1即從通道一開始輪詢;620)判斷當前Channel_Num通道語音編解碼器類型,讀取當前通道時隙分配start_frame[];讀取當前同步循環(huán)周期的時隙global_timeCount,對于CodecC而言,global_timeCount的循環(huán)周期為3;630)判斷start_frame[]=global_timeCount,即通道啟動時隙分配值與當前同步循環(huán)周期時隙相同,進入步驟640);否則跳到步驟650);640)對該Channel_Num通道相關語音信號進行處理;650)Channel_Num++,即通道號加1;660)判斷是否所有通道循環(huán)處理完畢,如果是進入步驟670),否則返回步驟620);670)global_timeCoun++,即同步循環(huán)周期的時隙global_timeCount加1;680)判斷循環(huán)周期時隙是否一個周期結束,如果否,直接進入步驟690);如果是,進入步驟691);691)重置初始時隙global_timeCount=1,進入步驟690)690)等待下一時間片的開始,重復步驟610)~690)。
進一步,當VoIP語音處理系統(tǒng)關閉通道號n時,程序返回該通道輪詢起始時隙2,并將該時隙累計通道計數器frameC_2減1,即frameC_2=frameC_2-1,實時更新通道配置的改變,而后利用該新配置開啟新通道實現負擔均衡。
發(fā)明人通過在應用VoIP語音處理系統(tǒng)進行實際性能驗證和效果對比分析,進一步證明本發(fā)明結果確實可靠可行。
權利要求
1.一種基于單芯片的多通道多語音編解碼器的調度方法,在每一時間片內按順序詢問每一通道,其特征在于,包括以下步驟1.1)根據各語音編解碼器處理幀長的最大公約數確定時間片時間;1.2)計算各語音編解碼器同步循環(huán)周期相對于所述時間片的循環(huán)計數周期P;1.3)針對每個語音編解碼器把調用該語音編解碼器的n個所有通道均衡分配在該語音編解碼器循環(huán)計數周期P的各時隙。
2.根據權利要求1所述調度方法,其特征在于,每一所述時隙分配n/P整數個或最接近n/P整數個所述通道。
3.根據權利要求1或2所述調度方法,其特征在于,該循環(huán)計數周期P所有時隙總共分配所述n個通道,其中任一通道在一個循環(huán)計數周期P內僅占用一個時隙。
4.根據權利要求1所述調度方法,其特征在于,所述時隙對應所述時間片,所述同步循環(huán)周期是對應語音編解碼器的處理幀長,所述循環(huán)計數周期P等于所述處理幀長除以所述時間片。
5.根據權利要求1所述調度方法,其特征在于,所述語音編解碼器是二種或二種以上,包括G711、G723、G728、G729、G722、G726、GSM-AM、GSM-EFR和EVRC語音編解碼中的一種或多種。
6.根據權利要求1所述調度方法,其特征在于,使用該調度方法打開新通道時,根據其調用的語音編解碼器選擇對應循環(huán)計數周期P,并在其內選擇啟用通道數最少的時隙進行分配,分配開啟后將對應語音編解碼器的該時隙啟用通道數加一。
7.根據權利要求6所述調度方法,其特征在于,所述通道數最少的時隙可以是多個,任選其中之一進行分配,分配開啟后將對應語音編解碼器的該時隙啟用通道數加一。
8.根據權利要求1所述調度方法,其特征在于,使用該調度方法關閉通道時,根據該通道調用的語音編解碼器和開啟時隙將對應語音編解碼器的該時隙啟用通道數減一。
9.根據權利要求1所述調度方法,其特征在于,該調度方法應用在以一定時長為處理單位的多通道多語音編解碼器結構的系統(tǒng)中。
10.根據權利要求9所述調度方法,其特征在于,所述系統(tǒng)是VOIP語音處理系統(tǒng)或媒體網關、無線語音編解碼處理系統(tǒng)中。
全文摘要
本發(fā)明涉及一種基于單芯片的多通道多語音編解碼器的調度方法,在每一時間片內按順序詢問每一通道,包括根據各語音編解碼器處理幀長的最大公約數確定時間片時間;計算各語音編解碼器同步循環(huán)周期相對于所述時間片的循環(huán)計數周期P;針對每一語音編解碼器在其循環(huán)計數周期P的各時隙平均分配調用該語音編解碼器的所有通道。這種方法在循環(huán)計數周期P的各時隙平均分配對應通道,將各對應通道平均分配到時間片內,最大實現VoIP語音處理系統(tǒng)通道密度,能夠對于任意語音編解碼器組合進行實現,無需實時監(jiān)測DSP芯片運算負荷,解決了傳統(tǒng)語音編解碼器調度中帶來的運算能力瓶頸和復雜程度。
文檔編號G10L19/14GK1971710SQ20061016196
公開日2007年5月30日 申請日期2006年12月8日 優(yōu)先權日2006年12月8日
發(fā)明者馬俊, 王欣, 王侃, 趙心宇 申請人:中興通訊股份有限公司