專利名稱:一種在網絡終端緩沖區中處理音頻流回放的方法
技術領域:
本發明涉及一種處理音頻流的方法,尤其是指在包交換網絡上使通話連續、流暢正常播放的在網絡終端緩沖區中處理音頻流回放的方法。
背景技術:
當前,由于包交換網絡的快速發展,原來主要承載在電路交換網絡上的話音實時通信,開始大規模以包交換語音(VoIP)的形式轉移到IP包交換網絡上,最終會形成音頻與數據及其它流媒體融合的網絡。傳統的電路交換網絡與包交換網絡存在一些不同特性,比如電路交換網絡提供端到端的固定帶寬并且獨占的通信線路,不會出現包交換網絡上存在的數據包丟失、亂序、時延抖動等問題;由于其傳輸帶寬利用的高效率,網絡融合的需求,以及組網與網絡管理、擴容等的靈活性,決定了在包交換網絡上傳輸音頻信號的必要性,但是包交換網絡上存在的數據包丟失、亂序、時延抖動等問題,會嚴重影響實時音頻通信的質量,造成卡音、斷音等不連續現象。
數據包的丟失對音頻通信質量的影響主要體現在丟包率上,如果丟包率較低比如1%到2%,則聽者不會感覺到明顯的音頻質量下降,但是隨著丟包率的上升,聽者會感覺到音頻信號的斷斷續續或不連續,此時聽者在感覺到少量斷斷續續時可能還能聽懂對方的說話,但是大量的斷續就會使聽者聽不懂對方在說什么了,從而造成通信終止。少量的數據包丟失可以通過利用音頻信號的冗余性,即通過插值對丟失的音頻數據包進行彌補,但是大量的數據包丟失,無論如何都會使音頻通信的質量下降。
亂序與時延抖動本質上都會造成需要連續、順序播放的音頻數據包的在播放時間上的抖動;由于實時音頻通信是一個連續的過程,每個音頻數據包要在解碼之后按固定時間間隔順序播放,因此音頻數據包在到來時間上的抖動會造成聽覺上的不連續;如果抖動太大,則有的數據包由于來的太晚已沒有播放的價值而被丟掉。
解決數據包抖動的方法之一是在接收端設置一個抖動緩沖區,在數據包到來時首先放入該緩沖區,在回放音頻數據時,本著先進先出的原則,在時間上均勻地取出音頻數據包并送往音頻回放設備播出;只要該抖動緩沖區不被音頻回放程序讀空,則可以保證音頻流的連續回放。該抖動緩沖區越大,則可平滑的抖動越大,但是過大的抖動緩沖區會造成音頻回放時延的加大,過大的時延也是不可取的,會造成實時通訊的困難;抖動緩沖區的大小可根據具體需求來設定,也可以根據網絡狀況動態調整。但是這樣并不能有效保證音頻流的連續播放。
發明內容
本發明的目的是提供一種通話質量好、并能維持實時通訊的一種在網絡終端緩沖區中處理音頻流回放的方法。
本發明是這樣實現的當包交換網絡上傳輸來音頻數據包進入抖動緩沖區時,計算讀、寫指針之間的距離D;在初始化過程中,設置讀、寫指針之間的距離D正常值的范圍和一次從抖動緩沖區中讀出的數據長度;在運行過程中,當讀、寫指針之間的距離D正常時,音頻流按正常速度回放;當讀、寫指針之間的距離D大于或小于正常值時,通過音頻重采樣單元對從抖動緩沖區中讀出的大于或小于正常播放長度的數據進行重采樣處理,使其恢復正常的播放長度。
上述的抖動緩沖區為環形抖動緩沖區。
所述的讀、寫指針之間的距離D是為進入抖動緩沖區的讀指針偏移量與寫指針偏移量的差。
當D小于正常值范圍的下限時,從環形緩沖區讀出的數據長度小于正常播放長度,采用升采樣處理。
當D大于正常值范圍的上限時,從環形緩沖區讀出的數據長度大于正常播放長度,采用降采樣處理。
當讀指針的偏移量小于寫指針的偏移量時,讀、寫指針之間的距離D為寫指針的偏移量減讀指針的偏移量所得的差。
當讀指針的偏移量大于寫指針的偏移量時,讀、寫指針之間的距離D為環形抖動緩沖區的寫指針的偏移量減讀指針的偏移量所得的差在加上環形抖動緩沖區的長度所得的值。
該方法在實現方式上既可以通過硬件編碼實現也可以通過軟件編碼實現。
采用上述方法后,當對讀、寫指針之間的距離D是非正常值時,通過對從抖動緩沖區中讀出的大于或小于正常長度的語音數據塊進行重采樣處理,從而加速或減慢播放速度,最終使環形抖動緩沖區中的讀指針、寫指針始終保持一定的距離,保證了包交換網絡上傳輸來的實時音頻流的連續流暢播放,使通話連續、流暢,減少了卡音、斷音等不連續現象。
下面結合附圖和具體的實施方式對本發明作進一步詳述。
圖1是包交換網絡音頻通訊示意圖;圖2是音頻通信終端的發送部分示意圖;
圖3是音頻通信終端的接收部分示意圖;圖4是環形抖動緩沖區示意圖。
具體實施例方式
如圖1所示,每個終端通過某種接入方式連接到包交換網絡之中,每個音頻終端可以通過該包交換網絡向另一個音頻終端發送或接收音頻數據包;多個音頻終端也可以通過某種形式組成一個可以多方通話的會議網絡。
如圖2所示,音頻輸入信號首先送到音頻采集單元,該音頻采集單元完成音頻信號從模擬到數字信號的轉換,也就是量化過程,該處理過程一般將音頻信號量化為16Bit精度的有符號數字信號,之后送入音頻編碼器進行數據壓縮以節省網絡帶寬,音頻信號經編碼壓縮之后,送入打包傳送單元,數據打包單元一般將用于實時通訊的音頻包按實時通信協議(RTP)標準進行封裝,之后再封裝為用戶數據協議(UDP)包,最后打入互連協議(IP)包傳送到網絡上。網絡接口單元一般是網絡層中的物理層及數組鏈路層,如以太網接口芯片或調制解調器等,經過壓縮后的音頻數據包最后經過網絡接口單元傳送到包交換網絡上。
在音頻數據包到達目標接收終端之前,要通過一系列的網絡傳輸單元;這可能包括多種交換設備和路由設備,不同的路由及網絡狀況會產生不同的傳輸時延,從而造成按等時間間隔順序傳送的音頻數據包會在時間上非均勻地到達接收端,這就造成數據包接收的抖動;另外按等時間間隔順序傳送的音頻數據包有可能在不同的路由上傳送,比如順序發送的數據包p1,p2,p3,...在接收端的順序可能變成p1,p3,p2,...。
如圖3所示;音頻數據包經過包交換網絡傳輸之后到達接收端的網絡接口單元,網絡接口單元將收到的數據包拆去物理層地址等信息后還原成互連協議(IP)數據包;該數據包接著被送入音頻流接收及拆包單元,在該處理單元中拆去互連協議(IP)包頭信息、用戶數據協議(UDP)包頭信息、實時通信協議(RTP)包頭信息,最后還原為音頻數據包;還原后的音頻數據包被送入音頻包解亂序單元,解出按正常時間順序排列的數據包;按正常時間順序排列的數據包接著被送入音頻解碼單元,解出音頻信號的線性碼;解出的音頻信號的線性碼被連續寫入環形抖動緩沖區暫時存儲;由于音頻數據包經過網絡傳輸之后出現的抖動,使音頻數據流往環形抖動緩沖區的寫入操作在時間上是非均勻的,但音頻信號的回放在時間上要求是連續且均勻的,所以從環形抖動緩沖區讀出音頻數據并回放的操作與往環形抖動緩沖區的寫入操作時非同步的。
如下詳細描述音頻數據在環形緩沖區中的處理及回放過程,包括圖3中的抖動緩沖器,抖動緩沖器讀出單元,抖動緩沖器讀出控制單元,音頻重采樣單元,音頻回放單元;圖3中實線為數據流,虛線位控制流。
如圖4所示,抖動緩沖區實際上是一個長度為N的連續存儲空間,該存儲空間的起始地址用偏移量0表示,結束地址用偏移量N-1表示,當前的寫入地址指針用偏移量W表示,當前的讀出地址指針用偏移量R表示,當前的寫入指針與讀出指針之間的距離用D表示;對該抖動緩沖區的寫入操作為對當前寫指針指向的存儲位置寫入音頻數據,之后寫指針偏移量加1并對抖動緩沖區的長度N取余運算,即用C語言可以表示為每寫入一個數據后 W=(W+1)%N;對該抖動緩沖區的讀出操作為每讀出一個數據單元后讀指針偏移量加1,同樣用C語言可以表示為每讀出一個數據后R=(R+1)%N;這樣的讀寫操作可以保證在讀寫指針到達抖動緩沖區的頂部時,也就是偏移量N-1時,下一次讀或寫操作會自動翻轉到抖動緩沖區的底部,也就是偏移量0;這樣的操作實際上相當于將該抖動緩沖區的頂部與底部相接,組成了一個環形緩沖區,讀寫指針按著相同的方向(順時針或逆指針)旋轉;為了保證讀寫指針之間不發生沖突,即讀指針要保持始終跟隨在寫指針的后方,這是通過讀寫指針之間的距離D來判斷的;如果W大于R則D=W-R;如果W小于R則D=N+W-R;由此只要D大于0則可以保證讀指針始終跟隨在寫指針的后方,同時讀寫指針之間的距離D作為控制信號送入抖動緩沖區讀出控制單元,實際上讀寫指針之間的距離D相當于一個閉環控制系統中的誤差控制信號,作為對抖動緩沖區讀出操作的依據。
抖動緩沖區讀出控制單元得到讀寫指針之間的距離D之后,根據D的大小來決定每次音頻回放設備需要回放數據時讀出的音頻數據塊的大小;音頻回放單元一般是按等時間間隔(比如30毫秒)需要一定長度的音頻數據塊進行回放,如果音頻信號的采樣率為8000個采樣點每秒(8k/s)則每30毫秒需要長度為240個采樣點的音頻數據塊;若D的大小在正常的范圍內,則抖動緩沖區讀出控制單元控制抖動緩沖區讀出單元每次在音頻回放單元需要數據時讀出正常長度的一塊數據(比如240個音頻數據),而此時音頻重采樣單元對此數據不進行任何操作,透明地將該塊數據送到音頻回放單元播放。
如果讀寫指針之間的距離D超過正常范圍,如過大或者過小則需要進行必要的調整,因為如果D過小,則可能發生由于數據包到來時間的隨機抖動造成該抖動緩沖區被不時讀空的情況出現,從而造成W小于R的情況出現,也就是出現讀指針比寫指針在環形緩沖區中跑的快的情況,這時就會出現斷音與卡音;如果D過大,由于上述相同的原因,可能出現W繞過R一圈的情況出現,這時也會出現斷音與卡音。
另外,網絡傳輸上總會出現數據包丟失的情況,從長時統計平均的意義上來講D會因此隨著時間的推移越來越小;還有一個因素會影響D的變化,如果音頻發送端的采樣時鐘頻率不同于音頻接收端的播放時鐘頻率,就會出現如下情況,即當音頻發送端的采樣時鐘頻率大于音頻接收端的播放時鐘頻率時,D會因此隨著時間的推移越來越大,當音頻發送端的采樣時鐘頻率小于音頻接收端的播放時鐘頻率時,D會因此隨著時間的推移越來越小。
假設上述綜合原因允許D在大于d1小于d2的范圍內變化,也就是說當d1<D<d2時,抖動緩沖區讀出單元在相應的控制單元的控制下每次從抖動緩沖區中讀出長度為L的音頻數據塊;當D<d1時,表示該抖動緩沖區很可能將要被讀空,此時控制單元應控制抖動緩沖區讀出單元在音頻回放單元需要下一幀數據時,讀出長度小于正常長度L的一幀數據,假定其長度為L1(L1<L);此時音頻重采樣單元就將長度為L1的音頻數據塊通過符合音頻感知特性的插值運算變為長度為L的音頻數據塊,保證音頻回放單元有標準長度的音頻數據回放;這樣相當于減慢了該幀音頻數據的回放速度,只要L與L1的差值不是太大(比如((L-L1)/L)<1%)則主觀聽覺上不會有可感知的變化;由于減慢了音頻數據的回放速度,可以預知D會因此越變越大,當D回到正常的范圍內時(d1<D<d2)就可以按正常的速度進行音頻的回放了。
當D>d2時,表示該抖動緩沖區很可能將要被寫滿,此時控制單元應控制抖動緩沖區讀出單元在音頻回放單元需要下一幀數據時,讀出長度大于正常長度L的一幀數據,假定其長度為L2(L2>L);此時音頻重采樣單元就將長度為L2的音頻數據塊通過符合音頻感知特性抽取運算變為長度為L的音頻數據塊,保證音頻回放單元有標準長度的音頻數據回放;這樣相當于加速了該幀音頻數據的回放速度,同樣只要L與L2的差值不是太大(比如((L2-L)/L)<1%)則主觀聽覺上不會有可感知的變化;由于加快了音頻數據的回放速度,可以預知D會因此越變越小,當D回到正常的范圍內時(d1<D<d2)就可以按正常的速度進行音頻的回放了。
如果數據包到來時間的抖動范圍太大或者丟包率太大,則有可能造成環形緩沖區被讀空或者寫滿,此時可以做異常處理,在該緩沖區被讀空時,可以重放上一幀語音數據,若緊接著的下一次讀操作時緩沖區仍為空,則播放靜音信號;如果環形緩沖區被寫滿,則自動沖掉該緩沖區中的所有未播放數據,并重新開始正常的對該緩沖區的正常讀寫操作。
該方法在實現方式上既可以通過硬件編碼實現也可以通過軟件編碼實現。
權利要求
1.一種在網絡終端緩沖區中處理音頻流回放的方法,其特征在于當包交換網絡上傳輸來音頻數據包進入抖動緩沖區時,計算讀、寫指針之間的距離D;在初始化過程中,設置讀、寫指針之間的距離D正常值的范圍和一次從抖動緩沖區中讀出的數據長度;在運行過程中,當讀、寫指針之間的距離D正常時,音頻流按正常速度回放;當讀、寫指針之間的距離D大于或小于正常值時,通過音頻重采樣單元對從抖動緩沖區中讀出的大于或小于正常播放長度的數據進行重采樣處理,使其恢復正常的播放長度。
2.根據權利要求1所述的一種在網絡終端緩沖區中處理音頻流回放的方法,其特征在于所述的抖動緩沖區為環形抖動緩沖區。
3.根據權利要求1或2所述的一種在網絡終端緩沖區中處理音頻流回放的方法,其特征在于所述的讀、寫指針之間的距離D是為進入抖動緩沖區的讀指針偏移量與寫指針偏移量的差。
4.根據權利要求1或2所述的一種在網絡終端緩沖區中處理音頻流回放的方法,其特征在于當D小于正常值范圍的下限時,從環形緩沖區讀出的數據長度小于正常播放長度,采用升采樣處理。
5.根據權利要求1或2所述的一種在網絡終端緩沖區中處理音頻流回放的方法,其特征在于當D大于正常值范圍的上限時,從環形緩沖區讀出的數據長度大于正常播放長度,采用降采樣處理。
6.根據權利要求3所述的一種在網絡終端緩沖區中處理音頻流回放的方法,其特征在于當讀指針的偏移量小于寫指針的偏移量時,讀、寫指針之間的距離D為寫指針的偏移量減讀指針的偏移量所得的差。
7.根據權利要求3所述的一種在網絡終端緩沖區中處理音頻流回放的方法,其特征在于當讀指針的偏移量大于寫指針的偏移量時,讀、寫指針之間的距離D為環形抖動緩沖區的寫指針的偏移量減讀指針的偏移量所得的差在加上環形抖動緩沖區的長度所得的值。
8.根據權利要求1或2所述的一種在網絡終端緩沖區中處理音頻流回放的方法,其特征在于該方法在實現方式上既可以通過硬件編碼實現也可以通過軟件編碼實現。
全文摘要
一種在網絡終端緩沖區中處理音頻流回放的方法,解決了在網絡上通信易斷音、卡音的問題,在包交換網絡上(如IP網絡上)進行音頻(如語音)實時通信,在接收端設置一個抖動緩沖區,當接收端收到音頻包之后,首先按正常順序解碼、解亂序,之后放入抖動緩沖區;當抖動緩沖區將要充滿之時,對音頻數據進行降采樣率處理,以實現快速回放該音頻數據流;當抖動緩沖區將要被讀空之時,對音頻數據進行升采樣率處理,以實現音頻流的慢速回放;當抖動緩沖區中的音頻數據在正常范圍之時,按原采樣率進行音頻流的回放。采用上述控制方法,可以實現包交換網絡上傳輸來的實時音頻流的連續流暢播放,減少卡音、斷音等不連續現象。
文檔編號H04L12/16GK1464685SQ0211537
公開日2003年12月31日 申請日期2002年6月13日 優先權日2002年6月13日
發明者余泊 申請人:優創科技(深圳)有限公司