專利名稱:解決網(wǎng)絡(luò)抖動的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸技術(shù),尤其涉及一種解決網(wǎng)絡(luò)抖動的方法及裝置。
技術(shù)背景隨著互聯(lián)網(wǎng)技術(shù)的不斷成熟,在網(wǎng)絡(luò)上進(jìn)行語音交流變得相當(dāng)普及,但 現(xiàn)有網(wǎng)絡(luò)的質(zhì)量狀況并不能充分滿足語音交流的需要,網(wǎng)絡(luò)中固有的延時、 網(wǎng)絡(luò)抖動、丟包、亂序等問題對網(wǎng)絡(luò)上進(jìn)行的語音交流造成了不可避免的影響,從而直接影響到語音交流的服務(wù)質(zhì)量(Qos)。在對語音交流造成影響的各個因素中,網(wǎng)絡(luò)抖動是較常見的一個。網(wǎng)絡(luò) 抖動是指網(wǎng)絡(luò)中相鄰數(shù)據(jù)包的延時變化,以實(shí)現(xiàn)語音交流的即時通訊為例, 發(fā)送端以相同的時間間隔,如10毫秒(ms ),將語音幀發(fā)送到互聯(lián)網(wǎng),通過 互聯(lián)網(wǎng)將語音幀發(fā)送到接收端,如果互聯(lián)網(wǎng)的網(wǎng)絡(luò)質(zhì)量狀況能夠充分滿足語 音交流的需要,則這些語音幀在到達(dá)接收端時,仍會保持發(fā)送時的時間間隔, 從而使得接收端播放的語音與發(fā)送端發(fā)送的語音相一致。但是,現(xiàn)有網(wǎng)絡(luò)的質(zhì)量狀況并不能滿足語音交流的需要,發(fā)送端發(fā)送的 語音幀在網(wǎng)絡(luò)上經(jīng)歷不同的路由和網(wǎng)絡(luò)擁塞,使得每個語音幀在網(wǎng)絡(luò)中的延 時各不相同,在此情況下,語音幀到達(dá)接收端的時間間隔不再與發(fā)送時的時 間間隔完全一致,從而導(dǎo)致接收端播放的語音產(chǎn)生失真,直接影響到語音交 流的服務(wù)質(zhì)量。為了解決網(wǎng)絡(luò)抖動對語音交流的影響,現(xiàn)有技術(shù)提供了一種Time-scale 抗抖動技術(shù),該技術(shù)利用接收端的抖動緩沖區(qū)保存接收到的語音幀,采用同 步疊加算法(SOLA)、基音同步疊加算法(PSOLA)或者基于波形相似性的 同步疊加算法(WSOLA)等,對保存在抖動緩沖區(qū)中的所有語音幀進(jìn)行時域 的拉伸或壓縮處理。具體包括若判斷得到在新的語音幀到來前,抖動緩沖 區(qū)中的所有語音幀將被播放完,即網(wǎng)絡(luò)延時增加時,則采用上述任一算法對 保存在抖動緩沖區(qū)中的所有語音幀做時域的拉伸處理,以延長語音幀的播放
時間;相反,若判斷得到抖動緩沖區(qū)將在短時間內(nèi)收到很多語音幀,即網(wǎng)絡(luò) 延時減小時,為避免抖動緩沖區(qū)中的語音幀溢出,則采用上述任一算法對保 存在抖動緩沖區(qū)中的所有語音幀做時域的壓縮處理,以縮短語音幀的播放時 間。在對現(xiàn)有技術(shù)的研究和實(shí)踐過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)存在以下問題 Time-scale技術(shù)通過調(diào)整抖動緩沖區(qū)中保存的所有語音幀的播放時間來 適應(yīng)網(wǎng)絡(luò)抖動的變化,但是語音幀中包括靜音幀和非靜音幀,由于對非靜音 幀進(jìn)行時域處理會改變非靜音幀的原始采樣頻率,因此,如果接收端按照原 始采樣頻率播放經(jīng)時域處理的非靜音幀,則會產(chǎn)生語音失真的問題,具體表 現(xiàn)是語速加快或者語速變的很慢。由此可見,Time-scale技術(shù)雖然能夠適應(yīng)網(wǎng) 絡(luò)抖動的變化,但無法消除網(wǎng)絡(luò)抖動所帶來的語音失真問題。發(fā)明內(nèi)容本發(fā)明實(shí)施例要解決的技術(shù)問題是提供一種解決網(wǎng)絡(luò)抖動的方法及裝 置,能夠消除網(wǎng)絡(luò)抖動帶來的語音失真。為解決上述技術(shù)問題,本發(fā)明所提供的實(shí)施例是通過以下技術(shù)方案實(shí)現(xiàn)的本發(fā)明實(shí)施例提供了一種解決網(wǎng)絡(luò)抖動的方法,包括在接收到的語音幀中查找是否有靜音幀,如果有,若判斷得到網(wǎng)絡(luò)延時 增加,則在靜音幀構(gòu)成的靜音段中插入靜音幀,若判斷得到網(wǎng)絡(luò)延時減小, 則從靜音幀構(gòu)成的靜音段中抽取靜音幀。優(yōu)選的,上述方法進(jìn)一步包括對接收到的語音幀進(jìn)行靜音檢測,并標(biāo) 識出靜音幀。優(yōu)選的,所述對接收到的語音幀進(jìn)行靜音檢測,并標(biāo)識出靜音幀具體包括計(jì)算接收到的語音幀的語音信號能量以及背景噪聲能量,若所述背景噪 聲能量與語音信號能量的比值大于預(yù)置的靜音域值,則將所述語音幀標(biāo)識為 靜音幀。 優(yōu)選的,判斷網(wǎng)絡(luò)延時是否增加具體包括獲取網(wǎng)絡(luò)抖動預(yù)測值,以及播放接收到的語音幀所需時間;計(jì)算所述網(wǎng)絡(luò)抖動預(yù)測值與所述時間的差值;將所述差值與預(yù)置的網(wǎng)絡(luò)抖動第一域值進(jìn)行比較,若所述差值大于所述網(wǎng)絡(luò)抖動第一域值,則判斷得到網(wǎng)絡(luò)延時增加; 判斷網(wǎng)絡(luò)延時是否減小具體包括將所述網(wǎng)絡(luò)抖動預(yù)測值與所述時間的差值與預(yù)置的網(wǎng)絡(luò)第二域值進(jìn)行比 較,若所述差值小于所述網(wǎng)絡(luò)抖動第二域值,則判斷得到網(wǎng)絡(luò)延時減小。 優(yōu)選的,所述獲取網(wǎng)絡(luò)抖動預(yù)測值具體為用從接收到的語音幀中取走語音幀的時間減去相對所述取走的語音幀最 近一次接收的語音幀的接收時間,得到網(wǎng)絡(luò)抖動預(yù)測值。優(yōu)選的,所述在所述靜音幀構(gòu)成的靜音段中插入靜音幀具體包括用所述網(wǎng)絡(luò)抖動預(yù)測值與所述播放接收到的語音幀所需時間的差值減去 所述網(wǎng)絡(luò)抖動第一域值,再除以每幀語音幀播放時間,獲得插入靜音幀的幀 數(shù);在靜音幀構(gòu)成的靜音段中插入所述幀數(shù)的靜音幀。優(yōu)選的,所述從所述靜音幀構(gòu)成的靜音段中抽取靜音幀具體包括用所述網(wǎng)絡(luò)抖動第二域值減去所述網(wǎng)絡(luò)抖動預(yù)測值與所述播放接收到的 語音幀所需時間的差值,再除以每幀語音幀播放時間,獲得抽取靜音幀的幀 數(shù);從靜音幀構(gòu)成的靜音段中抽取所述幀數(shù)的靜音幀。本發(fā)明實(shí)施例還提供了一種解決網(wǎng)絡(luò)抖動的裝置,包括靜音幀查找單 元,延時判斷單元,靜音幀插入單元,靜音幀抽取單元;所述靜音幀查找單元,用于在接收到的語音幀中查找是否有靜音幀,如 果有,則觸發(fā)所述延時判斷單元;所述延時判斷單元,若判斷得到網(wǎng)絡(luò)延時增加,則觸發(fā)所述靜音幀插入
單元,若判斷得到網(wǎng)絡(luò)延時減小,則觸發(fā)所述靜音幀抽取單元;所述靜音幀插入單元,用于在靜音幀構(gòu)成的靜音段中插入靜音幀; 所述靜音幀抽取單元,用于從靜音幀構(gòu)成的靜音段中抽取靜音幀。 優(yōu)選的,上述裝置進(jìn)一步包括靜音幀檢測單元; 所述靜音幀檢測單元,用于對語音幀進(jìn)行靜音檢測,并標(biāo)識出靜音幀。 優(yōu)選的,所述靜音檢測單元具體包括能量計(jì)算單元,用于計(jì)算接收到的語音幀的語音信號能量以及背景噪聲靜音標(biāo)識單元,用于計(jì)算背景噪聲能量與語音信號能量的比值,若所述 比值大于預(yù)置的靜音域值,則將所述語音幀標(biāo)識為靜音幀。優(yōu)選的,所述延時判斷單元具體包括抖動預(yù)測單元,第一差值計(jì)算單 元,判斷單元;所述抖動預(yù)測單元,用于獲取網(wǎng)絡(luò)抖動預(yù)測值,以及播放所述接收到的 語音幀所需時間;所述第 一差值計(jì)算單元,用于計(jì)算所述網(wǎng)絡(luò)抖動預(yù)測值與所述時間的差值;所述判斷單元,用于將所述差值與預(yù)置的網(wǎng)絡(luò)抖動第一域值進(jìn)行比較, 若所述差值大于所述網(wǎng)絡(luò)抖動第一域值,則判斷得到網(wǎng)絡(luò)延時增加,如果否, 則將所述差值與預(yù)置的網(wǎng)絡(luò)抖動第二域值進(jìn)行比較,若所述差值小于所述網(wǎng) 絡(luò)抖動第二域值,則判斷得到網(wǎng)絡(luò)延時減小。優(yōu)選的,所述抖動預(yù)測單元具體包括第一時間獲取單元,第二時間獲 取單元,第二差值計(jì)算單元;所述第 一時間獲取單元,用于獲取從接收到的語音幀中取走語音幀的時間;所述第二時間獲取單元,用于獲取相對所述取走的語音幀最近一次接收 的語音幀的接收時間;
所述第二差值計(jì)算單元,用于用所述第 一時間獲取單元獲取的時間減去 所述第二時間獲取單元獲取的時間,得到網(wǎng)絡(luò)抖動預(yù)測值。優(yōu)選的,所述靜音幀插入單元具體包括第三差值計(jì)算單元,插入幀數(shù) 計(jì)算單元,插幀單元;所述第三差值計(jì)算單元,用于用所述第一差值計(jì)算單元獲取的差值減去 所述網(wǎng)絡(luò)抖動第一域值;所述插入幀數(shù)計(jì)算單元,用于用所述第三差值計(jì)算單元的計(jì)算結(jié)果除以 每幀語音幀播放時間,獲得插入靜音幀的幀數(shù);所述插幀單元,用于在靜音幀構(gòu)成的靜音段中插入所述幀數(shù)的靜音幀。優(yōu)選的,所述靜音幀抽取單元具體包括第四差值計(jì)算單元,抽取幀數(shù) 計(jì)算單元,抽幀單元;所述第四差值計(jì)算單元,用于用所述網(wǎng)絡(luò)抖動第二域值減去所述第一差 值計(jì)算單元獲取的差值;所述抽取幀數(shù)計(jì)算單元,用于用所述第四差值計(jì)算單元的計(jì)算結(jié)果除以 每幀語音幀播放時間,獲得抽取靜音幀的幀數(shù);所述抽幀單元,用于從靜音幀構(gòu)成的靜音段中抽取所述幀數(shù)的靜音幀。上述技術(shù)方案中具有如下有益效果本發(fā)明實(shí)施例中,如果接收到的語音幀中有標(biāo)識為靜音幀的語音幀,則 判斷網(wǎng)絡(luò)延時是否變化,如果網(wǎng)絡(luò)延時增加,則在靜音幀構(gòu)成的靜音段中插 入靜音幀,如果網(wǎng)絡(luò)延時減小,則從靜音幀構(gòu)成的靜音段中抽取靜音幀。當(dāng) 網(wǎng)絡(luò)延時變化時,在本發(fā)明實(shí)施例通過改變接收到的語音幀中的靜音幀的數(shù) 量,調(diào)整播放接收到的語音幀的時間以消除網(wǎng)絡(luò)抖動對語音通信的影響,并 且,插入或者抽取靜音幀并不影響非靜音幀的播放。因此,本發(fā)明實(shí)施例提 供的技術(shù)方案不僅解決了網(wǎng)絡(luò)抖動問題,而且還解決了因網(wǎng)絡(luò)抖動引起的語 音失真問題。
圖1為本發(fā)明第一實(shí)施例提供的解決網(wǎng)絡(luò)抖動的方法流程圖圖2為本發(fā)明第二實(shí)施例提供的解決網(wǎng)絡(luò)抖動的方法流程圖 圖3為本發(fā)明第三實(shí)施例提供的解決網(wǎng)絡(luò)抖動的方法流程圖 圖4為本發(fā)明實(shí)施例提供的解決網(wǎng)絡(luò)抖動的裝置組成示意圖 圖5為本發(fā)明實(shí)施例提供的延時判斷單元的組成示意圖; 圖6為本發(fā)明實(shí)施例提供的抖動預(yù)測單元的組成示意圖; 圖7為本發(fā)明實(shí)施例提供的靜音幀插入單元的組成示意圖; 圖8為本發(fā)明實(shí)施例提供的靜音幀抽取單元的組成示意圖; 圖9為本發(fā)明實(shí)施例提供的靜音幀檢測單元的組成示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了 一種解決網(wǎng)絡(luò)抖動的方法及裝置,為了更清楚的解 釋本發(fā)明實(shí)施例的具體實(shí)現(xiàn)方式,以下結(jié)合附圖對本發(fā)明實(shí)施例進(jìn)行詳細(xì)描 述。以下結(jié)合附圖對本發(fā)明實(shí)施例提供的解決網(wǎng)絡(luò)抖動的方法進(jìn)行具體描述。在本發(fā)明實(shí)施例中,接收到的語音幀保存在抖動緩沖區(qū)中,該抖動緩沖 區(qū)為大小固定的一段存儲區(qū)。本發(fā)明實(shí)施例提供的解決網(wǎng)絡(luò)抖動的方法包括在接收到的語音幀中查 找是否有靜音幀,如果有,若判斷得到網(wǎng)絡(luò)延時增加,則在靜音幀構(gòu)成的靜 音段中插入靜音幀,若判斷得到網(wǎng)絡(luò)延時減小,則從靜音幀構(gòu)成的靜音段中 抽取靜音幀。請參見圖l,為本發(fā)明第一實(shí)施例提供的解決網(wǎng)絡(luò)抖動的方法流程圖,包括步驟101:在接收到的語音幀中查找是否有靜音幀的語音幀,如果有,則 進(jìn)入步驟102,如果否,則結(jié)束流程;步驟102:判斷網(wǎng)絡(luò)延時是否增加,如果是,則進(jìn)入步驟103,如果否, 則進(jìn)入步驟104;步驟103:在靜音幀構(gòu)成的靜音段中插入靜音幀;步驟104:判斷網(wǎng)絡(luò)延時是否減小,如果是,則進(jìn)入步驟105;如果否, 則結(jié)束。步驟105:從靜音幀構(gòu)成的靜音段中抽取靜音幀。本發(fā)明第一實(shí)施例提供的方法中,當(dāng)網(wǎng)絡(luò)延遲變化時,通過改變接收到 的語音幀中的靜音幀的數(shù)量,調(diào)整播放接收到的語音幀的時間,消除了網(wǎng)絡(luò) 抖動對語音通信的影響。請參見圖2,為本發(fā)明第二實(shí)施例提供的解決網(wǎng)絡(luò)抖動的方法流程圖,該 方法包括步驟201:在接收到的語音幀中查找是否有靜音幀,如果有,則進(jìn)入步驟 202,如果否,則結(jié)束流程;步驟202:獲取網(wǎng)絡(luò)抖動預(yù)測值Tjred,以及播放接收到的語音幀所需時 間T—buff;其中,接收到的語音幀的幀數(shù)可以實(shí)時統(tǒng)計(jì),比如,每收到一個語音幀, 則幀數(shù)加l,取走一個語音幀,則幀數(shù)減l,并且,在傳送語音幀前,語音幀 發(fā)送端會將語音幀的編碼方式發(fā)送給語音幀接收端,語音幀接收端根據(jù)所述 編碼方式,獲得每幀語音幀播放時間T_frame,因此,T_buff可以計(jì)算得到。步驟203:計(jì)算T_pred與T—buff的差值;步驟204:將步驟203中計(jì)算出的差值與預(yù)置的網(wǎng)絡(luò)抖動第一域值T一max 進(jìn)行比較,若所述差值大于T_max,則說明網(wǎng)絡(luò)延時增加,進(jìn)入步驟205;如 果否,則進(jìn)入步驟206;步驟205:在靜音幀構(gòu)成的靜音段中插入靜音幀;步驟206:將步驟203計(jì)算出的差值與預(yù)置的網(wǎng)絡(luò)抖動第二域值T—min 進(jìn)行比較,若該差值小于T一min,則說明網(wǎng)絡(luò)延時減小,進(jìn)入步驟207;如果 該差值大于Tmin,則結(jié)束。
步驟207:從靜音幀構(gòu)成的靜音段中抽取靜音幀。本發(fā)明第二實(shí)施例提供的方法中,采用的判斷網(wǎng)絡(luò)延遲是否變化的具體手段為獲取網(wǎng)絡(luò)抖動預(yù)測值T_pred,以及播放接收到的語音幀所需時間 T—buff,將Tjred與T—buff的差值與預(yù)置網(wǎng)絡(luò)抖動域值進(jìn)行比較,從而判斷 網(wǎng)絡(luò)延遲是否變化。該實(shí)施例亦可實(shí)現(xiàn)消除網(wǎng)絡(luò)抖動對語音通信的影響,請參見圖3,為本發(fā)明第三實(shí)施例提供的解決網(wǎng)絡(luò)抖動的方法流程圖,該 方法包括步驟301:在接收到的語音幀中查找是否有靜音幀,如果有,則進(jìn)入步驟 302,如果否,則結(jié)束流程;步驟302:獲取從接收到的語音幀中取走語音幀的時間T—get,以及相對 所述取走的語音幀最近一次接收的語音幀的接收時間T—last;其中,抖動緩沖區(qū)為一個大小固定的存儲區(qū),并且先進(jìn)入該抖動緩沖區(qū) 中的語音幀先出去,因此,能夠被取走的語音幀可以認(rèn)為是排在抖動緩沖區(qū) 第一位的語音幀,而相對該語音幀排在抖動緩沖區(qū)中最后一位的語音幀則是 相對被取走的語音幀最近一次接收到的語音幀。比如,抖動緩沖區(qū)可以保存 五個語音幀,這五個語音幀分別是A, B, C, D, E,其中,A為五個語音幀 中第一個進(jìn)入抖動緩沖區(qū)的語音幀,其次為B, C, D,而E為五個語音幀中 最后一個進(jìn)入抖動緩沖區(qū)的語音幀,那么,在這五個語音幀中當(dāng)前能夠被取 走的則是排在第一位的A,而排在抖動緩沖區(qū)最后一位的E則是相對A最近 一次接收到的語音幀。步驟303:用T一get減去TJast,得到網(wǎng)絡(luò)抖動預(yù)測值T_pred;步驟304:獲取播放接收到的語音幀所需時間T_buff;步驟305:計(jì)算T_pred與T—buff的差值;步驟306:將步驟305計(jì)算出的差值與預(yù)置的網(wǎng)絡(luò)抖動第一域值T_max 進(jìn)行比較,若所述差值大于T一max,則說明網(wǎng)絡(luò)延時增加,進(jìn)入步驟307;如 果否,則進(jìn)入步驟308;步驟307:用T_pred與T一buff的差值減去T max5 再除以每幀語音幀播
放時間T—frame,獲得插入靜音幀的幀數(shù),在靜音幀構(gòu)成的靜音段中插入所述 幀數(shù)的靜音幀;步驟308:將步驟305計(jì)算出的差值與預(yù)置的網(wǎng)絡(luò)抖動第二域值T一min 進(jìn)行比較,若差值小于T—min,則說明網(wǎng)絡(luò)延時減小,進(jìn)入步驟309;如果該 差值大于Tlmin,則結(jié)束。步驟309:用T—min減去T_pred與T—buff的差值,再除以T一frame獲得 抽取靜音幀的幀數(shù),從所靜音幀構(gòu)成的靜音段中抽取所述幀數(shù)的靜音幀。本發(fā)明第三實(shí)施例提供的方法中,采用的獲取預(yù)測網(wǎng)絡(luò)抖動值T_pred的 具體手段為用從接收到的語音幀中取走語音幀的時間T—get減去相對所述取 走的語音幀最近一次接收的語音幀的接收時間T一last,得到網(wǎng)絡(luò)抖動預(yù)測值。由于本發(fā)明第三實(shí)施例提供的方法中,需要得到T—get和TJast,因此, 該方法的執(zhí)行條件為每次從抖動緩沖區(qū)中取走一幀語音幀進(jìn)行播放時,或 者,抖動緩沖區(qū)中每接收一幀語音幀時,執(zhí)行步驟301至步驟309。并且,本發(fā)明第三實(shí)施例中,根據(jù)T_pred, T_buff以及預(yù)置的網(wǎng)絡(luò)抖動 域值計(jì)算得到的抽取或者插入靜音幀的幀數(shù),可以準(zhǔn)確的消除網(wǎng)絡(luò)抖動對語 音的影響。此外,為了進(jìn)一步提高消除網(wǎng)絡(luò)抖動對語音幀影響的準(zhǔn)確度,可以對步 驟307及步驟309中計(jì)算出的插幀幀數(shù)和抽幀幀數(shù)進(jìn)行調(diào)整。比如,可以用 抽幀幀數(shù)減去調(diào)節(jié)量x,插幀幀數(shù)加上調(diào)節(jié)量x, x為大于等于O的整數(shù),在 具體實(shí)現(xiàn)時,技術(shù)人員可以按照系統(tǒng)要求選定x的取值。本發(fā)明第四實(shí)施例提供的方法與本發(fā)明第二實(shí)施例提供的方法的區(qū)別僅 在于,該方法采用固定閾值判斷方法,判斷網(wǎng)絡(luò)是否延遲,固定閾值判斷方 法具體包括在接收一個語音幀時,用該語音幀的網(wǎng)絡(luò)延時與預(yù)置的域值進(jìn)行比較, 若該語音幀的網(wǎng)絡(luò)延時大于該閾值,則說明網(wǎng)絡(luò)延時增加,若小于該域值則 說明網(wǎng)絡(luò)延時減小。本發(fā)明第四實(shí)施例與本發(fā)明第二實(shí)施例的相同之處,請
參見前文內(nèi)容,此處不再贅述。進(jìn)一步,在該方法中為了準(zhǔn)確消除網(wǎng)絡(luò)抖動對語音通信的影響,則可用 接收一個語音幀的網(wǎng)絡(luò)延時減去預(yù)置的域值得到網(wǎng)絡(luò)抖動預(yù)測值,然后按照 本發(fā)明第三實(shí)施例提供計(jì)算幀數(shù)的方法得到插入靜音幀的幀數(shù)或者抽取靜音 幀的幀數(shù)。以下介紹獲得網(wǎng)絡(luò)抖動第一域值T_max,及網(wǎng)絡(luò)抖動第二域值T一min的 方法。對于T—max和T—min的選擇,需要考慮網(wǎng)絡(luò)抖動的情況,如果T—max 太大,或者T_min太小都會造成無法準(zhǔn)確判斷網(wǎng)絡(luò)延時變化的情況,反之亦 然,因此,本發(fā)明實(shí)施例中采用網(wǎng)絡(luò)抖動跟蹤技術(shù),依據(jù)多次網(wǎng)絡(luò)抖動情況 來選擇T—max和T一min。具體方法包括取連續(xù)N次網(wǎng)絡(luò)抖動預(yù)測值中較小 的M個網(wǎng)絡(luò)抖動預(yù)測值的平均值作為T—max;取連續(xù)N次網(wǎng)絡(luò)抖動預(yù)測值中 較大的M個網(wǎng)絡(luò)抖動預(yù)測值的平均值作為T_min。比如,取連續(xù)五次網(wǎng)絡(luò)抖 動預(yù)測值中較大的三個網(wǎng)絡(luò)抖動預(yù)測的平均值作為T一max,取連續(xù)五次網(wǎng)絡(luò) 抖動預(yù)測值中較小的三個網(wǎng)絡(luò)抖動預(yù)測的平均值作為T—min。在本發(fā)明實(shí)施例中,接收到的語音幀保存在抖動緩沖區(qū)中,因此,可以 在抖動緩沖區(qū)中每收到一個語音幀,就對該語音幀進(jìn)行靜音檢測,并標(biāo)識出 靜音幀。那么,本發(fā)明第一實(shí)施例至第四實(shí)施例中查找靜音幀的方法具體為 根據(jù)靜音標(biāo)識,在接收到的語音幀中查找靜音幀。如果不在抖動緩沖區(qū)每接收一個語音幀時進(jìn)行靜音檢測,則本發(fā)明第一 實(shí)施例至第四實(shí)施例中查找靜音幀的方法具體為對接收到的語音幀進(jìn)行靜 音檢測,獲的靜音幀。其中,對語音幀進(jìn)行靜音檢測可以采用如下幾秤方法 第一種方式計(jì)算語音幀的語音信號能量以及背景噪聲能量,若所述背 景噪聲能量與語音信號能量的比值大于預(yù)置的靜音域值,則將所述語音幀標(biāo) 識為靜音幀。其中,靜音域值可以取大于等于0.6小于1的任意數(shù),但并不排 除靜音域值取其他值的可能性。
第二種方式計(jì)算語音幀的短時平均能量,若該能量小于靜音的能量判斷閾值,則將該語音幀標(biāo)識為靜音幀;第三種方式根據(jù)語音幀的時域過零率判斷,如果過零率超過閾值,則 將該語音幀標(biāo)識為靜音。以上簡要敘述了幾種靜音檢測方法,由于靜音檢測方法眾多,此處不再 列舉,其他未列舉的靜音檢測方法也適用于本發(fā)明實(shí)施例。以上介紹了本發(fā)明實(shí)施例提供的方法的具體實(shí)現(xiàn)過程,以下介紹本發(fā)明 實(shí)施例提供的裝置。請參見圖4,為本發(fā)明實(shí)施例提供的一種解決網(wǎng)絡(luò)抖動的裝置,包括靜 音幀查找單元401,延時判斷單元402,靜音幀插入單元403,靜音幀抽取單 元404;所述靜音幀查找單元401 ,用于在接收到的語音幀中查找是否有靜音幀, 如果有,則觸發(fā)所述延時判斷單元402;所述延時判斷單元402,若判斷得到網(wǎng)絡(luò)延時增加,則觸發(fā)所述靜音幀插 入單元403,若判斷得到網(wǎng)絡(luò)延時減小,則觸發(fā)所述靜音幀抽取單元404;所述靜音幀插入單元403,用于在所述靜音幀構(gòu)成的靜音段中插入靜音幀;所述靜音幀抽取單元404,用于從所述靜音幀構(gòu)成的靜音段中抽取靜音幀。在本發(fā)明實(shí)施例提供的裝置中,所述延時判斷單元402可以有多種實(shí)現(xiàn) 方式,此處列舉一種,請參見圖5,該單元具體包括抖動預(yù)測單元4021, 第一差值計(jì)算單元4022,判斷單元4023;所述抖動預(yù)測單元4021 ,用于獲取網(wǎng)絡(luò)抖動預(yù)測值T_pred,以及播放所 述接收到的語音幀所需時間T一buff;所述第一差值計(jì)算單元4022,用于計(jì)算所述網(wǎng)絡(luò)抖動預(yù)測值T_pred與 TJ)uff的差4直;
所述判斷單元4023,用于將所述差值與預(yù)置的網(wǎng)絡(luò)抖動第一域值T—max 進(jìn)行比較,若所述差值大于所述網(wǎng)絡(luò)抖動第一域值T一max,則說明網(wǎng)絡(luò)延時 增加,如果否,則將所述差值與預(yù)置的網(wǎng)絡(luò)抖動第二域值T—min進(jìn)行比較, 若所述差值小于所述網(wǎng)絡(luò)抖動第二域值T一min,則說明網(wǎng)絡(luò)延時減小。在本發(fā)明實(shí)施例提供的裝置中,所述抖動預(yù)測單元4021也有多種實(shí)現(xiàn)方 式,此處僅列舉一種,請參見圖6,該單元具體包括第一時間獲取單元40211, 第二時間獲取單元40212,第二差值計(jì)算單元40213;所述第一時間獲取單元40211,用于獲取從接收到的語音幀中取走語音幀 的時間;所述第二時間獲取單元40212,用于獲取相對所述取走的語音幀最近一次 接收到的語音幀的接收時間;所述第二差值計(jì)算單元40213,用于用所述第一時間獲取單元獲取的時間 減去所述第二時間獲取單元獲取的時間,得到網(wǎng)絡(luò)抖動預(yù)測值T_pred。為了能夠?qū)崿F(xiàn)準(zhǔn)確的插幀及抽幀處理,當(dāng)所述抖動預(yù)測單元4021采用如 圖6所示的實(shí)現(xiàn)方式時,請參見圖7,靜音幀插入單元403具體包括第三差 值計(jì)算單元4031,插入幀數(shù)計(jì)算單元4032,插幀單元4033;第三差值計(jì)算單元4031,用于用所述第一差值計(jì)算單元4022獲取的差值 減去預(yù)置的網(wǎng)絡(luò)抖動第 一域值T—max;插入幀數(shù)計(jì)算單元4032,用第三差值計(jì)算單元4031的計(jì)算結(jié)果除以每幀 語音幀播放時間T_frame,獲得插入靜音幀的幀數(shù);插幀單元4033,用于在所述靜音幀構(gòu)成的靜音段中插入所述幀數(shù)的靜音幀。請參見圖8,靜音幀抽取單元404具體包括第四差值計(jì)算單元4041, 抽取幀數(shù)計(jì)算單元4042,抽幀單元4043;第四差值計(jì)算單元4041,用于用所述網(wǎng)絡(luò)抖動第二域值T_min減去第一 差值計(jì)算單元4022獲取的差值;
抽取幀數(shù)計(jì)算單元4042,用于用所述第四差值計(jì)算單元4041的計(jì)算結(jié)果 除以語音幀播放時間T一frame,獲得抽取靜音幀的幀數(shù);抽幀單元4043,用于從所述靜音幀構(gòu)成的靜音段中抽取所述幀數(shù)的靜音幀。如果采用在抖動緩沖區(qū)接收一個語音幀的時候進(jìn)行一次靜音檢測,那么, 本發(fā)明實(shí)施例提供了一種靜音幀檢測單元,請參見圖9,該用于對接收到的語 音幀進(jìn)行靜音檢測,并標(biāo)識出靜音幀。該靜音檢測單元具體包括能量計(jì)算單元901,用于計(jì)算語音幀的語音信號能量以及背景噪聲能量;靜音標(biāo)識單元902,用于計(jì)算背景噪聲能量與語音信號能量的比值,若該 比值大于預(yù)置的靜音域值,則將所述語音幀標(biāo)識為靜音幀。本發(fā)明實(shí)施例提供的靜音幀查找單元401具體用于根據(jù)靜音標(biāo)識查找靜 音幀。該靜音檢測單元可以設(shè)置在本發(fā)明實(shí)施例提供的解決網(wǎng)絡(luò)抖動的裝置 中,亦可設(shè)置的其他設(shè)備中并不影響本發(fā)明實(shí)施例的實(shí)現(xiàn)。如果本發(fā)明實(shí)施例不采用在抖動緩沖區(qū)每收到一個語音幀,對語音幀靜 音檢測的方式,則在本發(fā)明實(shí)施例提供的靜音幀查找單元401具體包括能 量計(jì)算單元,用于計(jì)算語音幀的語音信號能量以及背景噪聲能量;觸發(fā)單元,用于計(jì)算背景噪聲能量與語音信號能量的比值,若該比值大 于預(yù)置的靜音域值,則觸發(fā)延時判斷單元402。值得注意的是,在本發(fā)明實(shí)施例提供的方法及裝置中,也可以先判斷網(wǎng) 絡(luò)延時是否減小,再判斷網(wǎng)絡(luò)延時是否增加,并不影響本發(fā)明實(shí)施例的實(shí)現(xiàn)。以上對本發(fā)明所提供的 一種解決網(wǎng)絡(luò)抖動的方法及裝置進(jìn)行了詳細(xì)介 紹,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實(shí)施例的思想,在具體實(shí)施方 式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本 發(fā)明的限制。
權(quán)利要求
1、一種解決網(wǎng)絡(luò)抖動的方法,其特征在于,包括在接收到的語音幀中查找是否有靜音幀,如果有,若判斷得到網(wǎng)絡(luò)延時增加,則在靜音幀構(gòu)成的靜音段中插入靜音幀,若判斷得到網(wǎng)絡(luò)延時減小,則從靜音幀構(gòu)成的靜音段中抽取靜音幀。
2、 如權(quán)利要求l所述的方法,其特征在于,所述方法進(jìn)一步包括對接 收到的語音幀進(jìn)行靜音檢測,并標(biāo)識出靜音幀。
3、 如權(quán)利要求2所述的方法,其特征在于,所述對接收到的語音幀進(jìn)行 靜音檢測,并標(biāo)識出靜音幀具體包括計(jì)算接收到的語音幀的語音信號能量以及背景噪聲能量,若所述背景噪 聲能量與語音信號能量的比值大于預(yù)置的靜音域值,則將所述語音幀標(biāo)識為 靜音幀。
4、 如權(quán)利要求l或2或3所述的方法,其特征在于,判斷網(wǎng)絡(luò)延時是否 增加具體包括獲取網(wǎng)絡(luò)抖動預(yù)測值,以及播放接收到的語音幀所需時間; 計(jì)算所述網(wǎng)絡(luò)抖動預(yù)測值與所述時間的差值;將所述差值與預(yù)置的網(wǎng)絡(luò)抖動第一域值進(jìn)行比較,若所述差值大于所述 網(wǎng)絡(luò)抖動第一域值,則判斷得到網(wǎng)絡(luò)延時增加; 判斷網(wǎng)絡(luò)延時是否減小具體包括將所述網(wǎng)絡(luò)抖動預(yù)測值與所述時間的差值與預(yù)置的網(wǎng)絡(luò)第二域值進(jìn)行比 較,若所述差值小于所述網(wǎng)絡(luò)抖動第二域值,則判斷得到網(wǎng)絡(luò)延時減小。
5、 如權(quán)利要求4所述的方法,其特征在于,所述獲取網(wǎng)絡(luò)抖動預(yù)測值具 體為用從接收到的語音幀中取走語音幀的時間減去相對所述取走的語音幀最 近一次接收的語音幀的接收時間,得到網(wǎng)絡(luò)抖動預(yù)測值。
6、 如權(quán)利要求5所述的方法,其特征在于,所述在所述靜音幀構(gòu)成的靜 音段中插入靜音幀具體包括 用所述網(wǎng)絡(luò)抖動預(yù)測值與所述播放接收到的語音幀所需時間的差值減去 所述網(wǎng)絡(luò)抖動第一域值,再除以每幀語音幀播放時間,獲得插入靜音幀的幀數(shù);在靜音幀構(gòu)成的靜音段中插入所述幀數(shù)的靜音幀。
7、 如權(quán)利要求6所述的方法,其特征在于,所述從所述靜音幀構(gòu)成的靜 音段中抽取靜音幀具體包括用所述網(wǎng)絡(luò)抖動第二域值減去所述網(wǎng)絡(luò)抖動預(yù)測值與所述播放接收到的 語音幀所需時間的差值,再除以每幀語音幀播放時間,獲得抽取靜音幀的幀 數(shù);從靜音幀構(gòu)成的靜音段中抽取所述幀數(shù)的靜音幀。
8、 一種解決網(wǎng)絡(luò)抖動的裝置,其特征在于,包括靜音幀查找單元,延 時判斷單元,靜音幀插入單元,靜音幀抽取單元;所述靜音幀查找單元,用于在接收到的語音幀中查找是否有靜音幀,如 果有,則觸發(fā)所述延時判斷單元;所述延時判斷單元,若判斷得到網(wǎng)絡(luò)延時增加,則觸發(fā)所述靜音幀插入 單元,若判斷得到網(wǎng)絡(luò)延時減小,則觸發(fā)所述靜音幀抽取單元;所述靜音幀插入單元,用于在靜音幀構(gòu)成的靜音段中插入靜音幀;所述靜音幀抽取單元,用于從靜音幀構(gòu)成的靜音段中抽取靜音幀。
9、 如權(quán)利要求8所述的裝置,其特征在于,所述裝置進(jìn)一步包括靜音 幀檢測單元;所述靜音幀檢測單元,用于對語音幀進(jìn)行靜音檢測,并標(biāo)識出靜音幀。
10、 如權(quán)利要求9所述的裝置,其特征在于,所述靜音檢測單元具體包括能量計(jì)算單元,用于計(jì)算接收到的語音幀的語音信號能量以及背景噪聲 能量;靜音標(biāo)識單元,用于計(jì)算背景噪聲能量與語音信號能量的比值,若所述 比值大于預(yù)置的靜音域值,則將所述語音幀標(biāo)識為靜音幀。
11、 如權(quán)利要求8或9或IO所述的裝置,其特征在于,所述延時判斷單元具體包括抖動預(yù)測單元,第一差值計(jì)算單元,判斷單元;所述抖動預(yù)測單元,用于獲取網(wǎng)絡(luò)抖動預(yù)測值,以及播放所述接收到的 語音幀所需時間;所述第一差值計(jì)算單元,用于計(jì)算所述網(wǎng)絡(luò)抖動預(yù)測值與所述時間的差值;所述判斷單元,用于將所述差值與預(yù)置的網(wǎng)絡(luò)抖動第一域值進(jìn)行比較, 若所述差值大于所述網(wǎng)絡(luò)抖動第一域值,則判斷得到網(wǎng)絡(luò)延時增加,如果否, 則將所述差值與預(yù)置的網(wǎng)絡(luò)抖動第二域值進(jìn)行比較,若所述差值小于所述網(wǎng) 絡(luò)抖動第二域值,則判斷得到網(wǎng)絡(luò)延時減小。
12、 如權(quán)利要求11所述的裝置,其特征在于,所述抖動預(yù)測單元具體包 括第一時間獲取單元,第二時間獲取單元,第二差值計(jì)算單元;所述第一時間獲取單元,用于獲取從接收到的語音幀中取走語音幀的時間;所述第二時間獲取單元,用于獲取相對所述取走的語音幀最近一次接收 的語音幀的接收時間;所述第二差值計(jì)算單元,用于用所述第一時間獲取單元獲取的時間減去 所述第二時間獲取單元獲取的時間,得到網(wǎng)絡(luò)抖動預(yù)測值。
13、 如權(quán)利要求12所述的裝置,其特征在于,所述靜音幀插入單元具體 包括第三差值計(jì)算單元,插入幀數(shù)計(jì)算單元,插幀單元;所述第三差值計(jì)算單元,用于用所述第一差值計(jì)算單元獲取的差值減去 所述網(wǎng)絡(luò)抖動第一域值;所述插入幀數(shù)計(jì)算單元,用于用所述第三差值計(jì)算單元的計(jì)算結(jié)果除以 每幀語音幀播放時間,獲得插入靜音幀的幀數(shù);所述插幀單元,用于在靜音幀構(gòu)成的靜音段中插入所述幀數(shù)的靜音幀。
14、如權(quán)利要求12所述的裝置,其特征在于,所述靜音幀抽取單元具體 包括第四差值計(jì)算單元,抽取幀數(shù)計(jì)算單元,抽幀單元;所述第四差值計(jì)算單元,用于用所述網(wǎng)絡(luò)抖動第二域值減去所述第一差 值計(jì)算單元獲取的差值;所述抽取幀數(shù)計(jì)算單元,用于用所述第四差值計(jì)算單元的計(jì)算結(jié)果除以 每幀語音幀播放時間,獲得抽取靜音幀的幀數(shù);所述抽幀單元,用于從靜音幀構(gòu)成的靜音段中抽取所迷幀數(shù)的靜音幀。
全文摘要
本發(fā)明公開了一種解決網(wǎng)絡(luò)抖動的方法及裝置。本發(fā)明方法包括在接收到的語音幀中查找是否有靜音幀,如果有,若判斷得到網(wǎng)絡(luò)延時增加,則在靜音幀構(gòu)成的靜音段中插入靜音幀,若判斷得到網(wǎng)絡(luò)延時減小,則從靜音幀構(gòu)成的靜音段中抽取靜音幀。本發(fā)明還提供了一種與所述方法對應(yīng)的解決網(wǎng)絡(luò)抖動的裝置。當(dāng)網(wǎng)絡(luò)延時變化時,在本發(fā)明實(shí)施例通過改變接收到的語音幀中的靜音幀的數(shù)量,調(diào)整播放接收到的語音幀的時間以消除網(wǎng)絡(luò)抖動對語音通信的影響,并且,插入或者抽取靜音幀并不影響非靜音幀的播放。因此,本發(fā)明實(shí)施例提供的技術(shù)方案不僅解決了網(wǎng)絡(luò)抖動問題,而且還解決了因網(wǎng)絡(luò)抖動引起的語音失真問題。
文檔編號G10L19/00GK101119323SQ20071015467
公開日2008年2月6日 申請日期2007年9月21日 優(yōu)先權(quán)日2007年9月21日
發(fā)明者王新亮 申請人:騰訊科技(深圳)有限公司