專利名稱:在數據傳輸中減少延遲抖動的裝置和方法
技術領域:
本發明涉及減少延遲抖動的裝置,用于通過因特網這樣的傳輸路徑,順序地接收一系列按時間順序排列的數據段,并將每個數據段推遲一段適當的時間,從而減少數據段傳輸過程中已經產生的延遲抖動,并獲得已經消除了延遲抖動效應的按照時間順序排列的數據;還涉及減少延遲抖動的方法。
數據傳輸的一種形式是實時傳輸,在這種傳輸方式中,將按照時間順序排列的連續信號樣本,比方說話音信號,載入多個連續數據包以后,再傳輸它們。在這種實時傳輸方式中,如果傳輸數據包的延遲時間對于每一個數據包而言都相同,就有可能在接收每一個數據包的時候,通過再現數據包中按時間順序排列的樣本,獲得波形跟源節點一樣的話音信號。
然而,在因特網這樣的網絡里,即使是同一個不變的源節點向一個不變的目標節點傳輸多個數據包,傳輸每個數據包的傳播延遲時間也不一定相同,因此,不同的數據包傳播延遲時間不同。數據包之間傳播延遲的這種變化叫做延遲抖動。
如果發生了這種延遲抖動,在目標節點接收每一個數據包的時候收到的數據包再現按照時間順序排列的樣本的時候,就不能保證從收到的數據包完全再現跟原始信號一樣的信號波形。
在這種情況下,目標節點通常都利用緩沖器來減少延遲抖動,從而獲得消除了延遲抖動效應,按照時間順序排列的數據。
下面參考
圖12到圖17,介紹減少延遲抖動的這一技術。
圖12是一個框圖,說明實時話音傳輸系統的一個結構實例。在這一系統里,源終端10中用一個話音編碼器11對傳輸的話音信號進行編碼,產生載入話音信號編碼數據的按時間順序排列的話音數據包。發送單元12將這些話音數據包傳遞給目標終端30。每個話音信號數據包在經過了網絡20以后到達目標終端30。在目標終端30那里,來自源終端10的話音數據包由一個接收單元31收到,儲存在緩沖器32里。隨后,從緩沖器32按照源節點那里的順序讀出保存在緩沖器32里的話音數據包,并傳輸給一個話音譯碼器33。這個話音譯碼器33收到按照這種方式傳輸過來的話音數據包,并從包括在話音數據包里的編碼數據譯出話音信號。
在實時話音傳輸系統里,源終端10產生的每個話音數據包都在產生數據包的同時發送給網絡20。但是,如同已經描述過的一樣,這些數據包到達接收終端30所需要的傳播延遲時間對于每個話音數據包來說都不是固定的。如果是這種情況,目標終端30就調整發送單個數據包給話音譯碼器33的時間。圖17說明這樣調整時間的一個實例。在圖17所示的實例中,話音數據包P0、P1和P2到達目標終端網30,它們的傳播延遲時間分別是d0、d1和d2。如圖所示,如果每個話音數據包P0、P1和P2可以分別延遲適當的時間D0、D1和D2,那么,總的延長時間就能夠固定不變,其中,總延遲時間是每個話音數據包從源終端10到話音譯碼器33所需要的時間。圖12所示的緩沖器32是用于按照這種方法調整延遲,以便將所有話音數據包的總延遲時間固定下來的裝置。假設在網絡20中話音數據包的最小延遲時間是dmin,話音數據包的最大延遲是dmax,為了方便起見,將它們之間的差D=dmax-dmin叫做延遲抖動寬度。要求圖12中的緩沖器32在這個延遲抖動寬度范圍內調整延遲時間;換句話說,緩沖器32應該能夠減少延遲抖動。
下面參考圖13A和13B來描述緩沖器32對話音數據包進行的延遲調整。
在圖13B中,上面和下面有4個并列的隊列,每個隊列都包括一串9個框。第一個隊列說明緩沖器32在特定時刻t1的狀態。第二個隊列說明緩沖器32在時刻t2狀態,這個時刻比時刻t1晚。同樣,第三個和第四個隊列分別說明緩沖器32在時刻t3和t4的狀態,時刻t3比時刻t2晚,時刻t4比時刻t3晚。
在圖13B所示的實例中,緩沖器能夠儲存9個話音數據包。每個隊列里9個框中的每一個都是儲存話音數據包的一個地方,框中的標記#1~#9說明每個區域的地址。
在目標終端30里,每1s時間內從緩沖器32讀出一個話音數據包,并發送給話音譯碼器33,這里的“s”是一個單位,比方說幾個毫秒,或者幾十個毫秒,具體取決于數據特性,這個單位適用于所有數據特性。用于讀取話音數據包的地址每1s更新一次。在圖13B中,正被讀取的話音數據包在每個隊列的右邊說明,這個話音數據包的左邊是過1s以后要讀取的數據包,再往左邊是2s以后要讀取的數據包。同樣,其它的數據緊跟其后;這樣,隊列中最左邊的區域是8s以后要讀取的話音數據包。
在圖13B所示的實例中,在時刻t1從地址#1讀取一個話音數據包。在時刻t2,從地址#2讀取另外一個話音數據包,在時刻t3從地址#3再讀取一個數據包,在時刻t4從地址#4又讀取一個數據包。因此,如果將t1時刻收到的話音數據包寫入地址#4,就在3s以后的時刻t4從緩沖器32中將這個話音數據包輸出給話音譯碼器33。如果在時刻t1收到的話音數據包被寫入地址#9,就在8s以后從緩沖器32將這個數據包輸出給話音譯碼器33。通過這種方式,對收到的話音數據包寫入哪個地址進行控制,就能夠將話音數據包在0s到8s的范圍內延遲任意長度的時間。
于是,如果有可能將話音數據包延遲任意長度的時間,然后從要減少的最大延遲時間(圖17中的dmax)減去一個絕對延遲時間,假設我們能夠獲得話音數據包從源終端10發送出來直到到達目標終端30的這個絕對延遲時間,就能夠最大程度地減少話音數據包從源終端30到話音譯碼器33的總延遲時間,并將這一延遲時間長度固定下來。
但是,目標終端30沒有能力知道每個話音數據包到達目標終端所經歷的傳播延遲時間。于是,傳統的數據包延遲控制是按照以下方式進行的。為了簡單起見,我們假設在一段時間以后從源終端10發出的話音數據包以同樣的順序到達目標終端30。
首先,通過網絡20收到第一個話音數據包的時候,目標終端30將這個話音數據包寫入緩沖器32的初始輸入位置(圖13A的S1、S2)。在圖13B所示的實例中,初始輸入位置是這樣一個區域,它的地址比收到第一個話音數據包的時候,讀出話音數據包的區域的地址大1。
于是,第二個和第二個以后的話音數據包被寫入空區域中要最早讀出來的位置(圖13A中的S3)。
在圖13B所示的實例中,在時刻t1收到的第一個話音數據包P1被寫入地址#2,這個地址就是初始輸入位置。接下來,在時刻t2沒有收到任何數據包,從地址#2讀出數據包P1,并發送給話音譯碼器33。到了時刻t3的時候,收到第二個話音數據包P2。看起來話音數據包P2經歷的延遲時間比話音數據包P1的延遲時間1s要長。于是,這個話音數據包P2被寫入一個區域,在空區域中,這個區域被最先讀出,也就是在時刻t3讀出的地址#3。然后,在時刻t3,話音數據包P2在寫入以后被立即讀出,并提供給話音譯碼器33。
這樣,即使源終端10發送話音數據包P1和P2之間的時間間隔是1s,這兩個話音數據包傳播延遲時間之間的差也會使它們到達目標終端30的時間間隔是2s。但是,即使是在這種情況下,確定緩沖器32的初始輸入位置,并利用前面描述的緩沖器32的延遲,仍然會使話音數據包P1和P2以離開源終端10的時間間隔到達話音譯碼器33。換句話說,通過給第一個話音數據包分配一個初始輸入位置,使它的輸出時刻比收到時刻晚1s,就有可能減少大到1s的延遲抖動。
現在來看源終端10發送給目標終端30的一組話音數據包,它們的延遲時間在最小值dmin和最大值dmax之間變化,如同17所示。在傳統技術里,當目標終端30收到第一個話音數據包P1時,將初始輸入位置分配在這樣一個地址上,使它的輸出時刻比輸入時刻要晚一個延遲抖動寬度D=dmax-dmin,將第一個話音數據包寫入其中。用這種方式來確定初始輸入位置能夠完全消除預先確定的延遲抖動。
下面將參考附圖14A、14B、14C、15和16進行更詳細的描述。在以下說明中,假設延遲抖動寬度是4s。還有,為了簡單起見,我們假設網絡的最小延遲時間dmin是0s,延遲抖動寬度等于最大延遲時間dmax。
在圖14A中,話音數據包P11和P12是從源終端10的話音編碼器11連續輸出的數據包。圖14B說明已經到達目標終端30的接收單元31的話音數據包。在所示實例中,話音數據包P11和P12到達接收單元33,它們的延遲時間都是最大延遲時間dmax=4s。另一方面,話音數據包P21和P22到達接收單元31,前者延遲了最小延遲時間dmin=0s,后者延遲了最大延遲時間dmax=4s。圖14C說明給它們增加了延遲以后,到達話音譯碼器33的話音數據包。
圖15說明緩沖器32如何推遲數據包P11和P12,圖16說明緩沖器32如何推遲數據包P21和P22。
如圖15所示,在時刻t5到達接收單元31的話音數據包P11被寫入地址#5,這是初始輸入位置,被推遲長度為4s的時間并在時刻t9從緩沖器32輸出給話音譯碼器33。然后,在時刻t6到達接收單元31的話音數據包P12被寫入地址#6,在這個區域里,它被盡快讀出,從而在時刻t10從緩沖器32輸出,也就是在話音數據包P11輸出以后立即輸出。
另一方面,按照以下方式推遲話音數據包P21和P22。首先,如圖16所示,在時刻t1到達接收單元31的話音數據包P21被寫入地址#5,這個地址是初始輸入位置,推遲了4s,在時刻t5從緩沖器32輸出。于是,在時刻t6到達接收單元31的話音數據包P22被寫入這樣一個位置,在這個位置里,數據包會被盡快讀出,從緩沖器32盡快輸出。
如上所述,將初始輸入位置設置在這樣一個位置上,使它的輸出推遲時間等于延遲抖動寬度D=dmax-dmin,就能在最小延遲時間和最大延遲時間之間減少延遲抖動。
但是,在前面描述的傳統技術里,目標終端將收到的第一個話音數據包推遲長度等于延遲抖動寬度D的時間,意味著隨后的話音數據包也要推遲同樣的延遲時間。如果在這里假設第一個話音數據包通過網絡所需要的延遲時間是d0,總的延遲時間T就會是D+d0,總的延遲時間T給出了,從源終端10的話音編碼器11輸出以后,每個話音數據包到達目標終端30的話音編碼器33所需要的時間。但是,第一個話音數據包的延遲時間會從最小值dmin變到最大值dmax,這又使得總的延遲時間T依賴于第一個話音數據包的延遲時間d0。也就是說,在第一個話音數據包的延遲時間d0是最小延遲時間dmin的情況下,總的延遲時間T可以很短。但是,如果第一個話音數據包的延遲時間跟最大延遲時間dmax一樣長,總的延遲時間T就跟最大延遲時間dmax的兩倍一樣長。在最近這些年里,利用VoIP(IP話音)技術的因特網技術需要高質量的通信,這一點要求縮短總的延遲時間。這樣,為了減少延遲抖動而使總的延遲時間變長是不合適的。
本發明的目的是解決上述難題,提供一種能夠減少延遲抖動的裝置,它能夠縮短總的延遲時間,并提供一種減少延遲抖動的方法。
為了解決上述難題,本發明提供一種減少延遲抖動的裝置,它包括一個接收單元,用于順序地接收按照時間順序排列的數據段;一個時間檢測單元,用于獲得所述接收單元收到的每個數據段的接收時刻;傳輸時間估計裝置,用于估計所述接收單元收到的每個數據段的傳輸時間;一個延遲時間估計單元,用于根據每個數據段的接收時刻和傳輸時間,估計傳輸每個數據段所需要的延遲時間;一個最小延遲時間估計單元,用于從所述延遲時間估計單元獲得的多個數據段的延遲時間估計值,估計通過網絡傳輸數據段的最小延遲時間;相對延遲時間計算裝置,用于通過從所述延遲時間單元估計的數據段的延遲時間減去所述最小延遲時間,獲得相對延遲時間;以及延遲裝置,用于從要縮小的最大延遲時間中減去每個數據段的相對延遲時間,獲得每個數據段的推遲時間,并在延遲了推遲時間以后,輸出每一個數據段。
這種減少延遲抖動的裝置能夠估計傳輸數據包這樣的數據段所需要的最小延遲時間,從而根據最小值確定推遲時間,減少抖動。結果,收到的一組數據段的延遲抖動被減少,總的延遲時間被縮短。
本發明的實施方案包括生產和銷售一種裝置的實施例,這種裝置能夠按照上述實施方案減少延遲抖動;還包括通過通信線路發布程序的實施例,讓跟網絡連接的計算機成為上述實施方案中公開的延遲抖動裝置;還包括發布計算機可讀記錄媒介上的程序的實施例。
圖1是一個框圖,說明本發明第一個實施方案中實時話音傳輸系統的總結構。
圖2是說明這個實施方案中目標終端結構的框圖。
圖3是說明這個實施方案中延遲單元結構的框圖。
圖4是說明這個實施方案中話音數據包結構的框圖。
圖5是一個時序圖,說明這個實施方案中目標終端的工作過程。
圖6是一個框圖,說明本發明第二個實施方案中目標終端的結構。
圖7是說明非話音部分開始的數據包。
圖8是說明這個實施方案工作過程的時序圖。
圖9是這個實施方案的工作流程圖。
圖10A、10B和10C是這個實施方案工作時序的實例。
圖11A和11B說明這個實施方案的效果。
圖12是一個框圖,說明實時話音傳輸系統的一個結構實例。
圖13A是一個流程圖,說明這一系統的工作過程。
圖13B是一個時序圖,說明這一系統的工作過程。
圖14A、14B和14C是說明這個系統一個實例的時序圖。
圖15是這個系統的一個工作實例。
圖16是這個系統的一個工作實例。
圖17是這個系統的一個工作實例。
下面參考附圖描述本發明的一個實施方案。A.第一個實施方案圖1是一個框圖,說明本發明第一個實施方案中實時話音傳輸系統的結構。在這個實時話音傳輸系統中,有一個源終端10,它有一個話音編碼器11和一個發送單元12,這跟傳統技術里一樣。源終端10和目標終端100都是VoIP終端。這個實時話音傳輸系統用于為用戶提供因特網電話業務。
圖2是說明目標終端100的結構的一個框圖。在這個圖中,接收單元101是通過因特網20從源終端10接收話音數據包的裝置。數據包終端單元102是解釋因特網20的協議的裝置。接收單元101收到的話音數據包通過數據包終端單元100傳輸給時間標記檢測單元108的一個延遲時間估計單元106。還有,這個數據包終端單元102從收到的話音數據包的有效負荷中獲取編碼話音數據,并將這些數據提供給延遲單元103。
內部時鐘信號發生器107產生某一頻率的一個內部時鐘信號,并將產生的時鐘信號傳遞給延遲時間估計單元106和延遲單元103。
延遲單元103從保持時間設置單元104獲得保持時間數據。后面將說明如何產生保持時間數據。延遲單元103在保持了數據包終端單元102提供的編碼話音數據以后將它們提供給話音譯碼器110。如圖3所示,延遲單元103包括一個RAM103A、將數據包終端單元102提供的編碼話音數據寫入RAM103A的一個寫電路103B以及用于從RAM讀出編碼話音數據的讀電路103C。這個讀電路103C對內部時鐘信號發生器107提供的內部時鐘信號進行計數,將計數值作為讀地址提供給RAM103A,根據這個讀地址,從RAM103A中的一個區域讀出編碼話音數據,并將這些數據輸出給話音譯碼器110。從數據包終端單元102輸出話音數據包的編碼話音數據的時候,寫電路103B根據讀電路103C輸出的讀地址獲得一個寫地址,以及從保持時間設置單元104輸出的保持時間。然后,將寫地址提供給RAM103A,話音數據包的編碼數據被寫入對應于RAM103A中寫地址的一個區域。保持時間過去以后,將寫入RAM103A的編碼話音數據從ROM103A讀出,并輸出給話音譯碼器110。
話音譯碼器110是這樣一個裝置,它對延遲單元103輸出的編碼數據進行話音數據譯碼。
時間標記檢測單元108、延遲時間估計單元106、最小延遲時間估計單元105和保持時間設置單元104一起,構成產生保持時間數據的裝置。
如同已經說明過的一樣,將接收單元101收到的話音數據包提供給時間標記檢測單元108。產生話音數據包的源終端10(圖1)包括一個計數器,這個計數器對預定頻率的時鐘信號進行計數,輸出說明當前時間的時間數據,并在產生話音數據包的時候從計數器讀出時間數據,這樣,時間數據組被包括在話音數據包的報頭中作為時間標記。圖4是報頭中有這樣一個時間標記的話音數據包的一個實例。時間標記檢測電路108從收到的話音數據包獲得時間標記,發送給延遲時間估計單元106。
內部時鐘信號發生器107輸出跟源終端10所采用的時鐘信號頻率一樣的一個內部時鐘信號。延遲時間估計單元106對這個內部時鐘信號發生器107輸出的內部時鐘信號進行計數,并產生說明當前時刻的時間數據。這個時間數據幾乎跟源終端10產生的時間數據吻合,但是不能保證完全吻合。但是,這兩個時間數據都通過對頻率相同的時間信號進行計數來獲得。因此,這兩個時間數據單元之間的時間差是固定的。當時間標記檢測電路108提供話音數據包的時間標記的時候,延遲時間計算電路106通過從收到的話音數據包的時間中減去這個時間標記,獲得話音數據包傳輸所需要的延遲時間的估計值。
最小延遲時間估計單元105是估計數據包傳輸所需要的最小延遲時間的一個裝置。最小延遲時間估計單元105從時間延遲估計單元106按順序接收接收單元101按順序收到的話音數據包延遲時間的估計值。每次最小延遲時間估計單元105收到估計值的時候,它在估計的延遲時間值中選擇最小的值,并將選擇的這個值作為最小延遲時間估計值。
保持時間設置單元104是這樣一個裝置,每次收到話音數據包Pi(i=1,2,…)的時候,它都要按照以下公式計算對應于話音數據包Pi的保持時間dada=dmin+D-di(1)在這里,di是延遲時間估計單元106估計的話音數據包Pi的延遲時間,dmin是直到話音數據包Pi的所有話音數據包的最小延遲時間,D是預先設置的最大延遲時間。
保持時間數據da用于計算寫地址,將話音數據包的編碼話音數據寫入RAM103A,如上所述。
圖5說明這個實施方案的工作過程。將參考這個圖說明這個實施方案的工作過程。
在目標終端100里,收到第一個話音數據包P0的時候,延遲時間估計單元106根據接收時刻c0和從話音數據包P0中獲得的時間標記說明的時刻t0按照以下公式計算延遲時間的估計值d0=c0-t0(2)這樣,在所示實例中第一個話音數據包P0的延遲時間的等于7s。
于是,最小延遲時間估計單元105將d0=7s做為最小延遲時間dmin的初始估計值。
以后,保持時間設置單元104獲得話音數據包P0的保持時間數據dada=dmin+D-d0=7s+12s-7s=12s (3)在這個實例中,其中的D被設置成12s。
保持時間設置單元104獲得的保持時間數據da被發送給延遲單元103。延遲單元103將話音數據包P0的話音編碼話音數據延遲一段時間,這段時間的長度等于保持時間數據da,然后將編碼數據提供給話音譯碼器110。
在晚些時候收到隨后的話音數據包Pi的時候,延遲時間估計單元106按照以下公式,從接收時刻數據ci和話音數據包Pi中的時間標記指定的時間ti,計算延遲時間估計值。
di=Ci-ti(4)于是,最小延遲時間估計單元105將di跟最小延遲時間dmin的估計值進行比較,當它發現di≥dmin的時候,最小延遲時間dmin維持當前值不變;當它發現di<dmin的時候,用di的值替換dmin。
保持時間設置單元104按照公式(1)從話音數據包Pi計算保持時間數據da。然后,延遲單元103將話音數據包Pi的編碼話音數據延遲一段時間,這段時間的時間長度等于保持時間da,然后,將編碼數據提供給話音譯碼器110。
針對所有話音數據包完成以上操作。
在對話一開始,相對頻繁地更新最小延遲時間的估計值dmin。但是,收到話音數據包的個數和估計最小延遲時間的次數越多,估計值就越接近最小延遲時間的真實值。因此,隨著估計最小延遲時間的值的次數增多,最小延遲時間的估計值dmin會穩定下來。在所述實例中,最小延遲時間dmin估計值在收到話音數據包P0的時候變成7s,在收到話音數據包P2的時候變成6s,收到話音數據包P6的時候變成4s,收到話音數據包P12的時候變成3s。
從源終端10的話音編碼器11輸出話音數據包,到編碼話音數據從目標終端110的話音譯碼器110輸出,這個總延遲時間T可以按照以下公式計算出來T=di+da=di+dmin+D-di=dmin+D (5)如同圖5中的實例所示,隨著收到的話音數據包越來越多,最小延遲時間dmin的估計值逐漸收斂到一個小值。結果,總的延遲時間T也逐漸收斂到一個小值。
由于總的延遲時間T依賴于最小延遲時間的估計值,所以,在對話開始的時候,總的延遲時間改變得相當頻繁。但是,隨著收到的話音數據包越來越多,總的延遲時間T更新的次數越來越多,總的延遲時間T最終達到一個最小值。B.第二個實施方案圖6說明本發明第二個實施方案中目標終端100的結構。這個實施方案中的目標終端100,除了第一個實施方案中目標終端100中的那些單元以外,還包括一個非話音部分檢測單元109。這個非話音部分檢測單元109檢測按順序收到的話音數據包的有效負荷,檢測非話音部分。為了更詳細地描述,當用戶終端10的用戶停止說話,開始傳輸沒有話音的非話音部分,這個實施方案中的源終端10就將一個話音數據包發送給目標終端100,其中包括說明有效負荷中非話音部分開始的信息,如圖7所示。通過接收這個話音數據包,目標終端100的非話音部分檢測單元109檢測非話音部分的開始。當晚些時候,目標終端100在有效負荷中收到包括某種編碼話音數據的話音數據包的時候,非話音部分檢測單元109就開始檢測非話音部分的結束。
隨后,當非話音部分檢測單元109檢測到非話音部分結束的時候,這個實施方案中的保持時間設置單元104為延遲時間估計單元106給出話音部分的第一個話音數據包,從延遲時間的估計值計算保持時間數據da,從最小延遲時間估計單元105獲得的最小延遲時間估計值,以及已知的延時抖動寬度,結果輸出給延時單元103。保持時間數據的計算跟將這些數據提供給延遲單元103,在每次非話音部分開始的時候都要進行。
圖8是一個時序圖,它說明這個實施方案中目標終端100的工作過程,圖9是一個流程圖,它說明這個實施方案中目標終端100的工作過程。下面將參考這兩個圖描述這個實施方案的工作過程。
當源終端10和目標終端100之間開始電話-電話會話的時候,話音部分和非話音部分交替出現,如圖8所示話音部分是目標終端100收到代表主叫方話音的話音數據包的那段時間,非話音部分是收到非話音數據包的那段時間。
如同第一個實施方案所示,每次接收單元101收到話音數據包的時候,延遲時間估計單元106都獲得話音數據包的延遲時間估計值(步驟S101和S102)。
在第一個話音部分SP0中,最小延遲時間估計單元105考慮第一個話音數據包P0延遲時間的估計值是不是這個最小延遲時間估計值dmin(步驟S103和S104)。由于對于第一個話音部分SP0中收到的每一個話音數據包,都要按照前面的公式(1)計算保持時間da,并將結果提供給延時單元103(步驟S105)。在延遲單元103中,從保持時間da數據找出RAM103A的寫地址和讀地址。然后,將話音數據包的編碼話音數據寫入RAM103A中對應于這個寫地址的區域。經歷了保持時間da以后,從RAM103A中讀取編碼話音數據,并提供給話音譯碼器110(步驟S106)。
于是,當接收單元101收到圖7所示的話音數據包的時候,非話音部分檢測單元109檢測非話音部分NP0的開始。不是從源終端10向目標終端100按照這種方式發送一個數據包,說明非話音部分開始,而是還可能在本目標終端100沒有收到話音數據包的時間超過給定時間長度的時候,檢測出非話音數據包的開始。
我們假設,話音部分SP0變成非話音部分NP0,隨后的話音部分SP1在晚些時候開始。當接收單元101收到話音部分SP1的第一個話音數據包P0的時候,延遲時間估計單元106找出話音數據包P0的延遲時間的估計值(圖6中的S101和S102)。
隨后,最小延遲時間估計單元105從到這個時候為止收到的所有話音數據包的延遲時間的估計值估計最小延遲時間dmin(步驟S104)。在這個實施方案中,只有在收到話音部分的第一個話音數據包的時候,才能更新最小延遲時間的估計值。換句話說,一旦話音部分開始,就不更新最小延遲時間的估計值,即使估計的延遲時間小于開始的最小延遲時間。這一更新是在話音部分結束改變成非話音部分,每一個話音部分開始的時候進行的。
收到話音部分SP1第一個話音數據包P0的時候,保持時間設置單元104從最小延遲時間估計單元105獲得最小延遲時間dmin的估計值(步驟SP104)。
隨后,保持時間設置單元104用公式(1)計算保持時間數據da,并將結果提供給延遲單元103(步驟S105)。
在延遲單元103中,從保持時間數據da找出這個時候RAM103A的寫地址和讀地址。然后,將話音數據包P0的編碼話音數據寫入RAM103A中對應于寫地址的區域(步驟S106)。
在話音部分SP1中,跟話音部分SP0一樣,計算接收單元101收到話音數據包Pi的時候,延遲時間di的估計值(步驟S102)。到話音部分SP2晚些時候開始的時候,話音部分SP1中獲得的延遲時間估計值di用于估計最小延遲時間(步驟S103和S104)。
下面利用具體實例,更詳細地介紹本發明的實施方案。
圖10A說明從源終端10的話音編碼器11按順序輸出的話音數據包。圖10B說明目標終端100的接收單元101按順序收到的話音數據包。圖10C說明按順序輸出給話音譯碼器110的話音數據包。如圖10B所示,按順序從譯碼器11輸出的話音數據包P0、P1、P2和P3到達接收單元101,它們的延遲時間分別是d0(=3s)、d1(=4s)、d2(=2s)以及d3(=2s)。在這一段時間中,延遲時間估計單元106輸出的延遲時間估計值di和最小延遲時間估計單元105中的最大延時時間dmin的估計值按照以下方式改變收到的數據包Pi 估計的延遲時間di 估計的最小延遲時間dminP03s 3sP22s 2sP14s 2s因為最小延遲時間的估計值dmin在第一個話音部分SP0中無法獲得,網絡延遲抖動寬度D和1s被用做保持時間數據da。因此,假設延遲抖動寬度D是3s,那么,保持時間數據將是4s。假定在所述實例中d0=3s,話音數據包P0到P2總的延遲時間就是d0+da=3s+4s=7s。
相反,在下一個話音部分SP1中,最小延遲時間dmin(=2s)是從到這個時候為止獲得的延遲時間估計值獲得的,在dmin(=2s)的基礎之上計算保持時間。
因此,假設話音部分SP1以延遲時間d3傳輸話音數據包P3,如圖10A和10B所示,保持時間數據就是da=(dmin+D-d3)=2s+3s-1s=4s。
從話音數據包P3開始,話音部分SP1中所有話音數據包的總延遲量是d3+da=1s+4s=5s。
圖11A和11B說明這個實施方案的效果。假設第一個話音部分SP0中第一個話音數據包的延遲時間是d0,話音部分SP0中每個話音數據包的總延遲時間就是d0+D。
收到話音部分SP0中具有最小延遲時間dmin=3的話音數據包的時候,在隨后的話音部分SP1,采用在這個最小延遲時間的基礎之上確定的保持時間。結果,總的延遲時間將是d3+D。
總之,通過在收到的數據包的延遲時間估計值的基礎之上,以最小延遲時間為基礎,計算出保持時間,本發明能夠減少總的延遲時間。還有,在非話音部分以后收到第一個話音數據包的時候更新最小延遲時間,能夠防止話音質量變壞。因此,減少延遲抖動的裝置和這種方法非常適合于需要實時和高音質傳輸的應用,比方說因特網電話。
C改進本發明不限于上述實施方案,而是會有以下各種改進。
(1)在以上實施方案里,將本發明用于接收數據段的裝置,比方說接收通過因特網的數據包。但是,本發明還能應用于通過寬帶網比方說幀中繼網接收數據段的裝置,而不是僅限于因特網。本發明還能用于通過這樣一個網絡接收數據段的裝置,在這個網絡中,延遲抖動是由移動網絡中無線部分產生的。
(2)在上述實施方案中,將數據包當作數據段的一個實例。但是,數據段的形式并不限于數據包。數據段可以是包括傳輸時間或者找出傳輸時間的任何信息的東西。數據包的單位可以是任意的,比方說幀或者信元,具體取決于傳輸路徑或者使用的協議。協議可以是VoIP,比方說前面描述的或者幀中繼上的話音這樣的東西(VoFR)。
(3)在上述實施方案中,將本發明用于通過網絡接收話音數據包的裝置。但是,除了話音以外,本發明還非常適合于視頻信號和需要實時傳輸的信息的傳輸。
(4)在上面描述的第二個實施方案中,本發明用于實時話音傳輸,其中的話音部分和非話音部分交替重復,話音部分的話音數據包連續不斷地傳輸,非話音部分話音數據包只傳輸一段時間。在這個實施方案中,話音部分的保持時間是在第一個話音部分獲得的最小延遲時間的估計值的基礎之上計算出來的。但是,本發明的應用并不限于此。例如,另外一種數據傳輸方式是第一個部分和第二個部分輪流重復,其中,在第一部分中傳輸需要連續傳輸的信息,比方說動畫,在第二部分中傳輸不需要連續性的信息,比方說靜止圖像。本發明可以用于這種數據傳輸。在這一應用中,將在目標裝置中完成減少延遲抖動的以下程序。
ⅰ)在接收包括不需要連續性的第二部分的信息的數據段的時候,估計每個數據段的延遲時間和最小延遲時間;ⅱ)剛好在第二部分以后收到第一部分部分的第一個數據段的時候,估計第一個數據段的延遲時間;和ⅲ)根據最小延遲時間的以上估計值,和ⅱ)中獲得的第一個數據段的延遲時間的估計值,計算第一個數據段的保持時間。計算方法跟上述實施方案中描述的方法一樣。
(5)在上面描述的第二個實施方案中,在非話音部分中不傳輸任何數據包,但還是能夠傳輸指定為非話音部分的數據包。
(6)在上面描述的實施方案中的每一個里,延遲抖動寬度是一個固定值,通過事先測量這個值來得到。但是,延遲抖動寬度變到大于最初假設值的時候,就有可能更新延遲抖動寬度D,用于計算保持時間數據,從而減少的這個大延遲抖動。在前面第二個實施方案中,例如,我們假設它滿足公式(1),保持時間等于s3,在話音部分SPk的一個數據包的延遲時間估計值d0的基礎之上計算出結果,在前面的話音部分SPK-1獲得的最小延遲時間的估計值。這是因為實際延遲抖動寬度比最初假定的延遲抖動寬度D至少大3s。因此,延遲抖動寬度D要增加3s,從而使保持時間數據變成0s。更新了的延遲抖動寬度D用于按照隨后的話音部分SPK+1里的公式(1)計算保持時間數據。
(7)本發明中減少延遲抖動的一種裝置,能夠擁有網絡中繼裝置或者路由器。這一改進是為了在傳輸路徑中間減少延遲抖動,因為長傳輸路徑會導致長延時抖動寬度。
(8)可以在某個有限的時間段里估計最小延遲時間。為了說明這一點,考慮以下實例。首先,對話開始的時候,在開始話音數據包傳輸之前,從源終端向目標終端重復地傳輸包括一個時間標記的一個訓練數據包。在目標終端那里,從這些訓練數據包的延遲時間的估計值估計最小延遲時間。用在隨后的話音數據包的保持時間數據da是利用dmin從以上公式(1)獲得的。
(9)在上述實施方案中,數據包的傳輸時間是從時間標記估計的。但是,如果數據包中沒有時間標記,也可能從數據包包括的序列號這樣的東西估計傳輸時間。
(10)本發明的實施方案包括生產和銷售減少延遲抖動的裝置這樣一個實施方案,就象前面描述的實施方案所公開的一樣;還包括通過通信線路傳輸程序的實施方案,讓聯網的計算機成為減少延遲抖動的裝置,如同前面的實施方案公開的一樣;還包括將程序記錄在計算機能夠讀出的記錄媒介上的程序的實施方案。
權利要求
1.一種減少延遲抖動的裝置,包括一個接收單元,通過網絡按順序地接收按時間順序排列的數據段;一個時間檢測單元,用于獲得所述接收單元收到的每個數據段的接收時刻;傳輸時間估計裝置,用于估計所述接收單元收到的每個數據段的傳輸時間;一個延遲時間估計單元,用于根據每個數據段的所述接收時刻和傳輸時間,估計傳輸每個數據段所需要的延遲時間;一個最小延遲時間估計單元,用于利用從所述延遲時間估計單元獲得的多個數據段的延遲時間估計值,估計通過網絡傳輸數據段所需要的最小延遲時間;相對延遲時間計算裝置,用于從所述延遲時間估計單元估計的數據段的延遲時間的估計值減去所述最小延遲時間,獲得相對延遲時間;和延遲裝置,用于從要減少的最大延遲時間減去每個數據段的相對延遲時間,獲得對應于每個數據段的保持時間,將每個數據包延遲相應的保持時間以后,輸出每個數據段。
2.權利要求1中減少延遲抖動的裝置,其中,在接收要推遲的數據段之前,所述接收單元接收多個訓練數據段;和其中的最小延遲時間估計單元從多個訓練數據段的延遲時間估計,估計所述最小延遲時間。
3.權利要求1中減少延遲抖動的裝置,其中的最小延遲時間估計單元獲得某個時間段中收到的多個數據段延遲時間估計,并利用這些估計值估計最小延遲時間。
4.權利3中減少延遲抖動的裝置,其中的數據段是代表話音的數據單元。
5.權利要求1中減少延遲抖動的裝置,其中的接收單元交替地接收屬于需要連續性的第一部分的數據段,和屬于不需要連續性的第二部分的數據段;和其中的最小延遲時間估計單元在收到屬于第一部分的第一個數據段的時候,估計到這個時候已經收到的數據段的最小延遲時間。
6.權利要求1中減少延遲抖動的裝置,其中的延遲時間估計單元在傳輸時間信息,或者所述數據段的傳輸和接收時刻的基礎之上,估計所述數據段的延遲時間。
7.減少延遲抖動的一種方法,包括一個接收過程,按順序地接收通過網絡按照時間順序排列的數據段;一個時間檢測過程,用于獲得接收單元收到的每個數據段的接收時刻;一個傳輸時間估計過程,用于估計所述接收單元收到的每個數據段的傳輸時間;一個延遲時間估計過程,用于根據每個數據段的接收時刻和發送時刻,估計傳輸每個數據段所需要的延遲時間;一個最小延遲時間估計過程,用于根據所述延遲時間估計單元獲得的多個數據段的延遲時間估計值,估計通過網絡傳輸數據段所需要的最小延遲時間;一個相對延遲時間計算過程,用于從所述延遲時間估計單元估計的數據段的延遲時間減去所述最小延遲時間,獲得相對延遲時間;和一個延遲過程,用于從要減少的最大延遲時間中減去每個數據段的相對延遲時間,獲得對應于每個數據段的保持時間,將每個數據段推遲對應于每個數據的保持時間以后,輸出每個數據段。
8.一個使聯網計算機執行的程序一個接收過程,按順序地接收通過網絡按照時間順序排列的數據段;一個時間檢測過程,用于獲得接收單元收到的每個數據段的接收時刻;一個傳輸時間估計過程,用于估計所述接收單元收到的每個數據段的傳輸時間;一個延遲時間估計過程,用于根據每個數據段的接收時刻和發送時刻,估計傳輸每個數據段所需要的延遲時間;一個最小延遲時間估計過程,用于根據所述延遲時間估計單元獲得的多個數據段的延遲時間估計值,估計通過網絡傳輸數據段所需要的最小延遲時間;一個相對延遲時間計算過程,用于從所述延遲時間估計單元估計的數據段的延遲時間減去所述最小延遲時間,獲得相對延遲時間;和一個延遲過程,用于從要減少的最大延遲時間中減去每個數據段的相對延遲時間,獲得對應于每個數據段的保持時間,將每個數據段推遲對應于每個數據的保持時間以后,輸出每個數據段。
9.一種計算機能夠讀的記錄媒介,上面已經記錄了程序,讓聯網計算機執行一個接收過程,按順序地接收通過網絡按照時間順序排列的數據段;一個時間檢測過程,用于獲得接收單元收到的每個數據段的接收時刻;一個傳輸時間估計過程,用于估計所述接收單元收到的每個數據段的傳輸時間;一個延遲時間估計過程,用于根據每個數據段的接收時刻和發送時刻,估計傳輸每個數據段所需要的延遲時間;一個最小延遲時間估計過程,用于根據所述延遲時間估計單元獲得的多個數據段的延遲時間估計值,估計通過網絡傳輸數據段所需要的最小延遲時間;一個相對延遲時間計算過程,用于從所述延遲時間估計單元估計的數據段的延遲時間減去所述最小延遲時間,獲得相對延遲時間;和一個延遲過程,用于從要減少的最大延遲時間中減去每個數據段的相對延遲時間,獲得對應于每個數據段的保持時間,將每個數據段推遲對應于每個數據的保持時間以后,輸出每個數據段。
全文摘要
一種延遲單元103將保持時間設置單元104設置的保持時間加到接收數據上去。這個保持時間是在收到的數據的延遲時間和到這個時候收到的數據的最小延遲時間的基礎之上計算出來的,目的是減少總的延遲時間。在延遲時間估計單元106中,從以按照內部時鐘信號發生器107產生的信號記錄的時間為基礎的數據包的接收時刻和收到的數據包中的時間標記說明的時間之間的差估計延遲時間。
文檔編號H04L12/64GK1321026SQ01116279
公開日2001年11月7日 申請日期2001年4月9日 優先權日2000年4月7日
發明者鈴木敬, 河原敏朗, 森岡將史, 仲信彥 申請人:株式會社Ntt都科摩