一種語音數(shù)據(jù)延時處理方法及裝置的制造方法
【專利摘要】本發(fā)明實施例公開了一種語音數(shù)據(jù)延時處理方法及裝置,涉及網(wǎng)絡(luò)語音通訊技術(shù)領(lǐng)域,用于提高網(wǎng)絡(luò)語音傳輸?shù)馁|(zhì)量。本發(fā)明提供的一種語音數(shù)據(jù)延時處理方法包括:確定用于表示當(dāng)前網(wǎng)絡(luò)狀況的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù);根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù);根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理。
【專利說明】
一種語音數(shù)據(jù)延時處理方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)絡(luò)語音通訊技術(shù)領(lǐng)域,特別是涉及一種語音數(shù)據(jù)延時處理方法及裝置。
【背景技術(shù)】
[0002]在大規(guī)模的網(wǎng)絡(luò)語音直播技術(shù)中,由于網(wǎng)絡(luò)狀況不穩(wěn)定,包括丟包、抖動、網(wǎng)絡(luò)數(shù)據(jù)接收和語音數(shù)據(jù)播放之間存在速率差等因素,從而造成語音斷續(xù)、不清晰,影響語音的效果O
[0003]目前,現(xiàn)有技術(shù)中僅僅給出如何根據(jù)網(wǎng)絡(luò)抖動情況確定調(diào)整延時的方案,即:確定用于表示當(dāng)前網(wǎng)絡(luò)抖動情況的網(wǎng)絡(luò)抖動參數(shù);根據(jù)當(dāng)前網(wǎng)絡(luò)抖動參數(shù),調(diào)整抖動緩存(Jitter Buffer)的延時參數(shù);根據(jù)調(diào)整后的抖動緩存的延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理。
[0004]現(xiàn)有技術(shù)雖然考慮到了根據(jù)網(wǎng)絡(luò)抖動情況調(diào)整延時,但存在一些待改進(jìn)之處。一方面,現(xiàn)有技術(shù)在根據(jù)網(wǎng)絡(luò)狀況調(diào)整緩存時,網(wǎng)絡(luò)評估考慮不夠全面,調(diào)整的自適應(yīng)速度較慢,且未能考慮到網(wǎng)絡(luò)數(shù)據(jù)接收線程和語音數(shù)據(jù)播放線程之間存在速率差,另一方面,現(xiàn)有技術(shù)在調(diào)整時過于粗糙,而由于語音的時間連續(xù)性及時序敏感性關(guān)系,很容易造成語音的卡頓。
【發(fā)明內(nèi)容】
[0005]本發(fā)明綜合考慮丟包、抖動等網(wǎng)絡(luò)不穩(wěn)定因素,以及網(wǎng)絡(luò)數(shù)據(jù)接收和語音數(shù)據(jù)播放之間存在速率差,配合上丟包重傳機制,提供一種改進(jìn)的語音抖動緩存Jitter Buffer技術(shù)方案,即通過周期性地統(tǒng)計原始網(wǎng)絡(luò)丟包率、重傳后網(wǎng)絡(luò)丟包率、重傳數(shù)據(jù)包中遲到包所占比率、數(shù)據(jù)包最大抖動幅度這些參數(shù),而后根據(jù)這些參數(shù)合理調(diào)整抖動緩存的目標(biāo)延時參數(shù),再周期性地對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理,以達(dá)到快速自適應(yīng)的效果,用于提高網(wǎng)絡(luò)語音傳輸?shù)馁|(zhì)量,令聽覺感受更加舒適。
[0006]本發(fā)明提供的一種語音數(shù)據(jù)延時處理方法包括如下步驟:
確定用于表示當(dāng)前網(wǎng)絡(luò)狀況的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù);
根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù);
根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理。
[0007]本發(fā)明提供的一種語音數(shù)據(jù)延時處理裝置包括:
網(wǎng)絡(luò)狀況確定單元,用于確定表示當(dāng)前網(wǎng)絡(luò)狀況的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù);
抖動緩存的目標(biāo)延時參數(shù)調(diào)整單元,用于根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù);
抖動緩存中數(shù)據(jù)包延時處理單元,用于根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理。
【附圖說明】
[0008]圖1為本發(fā)明實施例提供的一種語音數(shù)據(jù)延時處理方法的流程示意圖。
[0009]圖2為本發(fā)明實施例提供的一種語音數(shù)據(jù)延時處理裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0010]本發(fā)明實施例實現(xiàn)的基本原理是:抖動緩存越大,其糾正亂序、去除網(wǎng)絡(luò)抖動、配合丟包重傳減少丟包的效果越好,但引起的延時卻越大;反之則相反。因此,需要盡可能地讓它維持在一個合理值;在實時語音傳輸過程中,抖動緩存中的數(shù)據(jù)接收速率取決于發(fā)送端的語音數(shù)據(jù)采集線程,而數(shù)據(jù)取出速率取決于接收端的語音數(shù)據(jù)播放線程,因此,兩個速率很可能有細(xì)微的偏差,這種偏差隨著時間的累積將導(dǎo)致當(dāng)前語音數(shù)據(jù)延時慢慢變大或慢慢變小,此時,需要良好的語音數(shù)據(jù)延時處理方法來消除這種偏差,且盡可能小地影響用戶聽覺體驗。
[0011]參見圖1,本發(fā)明實例提供的一種語音數(shù)據(jù)延時處理方法,總體包括如下步驟: S101,確定用于表示當(dāng)前網(wǎng)絡(luò)狀況的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù);
S102,根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù);
S103,根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理。
[0012]具體技術(shù)方案如下:
確定當(dāng)前網(wǎng)絡(luò)狀況網(wǎng)絡(luò)狀態(tài)的參數(shù),包括原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),即每隔一定周期統(tǒng)計一次該周期內(nèi)的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),例如,以1s為周期統(tǒng)計一次。
[0013]其中:
原始網(wǎng)絡(luò)丟包率:每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況前的網(wǎng)絡(luò)丟包率,原始網(wǎng)絡(luò)丟包率=(每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況前的丟包數(shù)量/每個統(tǒng)計周期內(nèi)的總數(shù)據(jù)包數(shù)量)*100%,初始值為O ;
重傳后網(wǎng)絡(luò)丟包率:每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況后的網(wǎng)絡(luò)丟包率,重傳后網(wǎng)絡(luò)丟包率=(每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況后的丟包數(shù)量/每個統(tǒng)計周期內(nèi)的總數(shù)據(jù)包數(shù)量)*100%,初始值為O ;
重傳數(shù)據(jù)包中遲到包所占比率:每個統(tǒng)計周期內(nèi)重傳到達(dá)的數(shù)據(jù)包中,晚于播放時刻到達(dá)的重傳包數(shù)量占所有重傳包數(shù)量的比率,重傳數(shù)據(jù)包中遲到包所占比率=(每個統(tǒng)計周期內(nèi)晚于播放時刻到達(dá)的重傳包數(shù)量/每個統(tǒng)計周期內(nèi)總的重傳包數(shù)量)*100%,初始值為O ;
最大抖動幅度參數(shù):每個統(tǒng)計周期內(nèi)相鄰數(shù)據(jù)包時間間隔的最大值,單位為ms,初始值為O。
[0014]根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù),包括:
主要延時參數(shù)涉及:
Target_delay:期望延時參數(shù),單位為 ms,例如:Target_delay=150ms ;Min_Target_delay:期望延時調(diào)整下限參數(shù),單位為ms,例如:Min_Target_delay=100ms ;
Max—Target—delay:期望延時調(diào)整上限參數(shù),單位為ms,例如:Max—Target—delay=500ms ;
Current—delay:當(dāng)前延時參數(shù),即目前緩存中的數(shù)據(jù)量大小,單位為ms ;
Min—Current—delay:當(dāng)前延時調(diào)整下限參數(shù),單位為ms,Min—Current—delay根據(jù)Target—delay 確定:如果 Target—delay 小于 400ms,則 Min—Current—delay =Target_delay/2 ;如果 Target—delay 大于或等于 200ms,則 Min—Current—delay = Target—delay-200 ;
Max—Current—delay:當(dāng)前延時調(diào)整上限參數(shù),單位為ms,Max—Current—delay根據(jù)Target—delay 確定:如果 Target—delay 小于 200ms,則 Max—Current—delay =Target_delay*2 ;如果 Target—delay 大于或等于 200ms,則 Max—Current—delay = Target—delay+200 ;
Need—turn—up:調(diào)大延時標(biāo)記參數(shù),布爾類型,True表示調(diào)大,F(xiàn)alse表示不調(diào)大,默認(rèn)值為False ;
Need—turn—down:調(diào)小延時標(biāo)記參數(shù),布爾類型,True表示調(diào)小,F(xiàn)alse表示不調(diào)小,默認(rèn)值為False ;
本抖動緩存包括兩種狀態(tài):Waiting—state和Working—state,默認(rèn)為Waiting—state ;
Waiting—state:此時處于等待數(shù)據(jù)接收狀態(tài),此時只接收數(shù)據(jù)包不取出數(shù)據(jù); Working—state:此時處于正常工作狀態(tài),此時既接收數(shù)據(jù)也取出數(shù)據(jù)
[0015]如果原始丟包率小于原始丟包率閾值(例如,原始丟包率閾值=4%),并且重傳數(shù)據(jù)包中遲到包所占比率小于重傳數(shù)據(jù)包中遲到包所占比率閾值I (例如,重傳數(shù)據(jù)包中遲到包所占比率閾值1=1%),則按固定步長(例如,步長=1ms)調(diào)小期望延時參數(shù)Target—delay,此時如果期望延時參數(shù)Target—delay小于期望延時調(diào)整下限參數(shù)Min—Target—delay,則將期望延時參數(shù)Target—delay調(diào)整為期望延時調(diào)整下限參數(shù)Min— Target—delayD
[0016]如果重傳后網(wǎng)絡(luò)丟包率小于原始網(wǎng)絡(luò)丟包率,并且重傳數(shù)據(jù)包中遲到包所占比率大于重傳數(shù)據(jù)包中遲到包所占比率閾值2 (例如,重傳數(shù)據(jù)包中遲到包所占比率閾值2=10%),則按固定步長(例如,步長=1ms)調(diào)大期望延時參數(shù)Target—delay,此時如果期望延時參數(shù)Target—delay大于期望延時調(diào)整上限參數(shù)Max— Target—delay,則將期望延時參數(shù)Target—delay調(diào)整為期望延時調(diào)整上限參數(shù)Max—Target—delay。
[0017]如果數(shù)據(jù)包最大抖動幅度參數(shù)大于Target—delay,則將期望延時參數(shù)Target—delay調(diào)整為最大抖動幅度參數(shù)*1.20
[0018]根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理,主要包括:
周期性判斷抖動緩存狀態(tài),當(dāng)抖動緩存狀態(tài)為Waiting_state狀態(tài)時,則比較當(dāng)前延時參數(shù)Current_delay與期望延時參數(shù)Target_delay的大小:如果當(dāng)前延時參數(shù)Current_delay小于期望延時參數(shù)Target_delay,則表明抖動緩存中數(shù)據(jù)不夠,則抖動緩存繼續(xù)接收語音數(shù)據(jù)包;如果當(dāng)前延時參數(shù)Current_delay大于或等于期望延時參數(shù)Target_delay,則解碼并取出播放語音數(shù)據(jù)包,抖動緩存狀態(tài)切換為Working_state狀態(tài);當(dāng)出現(xiàn)異常情況時,抖動緩存狀態(tài)切換為Waiting_state狀態(tài)。
[0019]所述抖動緩存中的語音數(shù)據(jù)包為從遠(yuǎn)端接收到的按序列號升序排列、間隔為I的編碼后的語音數(shù)據(jù)包序列的組成部分,判斷數(shù)據(jù)包的序列號是否連續(xù),如不連續(xù),則發(fā)生丟包情形,其中導(dǎo)致不連續(xù)的序號的數(shù)據(jù)包即為丟失的數(shù)據(jù)包,此時重傳丟失的數(shù)據(jù)包;在接收語音數(shù)據(jù)包時,判斷是否需要調(diào)大當(dāng)前延時參數(shù)Current_delay,即比較當(dāng)前延時參數(shù)Current_delay與當(dāng)前延時參數(shù)下限參數(shù)Min_Current_delay的大小:如Current_delay小于Min_Current_delay,則將調(diào)大延時標(biāo)記參數(shù)Need_turn_up置為True,否則將調(diào)大延時標(biāo)記參數(shù)Need_turn_up置為False。
[0020]在取出播放語音數(shù)據(jù)包時,周期性判斷調(diào)大延時標(biāo)記參數(shù)Need_turn_up的值,如果為True,則在當(dāng)前緩存中插入固定步長的數(shù)據(jù)幀,直到Current_delay大于或等于Target_delay 為止。
[0021]在取出播放語音數(shù)據(jù)包時,如果當(dāng)前延時參數(shù)Current_delay大于當(dāng)前延時調(diào)整上限參數(shù)Max_Current_delay,則將調(diào)小延時標(biāo)記參數(shù)Need_turn_down置Ture,否則將調(diào)小延時標(biāo)記參數(shù)Need_turn_down置False。
[0022]在取出播放語音數(shù)據(jù)包時,周期性判斷調(diào)小延時標(biāo)記參數(shù)Need_turn_down的值,如果為True,則在當(dāng)前緩存中合并固定步長的數(shù)據(jù)幀,直到Current_delay小于或等于Target_delay為止,以達(dá)到對抖動緩存中的數(shù)據(jù)包進(jìn)行自適應(yīng)延時處理效果。
[0023]根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理過程中的判斷和調(diào)整的速率需要作限制,例如以周期80ms,步長1ms進(jìn)行判斷和調(diào)整。
[0024]參見圖2,本發(fā)明實施例提供一種語音數(shù)據(jù)延時處理裝置,包括:
網(wǎng)絡(luò)狀況確定單元201,用于確定表示當(dāng)前網(wǎng)絡(luò)狀況的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù);
抖動緩存的目標(biāo)延時參數(shù)調(diào)整單元202,用于根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù);
抖動緩存中數(shù)據(jù)包延時處理單元203,用于根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理。
[0025]具體如下:
所述網(wǎng)絡(luò)狀況確定單元,用于每隔一定周期統(tǒng)計一次該周期內(nèi)的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),例如,以1s為周期統(tǒng)計一次。
[0026]其中: 原始網(wǎng)絡(luò)丟包率:每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況前的網(wǎng)絡(luò)丟包率,原始網(wǎng)絡(luò)丟包率=(每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況前的丟包數(shù)量/每個統(tǒng)計周期內(nèi)的總數(shù)據(jù)包數(shù)量)*100%,初始值為O ;
重傳后網(wǎng)絡(luò)丟包率:每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況后的網(wǎng)絡(luò)丟包率,重傳后網(wǎng)絡(luò)丟包率=(每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況后的丟包數(shù)量/每個統(tǒng)計周期內(nèi)的總數(shù)據(jù)包數(shù)量)*100%,初始值為O ;
重傳數(shù)據(jù)包中遲到包所占比率:每個統(tǒng)計周期內(nèi)重傳到達(dá)的數(shù)據(jù)包中,晚于播放時刻到達(dá)的重傳包數(shù)量占所有重傳包數(shù)量的比率,重傳數(shù)據(jù)包中遲到包所占比率=每個統(tǒng)計周期內(nèi)晚于播放時刻到達(dá)的重傳包數(shù)量/每個統(tǒng)計周期內(nèi)總的重傳包數(shù)量,初始值為O ;
最大抖動幅度參數(shù):每個統(tǒng)計周期內(nèi)相鄰數(shù)據(jù)包時間間隔的最大值,單位為ms,初始值為O。
[0027]所述抖動緩存的目標(biāo)延時參數(shù)調(diào)整單元,用于根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù),包括:
主要延時參數(shù)涉及:
Target_delay:期望延時參數(shù),單位為 ms,例如:Target_delay=150ms ;
Min_Target_delay:期望延時調(diào)整下限參數(shù),單位為ms,例如:Min_Target_delay=100ms ;
Max—Target—delay:期望延時調(diào)整上限參數(shù),單位為ms,例如:Max—Target—delay=500ms ;
Current—delay:當(dāng)前延時參數(shù),即目前緩存中的數(shù)據(jù)量大小,單位為ms ;
Min—Current—delay:當(dāng)前延時調(diào)整下限參數(shù),單位為ms,Min—Current—delay根據(jù)Target—delay 確定:如果 Target—delay 小于 400ms,則 Min—Current—delay =Target_delay/2 ;如果 Target—delay 大于或等于 200ms,則 Min—Current—delay = Target—delay-200 ;
Max—Current—delay:當(dāng)前延時調(diào)整上限參數(shù),單位為ms,Max—Current—delay根據(jù)Target—delay 確定:如果 Target—delay 小于 200ms,則 Max—Current—delay =Target_delay*2 ;如果 Target—delay 大于或等于 200ms,則 Max—Current—delay = Target—delay+200 ;
Need—turn—up:調(diào)大延時標(biāo)記參數(shù),布爾類型,True表示調(diào)大,F(xiàn)alse表示不調(diào)大,默認(rèn)值為False ;
Need—turn—down:調(diào)小延時標(biāo)記參數(shù),布爾類型,True表示調(diào)小,F(xiàn)alse表示不調(diào)小,默認(rèn)值為False ;
本抖動緩存包括兩種狀態(tài):Waiting—state和Working—state,默認(rèn)為Waiting—state ;
Waiting—state:此時處于等待數(shù)據(jù)接收狀態(tài),此時只接收數(shù)據(jù)包不取出數(shù)據(jù);
Working—state:此時處于正常工作狀態(tài),此時既接收數(shù)據(jù)也取出數(shù)據(jù)
[0028]如果原始丟包率小于原始丟包率閾值(例如,原始丟包率閾值=4%),并且重傳數(shù)據(jù)包中遲到包所占比率小于重傳數(shù)據(jù)包中遲到包所占比率閾值I (例如,重傳數(shù)據(jù)包中遲到包所占比率閾值1=1%),則按固定步長(例如,步長=1ms)調(diào)小期望延時參數(shù)Target_delay,此時如果期望延時參數(shù)Target_delay小于期望延時調(diào)整下限參數(shù)Min_Target_delay,則將期望延時參數(shù)Target_delay調(diào)整為期望延時調(diào)整下限參數(shù)Min_ Target_delay。
[0029]如果重傳后網(wǎng)絡(luò)丟包率小于原始網(wǎng)絡(luò)丟包率,并且重傳數(shù)據(jù)包中遲到包所占比率大于重傳數(shù)據(jù)包中遲到包所占比率閾值2 (例如,重傳數(shù)據(jù)包中遲到包所占比率閾值2=10%),則按固定步長(例如,步長=1ms)調(diào)大期望延時參數(shù)Target_delay,此時如果期望延時參數(shù)Target_delay大于期望延時調(diào)整上限參數(shù)Max_ Target_delay,則將期望延時參數(shù)Target_delay調(diào)整為期望延時調(diào)整上限參數(shù)Max_Target_delay。
[0030]如果數(shù)據(jù)包最大抖動幅度參數(shù)大于Target_delay,則將期望延時參數(shù)Target_delay調(diào)整為最大抖動幅度參數(shù)*1.2。
[0031]所述抖動緩存中數(shù)據(jù)包延時處理單元,用于根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理,包括:
周期性判斷抖動緩存狀態(tài),當(dāng)抖動緩存狀態(tài)為Waiting_state狀態(tài)時,則比較當(dāng)前延時參數(shù)Current_delay與期望延時參數(shù)Target_delay的大小:如果當(dāng)前延時參數(shù)Current_delay小于期望延時參數(shù)Target_delay,則表明抖動緩存中數(shù)據(jù)不夠,則抖動緩存繼續(xù)接收語音數(shù)據(jù)包;如果當(dāng)前延時參數(shù)Current_delay大于或等于期望延時參數(shù)Target_delay,則解碼并取出播放語音數(shù)據(jù)包,抖動緩存狀態(tài)切換為Working_state狀態(tài);當(dāng)出現(xiàn)異常情況時,抖動緩存狀態(tài)切換為Waiting_state狀態(tài)。
[0032]所述抖動緩存中的語音數(shù)據(jù)包為從遠(yuǎn)端接收到的按序列號升序排列、間隔為I的編碼后的語音數(shù)據(jù)包序列的組成部分,判斷數(shù)據(jù)包的序列號是否連續(xù),如不連續(xù),則發(fā)生丟包情形,其中導(dǎo)致不連續(xù)的序號的數(shù)據(jù)包即為丟失的數(shù)據(jù)包,此時重傳丟失的數(shù)據(jù)包;在接收語音數(shù)據(jù)包時,判斷是否需要調(diào)大當(dāng)前延時參數(shù)Current_delay,即比較當(dāng)前延時參數(shù)Current_delay與當(dāng)前延時參數(shù)下限參數(shù)Min_Current_delay的大小:如Current_delay小于Min_Current_delay,則將調(diào)大延時標(biāo)記參數(shù)Need_turn_up置為True,否則將調(diào)大延時標(biāo)記參數(shù)Need_turn_up置為False。
[0033]在取出播放語音數(shù)據(jù)包時,周期性判斷調(diào)大延時標(biāo)記參數(shù)Need_turn_up的值,如果為True,則在當(dāng)前緩存中插入固定步長的數(shù)據(jù)幀,直到Current_delay大于或等于Target_delay 為止。
[0034]在取出播放語音數(shù)據(jù)包時,如果當(dāng)前延時參數(shù)Current_delay大于當(dāng)前延時調(diào)整上限參數(shù)Max_Current_delay,則將調(diào)小延時標(biāo)記參數(shù)Need_turn_down置Ture,否則將調(diào)小延時標(biāo)記參數(shù)Need_turn_down置False。
[0035]在取出播放語音數(shù)據(jù)包時,周期性判斷調(diào)小延時標(biāo)記參數(shù)Need_turn_down的值,如果為True,則在當(dāng)前緩存中合并固定步長的數(shù)據(jù)幀,直到Current_delay小于或等于Target_delay為止,以達(dá)到對抖動緩存中的數(shù)據(jù)包進(jìn)行自適應(yīng)延時處理效果。
[0036]根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理過程中的判斷和調(diào)整的速率需要作限制,例如以周期80ms,步長1ms進(jìn)行判斷和調(diào)整。
[0037]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。并且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0038]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
【主權(quán)項】
1.一種語音數(shù)據(jù)延時處理方法,其特征在于,該方法包括如下步驟: 確定用于表示當(dāng)前網(wǎng)絡(luò)狀況的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù); 根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù); 根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理。2.根據(jù)權(quán)利要求1所述的語音數(shù)據(jù)延時處理方法,其特征在于,所述表示當(dāng)前網(wǎng)絡(luò)狀況的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù)進(jìn)行周期性統(tǒng)計,其中: 原始網(wǎng)絡(luò)丟包率為每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況前的網(wǎng)絡(luò)丟包率,原始網(wǎng)絡(luò)丟包率=(每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況前的丟包數(shù)量/每個統(tǒng)計周期內(nèi)的總數(shù)據(jù)包數(shù)量)*100% ; 重傳后網(wǎng)絡(luò)丟包率為每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況后的網(wǎng)絡(luò)丟包率,重傳后網(wǎng)絡(luò)丟包率=(每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況后的丟包數(shù)量/每個統(tǒng)計周期內(nèi)的總數(shù)據(jù)包數(shù)量)*100% ; 重傳數(shù)據(jù)包中遲到包所占比率為每個統(tǒng)計周期內(nèi)重傳到達(dá)的數(shù)據(jù)包中,晚于播放時刻到達(dá)的重傳包數(shù)量占所有重傳包數(shù)量的比率,重傳數(shù)據(jù)包中遲到包所占比率=(每個統(tǒng)計周期內(nèi)晚于播放時刻到達(dá)的重傳數(shù)據(jù)包數(shù)量/每個統(tǒng)計周期內(nèi)總的重傳數(shù)據(jù)包數(shù)量)*100%; 最大抖動幅度參數(shù)為每個統(tǒng)計周期內(nèi)相鄰數(shù)據(jù)包時間間隔的最大值,單位為ms。3.根據(jù)權(quán)利要求2所述的語音數(shù)據(jù)延時處理方法,其特征在于,所述根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù),包括: 如果原始丟包率小于原始丟包率閾值,并且重傳數(shù)據(jù)包中遲到包所占比率小于重傳數(shù)據(jù)包中遲到包所占比率閾值I,則按固定步長調(diào)小期望延時參數(shù)Tar ge t_de I ay,此時如果期望延時參數(shù)Target_delay小于期望延時調(diào)整下限參數(shù)Min_Target_delay,則將期望延時參數(shù)Target_delay調(diào)整為期望延時調(diào)整下限參數(shù)Min_Target_delay ; 如果重傳后網(wǎng)絡(luò)丟包率小于原始網(wǎng)絡(luò)丟包率,并且重傳數(shù)據(jù)包中遲到包所占比率大于重傳數(shù)據(jù)包中遲到包所占比率閾值2,則按固定步長調(diào)大期望延時參數(shù)Target_delay,此時如果期望延時參數(shù)Target_delay大于期望延時調(diào)整上限參數(shù)Max_Target_delay,則將期望延時參數(shù)Target_delay調(diào)整為期望延時調(diào)整上限參數(shù)Max_Target_delay ; 如果數(shù)據(jù)包最大抖動幅度參數(shù)大于期望延時參數(shù)Target_delay,則將期望延時參數(shù)Target_delay調(diào)整為最大抖動幅度參數(shù)*1.2。4.根據(jù)權(quán)利要求3所述的語音數(shù)據(jù)延時處理方法,其特征在于,根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理,包括: 周期性判斷抖動緩存狀態(tài),當(dāng)抖動緩存狀態(tài)為Waiting_state狀態(tài)時,則比較當(dāng)前延時參數(shù)Current_delay與期望延時參數(shù)Target_delay的大小:如果當(dāng)前延時參數(shù)Current_delay小于期望延時參數(shù)Target_delay,則表明抖動緩存中數(shù)據(jù)不夠,則抖動緩存繼續(xù)接收語音數(shù)據(jù)包;如果當(dāng)前延時參數(shù)Current_delay大于或等于期望延時參數(shù)Target_delay,則解碼并取出播放語音數(shù)據(jù)包,抖動緩存狀態(tài)切換為Working_state狀態(tài);當(dāng)出現(xiàn)異常情況時,抖動緩存狀態(tài)切換為Waiting_state狀態(tài); 所述抖動緩存中的語音數(shù)據(jù)包為從遠(yuǎn)端接收到的按序列號升序排列、間隔為I的編碼后的語音數(shù)據(jù)包序列的組成部分,判斷數(shù)據(jù)包的序列號是否連續(xù),如不連續(xù),則發(fā)生丟包情形,其中導(dǎo)致不連續(xù)的序號的數(shù)據(jù)包即為丟失的數(shù)據(jù)包,此時重傳丟失的數(shù)據(jù)包;在接收語音數(shù)據(jù)包時,判斷是否需要調(diào)大當(dāng)前延時參數(shù)Current_delay,即比較當(dāng)前延時參數(shù)Current_delay與當(dāng)前延時參數(shù)下限參數(shù)Min_Current_delay的大小:如Current_delay小于Min_Current_delay,則將調(diào)大延時標(biāo)記參數(shù)Need_turn_up置為True,否則將調(diào)大延時標(biāo)記參數(shù)Need_turn_up置為False ; 在取出播放語音數(shù)據(jù)包時,周期性判斷調(diào)大延時標(biāo)記參數(shù)Need_turn_up的值,如果為True,則在當(dāng)前緩存中插入固定步長的數(shù)據(jù)幀,直到當(dāng)前延時參數(shù)Current_delay大于或等于期望延時參數(shù)Target_delay為止; 在取出播放語音數(shù)據(jù)包時,如果當(dāng)前延時參數(shù)Current_delay大于當(dāng)前延時調(diào)整上限參數(shù)Max_Current_delay,則將調(diào)小延時標(biāo)記參數(shù)Need_turn_down置Ture,否則將調(diào)小延時標(biāo)記參數(shù) Need_turn_down 置 False ; 在取出播放語音數(shù)據(jù)包時,周期性判斷調(diào)小延時標(biāo)記參數(shù)Need_turn_down的值,如果為True,貝Ij在當(dāng)前緩存中合并固定步長的數(shù)據(jù)幀,直到當(dāng)前延時參數(shù)Current_delay小于或等于目標(biāo)延時參數(shù)Target_delay為止。5.根據(jù)權(quán)利要求4所述的語音數(shù)據(jù)延時處理方法,其特征在于,所述異常情況包括: 新接收的數(shù)據(jù)包序列號與緩存中的數(shù)據(jù)包序列號相差超過200 ; 抖動緩存的當(dāng)前延時參數(shù)Curr ent_de I ay小于五分之一的目標(biāo)延時參數(shù)T arget_delay ; 抖動緩存的當(dāng)前延時參數(shù)Current_delay大于二倍的目標(biāo)延時參數(shù)Target_delay。6.本發(fā)明實施例提供一種語音數(shù)據(jù)延時處理裝置,其特征在于,該裝置包括: 網(wǎng)絡(luò)狀況確定單元,用于確定表示當(dāng)前網(wǎng)絡(luò)狀況的原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù); 抖動緩存的目標(biāo)延時參數(shù)調(diào)整單元,用于根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整抖動緩存的目標(biāo)延時參數(shù); 抖動緩存中數(shù)據(jù)包延時處理單元,用于根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理。7.根據(jù)權(quán)利要求6所述的語音數(shù)據(jù)延時處理裝置,其特征在于,所述網(wǎng)絡(luò)狀況確定單元,用于對原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù)進(jìn)行周期性統(tǒng)計,其中: 原始網(wǎng)絡(luò)丟包率為每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況前的網(wǎng)絡(luò)丟包率,原始網(wǎng)絡(luò)丟包率=(每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況前的丟包數(shù)量/每個統(tǒng)計周期內(nèi)的總數(shù)據(jù)包數(shù)量)*100% ; 重傳后網(wǎng)絡(luò)丟包率為每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況后的網(wǎng)絡(luò)丟包率,重傳后網(wǎng)絡(luò)丟包率=(每個統(tǒng)計周期內(nèi)發(fā)生丟包重傳情況后的丟包數(shù)量/每個統(tǒng)計周期內(nèi)的總數(shù)據(jù)包數(shù)量)*100% ; 重傳數(shù)據(jù)包中遲到包所占比率為每個統(tǒng)計周期內(nèi)重傳到達(dá)的數(shù)據(jù)包中,晚于播放時刻到達(dá)的重傳包數(shù)量占所有重傳包數(shù)量的比率,重傳數(shù)據(jù)包中遲到包所占比率=(每個統(tǒng)計周期內(nèi)晚于播放時刻到達(dá)的重傳數(shù)據(jù)包數(shù)量/每個統(tǒng)計周期內(nèi)總的重傳數(shù)據(jù)包數(shù)量)*100%;最大抖動幅度參數(shù)為每個統(tǒng)計周期內(nèi)相鄰數(shù)據(jù)包時間間隔的最大值,單位為ms。8.根據(jù)權(quán)利要求7所述的語音數(shù)據(jù)延時處理裝置,其特征在于,所述抖動緩存的目標(biāo)延時參數(shù)調(diào)整單元,用于根據(jù)當(dāng)前原始網(wǎng)絡(luò)丟包率參數(shù)、重傳后網(wǎng)絡(luò)丟包率參數(shù)、重傳數(shù)據(jù)包中遲到包所占比率參數(shù)、數(shù)據(jù)包最大抖動幅度參數(shù),調(diào)整目標(biāo)延時參數(shù),包括: 如果原始丟包率小于原始丟包率閾值,并且重傳數(shù)據(jù)包中遲到包所占比率小于重傳數(shù)據(jù)包中遲到包所占比率閾值I,則按固定步長調(diào)小期望延時參數(shù)Tar ge t_de I ay,此時如果期望延時參數(shù)Target_delay小于期望延時調(diào)整下限參數(shù)Min_Target_delay,則將期望延時參數(shù)Target_delay調(diào)整為期望延時調(diào)整下限參數(shù)Min_Target_delay ; 如果重傳后網(wǎng)絡(luò)丟包率小于原始網(wǎng)絡(luò)丟包率,并且重傳數(shù)據(jù)包中遲到包所占比率大于重傳數(shù)據(jù)包中遲到包所占比率閾值2,則按固定步長調(diào)大期望延時參數(shù)Target_delay,此時如果期望延時參數(shù)Target_delay大于期望延時調(diào)整上限參數(shù)Max_Target_delay,則將期望延時參數(shù)Target_delay調(diào)整為期望延時調(diào)整上限參數(shù)Max_Target_delay ; 如果數(shù)據(jù)包最大抖動幅度參數(shù)大于期望延時參數(shù)Target_delay,則將期望延時參數(shù)Target_delay調(diào)整為最大抖動幅度參數(shù)*1.2。9.根據(jù)權(quán)利要求8所述的語音數(shù)據(jù)延時處理裝置,其特征在于,所述抖動緩存中數(shù)據(jù)包延時處理單元,用于根據(jù)調(diào)整后的抖動緩存的目標(biāo)延時參數(shù),對抖動緩存中的數(shù)據(jù)包進(jìn)行延時處理,包括: 周期性判斷抖動緩存狀態(tài),當(dāng)抖動緩存狀態(tài)為Waiting_state狀態(tài)時,則比較當(dāng)前延時參數(shù)Current_delay與期望延時參數(shù)Target_delay的大小:如果當(dāng)前延時參數(shù)Current_delay小于期望延時參數(shù)Target_delay,則表明抖動緩存中數(shù)據(jù)不夠,則抖動緩存繼續(xù)接收語音數(shù)據(jù)包;如果當(dāng)前延時參數(shù)Current_delay大于或等于期望延時參數(shù)Target_delay,則解碼并取出播放語音數(shù)據(jù)包,抖動緩存狀態(tài)切換為Working_state狀態(tài);當(dāng)出現(xiàn)異常情況時,抖動緩存狀態(tài)切換為Waiting_state狀態(tài); 所述抖動緩存中的語音數(shù)據(jù)包為從遠(yuǎn)端接收到的按序列號升序排列、間隔為I的編碼后的語音數(shù)據(jù)包序列的組成部分,判斷數(shù)據(jù)包的序列號是否連續(xù),如不連續(xù),則發(fā)生丟包情形,其中導(dǎo)致不連續(xù)的序號的數(shù)據(jù)包即為丟失的數(shù)據(jù)包,此時重傳丟失的數(shù)據(jù)包;在接收語音數(shù)據(jù)包時,判斷是否需要調(diào)大當(dāng)前延時參數(shù)Current_delay,即比較當(dāng)前延時參數(shù)Current_delay與當(dāng)前延時參數(shù)下限參數(shù)Min_Current_delay的大小:如Current_delay小于Min_Current_delay,則將調(diào)大延時標(biāo)記參數(shù)Need_turn_up置為True,否則將調(diào)大延時標(biāo)記參數(shù)Need_turn_up置為False ; 在取出播放語音數(shù)據(jù)包時,周期性判斷調(diào)大延時標(biāo)記參數(shù)Need_turn_up的值,如果為True,則在當(dāng)前緩存中插入固定步長的數(shù)據(jù)幀,直到當(dāng)前延時參數(shù)Current_delay大于或等于期望延時參數(shù)Target_delay為止; 在取出播放語音數(shù)據(jù)包時,如果當(dāng)前延時參數(shù)Current_delay大于當(dāng)前延時調(diào)整上限參數(shù)Max_Current_delay,則將調(diào)小延時標(biāo)記參數(shù)Need_turn_down置Ture,否則將調(diào)小延時標(biāo)記參數(shù) Need_turn_down 置 False ; 在取出播放語音數(shù)據(jù)包時,周期性判斷調(diào)小延時標(biāo)記參數(shù)Need_turn_down的值,如果為True,貝Ij在當(dāng)前緩存中合并固定步長的數(shù)據(jù)幀,直到當(dāng)前延時參數(shù)Current_delay小于或等于目標(biāo)延時參數(shù)Target_delay為止。10.根據(jù)權(quán)利要求9所述的語音數(shù)據(jù)延時處理裝置,其特征在于,所述異常情況包括: 新接收的數(shù)據(jù)包序列號與緩存中的最大序列號數(shù)據(jù)包的序列號相差超過200 ; 抖動緩存的當(dāng)前延時參數(shù)Curr ent_de I ay小于五分之一的目標(biāo)延時參數(shù)T arget_delay ; 抖動緩存的當(dāng)前延時參數(shù)Current_delay大于二倍的目標(biāo)延時參數(shù)Target_delay。
【文檔編號】H04M7/00GK105991476SQ201510043932
【公開日】2016年10月5日
【申請日】2015年1月29日
【發(fā)明人】李煉, 楊福強
【申請人】滬江教育科技(上海)股份有限公司