《對高帶信號進行幀錯誤隱藏的方法及裝置》是華為技術有限公司於2007年11月24日申請的發明專利,該專利的申請號為2007101945709,公布號為CN101231849,公布日為2008年7月30日,發明人是許劍峰、苗磊、胡晨、張清、許麗淨、李偉、杜正中、楊毅、齊峰岩、詹五洲、王東琦。
《對高帶信號進行幀錯誤隱藏的方法及裝置》包括:計算高帶信號關於低帶信號基音周期信息的周期性強度;判斷所述周期性強度是否大於或等於預先設定的閾值,是則採用基音周期重複的方法對當前丟失幀的高帶信號進行幀錯誤隱藏;否則採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。該發明還公開了一種高帶信號幀錯誤隱藏裝置和一種語音解碼器。使用該發明避免了由於高帶信號幀錯誤隱藏方法而引入的高頻噪聲或破壞高帶信號的周期性,導致的語音信號音質降低的問題。
2014年11月6日,《對高帶信號進行幀錯誤隱藏的方法及裝置》獲得第十六屆中國專利優秀獎。
(概述圖為《對高帶信號進行幀錯誤隱藏的方法及裝置》摘要附圖)
基本介紹
- 中文名:對高帶信號進行幀錯誤隱藏的方法及裝置
- 公布號:CN101231849
- 公布日:2008年7月30日
- 申請號:2007101945709
- 申請日:2007年11月24日
- 申請人:華為技術有限公司
- 地址:廣東省深圳市龍崗區坂田華為總部辦公樓
- 發明人:許劍峰、苗磊、胡晨、張清、許麗淨、李偉、杜正中、楊毅、齊峰岩、詹五洲、王東琦
- 分類號:G10L19/00(2006.01);G10L19/12(2006.01);G10L19/14(2006.01)
- 類別:發明專利
專利背景,發明內容,專利目的,技術方案,改善效果,附圖說明,權利要求,實施方式,榮譽表彰,
專利背景
大多數傳統的語音編解碼器的語音信號頻寬一般較低,例如屬於窄帶的語音編解碼器只有300赫茲-3400赫茲的頻寬;只有少數語音編解碼器是寬頻的,例如語音信號頻寬達到50赫茲-7000赫茲。由於近來網路技術的發展,網路傳輸速率越來越高,對寬頻語音編解碼器需求也越來越多,有的語音編解碼器的頻寬甚至達到超寬頻(50赫茲-14000赫茲)和全帶(20赫茲-20000赫茲)。
為了使新的寬頻語音編解碼器與傳統的語音編解碼能夠兼容互通,有的語音編解碼器分為多層。以下以包含兩層的語音編解碼器為例進行說明。
包含兩層的語音編解碼器的編碼端首先通過一個分析正交鏡像濾波器將輸入信號分為高帶信號和低帶信號,低帶信號輸入到低帶編碼器中進行編碼,高帶輸入信號輸入到高帶編碼器中進行編碼。獲得的低帶數據和高帶數據通過碼流復用編碼器組合成碼流,傳送出去。低帶信號是指信號範圍處於信號頻寬較低段的信號,高帶信號是指信號範圍處於信號頻寬較高段的信號。例如輸入信號頻寬為50赫茲-7000赫茲,對應的低帶信號頻寬可以為50赫茲-4000赫茲,高帶信號頻寬可以為4000赫茲-7000赫茲。在解碼端通過語音解碼器進行解碼,圖1為現有的語音解碼器結構圖,如圖1所示,碼流經過碼流解復用分解成低帶碼流和高帶碼流,分別輸入到低帶解碼器和高帶解碼器進行解碼,得到低帶信號和高帶信號。低帶信號和高帶信號再經過合成正交鏡像濾波器,可以合成最終輸出的語音信號。
2007年11月前網路協定承載語音(VoIP,Voiceover IP)套用和無線網路語音套用越來越廣泛,語音的傳輸需要實時可靠的傳送較小的數據包。當一個語音幀在傳輸過程中被丟棄時,通常沒有時間重新傳送丟棄的幀。同樣的,當一個語音幀經過一段較長的路由而在需要播放時不能及時到達,則這個語音幀也失去了存在的意義,相當於一個丟失幀。因此在語音系統中,語音幀不能到達或者不能及時到達,都被認為是丟失幀。
如果對丟失的幀不進行處理,則語音就會出現斷續的現象,影響語音質量。因此對於幀丟失的情況,需要進行幀錯誤隱藏處理,即對丟失的語音數據進行估計,用估計的數據替代丟失的數據,則可以在幀丟失環境中獲得更好的語音質量。對於解碼的時候分為高帶信號和低帶信號的語音編解碼器,一般在幀錯誤隱藏的時候,也是分別對低帶信號和高帶信號進行幀錯誤隱藏,然後再將幀錯誤隱藏後得到的高帶信號和低帶信號輸入到合成正交鏡像濾波器,以合成最終輸出的語音信號。
幀錯誤隱藏從方法上劃分為插入、插值、再生等方法。
插入的幀錯誤隱藏方法包括拼接、靜音替代、噪聲替代和上幀重複等。其中,上幀重複是利用最近收到的幀替換丟失的幀。這種方法計算複雜度低,性能也不錯,隨著時間增長,一般會將波形的幅度進行衰減,以減少簡單重複引起的不舒適噪聲。圖2為現有的利用上幀重複的方法進行幀錯誤隱藏的示意圖。如圖2所示,當接收到的信號中第n+1幀丟失時,對該信號進行幀錯誤隱藏處理,即利用前一幀即第n幀替代丟失的第n+1幀。
插值的幀錯誤隱藏方法包括波形替代、基音波形複製和時域波形修正等。其中,基音波形複製方法的基本依據是人的語音具有一定的周期性。該方法首先利用自相關法檢測出基音周期值,然後根據計算得到的基音周期,以一個基音周期的波形的合適長度或重複,作為丟失幀。圖3為現有的利用基音波形複製方法進行幀錯誤隱藏的示意圖。如圖3所示,接收到的數據中第n+3幀丟失,其幀長為L,計算得到的基音周期為tlb。則在對接收到的信息進行幀錯誤隱藏時,取一個基音周期中的長度為L的波形,作為丟失幀的波形。時域波形修正的方法是在發生幀丟失時,將後續的幾個幀進行拉伸,和前面的一幀重疊相加,交接處加窗(例如漢明窗)函式。該方法在丟失幀的接合處聽不到“咔嚓”和爆破聲,但是會引入較大的時延。
再生方法是利用前面若干幀或前後幀的編碼器參數,重新合成丟失的幀。這種幀錯誤隱藏方法是和編解碼算法相關的。該方法又分為編碼器參數插值、基於模型的再生方法等。其中,編碼器參數插值是用丟失幀前後幀的編碼器參數進行插值,得到丟失幀參數的估計值,然後恢復出丟失的幀。例如對於線性預測編碼器,首先對前後幀的線性預測編碼(LPC,linear predictive coding)係數進行插值,然後判斷丟失幀是否具有周期性,對於具有周期性和沒有周期性的丟失幀,分別採用周期脈衝激勵和隨機噪聲激勵,通過LPC濾波器,產生丟失幀的語音信號。基於模型的再生方法是將丟失幀前面的語音或前後語音輸入一個再生模型,重新生成丟失幀。最常見的模型是線性預測模型,這種方法要計算線性預測係數、基音周期,具有較高的算法複雜度,但是能夠得到比較理想的音質。
圖4為現有的各種幀錯誤隱藏方法的音質與運算複雜度的關係。如圖4所示,基於模型的再生方法的音質和運算複雜度都是最高的,而上幀重複方法的音質較好,運算複雜度也不高。
因為低帶信號對音質的影響高於高帶信號對音質的影響,因此一般低帶信號採用較高複雜度和較高音質的幀錯誤隱藏算法(例如,基音波形複製、時域波形修正、編碼器參數插值和基於模型的再生方法),高帶信號可以採用較低複雜度和較低音質的幀錯誤隱藏算法,這樣可以取得音質和複雜度之間的折衷。由於線性預測模型的幀錯誤隱藏算法具備較好的音質,因此在低帶信號中使用對改善音質有很好的作用。
現有技術一的語音解碼器中,對低帶信號採用基於線性預測模型的幀錯誤隱藏,而對高帶信號使用基音波形複製的方法來進行幀錯誤隱藏,其中高帶信號的幀錯誤隱藏中使用的基音周期,是低帶信號的基音周期。
低帶信號計算基音周期值的方法可以基於對低帶信號的線性預測分析殘差計算自相關函式。自相關函式公式如下:
其中r(i)是關於i的自相關函式,elb(j)是低帶信號關於線性預測分析的殘差。N是計算自相關函式的視窗,例如可以取一幀語音信號的樣點數。min_pitch是基音周期搜尋下限,max_pitch是基音周期搜尋上限。則低帶信號基音周期為:
,即tlb為使r(i)最大的i值。
則基於基音波形複製的高帶信號的恢復公式為:,其中shb(n),n=0,...N-1是當前丟失幀恢復後的高帶信號,N為一幀包含的樣點個數。shb(n),n=-M,...-1是高帶信號的歷史緩衝,M是高帶信號歷史緩衝中的樣點個數。
簡單的重複周期性,對於大量連續丟幀時,會產生具有過強周期性的信號。有時為了提高主觀效果,對恢復的信號要乘以一個衰減係數α,此時,基於基音波形複製的高帶信號的恢復公式變為:,其中N為一幀包含的樣點個數,衰減係數α取值範圍是0到1之間的非負數,可以是一個常數,例如0.8,也可以是一個根據連續丟包數自適應變化的變數。例如對於第一個丟失幀,乘以一個較大的衰減係數,如0.9,對於第二個及之後的連續丟失幀,乘以一個較小的衰減係數,如0.7。
該方案直接用低帶信號的基音周期,對高帶信號進行基音波形複製,以恢復高帶信號。但是低帶信號的基音周期未必與高帶信號的基音周期一致。一種典型的情況是低帶信號具有很強的周期性,而高帶信號則是無規則的噪聲。當高帶信號基音周期與低帶信號基音周期不一致時,這種方法就不能夠很好的恢復高帶信號,並且會產生一些高頻噪聲,從而影響語音解碼器輸出的語音信號的音質。例如當低帶信號頻率範圍是50赫茲至4000赫茲,高帶信號頻率範圍是4000赫茲至7000赫茲時,這種方法會產生7000赫茲至8000赫茲的噪聲。
現有技術二的語音解碼器中,對低帶信號採用基音波形複製的幀錯誤隱藏,而對高帶信號使用上幀重複並衰減的方法來進行幀錯誤隱藏。
低帶信號計算基音周期值的可以基於對低帶信號計算自相關函式。自相關函式公式如下:
其中r(i)是關於i的自相關函式,slb(j)是低帶語音信號。N是計算自相關函式的視窗,例如可以取一幀語音信號的樣點數。min_pitch是基音周期搜尋下限,max_pitch是基音周期搜尋上限。則低帶信號基音周期為:
,即tlb為令r(i)最大的i值。
基於上幀重複並衰減的方法得到的高帶信號恢復公式為:,其中N為一幀包含的樣點個數,衰減係數α取值範圍是0到1之間的非負數。可以是一個常數,如0.8,也可以是一個根據連續丟包數自適應變化的變數。例如對於第一個丟失幀,乘以一個較大的衰減係數,如0.9,對於第二個及之後的連續丟失幀,乘以一個較小的衰減係數,如0.7。
這種方法不會引入類似現有技術一的高頻噪聲。但是,該方法的缺點是沒有考慮信號的周期性,當信號具有較強周期性時,該方法就不能很好的恢復高帶信號。圖5為利用現有技術二對高帶信號進行幀錯誤隱藏的示意圖。如圖5所示,低帶信號和高帶信號同時具有一致的周期性,但是用現有技術二對高帶信號進行幀錯誤隱藏時,破壞了高帶信號原有的周期性,從而降低了語音解碼器輸出的語音信號的音質。
發明內容
專利目的
《對高帶信號進行幀錯誤隱藏的方法及裝置》實施例提供一種對高帶信號進行幀錯誤隱藏的方法,提高語音解碼器輸出的語音信號的音質。
該發明實施例還提供一種高帶信號幀錯誤隱藏裝置,提高語音解碼器輸出的語音信號的音質。
該發明實施例還提供一種語音解碼器,提高語音解碼器輸出的語音信號的音質。
技術方案
一種對高帶信號進行幀錯誤隱藏的方法,包括:計算高帶信號關於低帶信號基音周期信息的周期性強度;判斷所述周期性強度是否大於或等於預先設定的閾值,是則採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;否則採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。
一種高帶信號幀錯誤隱藏裝置,包括周期性強度計算模組、基音周期重複模組和上幀數據重複模組,所述周期性強度計算模組,用於計算高帶信號關於低帶信號基音周期信息的周期性強度;判斷所述周期性強度是否大於預先設定的閾值,是則將當前丟失幀的高帶信號傳輸到所述基音周期重複模組;否則將當前丟失幀的高帶信號傳輸到所述上幀數據重複模組;所述基音周期重複模組,用於採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;所述上幀數據重複模組,用於採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。
一種語音解碼器,包括:碼流解復用模組、低帶解碼器、高帶解碼器、低帶信號幀錯誤隱藏裝置、高帶信號幀錯誤隱藏裝置和合成正交鏡像濾波器,所述碼流解碼復用模組,用於將輸入的碼流解復用分解為低帶碼流和高帶碼流;所述低帶解碼器和高帶解碼器,分別用於將低帶碼流和高帶碼流進行解碼後,得到低帶信號和高帶信號;所述低帶信號幀錯誤隱藏裝置,用於對低帶信號進行幀錯誤隱藏處理,得到低帶信號的基音周期;所述高帶信號幀錯誤隱藏裝置,用於計算高帶信號關於低帶信號基音周期信息的周期性強度;判斷所述周期性強度是否大於預先設定的閾值,是則採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;否則採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;所述合成正交鏡像濾波器,用於將幀錯誤隱藏處理後的低帶信號和高帶信號合成最終輸出的語音信號。
改善效果
與現有技術相比,該發明實施例所提供的技術方案,計算高帶信號關於低帶信號基音周期信息的周期性強度;並判斷高帶信號關於低帶信號基音周期信息的周期性強度是否大於預先設定的閾值,是則判斷其關於低帶信號基音周期信息的周期性強,採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏,從而使得在高帶信號周期性強時,不會像現有技術二中破壞高帶信號的周期性,從而避免了由於破壞高帶信號的周期性而引起的語音信號音質降低的問題。
當高帶信號關於低帶信號基音周期信息的周期性強度小於預先設定的閾值時,則判斷高帶信號關於低帶信號基音周期信息的周期性較弱,採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏,從而避免了在高帶信號周期性很弱時,用現有技術一的處理方法引入的高頻噪聲,從而避免了由於幀錯誤隱藏處理引入高頻噪聲而引起的語音信號音質降低的問題。可見,該發明實施例的對高帶信號進行幀錯誤隱藏處理的技術方案,提高了語音解碼器輸出的語音信號的音質。
附圖說明
圖1為現有的語音解碼器結構圖;
圖2為現有的利用上幀重複的方法進行幀錯誤隱藏的示意圖;
圖3為現有的利用基音波形複製方法進行幀錯誤隱藏的示意圖;
圖4為現有的各種幀錯誤隱藏方法的音質與運算複雜度的關係;
圖5為利用現有技術二對高帶信號進行幀錯誤隱藏的示意圖;
圖6為該發明實施例中語音信號解碼器的結構圖;
圖7為該發明實施例中的對高帶信號進行幀錯誤隱藏的方法流程圖;
圖8為該發明實施例中高帶信號幀錯誤隱藏裝置的結構圖;
圖9為該發明實施例中基音周期重複模組的結構圖;
圖10為該發明實施例中一種上幀數據重複模組的結構圖;
圖11為該發明實施例中另一種上幀數據重複模組的結構圖。
權利要求
1.一種對高帶信號進行幀錯誤隱藏的方法,其特徵在於,該方法包括:計算高帶信號關於低帶信號基音周期信息的周期性強度;判斷所述周期性強度是否大於或等於預先設定的閾值,是則採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;否則採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。
2.如權利要求1所述的方法,其特徵在於,所述低帶信號基音周期信息包括低帶信號基音周期或低帶信號基音周期區間,所述區間以低帶信號基音周期減去M所得數值和最小基音周期比較的較大值為第一區間邊界,以低帶信號基音周期加上M所得數值和最大基音周期比較的較小值為第二區間邊界,其中M小於等於3。
3.如權利要求1或2所述的方法,其特徵在於,所述低帶信號基音周期信息通過低帶信號的幀錯誤隱藏處理得到。
4.如權利要求3所述的方法,其特徵在於,所述低帶信號幀錯誤隱藏處理採用的方法為:基音波形複製方法、基於模型的再生方法或包括基音周期參數的編碼器參數插值方法。
5.如權利要求1所述的方法,其特徵在於,所述計算高帶信號關於低帶信號基音周期信息的周期性強度為:利用當前丟失幀的高帶信號的歷史緩衝,通過自相關函式或採用歸一化自相關函式計算高帶信號關於低帶信號基音周期信息的周期性強度。
6.如權利要求1或5所述的方法,其特徵在於,所述基音周期重複的方法為基音波形複製方法、基於波形複製並衰減的方法或基於模型的再生方法。
7.如權利要求6所述的方法,其特徵在於,所述基音波形複製並衰減的方法對當前丟失幀的高帶信號進行幀錯誤隱藏可以包括:根據基音周期對當前幀信號進行複製並對所述複製的信號加正弦窗並衰減得到當前幀的IMDCT係數的估算值;將所述估算值與上一幀IMDCT係數的後一幀進行疊加並衰減。
8.如權利要求7所述的方法,其特徵在於,所述估算值與上一幀IMDCT係數的後一幀進行疊加並衰減時的衰減係數可以為根據連續丟包數自適應變化的變數。
9.如權利要求1所述的方法,其特徵在於,所述上幀數據重複的方法為上幀重複方法、上幀重複並衰減方法或編碼器參數插值方法。
10.如權利要求9所述的方法,其特徵在於,所述採用上幀重複並衰減方法,對當前丟失幀的高帶信號進行幀錯誤隱藏包括:將當前丟失幀的上幀從頻率域數據恢復時域數據時的中間數據作為當前丟失幀的相應中間數據,或將上幀從頻率域數據恢復時域數據時的中間數據衰減後作為當前丟失幀的相應中間數據;利用所述丟失幀的相應中間數據合成為當前丟失幀的時域數據。
11.如權利要求10所述的方法,其特徵在於,所述中間數據為反修正離散餘弦變換係數IMDCT係數時,所述利用當前丟失幀的相應中間數據合成為當前丟失幀的時域數據為:將所述當前丟失幀的IMDCT係數和上幀的IMDCT係數進行疊加得到當前丟失幀的時域數據。
12.一種高帶信號幀錯誤隱藏裝置,其特徵在於,該高帶信號幀錯誤隱藏裝置包括周期性強度計算模組、基音周期重複模組和上幀數據重複模組,所述周期性強度計算模組,用於計算高帶信號關於低帶信號基音周期信息的周期性強度;判斷所述周期性強度是否大於預先設定的閾值,是則將當前丟失幀的高帶信號傳輸到所述基音周期重複模組;否則將當前丟失幀的高帶信號傳輸到所述上幀數據重複模組;所述基音周期重複模組,用於採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;所述上幀數據重複模組,用於採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。
13.如權利要求12所述的高帶信號幀錯誤隱藏裝置,其特徵在於,所述上幀數據重複模組包括上幀高帶信號複製模組和衰減模組,所述上幀高帶信號複製模組,用於將當前丟失幀的上幀的高帶信號複製到當前丟失幀;所述衰減模組,用於將所述上幀高帶信號複製模組複製的上幀的高帶信號乘以衰減係數後,得到幀錯誤隱藏處理後的高帶信號。
14.如權利要求12所述的高帶信號幀錯誤隱藏裝置,其特徵在於,所述上幀數據重複模組包括上幀的IMDCT係數存儲模組、衰減模組和疊加運算模組,所述上幀的IMDCT係數存儲模組,用於存儲上幀從頻率域數據恢復時域數據過程中的反修正離散餘弦變換係數IMDCT係數;所述衰減模組,用於將所述上幀的IMDCT係數存儲模組的IMDCT係數衰減,得到當前丟失幀的IMDCT係數;所述疊加運算模組,用於將所述上幀的IMDCT係數存儲模組的IMDCT係數和所述衰減模組得到的當前丟失幀的IMDCT係數進行疊加運算後,得到當前丟失幀的時域數據。
15.如權利要求12所述的高帶信號幀錯誤隱藏裝置,其特徵在於,所述基音周期重複模組包括:複製模組,衰減模組和疊加運算模組,所述複製模組用於根據基音周期對當前幀信號進行複製,所述衰減模組用於所述複製的信號加正弦窗並衰減得到當前幀的IMDCT係數的估算值,所述疊加運算模組用於將所述估算值與上一幀IMDCT係數的後一幀進行疊加並衰減。
16.一種語音解碼器,其特徵在於,該語音解碼器包括:碼流解復用模組、低帶解碼器、高帶解碼器、低帶信號幀錯誤隱藏裝置、高帶信號幀錯誤隱藏裝置和合成正交鏡像濾波器,所述碼流解碼復用模組,用於將輸入的碼流解復用分解為低帶碼流和高帶碼流;所述低帶解碼器和高帶解碼器,分別用於將低帶碼流和高帶碼流進行解碼後,得到低帶信號和高帶信號;所述低帶信號幀錯誤隱藏裝置,用於對低帶信號進行幀錯誤隱藏處理,得到低帶信號的基音周期;所述高帶信號幀錯誤隱藏裝置,用於計算高帶信號關於低帶信號基音周期信息的周期性強度;判斷所述周期性強度是否大於預先設定的閾值,是則採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;否則採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;所述合成正交鏡像濾波器,用於將幀錯誤隱藏處理後的低帶信號和高帶信號合成最終輸出的語音信號。
17.如權利要求16所述的語音解碼器,其特徵在於,所述高帶信號幀錯誤隱藏裝置包括周期性強度計算模組、基音周期重複模組和上幀數據重複模組,所述周期性強度計算模組,用於計算當前丟失幀的高帶信號關於低帶信號基音周期信息的周期性強度;判斷所述周期性強度是否大於預先設定的閾值,是則將當前丟失幀的高帶信號傳輸到所述基音周期重複模組;否則將當前丟失幀的高帶信號傳輸到所述上幀數據重複模組;所述基音周期重複模組,用於採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;所述上幀數據重複模組,用於採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。
18.如權利要求17所述的語音解碼器,其特徵在於,所述上幀數據重複模組包括上幀高帶信號複製模組和衰減模組,所述上幀高帶信號複製模組,用於將當前丟失幀的上幀的高帶信號複製到當前丟失幀;所述衰減模組,用於將所述上幀高帶信號複製模組複製的上幀的高帶信號乘以衰減係數後,得到幀錯誤隱藏處理後的高帶信號。
19.如權利要求17所述的語音解碼器,其特徵在於,所述上幀數據重複模組包括上幀的IMDCT係數存儲模組、衰減模組和疊加運算模組,所述上幀的IMDCT係數存儲模組,用於存儲上幀從頻率域數據恢復時域數據過程中的反修正離散餘弦變換係數IMDCT係數;所述衰減模組,用於將所述上幀的IMDCT係數存儲模組的IMDCT係數衰減,得到當前丟失幀的IMDCT係數;所述疊加運算模組,用於將所述上幀的IMDCT係數存儲模組的IMDCT係數和所述衰減模組得到的當前丟失幀的IMDCT係數進行疊加運算後,得到當前丟失幀的時域數據。
20.如權利要求16所述的語音解碼器,其特徵在於,所述基音周期重複模組包括:複製模組,衰減模組和疊加運算模組,所述複製模組用於根據基音周期對當前幀信號進行複製,所述衰減模組用於所述複製的信號加正弦窗並衰減得到當前幀的IMDCT係數的估算值,所述疊加運算模組用於將所述估算值與上一幀IMDCT係數的後一幀進行疊加並衰減。
實施方式
圖6為該發明實施例中語音解碼器的結構圖。如圖6所示,該語音解碼器包括碼流解復用模組、低帶解碼器、高帶解碼器、低帶信號幀錯誤隱藏裝置、高帶信號幀錯誤隱藏裝置和合成正交鏡像濾波器。
碼流解碼復用模組將輸入的碼流解復用分解為低帶碼流和高帶碼流;低帶碼流和高帶碼流分別由低帶解碼器和高帶解碼器進行解碼後,得到低帶信號和高帶信號,然後再分別經低帶信號幀錯誤隱藏裝置和高帶信號幀錯誤隱藏裝置的幀錯誤隱藏處理後,輸入合成正交鏡像濾波器,合成最終輸出的語音信號。
其中,碼流解復用模組、低帶解碼器、高帶解碼器、低帶信號幀錯誤隱藏裝置及合成正交鏡像濾波器對於接收到的數據的處理,與現有技術相同,因此在此不再贅述。
高帶信號幀錯誤隱藏裝置執行該發明實施例提供的對高帶信號進行幀錯誤隱藏的方法,包括:計算得到高帶信號關於低帶信號基音周期信息的周期性強度;判斷高帶信號的周期性強度是否大於或等於預先設定的閾值,是則採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏;否則採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。
在該發明的另一實施例中的語音解碼器,低帶信號幀錯誤隱藏裝置也可以不具有計算低帶信號基音周期信息的功能,此時,該語音解碼器需要進一步包括基音周期計算模組,用於計算得到低帶信號的基音周期。
圖7為該發明實施例中對高帶信號進行幀錯誤隱藏的方法流程圖,圖8為該發明實施例中高帶信號幀錯誤隱藏裝置的結構圖。以下結合圖7和圖8對該發明實施例提供的對高帶信號進行幀錯誤隱藏的技術方案進行詳細說明。
如圖7所示,該發明實施例中的對高帶信號進行幀錯誤隱藏的方法包括以下步驟:
步驟700,利用低帶信號幀錯誤隱藏計算得到的低帶信號基音周期,計算高帶信號關於低帶信號基音周期信息的周期性強度。
該步驟中,低帶信號幀錯誤隱藏採用的是可以得到基音周期的幀錯誤隱藏方法,例如可以是基音波形複製方法、基於模型的再生方法或包括基音周期參數的編碼器參數插值方法。其中,基於模型的再生方法例如可以是基於線性預測模型再生的幀錯誤隱藏方法。
該步驟中,高帶信號幀錯誤隱藏裝置首先利用低帶信號幀錯誤隱藏計算得到的低帶信號基音周期tlb,用高帶信號歷史緩衝shb(n)計算高帶信號關於tlb的周期性強度r(tlb)。
通常,衡量信號周期性強度的函式有自相關函式、歸一化自相關函式等。
採用自相關函式計算周期性強度的公式為:,其中N為一個正整數常量,一般可以取一幀中高帶信號的採樣點數。
採用歸一化自相關函式計算周期性強度的公式為:,其中N為一個正整數常量,一般可以取一幀中高帶信號的採樣點數。
參見圖8,圖8所示的高帶信號幀錯誤隱藏裝置包括周期性強度計算模組、基音周期重複模組和上幀數據重複模組,其中周期性強度計算模組執行該步驟,利用低帶信號幀錯誤隱藏計算得到的低帶信號基音周期,計算高帶信號關於低帶信號基音周期的周期性強度。
該步驟中,低帶信號基音周期信息除了包括低帶信號基音周期tlb,還可以包括低帶基音周期tlb附近的數值。高帶信號幀錯誤隱藏裝置也可以首先利用低帶信號幀錯誤隱藏計算得到低帶信號基音周期tlb。為了減少高帶信號基音周期搜尋的複雜度及提高高帶信號基音周期的估計精度,進一步可以用低帶基音周期tlb區間,如[max(tlb-m,pit_min),min(tlb+m,pit_max)],對高帶信號計算歸一化自相關函式。用高帶信號歷史緩衝shb(n)計算高帶信號關於[max(tlb-m,pit_min),min(tlb+m,pit_max)]的周期性強度r(tlb)。
,其中,m為搜尋區間的半徑,如可以取值為3或者其他大於等於3的數值,根據大量實驗結果而定,m取值大,則結果更精確,但是算法複雜度也增大。在該實施例中,m取值為3。pit_min為最小基音周期,在該實施例中,pit_min=16。pit_max為最大基音周期,在該實施例中,pit_max=144。其他實施方式中,也可以是pit_min=20,pit_max=143,或者pit_min=16,pit_max=160,則高帶基音周期thb為:
且對應的高帶信號歸一化自相關係數為:,由此獲得高帶信號關於低帶信號基音周期信息的周期性強度。
步驟701,判斷高帶信號關於低帶信號基音周期信息的周期性強度是否大於或等於預先設定的閾值,是則執行步驟702:否則執行步驟703。
該步驟中,對於採用自相關函式計算周期性強度的方法,可以通過大量測試選取一個合適的閾值R,例如可以仿真採用該發明實施例中對高帶信號進行幀錯誤隱藏方法的語音解碼器,得到使用不同閾值時輸出的語音信號,然後計算該語音信號的信噪比,將信噪比最大的語音信號對應的閾值作為該步驟選擇的合適的閾值。或者可以根據經驗值確定該閾值。如果r(ttb)≥R,則判定高帶信號歷史緩衝shb(n)關於tlb具有強周期性,否則關於tlb不具有強周期性。
對於採用歸一化自相關函式計算周期性強度的方法,閾值的取值範圍是0到1之間的非負數。可以通過大量測試選取一個合適的閾值Rnor,例如0.7,具體步驟與採用自相關函式計算周期性強度時選取閾值的方法相同;也可以選擇一個經驗值。如果rnor(ttb)≥Rnor或者rnor_max≥Rnor,則判定高帶信號歷史緩衝shb(n)關於低帶信號基音周期信息具有強周期性,否則關於低帶信號基音周期信息不具有強周期性。
圖8所示的高帶信號幀錯誤隱藏裝置中,周期性強度計算模組在計算得到高帶信號關於低帶信號基音周期信息的周期性強度之後,判斷該計算的高帶信號關於低帶信號基音周期信息的周期性強度是否大於或等於預先在其中設定的閾值,是則由基音周期重複模組進行後續處理,否則由上幀數據重複模組進行後續處理。
步驟702,採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。
該步驟中,基音周期重複的方法可以是基音波形複製或基於模型的再生方法。
該步驟中,例如,採用基音波形複製對高帶信號進行幀錯誤隱藏時,採用下面的公式對當前丟失幀的高帶信號進行恢復:
,其中shb(n),n=0,...N-1是當前丟失幀恢復後的高帶信號,N為一幀包含的樣點個數。shb(n),n=-M,...-1是高帶信號的歷史緩衝,M是高帶信號歷史緩衝中的樣點個數。
採用簡單的重複周期性對高帶信號進行幀錯誤隱藏,在大量連續丟幀時,得到的語音信號會產生具有過強周期性的信號。有時為了提高主觀效果,對恢復的信號要乘以一個衰減係數α,此時,採用基音波形複製並衰減的方法對當前丟失幀的高帶信號進行幀錯誤隱藏得到的高帶信號變為:
,其中N為一幀包含的樣點個數,衰減係數α取值範圍是0到1之間的非負數。可以是一個常數,如0.8,也可以是一個根據連續丟包數自適應變化的變數。例如對於第一個丟失幀,乘以一個較大的衰減係數,如0.9,對於第二個及之後的連續丟失幀,乘以一個較小的衰減係數,如0.7。具體衰減系統確定的方法可以採用與確定閾值時相同的方法,在此不再贅述。
再例如,當是以基於修正型離散餘弦變換(MDCT,Modified Discrete Cosine Transform)的幀錯誤隱藏時,需要首先通過基音周期複製兩幀信號s′hb(n):
,對信號s′hb(n)加正弦窗wtdac(n)並衰減,得到當前幀的IMDCT係數的估算值d(n):,β為衰減因子,如可以取d(n)再與上一幀IMDCT係數d(n)的後一幀進行OLA,並衰減得到當前幀的輸出信號:,此時,衰減係數α取值範圍是0到1之間的非負數。可以是一個常數,如α=0.8,也可以是一個根據連續丟包數自適應變化的變數,如α=1-0.005×(n+1),逐點加強衰減的程度,使輸出的信號變的更為平滑。
圖9所示該發明實施例中一種基音周期重複模組,包括:複製模組,根據基音周期對當前幀信號進行複製,衰減模組根據複製的幀信號加正弦窗並衰減得到當前幀的IMDCT係數的估算值,疊加運算模組將所述估算值與上一幀IMDCT係數的後一幀進行疊加並衰減。
該步驟中,採用基於線性預測模型再生方法對高帶信號進行幀錯誤隱藏時,採用下面的公式,對高帶殘差信號ehb(n)進行基音周期重複。
,其中,ehb(n),n=0,...,N-1為當前丟失幀的高帶殘差信號,ehb(n),n=-M,...-1為高帶信號的歷史緩衝關於線性預測分析的殘差。
然後利用上述高帶殘差信號,通過線性預測合成器合成當前丟失幀的高帶信號,具體公式為:,有時為了提高主觀效果,對恢復的信號要乘以一個衰減係數α,此時,採用基於線性預測模型再生的方法進行幀錯誤隱藏得到的高帶信號變為:,其中shb(n),n=0,...N-1是當前丟失幀恢復後的高帶信號,N為一幀包含的樣點個數。shb(n),n=-M,...-1是高帶信號的歷史緩衝,M是高帶信號歷史緩衝中的樣點個數。衰減係數α取值範圍是0到1之間的非負數。可以是一個常數,如0.8,也可以是一個根據連續丟包數自適應變化的變數。例如對於第一個丟失幀,乘以一個較大的衰減係數,如0.9,對於第二個及之後的連續丟失幀,乘以一個較小的衰減係數,如0.7。
圖8所示的基音周期重複模組執行該步驟,採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏處理。該模組可以採用基音波形複製的方法實現對高帶信號的幀錯誤隱藏處理,或者採用基於模型的再生方法,例如線性預測模型方法實現對高帶信號的幀錯誤隱藏處理。
步驟703,採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。
該步驟中,上幀數據重複的方法可以是上幀重複方法、上幀重複並衰減方法或編碼器參數插值的方法等。
圖8所示的上幀數據重複模組執行該步驟,採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏。具體的詳細的算法,可以是採用上幀重複的方法、上幀重複並衰減的方法或編碼器參數插值的方法執行該步驟。
例如,採用上幀重複並衰減的方法時,可以將上一幀的時域數據複製到當前丟失幀,並乘以一個衰減係數α,即可以採用下面的公式對當前信號進行恢復:,其中N為一幀包含的樣點個數,衰減係數α取值範圍是0到1之間的非負數。可以是一個常數,如0.8,也可以是一個根據連續丟包數自適應變化的變數。例如對於第一個丟失幀,乘以一個較大的衰減係數,如0.9,對於第二個及之後的連續丟失幀,乘以一個較小的衰減係數,如0.7。
圖10為該發明實施例中一種上幀數據重複模組的結構圖,如圖10所示,該上幀數據重複模組包括上幀高帶信號複製模組和衰減模組,上幀高帶信號複製模組將當前丟失幀的上一幀的高帶信號複製到當前丟失幀,並將複製的幀輸入到衰減模組,由衰減模組乘以衰減係數α後,得到幀錯誤隱藏處理後的高帶信號。
如果高帶解碼器的算法是頻域算法,還可以採用編碼器參數插值的方法,對上幀從頻率域數據恢復時域數據過程中的某些中間數據進行重複和衰減,然後再利用這些中間數據合成當前丟失幀的時域數據。
例如,高帶解碼器是以基於修正型離散餘弦變換(MDCT,Modified Discrete Cosine Transform)的高帶解碼器時,可以採用重複和衰減上一幀的反修正型離散餘弦變換係數(IMDCT,Invert Modified Discrete Cosine Transform)來估算得到當前丟失幀的IMDCT係數,然後按照合成公式,將上一幀的IMDCT係數和當前丟失幀的IMDCT係數進行疊加(OLA,Overlap-Add),得到當前丟失幀的時域數據。
估算當前丟失幀IMDCT係數可採用下面的公式:
,其中d(n)為當前丟失幀的IMDCT係數,d(n)為上一幀的IMDCT係數,N為一幀包含的樣點個數,衰減係數α取值範圍是0到1之間的非負數。可以是一個常數,如0.8,也可以是一個根據連續丟包數自適應變化的變數。例如對於第一個丟失幀,乘以一個較大的衰減係數,如0.9,對於第二個及之後的連續丟失幀,乘以一個較小的衰減係數,如0.7。
通過對IMDCT係數進行OLA獲得當前丟失幀的時域數據:,其中shb(n)為當前丟失幀的時域數據,wtdac(n)是OLA合成時需要加的窗函式,例如漢明窗、正弦窗等。窗函式的確定方法與現有技術中計算shb(n)時確定窗函式的方法相同,在此不再贅述。
圖11為該發明實施例中另一種上幀數據重複模組的結構圖。如圖10所示,該上幀數據重複模組包括上幀的IMDCT係數存儲模組、衰減模組和疊加運算模組。其中,上幀的IMDCT係數存儲模組,存儲上幀從頻率域數據恢復時域數據過程中的IMDCT係數,然後經衰減模組將該IMDCT係數衰減α後,得到當前丟失幀的IMDCT係數,將上幀的IMDCT係數與衰減後得到的當前丟失幀的IMDCT係數輸入疊加運算模組進行疊加運算後,得到當前丟失幀經幀錯誤隱藏處理後的高帶信號。
如果採用重複MDCT係數並衰減,而不是採用重複IMDCT係數並衰減,則需要對MDCT係數進行IMDCT變換來得到IMDCT係數,再對IMDCT衰減,並進行OLA來獲得當前丟失幀的時域數據,這樣就會增加IMDCT變換的計算量。因此該領域技術人員應該理解,直接重複上幀IMDCT係數並進行衰減,然後進行OLA操作來合成當前丟失幀的時域數據,可以減少計算量。
再例如高帶解碼器是以基於傅利葉變換(FFT,Fast Fourier Transform)的高帶解碼器時,可以採用重複和衰減上幀的反傅利葉變換係數(IFFT,Invert Fast Fourier Transform)來估算得到當前丟失幀的IFFT係數,再進行OLA,得到當前丟失幀的時域數據。
估算當前丟失幀IFFT係數可採用下面的公式:
,其中d(n)為當前丟失幀的IFFT係數,d(n)為上幀的IFFT係數,M為一幀需要的IFFT係數個數,一般M大於一幀的樣點數N。衰減係數α取值範圍是0到1之間的非負數。可以是一個常數,如0.875,也可以是一個根據連續丟包數自適應變化的變數。例如對於第一個丟失幀,乘以一個較大的衰減係數,如0.9,對於第二個及之後的連續丟失幀,乘以一個較小的衰減係數,如0.7。
對於當前丟失幀的前面M-N個樣點,採用下面的OLA公式進行恢復:
,其中shb(n)為當前丟失幀的時域數據,w(n)是OLA合成時需要加的窗函式,例如漢明窗、正弦窗等。
對於當前丟失幀的後面2N-M個樣點,採用下面的公式恢復:
shb(n)=d(n),n=M-N,...N-1,其中,M為一幀需要的IFFT係數個數,N為一幀的採樣點數。
除兩層的編解碼器之外,有的語音解碼器還可以分為包含核心層和增強層的多層解碼器。核心編解碼器就是一個傳統的窄帶或寬頻編解碼器,在核心層的基礎上,擴展出一些增強層。這樣其核心層就可以直接與對應的傳統語音編解碼器互通。有的增強層屬於低帶增強層,用於提高低帶語音信號的音質。有的增強層屬於高帶增強層,用於將語音頻寬進行擴展,例如將窄帶信號擴展為寬頻信號,或者將寬頻信號擴展為超寬頻信號,甚至可以將超寬頻信號擴展為全帶信號。但是無論是大於兩層的語音解碼器或是兩層的語音解碼器,都要在各自層的信號解碼後,分別合併為低帶信號和高帶信號,並分別進行幀錯誤隱藏處理,然後再得到語音解碼器輸出的語音信號,因此,該發明實施例提供的對高帶信號進行幀錯誤隱藏的技術方案,同樣適用於包括核心層和增強層的多層解碼器。
由以上所述可以看出,該發明實施例所提供的技術方案,計算高帶信號關於低帶信號基音周期信息的周期性強度;並判斷高帶信號關於低帶信號基音周期信息的周期性強度是否大於預先設定的閾值,是則判斷其周期性強,採用基音周期重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏,從而使得在高帶信號周期性強時,不會像現有技術二中破壞高帶信號的周期性,從而避免了由於破壞高帶信號的周期性而引起的語音信號音質降低的問題。
同時,該發明實施例中利用低帶信號幀錯誤隱藏處理時得到有低帶信號基音周期,計算關於高帶信號關於低帶信號基音周期信息的周期性強度,從而減小了專門設定周期性強度計算模組所需要的硬體開銷。
當高帶信號的周期性強度小於預先設定的閾值時,則判斷高帶信號的周期性較弱,採用上幀數據重複的方法,對當前丟失幀的高帶信號進行幀錯誤隱藏,從而避免了在高帶信號周期性很弱時,用現有技術一的處理方法引入的高頻噪聲,從而避免了由於幀錯誤隱藏處理引入高頻噪聲而引起的語音信號音質降低的問題。可見,該發明實施例的對高帶信號進行幀錯誤隱藏處理的技術方案,提高了語音解碼器輸出的語音信號的音質。
同時,該發明實施例提供的技術方案,當高帶信號解碼器的算法為頻域算法時,可以利用上幀從頻率數據恢復時域數據時的中間數據,進行當前丟失幀的高帶信號的幀錯誤隱藏處理。當高帶信號採用MDCT編碼時,可以直接重複在解碼是得到的IMDCT係數並進行衰減,然後進行疊加操作來恢復當前丟失幀的時域數據,從而相比重複MDCT係數的方法,減少了計算量。
上述該發明實施例序號僅僅為了描述,不代表實施例的優劣。上述該發明實施例描述的“步驟”一詞也不代表實施例執行方法的順序。
榮譽表彰
2014年11月6日,《對高帶信號進行幀錯誤隱藏的方法及裝置》獲得第十六屆中國專利優秀獎。
註:以上“現有”指“2007年11月以前已有”。