可變速率語音編碼的製作方法
2023-06-17 12:36:46 3
專利名稱:可變速率語音編碼的製作方法
技術領域:
本發明涉及對語音信號的編碼。具體來說,本發明涉及對語音信號進行歸類並根據此歸類而利用多種編碼模式中的一種。
背景技術:
當今的許多通信系統,特別是遠距與數字無線電話應用中,都把話音當作數位訊號發射。這類系統的性能部分取決於以最少的位數精確地代表話音信號。簡單地通過採樣與數位化來發送語音,為了達到普通模擬電話的語音質量,要求數據速率為每秒64kb(kbps)。然而,現有的編碼技術可明顯減少正常語音再現所需的數據速率。
術語「聲碼器」一般指根據人類語音發生模型通過提取諸參數來壓縮發出的語音的裝置。聲碼器包括編碼器與解碼器,編碼器分析送入的語音並提取相關的參數,解碼器用經傳輸信道接收自編碼器的諸參數合成語音。通常把語音信號分成幾幀數據與字塊供聲碼器處理。
圍繞基於線性預測的時域編碼方案建立的編碼器,在數量上遠遠超過了其它各類編碼器。這類技術從語音信號裡提取諸相關的單元,只編碼不相關的單元。基本的線性預測濾波器預測的當前樣本作為過去樣本的一種線性組合。Thomas E.Tremain等人撰寫的論文「一種4.8kbps碼受激線性預測編碼器」(移動衛星會議錄,1998),描術了一例這類特定的編碼算法。
這類編碼方案除去語音中固有的所有自然冗餘度(即相關單元),把數位化語音信號壓縮成低位速率信號。語音一般呈現出唇與舌的機械動作造成的短期冗餘度和聲帶振動造成的長期冗餘度。線性預測方案把這些動作模擬成濾波器,除去冗餘度,再將得到的剩餘(residual)信號模擬成白高斯噪聲。因此,線性預測編碼器通過發送濾波器係數和量化噪聲而不是發送全帶寬的語音信號,可以減小位速率。
然而,即使是這些減小的位速率,也往往超過了有效帶寬,其中語音信號必須遠距離傳播(如地面到衛星),或在擁擠的信道中與許多其它信號共存。因此,要求有一種改進的編碼方案,以實現比線性預測方案更低的位速率。
發明內容
本發明是一種對語音信號進行可變速率編碼的改進的新方法和設備。本發明對輸入語音信號進行歸類並根據此歸類選擇適當的編碼模式。對於每個歸類,本發明選擇以可接受的語音再現質量實現最低位速率的編碼模式。本發明通過僅利用高保真模式(即,廣泛適用於不同類型的語音的高的位速率),在可接受的輸出需要此保真度的語音部分中實現低的平均位速率。本發明在這些模式產生可接受的輸出的語音部分中切換到較低的位速率。
本發明的一個優點在於,以低的位速率對語音進行編碼。低的位速率轉化成較高的容量、較大的範圍以及較低的功率需求。
本發明的一個特徵在於,把輸入語音信號歸類為有效(active)和無效(inactive)區。有效區被進一步歸類為話音(voiced)、非話音(unvoiced)和過渡(transient)區。因此,本發明可依據所需的保真水平把各種編碼模式應用於不同類型的有效語音。
本發明的另一個特徵在於,可依據每個特定模式的強弱來利用編碼模式。在語音信號的性質隨時間而變化時,本發明在這些模式之間的動態切換。
本發明的又一個特徵在於,在適當時,把語音的區域模擬成偽隨機噪聲,從而獲得明顯較低的位速率。本發明以動態的方式使用此編碼,而無論檢測到非話音語音還是背景噪聲。
從以下結合附圖的詳細描述,將使本發明的特徵、目的和優點變得更加明顯起來,圖中類似的標號指示相同或在功能上相似的元件。此外,標號最左邊的數字識別最早出現該標號的圖。
附圖概述
圖1是表示信號傳輸環境的圖;圖2是詳細示出編碼器102和解碼器104的圖;圖3是表示本發明可變速率語音編碼的流程圖;圖4A是表示一幀話音語音分割為若干子幀的圖;圖4B是表示一幀非話音語音分割為若干子幀的圖;圖4C是表示一幀過渡語音分為若干子幀的圖;
圖5是描繪原始參數計算的流程圖;圖6是描繪語音分類為有效或無效的流程圖;圖7A是表示CELP編碼器的圖;圖7B是表示CELP解碼器的圖;圖8是表示音調濾波器模塊的圖;圖9A是表示PPP編碼器的圖;圖9B是表示PPP解碼器的圖;圖10是表示PPP編碼法(包括編解碼)步驟的流程圖;圖11是措述原型剩餘周期提取流程圖;圖12是示出從當前幀剩餘信號提取的原型剩餘周期和從前一幀提取的原型剩餘周期的圖;圖13是計算旋轉參數的流程圖;圖14是表明編碼代碼簿工作的流程圖;圖15A是表示第一濾波器更新模塊實施例的圖;圖15B是表示第一周期內插器模塊實施例的圖;圖16A是表示第二濾波器更新模塊實施例的圖;圖16B是表示第二周期內插器模塊實施例的圖;圖17是描述第一濾波器更新模塊實施例的工作的流程圖;圖18是描述第二濾波器更模塊實施例的工作的流程圖;圖19是描述原型剩餘周期對準與內插的流程圖;圖20是描述第一實施例根據原型剩餘周期重建語音信號的流程圖;圖21是描述第二實施例根據原型剩餘周期重建語音信號的流程圖;圖22A是表示NELP編碼器的圖;圖22B是表示NELP解碼器的圖;和圖23是描述NELP編碼法的流程圖。
本發明的較佳實施方式I.環境概述II.發明概述III.原始參數確定A.計算LPC係數
B.LSI計算C.NACF計算D.音調軌跡與滯後計算E.計算帶能與零交叉率F.計算元音共振峰(formant)餘量IV.有效/無效語音分類A.拖尾(hangover)幀V.有效語音幀分類VI.編碼器/解碼器模式選擇VII.代碼受激的線性預測(CELP)編碼模式A.音調編碼模塊B.編碼代碼簿C.CELP解碼器D.濾波器更新模塊VIII.原型音調周期(PPP)編碼模式A.提取模式B.旋轉相關器C.編碼代碼簿D.濾波器更新模塊E.PPP解碼器F.周期內插器IX.噪聲激勵的線性預測(NELP)編碼模式X.結論。
I.環境概述要發明針對可變速率語音編碼的新穎改進的方法和設備。圖1示出信號傳輸環境100,它包括編碼器102、解碼器104和信號傳輸媒體106。編碼器102對語音信號s(n)編碼,形成的編碼語音信號senc(n)通過傳輸媒體106傳輸給解碼器104,後者對senc(n)解碼而生成合成的語音信號(n)。
這裡的「編碼」一般指包括編碼二者的方法。一般而言,編碼方法和設備試圖將通過傳輸媒體106發送的位數減至最少(即將senc(n)的帶寬減至最少),同時保持可接受的語音再現(即(n)≈s(n))。編碼語音信號的成分隨具體的語音編碼方法而不同。下面描述根據它們工作的各種編碼器102、解碼器104和編碼方法。
下述編碼器102和解碼器104的元件,可用電子硬體,計算機軟體或二者的組合構成,下面按其功能描述這些元件。功能用硬體實施還是用軟體實施,將取決於具體應用和對整個系統的設計限制性。熟練的技術人員應該知道硬軟體在這些場合中的互換性以及如何最佳地實施對每個具體應用描述的功能。
本領域的技術人員應明白,傳輸媒體106可以代表許多不同的傳輸媒體,包括(但不限於)陸基通信線路、基站與衛星間的鏈路、蜂窩電話與基站或蜂窩電話與衛星間的無線通信。
本領域的技術人員還將明白,通信的每一方通常都作發射與接收,因此每一方都要求有編碼器102和解碼器104。然而,下面將把信號傳輸環境100描述成在傳輸媒體106的一端包括編碼器102,另一端包括解碼器104。技術人員將容易明白如何將這些設想擴展到雙向通信。
為了進行描述,假定s(n)是在一般交談中得到的數字語音信號,交談包括不同的語音發聲與靜寂周期。語音信號s(n)最好分成若干幀,每個幀又分成若干子幀(最好為4個)。在作字快處理時,如在本文情況下,一般應用這些任意選擇的幀/子幀邊界,對幀敘述的操作也適用於子幀,在這方面幀與子幀在這裡可互換使用。然而,若是連續處理而不是字塊處理,s(n)就根本無須分為幀/子幀。技術人員很容易明白如何將下述的字塊技術擴展到連續處理。
在一較佳實施例中,s(n)以8kHz作數字採樣。每幀最好含20ms數據,即在8kHz速率下為160個樣本,所以各子幀含40個數據樣本。要著重指出,下面的許多公式都假設了這些值。然而,技術人員將明白,雖然這些參數適合語音編碼,但是僅僅為了示例,可以應用其它合適的替代參數。
II.發明概述本發明的方法和設備涉及到編碼與語音信號s(n)。圖2詳細示出了編碼器102和解碼器104。根據本發明,編碼器102包括原始參數計算模塊202,分類模塊208和一種或多種編碼器模式204。解碼器104包括一種或多種解碼器模式206。解碼器模式數Nd一般等於編碼器模式數Ne。如技術人員所知,編碼器模式,與解碼器模式1相聯繫,其它依次類推。如圖所示,編碼的語音信號senc(n)通過傳輸媒體106發送。
在一較佳實施例中,根據哪一模式最適合當前幀規定的s(n)特性,編碼器102在各幀的多個編碼器模式之間作動態切換,解碼器104也在各幀的相應解碼器模式之間作動態切換。對每一幀選擇一具體模式,以獲得最低位速率並保持解碼器可接受的信號再現。這一過程稱為可變速率語音編碼,因為編碼器的位速率隨時間而變化(作為信號變化的特點)。
圖3是流程圖300,描述了本發明的可變速率語音編碼法。在步驟302,原始參數計算模塊202根據當前幀的數據計算各種參數。在一較佳實施例中,這些參數包括下列參數之一或幾個線性預測編碼(LPC)濾波器係數、線路譜信息(LSI)係數、歸一化自相關函數(MACF)、開環滯後、帶能、零交叉速率和元音共振峰分剩餘信號。
在步驟304、分類模塊208把當前幀分為含「有效」或「無效」的語音。如上所述,s(n)假定對普通談話包括語音周期與靜寂周期。有效語音包括說出的單詞,而無效語音包括其它任何內容,如背景噪聲、靜寂、間歇。下面詳細描述本發明把語音分為有效/無效的方法。
如圖3所示,步驟306研究當前幀在步驟304是否被分為有效或無效,若有效,控制流程進到步驟308;若無效,控制流程進到步驟310。
被分為有效的幀在步驟308再分為話音幀、非話音幀或過渡幀。技術人員應明白,人類語音可用多種不同的方法分類。兩種常用的語音分類是話音聲與非話音聲。根據本發明,把非話音語音都歸為過渡語音。
圖4A示出一例含話音語音402的s(n)部分。產生話音聲時,迫使空氣通過喉門並調節聲帶的緊度,以松馳振蕩方式振動,由此產生激發發音系統的準周期空氣脈衝。話音語音測出的一個共同特性是圖4A所示的音調周期。
圖4B示出一例含非話音語音404的s(n)部分。產生非話音時,在發音系統的某一點形成收縮部(通常朝向嘴端),迫使空氣以足夠高的速度通過該收縮部而產生擾動,得到的非話音語音信號類似於有色噪聲。
圖4C示出一例含過渡語音406(即既不是話音也不是非話音的語音)的s(n)部分。圖4c列舉的過渡語音406可以代表s(n)在非話音語音與話音語音音的轉變。技術人員將明白,可根據這裡描述的技術應用多種不同的語音分類獲得到可比的結果。
在步驟310,根據步驟306和308作出的幀分類,選擇編碼器/解碼器模式。各種編/解碼器模式平行連接,如圖2所示,一種或多種此類模式可在規定時間工作。但如下所述,最好在規定時間只有一種模式工作,並按當前幀分類選擇。
以下幾段描述幾種編/解碼器模式。不同的編/解碼器模式按不同的編碼方案工作。有些模式在語音信號s(n)呈現某些特點的編碼部分更為有效。
在一較佳實施例中,對分類為過渡語音的代碼幀選用「代碼受激線性預測」(CELP)模式,該模式用量化型線性預測剩餘信號激發線性預測發音系統模型。這裡描述的所有編/解碼器模式中,CELP通常產生最準確的語音再現,但要求最高的位速率。在一實施例中,CELP模式實行每秒8500位的編碼。
對分類為話音語音的代碼幀,最好選用「原型音調周期」(PPP)模式。話音語音包含可被PPP模式利用的慢時變周期分量。PPP模式只對每幀內音調周期的子組編碼。語音信號的其餘周期通過這些原型周期間的內插而重建。利用話音語音的周期性,PPP能實現比CELP更低的位速率。且仍能以感性的精確方式再現該語音信號。在一實施例中,PPP模式實行每秒3900位的編碼。
對分類為非話音語音的代碼幀,可選用「噪聲受激線性預測」(CELP)模式,它用經濾波的偽隨機噪聲信號模擬非話音語音。NELP對編碼語音應用最簡單的模型,所以位速率最低。在一實施例中,NELP模式實行每秒1500位的編碼。
同一種編碼技術能以不同的位速率頻繁地工作,性能級別不同。因此,圖2中不同的編碼器/解碼器模式可代表不同的編碼技術的相同編碼技術,或上述情況相組合。技術人員應明白,增加編/解碼器模式數量,選擇模式更靈活,且能導致更低的平均位速率,不過整個系統會更複雜。在指定系統中應用的具體組合,將決定於現有的系統資源與特定的信號環境。
在步驟312,選用的編碼器模式204對當前幀編碼,最好將編碼的數據裝入數據包傳輸。在步驟314,對應的解碼器模式206打開數據包,對收到的數據解碼並重建該語音信號。下面針對合適的編/解碼器模式詳細描述這些操作。
III.原始參數確定圖5是更詳細說明步驟302的流程圖。各種原始參數按本發明計算。這些參數最好包括如LPC係數、線路譜信息(LSI)係數、歸一化自相關函數(NACF)、開環滯後、帶能、零交叉速率和元音共振峰剩餘信號,這些參數在整個系統內按各種方式使用,如下所述。
在一較佳實施例中,原始參數計算模塊202應用「超前(look ahead)」的160+40個樣本,這有幾個原因。首先,160樣本超前可用下一幀的信息計算音調頻率軌跡,明顯增強了下述話音編碼與音調周期估算技術的耐用性。其次,160樣本超前可對將來一幀計算LPC係數、幀能和話音活性,這能有效地多幀量化幀能與LPC係數。再次,附加的40樣本超前可對下述的漢明窗語音計算LPC係數。因此,處理當前幀之前緩衝的樣本數是160+160+40,包括當前幀和160+40樣本超前。
A.計算LPC係數本發明用LPC預測誤差濾波器消除語音信號中的短期冗餘度。LPC濾波器的傳遞函為A(z)=1-i=110aiz-i]]>本發明最好構制一種十階濾波器,如前述公式所示。解碼器中的LPC合成濾波器重新插入冗餘度,並由A(z)的倒數規定1A(z)=11-i=110aiz-i]]>在步驟502,LPC係數ai由s(n)計算如下。在對當前幀編碼期間,最好對下一幀計算LPC參數。
對中心位於第119與第120樣本之間的當前幀應用漢明窗(假定較佳的160樣本幀有一「超前」)。窗示語音信號sw(n)為sw(n)=s(n+40)(0.5+0.46*cos(n-79.580)),0n160]]>40樣本的偏移導致該語音窗的中心位於較佳語音160樣本幀的第119與120樣本之間。
最好將11個自相關值計算成R(k)=m=0159-ksw(m)sw(m+k),0k10]]>對自相關值開窗可減少丟失線路譜對(LSP)的根的可能性,LSP對由LPC係數得出R(k)=h(k)R(k),0≤k≤10導致帶寬略有擴展,如25Hz。值h(k)最好取自255點漢明窗的中心。
接著用Durbin遞歸從開窗的自相關值獲取LPC係數,Durbin遞歸是眾所周知的高效運算方法,在Rabiner Schafer提出的文本「語音信號數字處理法」中作了討論。
B.LSI計算在步驟504,把LPC係數變換成線路譜信息(LSI)係數作量化和內插。LSI係數按本發明以下述方式計算如前一樣,A(z)為A(z)=1-a1z-1-…-a10z-10,式中ai是LPC係數,且1<i<10PA(z)與QA(z)定義如下PA(z)=A(z)+z-11A(z-1)=p0+p1z-1+…+p11z-11,QA(z)=A(z)-z-11A(z-1)=q0+q1z-1+…+q11z-11,其中pi=-ai-a11-i,1≤i≤10qi=-ai+a11-i,1≤i≤10和p0=1 p11=1q0=1 q11=-1線路譜餘弦(LSC)是下述兩函數中-0.1<X<1.0的10個根P′(x)=p′0cos(5cos-1(x))p′1(4cos-1(x))+…+p′4+p′5/2Q′(x)=q′0cos(5cos-1(x))+q′1(4cos-1(x))+…+q′4x+q′5/2式中p′0=1q′0=1p′i=pi-p′i-11≤i≤5q′i=qi+q′i-11≤i≤5
然而以下式計算LSI係數 LSC可按下式從LSI係數裡取回 LPC濾波器的穩定性確保這兩個函數的根交替,即最小根lsc1就是P』(x)的最小根,下一最小根lsc2就是Q(X)的最小根,等等。因此,lsc1、lsc3、lsc5、lsc7、lsc9都是p』(x)的根,而lsc2、lsc4、lsc6、lsc8與lsc0都是Q』(x)的根。
技術人員將明白,最好應用某種計算LSI係數靈敏度的方法來量化。量化處理中可用「靈敏度加權」對每個LSI中的量化誤差合理地加權。
LSI係數用多級矢量量化器(VQ)量化,級數最好取決於所用的具體位速率與代碼簿,而代碼簿的選用以當前幀是否為話音為依據。
矢量量化將如下定義的加權均方誤差(WMSE)減至最小E(x,y)=i=0P-1wi(xi-yi)2]]>式中 是量化的矢量, 是與其有關的加權, 是代碼矢量。在一較佳實施例中, 是靈敏度權和,p=10。
LSI矢量由LSI碼重建,而LSI碼是量化成 得到的,其中CBi是話音或非話音幀的第i級VQ代碼簿(基於指明選擇代碼簿的代碼),codei是第i級的LSI代碼。
在LSI系靈敏變換成LPC係數之前,要作穩定性檢查,確保得到的LPC濾波器不因量化噪聲或將噪聲注入LSI係數的語道誤差而不穩定。若LSI係數保持有序的,則要確保穩定性。
計算原始LPC係數時,使用中心位於幀的第119與120樣本之間的語音窗。該幀其它各點的LPC係數可在前一幀的LSC與當前幀的LSC之間內插近似,得到的內插LSC再到變換回LPC係數。各子幀使用的正確內插為jLscj=(1-ai)lscprevj+ailsccurrp1≤j≤10
式中ai是40個樣本中各四個子幀的內插係數0.375、0.625、0.875、1.000,ilsc是內插的LSC。用內插的LSC計算 和 為Q^A(z)=(1-z-1)j=151-2ilsc2jz-1+z-2]]>所有四個子幀內插的LPC係數作為下式的係數來計算A^(z)=P^A(z)+Q^A(z)2]]>因此 C.NACF計算在步驟506,歸一化自相關函數(WACF)按本發明計算。
下一幀的元音共振峰餘量對40個樣本子幀計算成r(n)=s(n)-i=110a~is(n-i)]]>式中 是相應子幀第i次內插的LPC係數,內插在當前幀的非量化LSC與下一幀的LSC之間進行。下一幀的能量也計算成EN=0.5log2(i=0159r2(n)160)]]>上述計算的餘量經低通濾波和抽取,最好使用一種零相FIR濾波器實施,其長度為15,其係數dfi(-7<i<7)為{0.0800,0.1256,0.2532,0.4376,0.6424,0.8268,0.9544,1.000,0.9544,0.8268,0.6424,0.4376,0.2532,0.1256,0.0800}。低通濾波、抽取的餘量計算為rd(n)=i=-77dfir(Fn+i),0n160/F]]>式中f=2為抽取係數,r(Fn+i),-7≤Fn+i≤6根據非量化LPC係數從當前幀的餘量的最後14個值得到。如上所述,這些LPC係數在前一幀計算和存貯。
下一幀兩子幀(40樣本抽取)的WACF的計算如下Exxk=i=039rd(40k+i)rd(40k+i),k=0,1]]>Exyk,j=i=039rd(40k+i)rd(40k+i-j),]]>12/2≤j<128/2,k=0,1Eyxk,j=i=039rd(40k+i-j)rd(40k+i-j),]]>12/2≤j<128/2,k=0,1n_corrk,j-12/2=(Exyk-j)2ExxEyyk,j,]]>12/2≤j<128/2,k=0,1對n為負的rd(n),一般使用當前幀的低通濾波和抽取的餘量(前一幀存貯的)。當前子幀c_corr的NACF也在前一幀計算和存貯。
D.音調軌跡與滯後計算在步驟508,按本發明計算音調軌跡音調滯後。最好按下列公式用有反向軌跡的Viterbi類搜索法計算音調滯後R1i=n_corr0,j+max{n_corr1,j+FAN1,0},]]>0≤i<116/2,0≤j<FAN1,2R2i=c_corr1,j+max{R1j+FAN1,0),]]>0≤i<116/2,0≤j<FAN1,2RM2i=R2i+max{c_corr0,j+FAN1,0),]]>0≤i<116/2,0≤j<FANi,1.
其中FANij是2×58矩陣,{{0,2},{0,3},{2,2},{2,3},{2,4},{3,4},{4,4},{5,4},
{5,5},{6,5},{7,5},{8,6},{9,6},{10,6},{11,6},{11,7},{12,7},{13,7},{14,8},{15,8},{16,8},{16,9},{17,9},{18,9},{19,9},{20,10},{21,10},{22,10},{22,11},{23,11},{24,11},{25,12},{26,12},{27,12},{28,12},{28,13},{29,13},{30,13},{31,14},{32,14},{33,14},{33,15},{34,15},{35,15},{36,15},{37,16},{38,16},{39,16},{39,17},{40,17},{41,16},{42,16},{43,15},{44,14},{45,13},{45,13},{46,12},{47,11}}矢量RM2j經內插得R2i+1值為RMiF+1=j=04cfjRM(i-1+j)F,1i112/2]]>RM1=(RM0+RM2)/2RM2*56+1=(RM2*56+RM2*57)/2RM2*57+1=RM2*57其中cfj是內插濾波器,係數為{-0.0625,0.5625,0.5625,-0.0625}。然後選擇滯後Lc,使RLc-12=max{Ri},4≤i<116,將當前幀的NACF置成RLc-12/4。再搜索對應於大於0.9RLc-12的最大相關的滯後,消除滯後倍數,其中Rmax{[Lc/M]-14.16}R[Lc/M]-10for all1M[Lc/16]]]>E.計算帶能與零交叉速率在步驟510,按本發明計算0-2kHz帶與2kHz-4Khz帶內的能量EL=i=0159sL2(n)]]>EH=i=0159sH2(n)]]>其中SL(z)=S(z)bl0+i=115bliz-ial0+i=115aliz-i]]>SH(z)=S(z)bh0+i=115bhiz-iah0+i=115ahiz-i]]>S(z),SL(z)和SH(z)分別是輸入語音信號s(n),低通信號SL(n)和高通信號Sh(n)的z變換,bl={0.0003,0.0048,0.0333,0.1443,0.4329,
0.9524,1.5873,2.0409,2.0409,1.5873,0.9524,0.4329,0.1443,0.0333,0.0048,0.0003},al={1.0,0.9155,2.4074,1.6511,2.0597,1.05854,0.7976,0.3020,0.1465,0.0394,0.0122,0.0021,0.0004,0.0,0.0,0.0},bh={0.0013,-0.0189,0.1324,-0.5737,1.7212,-3.7867,6.3112,-8.1144,8.1144,-6.3112,3.7867,-1.7212,0.5737,-0.1324,0.0189,-0.0013}andah={1.0,-2.8818,5.7550,-7.7730,8.2419,-6.8372,4.6171,-2.5257,1.1296,-0.4084,0.1183.-0.0268,0.0046,-0.0006,0.0,0.0}語音信號能量本身為 。零交叉速率ECR計算為if(s(n)s(n+1)<0)ZCR=ZCR+1,0≤n<159F.計算元音振峰餘量在步驟512,對四個子幀計算當前幀的元音共振峰餘量rcurr(n)=s(n)-i=110a^is(n-i)]]>其中ai,是相應子幀的第i個LPC係數。
IV.有效/無效語音分類再參照圖3,在步驟304,把當前幀分類為有效語音(如講出的單詞)或無效語音(如背景噪聲,靜寂)。圖6的流程圖600詳細列出了步驟304。在一較佳實施例中,用基於雙能帶的取域值方法確定有無有效語音。下帶(帶0)跨越頻率為0.1-2.0kHz,上帶(帶1)為2.0-4.0kHz。在當前幀編碼時,最好以下述方法確定下一幀的話音有效性檢測。
在步驟602,對各帶i=0,1計算帶能Eb[i]用下列遞歸公式將III、A節中的自相關序列擴展到19R(k)=i=110aiR(k-i),11k19]]>利用該公式,從R(1)到R(10)中算出R(11),從R(2)-R(11)中算出R(12),依次類推。再用下式從擴展的自相關序列中算出帶能Eb(i)=log2(R(0)Rh(0)(0)+2k=119R(k)Rh(i)(k)),i=0,1]]>式中R(K)是當前幀擴展的自相關序列,Rh(i)(k)是表1中帶i的帶濾波器自相關序列。
表1計算帶能的濾波器自相關序列
在步驟604,平滑帶能估值,並用下式對各幀更新平滑的帶能估值Esm(i)Esm(i)=0.6Esm(i)+0.4Eb(i),i=0,1在步驟606,更新信號能與噪聲能的估值。信號能估值Es(i)最好用下式更新。
Es(i)=max(Esm(i),Es(i)),i=0,1噪聲能估值En(i)最好用下式更新En(i)=min(Esm(i),En(i)),i=0,1在步驟608,兩帶的長期信噪比SNR(i)計算為SNR(i)=Es(i)-En(i),j=0,1在步驟610,這些SNR值最好分成8個區RegSNR(i),定義為
在步驟612,以下述方式按本發明判斷話音有效性。若Eb(0)-En(0)>THRESH(RegSNR(O)),或Eb(1)-En(1)>THRESH(RegSNR(1)),則判定該語音幀有效,反之為無效。THRESH值由表2規定。
表2閾值係數與SNR區的函數關係
信號能估值Es(i)最好用下式更新Es(i)=Es(i)-0.014499,i=0,1.
噪聲能估值En(i)最好用下式更新
A.拖尾幀信噪比很低時,最好加「拖尾」幀提高重建語音的質量。若三個前幀分為有效而當前幀為無效,則包括當前幀在內的後M幀分類為有效語音。拖尾幀數M確定時與表3中規定的SNR(0)成函數關係。
表3拖尾幀與SNR(0)的函數關係
V.有效語音幀的分類再參照照圖3,在步驟308,在步驟304分為有效的當前幀再按語音信號s(n)呈現的特性分類。在一較佳實施例中,有效語音分為話音,非話音或過渡。有效語音信號呈現的周期性程度確定了它的分類。話音語音呈現最高度的周期性(準周期特性)。非話音語音很少或不呈現周期性,過渡語音的周期性程度在上述二者之間。
然而,這裡描述的一般框架不限於該較佳分類方式,下面描述特定的編/解碼器模式。有效語音可以不同方式分類,編碼則有不同的編/解碼器模式。技術人員應明白,分類與編/解碼器模式可以有許多組合方式。許多這樣的組合可以按這裡描述的一般框架降低平均位速率即一般框架即是把語音分成無效或有效,再對有效語音作分類,然後用特別適合於每一類範圍內語音的編/解碼器模式編碼語音信號。
雖然有效語音分類基於周期性程度,但是分類判斷最好不以某種周期性的直接測量為基礎,而是從步驟302計算的各種參數為基礎,如上下帶中的信噪比和NACF。較佳的分類可用下列偽碼描述。
其中 Nnoise是背景噪聲估值,Eprev是前一幀輸入能。
用該偽碼描述的方法可按實施的特定環境提煉。技術人員應明白,上面給出的各種閾值僅作為示例,實踐中可根據實施情況要求調節。該方法還可通過增加附加的分類目錄予以精煉,如將TRASIENT分成兩類一類用於從高能轉為低能的信號,另一類用於從低能轉為高能的信號。
技術人員應明白,其它方法也可以區分話音、非話音與過渡有效語音,還可能有其它有效語音的分類方法。
VI.編/解碼器模式選擇在步驟310,根據步驟304與308分類的當前幀選擇編/解碼器模式。根據一較佳實施例,模式選成如下選擇用NELP模式對無效幀和有效非話音幀編碼,用PPP模式對有效話音幀編碼,用CELP模式對有效過渡幀編碼。下面描述各編/解碼器模式。
在一替代實施例中,無效幀用零速率模式編碼。技術人員應明白,有許多要求很低位速率的其它零速率模式。研究過去的模式選擇,可改良零速率模式的選擇。例如,若前一幀分為有效,就可不對當前幀選擇零速率模式。同樣地,若下一幀有效,可不對當前幀選擇零速率模式。另一方法是不對過多的連續幀(如9個連續幀)選用零速率模式。技術人員應明白,可對基本的選模判斷作其它許多更改,以改善其在某些環境中的操作。
如上所述,在相同一框架內,可交替地應用許多其它分類的組合和編/解碼器模式。下面詳述本發明的幾種編/解碼器模式,先介紹CELP模式,然後敘述PPP與NELP模式。
VII.代碼受激的線性預測(CELP)編碼模式如上所述,噹噹前幀分為有效過渡語音時,可應用CELP編/解碼模式。該模式能最精確地再現信號(與這裡描述的其它模式相比),但是位速率最高。
圖7詳細示出了CELP編碼器模式204和CELP解碼器模式206。如圖7A圖所示,CELP編碼器模式204包括音調編碼模塊702,編碼代碼簿704和濾波器更新模塊706。模式204輸出編碼的語音信號senc(n),最好包括傳輸給CELP編碼器模式206的代碼簿參數與音調濾波器參數。如圖7B所示,模式206包括解碼代碼簿模塊708,音調濾波器710和LPC合成濾波器712。CELP模式206接收編碼的語音信號而輸出合成的語音信號(n)。
A.音調編碼模塊音調編碼模塊702接收語音信號s(n)和前一幀量化的餘量Pc(n)(下述)。根據該輸入,音調解碼模塊702產生目標信號x(n)與一組音調濾波器參數。在一實施例中,這類參數包括最佳音調滯後L*與最佳音調增益b*。這類參數按「分析加合成」法選擇,其中解碼處理選擇的音調濾波器參數,可將輸入語音與用這些參數合成的語音之間的加權誤差減至最小。
圖8示出了音調編碼模塊702,這包括感性加權濾波器803,加法器804與816,加權的LPC合成濾波器806與808,延遲與增益810及最小平方和812。
感性加權濾波器802用於對原始語音與以感性有意義的方式合成的語音之間的誤差加權。
感性加權濾波器的形式為W(z)=A(z)A(z/)]]>式中A(z)是LPC預測誤差濾波器,γ最好等於0.8。加權的LPC分析濾波器806接收原始參數計算模塊202算出的LPC係數。濾波器806輸出的azir(n)是給出LPC係數的零輸入響應。加法器804將負輸入azir(n)與濾波的輸入信號相加以形成目標信號x(n)。
延遲與增益810對給定的音調滯後L與音調增益B輸出估算的間調濾波器輸出bpL(n),延遲與增益810接收前一幀量化的剩餘樣本Pc(n)和估算的音調濾波器將來的輸出P0(n),按下式形成P(n)。 然後延遲L個樣本,用b標定,形成bpL(n)。Lp是子幀長度(最好為40樣本)。在一較佳實施例中,音調滯後L用8位代表,可以取值20.0,20.5,21.0,21.5….126.0,126.5,127.0,127.5。
加權的LPC分析濾波器808用當前LPC係數濾波bpL(n)而得出bY2(n)。加法器816將負輸入byL(n)與x(n)相加,其輸出被最小平方和812接收,後者選擇標為L*的最佳L和標為b*的最佳b,而L和b的值按下式將Epitch(L)減至最小Epitch(L)=n=0Lp-1{x(n)-byL(n)}2]]>若 ,且 ,則對規定的L值將Epiteh減至最小的b值為b*=Exy(L)Eyy(L)]]>因此Epitch(L)=K-Exy(L)2Eyy(L)]]>式中K是可以忽略的常數首先確定使Epitch(L)最小的L值,再計算b*,求出L與b的最佳值(L*與b*)最好對各子幀算出這些音調濾波器參數,量化後作有效傳輸。在一實施例中,第j個子幀的傳輸代碼PLAGj與PGAINj計算成PGAINj=[min{b*,2}82+0.5]-1]]> 若PLAGj置0,則將PGAINj調至-1。這些傳輸代碼發送給CELP解碼器模式206作為音調濾波器參數,成為編碼的語音信號senc(n)的組成部分。
B.編碼代碼簿編碼代碼簿704接收目標信號x(n),並確定一組供CELP解碼器模式206使用的代碼簿激勵參數,與音調濾波器參數一起,以重建量化的剩餘信號。
編碼代碼簿704首先將x(n)更新如下x(n)=x(n)-ypzir(n)、0≤n<40式中ypzir(n)是加權的LPC合成濾波器(帶有從前一幀結尾保留數據的存儲器)對某一輸入的輸出,而該輸入是帶參數L*與b*(和前一子幀處理的存儲器)的音調濾波器的零輸入響應。
由於 用而建立一反濾波目標 0<n<40,其中 是脈衝響應矩陣,由脈衝響應{hn}和 0≤n<40形成,同樣產生了兩個以上矢量 和 s=sign(d)]]> 其中 編碼代碼簿704將值Exy*與Eyy*初始化為零,並按以下公式最好用四個N值(0,1,2,3)搜索最佳激勵參數。p-=(N+{0,1,2,3,4})%5]]>A={p0,p0+5,…,i′<40}B={p1,p1+5,…,k′<40}Deni,k=2φ0+siskφ|k-i|, i∈A k∈B {S0,S1}={SI0,SI1}]]>Eyy0=EyyI0,I1]]>A={p2,p2+5,…,i′<40}B={p3,p3+5,…,k′<40}Deni,k=Eyy0+20+si(S0|I0-i|+S1|I1-i|)]]>+sk(S0|I0-k|+S1|I1-k|)+sisk|k-i|]]>i∈Ak∈B {S2,S3}={sI2,sI3}]]>Exy1=Exy0+|dI2|+|dI3|]]>Eyy1=DenI2,I3]]>A={p4,p4+5,…i′<40}Deni=Eyy1+0+si(S0|I0-i|+S1|I1-i|+S2|I2-i|+S3|I3-i|),iA]]>I4=argmaxiA{Exy1+|di|Deni}]]>S4=sI4]]>Exy2=Exy1+|dI4|]]>Eyy2=DenI4]]>若編碼代碼簿704把代碼簿增益G*計算成Exy*/Eyy*,然後對第j個子幀將該組激勵參數量化成下列傳輸碼CBIjk=[indk5],0k5]]> CBGj=[min{log2(max{l,G*}),11.2636}3111.2636+0.5]]]>量化的增益 *為 除去音調解碼模塊702,只作代碼簿搜索以對四個子幀都確定指數I與增益G,就可實現CELP編/解碼器模式的較低位速率實施例。技術人員應明白如何擴充上述想法來實現該較低的位速率實施例。
C.CELP解碼器CELP解碼器模式206從CELP解碼器模式204接收解碼的語音信號,最好包括代碼簿激勵參數與音調濾波器參數,並根據該數據輸出合成的語音(n)。解碼代碼簿模塊708接收代碼簿激勵參數,產生增益為G的激勵信號Cb(n)。j個子幀的激勵信號Cb(n)包含大多數零,但五個位置例外Ik=5CBIjk+k,0≤k<5它相應地具有脈衝值Sk=1-2SIGNjk,0≤k<5所有值均用計算為 的增益G標定,以提供Gcb(n)。
音調濾波器710按下列公式對接收傳輸代碼的音調濾波器參數解碼L^*=PLAGj2]]> 音調濾波器710接著濾波Gcb(n),濾波器的傳遞函數為1P(z)=11-b*z-L*]]>在一實施例中,在音調濾波器710之後,CELP解碼器模式706還加接了額外的濾波操作的音調前置濾波器(未示出)。音調前置濾波器的滯後與音調濾波器710的滯後相同,但其增益最好是最高達0.5的音調增益的一半。LPC合成濾波器712接收重建的量化剩餘信號 ,輸出合成的語音信號(n)。
D.濾波器更新模塊濾波器更新模塊706像前一節描述的那樣合成語音,以便更新濾波器存儲器。濾波器更新模塊706接收代碼簿激勵參數與音調濾波器參數,產生激勵信號cb(n),對Gcb(n)作音調濾波,再合成(n)。在解碼器作這一合成,就更新了音調濾波器與LPC合成濾波器中的存儲器,供處理後面的子幀使用。
VIII.原型音調周期(PPP)編碼模式原型音調周期(PPP)編碼法利用語音信號的周期性實現比CELP編碼法可得到的更低的位速率。一般而言,PPP編碼法涉及提取一代表性的剩餘個周期,這裡稱為原型餘量,然後用該原型通過在當前幀的原型餘量與前一幀的類似音調周期(如果最後幀是PPP,即為原型餘量)之間作內插,在該幀內建立早期音調周期,PPP編碼法的有效性(降低位速率)部分取決於如何使當前與前一原型餘量精密地類似於介入的音調周期。為此,最好將PPP編碼法應用於呈現出相對高度周期性的語音信號(如話音語音),這裡指準周期語音信號。
圖9詳細示出了PPP編碼器模式204和PPP解碼器模式206,前者包括提取模塊904,旋轉相關器906,編碼代碼簿908和濾波器更新模塊910。PPP編碼器模式204接收剩餘信號r(n),輸出編碼的語音信號senc(n),最好包括代碼簿參數和旋轉參數。PPP解碼器模式206包括代碼簿解碼器912、旋轉器914,加法器916,周期內插器920和彎曲濾波器918。
圖10的流程圖1000示出PPP編碼的步驟,包括編碼與解碼。這些步驟與PPP編碼器模式204和PPP解碼器模式206一起討論。
A.提取模塊在步驟1002,提取模塊904從剩餘信號r(n)中提取原型餘量rp(n)。如III、F、節所述,初始參數計算模塊202用LPC分析濾波器計算各幀的rp(n)。在一實施例中,如VII、A節所述,該濾波器的LPC係數作感性加權。rp(n)的長度等於原始參數計算模塊202在當前幀最後一個子幀中算出的音調滯後L。
圖11是詳細示出步驟1002的流程圖。PPP提取模塊904最好儘量接近幀結束時選擇音調周期,並加下述的某些限制。圖12示出一例基於準周期語音計算的剩餘信號,包括當前幀與前一幀的最後一個子幀。
在步驟1102,確定「無切割區」。無切割區限定一組餘量中不能是原型餘量終點的樣本。無切割區保證餘量的高能區不出現在原型的開始或結束(會造成輸出中允許出現的斷續性)。計算r(n)最後L個樣本每一樣本的絕對值。變量Ps置成等於最大絕對值(這裡稱為「音調尖峰」)樣本的時間指數。例如,若音調尖峰出現在最後L個樣本的最後一個樣本中,Ps=L-1。在一實施例中,無切割區的最小樣本CFmin置成Ps-6或Ps-0.25L,無論哪個更小。無切割區的最大值CFmax置成Ps+6或Ps+0.25L,無論哪個更大。
在步驟1104,從餘量中切割L個樣本,選擇原型餘量,在區域終點不能在無切割區內的約束下,選擇的區域儘量接近幀的結束處。用以下列偽碼描述的算法確定原型餘量的L個樣本
B.旋轉相關器再參照圖10,在步驟1004,旋轉相關器906根據當前原型餘量rp(n)和前一幀的原型餘量rprev(n)計算一組旋轉參數。這些參數描述怎樣最佳地旋轉和標定rprev以用作rp(n)的預測器。在一實施例中,這組旋轉參數包括最佳旋轉R*與最佳增益b*。圖13是詳細示出步驟1004的流程圖。
在步驟1302,對原型音調餘量周期rp(n)作循環濾波,算出感性加權的目標信號x(n)。這是按如下方式實現的。由rp(n)產生臨時信號tmp1(n)tmp1(n)={0,Ln2Lrp(n),0nL]]>將其用零存儲器的加權LPC合成濾波器濾波,以提供輸出tmp2(n)。在一實施例中,使用的LPC係數是對應於當前幀最後一個子幀的感性加權係數。於是,目標信號x(n)為x(n)=tmp2(n)+tmp2(n+L),0≤n<L在步驟1304,從前一幀量化的元音共振峰餘量(也存在音調濾波器的存儲器中)中提取前一幀的原型餘量γprev(n)。該前一原型餘量最好定義為前一幀元音共振峰餘量的最後LP值,若前一幀不是PPP幀,Lp等於L,否則置成前一音調滯後。
在步驟1306,把γprev(n)的長度改為與x(n)一樣長,從而正確地計算相關性。這裡把改變採樣信號長度的這種技術稱為彎曲。彎曲的音調激勵信號γwprev(n)可以描述成rwprev(n)=rprev(n*TWF),0≤n<L
式中TWF是時間彎曲係數Lp/L。最好用一套sinc函數表計算非整數點n*TWF的樣本值。選擇的sinc序列是sinc(-3-F4-F),F是n*TWF的小數部分,含入最接近的1/8倍數。該序列的開頭對準rprev(N-3)%Lp),N是n*TWF在含入最接近第八位後的整數部分。
在步驟1308,循環濾波彎曲的音調激勵信號rwprev(n),得出y(n)。該操作與上述對步驟1302作的操作一樣,但應用於rwprev(n)。
在步驟1310,計算音調旋轉搜索範圍,首先計算期望的旋轉ErotErot=L-round(Lfrac((160-L)(Lp+L)2LpL))]]>frac(x)給出X的小數部分。若L<80,則音調旋轉搜索範圍定義為{Erot-8,Erot-7.5,…Erot+7.5}和{Erott-16,Erot-15…Erot+15},其中L>80。
在步驟1312,計算旋轉參數,最佳旋轉R*與最佳增益b*。在x(n)和y(n)之間導致最佳預測的音調旋轉與相應的增益b一起選擇。這些參數最好選成將誤差信號e(n)=x(n)-y(n)減至最小。最佳旋轉R*與最佳增益b*是導致ExyR2/Eyy最大值的那些旋轉R與增益b值,其中 和 ,在旋轉R*時的最佳增益b*為ExyR*/Eyy。對於旋轉的小數值,通過對在整數旋轉值時算出的ExYR值作內插,求出ExyR的近似值。應用了一種簡單的四帶內插濾波器,如ExyR=0.54((ExyR′+ExyR′+1)-0.04*(ExyR-1+EryR′+2)R是非整數的旋轉(精度0.5),R』=|R|。
在一實施例中,旋轉參數作量化以有效地傳輸。最佳增益 最好在0.0625和4.0之間均勻地量化成PGAIN=max{min([63(b*-0.06254-0.0625)+0.5],63),0}]]>式中PGAIN為傳輸碼,量化增益b*由max{0.0625+(PGAIN(4-0.0625)/63),0.0625}給出。將最佳旋轉R*量化成傳輸碼PROT,若L<80。將其置成2(R*-Erot+8),L≥80,則R*-Erot+16。
C.編碼代碼簿再參照圖10,在步驟1006,編碼代碼簿908根據接收的目標信號x(n)產生一組代碼簿參數。代碼簿908設法求出一個或多個代碼矢量,經標定,相加和濾波後,加成接近x(n)的信號。在一實施例中,編碼代碼簿908構成多級代碼簿,最好是三級,每級產生一種標定的代碼矢量。因此,該組代碼簿參數包括了對應於三種代碼矢量的標引和增益。圖14是詳細示出步驟1006的流程圖。
在步驟1402,搜索代碼簿之前,將目標信號x(n)更新成x(n)=x(n)-by((n-R*)%L),0≤n<L若在上述減法中旋轉R*不是整數(即有小數0.5),則y(i-0.5)=-0.0073(y(i-4)+y(i+3))+0.0322(y(i-3)+y(i+2))-0.1363(y(i-2)+y(i+1))+0.6076(y(i-1)+y(i))式中i=n-|R*|在步驟1404,將代碼簿值分成多個區域。根據一實旋例,把代碼簿確定為 式中CBP是隨機或訓練的代碼簿值。技術人員應知道這些代碼簿值是如何產生的。把代碼簿劃分成多個區域,長度各為L。第一區是單脈衝,其餘各區由隨機或訓練的代碼簿值組成。區數N將為[128/L]。
在步驟1406,代碼簿的多個區都作循環濾波而產生濾波的代碼簿,yreg(n),其串聯是信號y(n)。對每一區,按上述步驟1302作循環濾波。
在步驟1408,計算各區濾波的代碼簿能量Eyy(reg)並存貯起來Eyy(reg)=i=0L-1yreg(i),0regN]]>在步驟1410,計算多級代碼簿各級的代碼簿參數(即代碼矢量標引與增益)。根據一實施例,使Region(I)=reg,定義為其中有樣本I的區即, 並假定將Exy(I)定義為Exy(I)=i=0L-1x(i)yRegton(I)((i+I)%L)]]>第j代碼簿級的代碼簿參數I*與G*用下列偽碼計算Exy*=0,Eyy*=0for(I=Oto127){compute Exy(I) Exy*=Exy(I)Eyy*=Eyy(Region(I))I*=I}}而且G*=Exy*/Eyy*。
根據一實施例,代碼簿參數量化後作有效傳輸。傳輸代碼CBIj(j=級數-0,1或2)最好置成I*,而傳輸代碼CBGj與SIGNj通過量化增益G*而設置 CBGj=[min{max{0,log2(|G*|)},11.25}43+0.5]]]>量化的增益 為 然後減量當前級代碼簿矢量的貢獻,更新目標信號x(n)x(n)=x(n)-G^*yRegion(I*)((n+I*)%L),0nL]]>上述從偽碼開始的步驟重複進行,對第二和第三級計算I*,G*和相應的傳輸代碼。
D.濾波器更新模塊再參照圖10,在步驟1008,濾波器更新模塊910更新PPP解碼器模式204所使用的濾波器。圖15A與16A示出兩個替代的濾波器更新模塊910的實施例。如圖15A的第一替代實施例,濾波器更新模塊910包括解碼代碼簿1502,旋轉器1504,彎曲濾波器1506,加法器1510,對準與內插模塊1508,更新音調濾波器模塊1512,和LPC合成濾波器1514。圖16A的第二實施例包括解碼代碼簿1602,旋轉器1604,彎曲濾波器1606,加法器1608,更新音調濾波器模塊1610,循環LPC合成濾波器1612和更新LPC濾波器模塊1614,圖17與18是詳細示出這兩個實施例中步驟1008的流程圖。
在步驟1702(和1802,兩實施例的第一步驟),由代碼簿參數與旋轉參數重建當前重建的原型餘量rcurr(n),長度為L樣本,。在一實施例中,旋轉器1504(和1604)按下式旋轉彎曲型的前一原型餘量rcurr((n+R*)%L)=brwprsv(n),0≤n<L式中rcurr是要建立的當前原型,rwprev是由音調濾波器存儲器中最新L個樣本獲得的彎曲型前一周期(如VIIIA節所述,TWF=Lp/L),由包傳輸碼獲得的音調增益b和旋轉R為b=max{0.0625(PGAIN(4-0.0625)63),0.0625}]]> 其中Erot是上述VIIIB節算出的期望的旋轉。解碼代碼簿1502(和1602)將三個代碼簿級的每級的貢獻加到rcurr(n) 式中I=CBIj,G如上節所述由CBGj和SIGj獲得,j為級數。
在這方面,濾波器更新模塊910的這兩個替代實施例有所不同。先參照圖15A的實施例,在步驟1704,從當前幀開頭到當前原型餘量開頭,對準與內插模塊1508填入剩餘樣本的其餘部分(如圖12所示)。這裡對剩餘信號對準和內插。然而,如下所述,還對語音信號作同樣的操作。圖19是詳細描述步驟1704的流程圖。
在步驟1902,確定前一滯後LP是否相對於當前滯後L為兩倍或是一半。在一實施例中,其它倍數不太可能,故不予考慮。若Lp>1.85L,LP為一半,只使用前一周期rprev(n)的前一半。若Lp>0.54L,當前滯後L可能加倍,因而LP也加倍,前一周期Rprev(n)反覆擴展。
在步驟1904,如步驟1306所述,rprev(n)彎成rwprev(n),TWF-LP/L,因而兩原型餘量的的長度現在相同。注意,該操作在步驟1702執行,如上所述,做法是彎曲濾波器1506。技術人員應明白,若彎曲濾波器1506對對準與內插模塊1508有輸出,就不需要步驟1904。
在步驟1906,計算允許的對準旋轉範圍。期望的對準旋轉EA的計算與VIIIB節所述的Erot的計算相同。對準旋轉搜索範圍定義為{EA-δA,EA-δA+0.5,EA-δA+1…EA-δA-1.5,EA-δA-1},δA=max{6,0.15L}。
在步驟1908,把整數對準旋轉R前一與當前原型周期之間的交叉相關性計算成C(A)=i=0L-1rcurr((i+A)%L)rwprev(i)]]>通過在整數旋轉處內插相關值,近似算出非整數旋轉A的交叉相關性C(A)=0.54(C(A′)+C(A′+1))-0.04(C(A′-1)+C(A′+2))式中A』=A-0.5。
在步驟1910,將導致C(A)最大值的A值(在允許旋轉範圍內)選為最佳對準,A*。
在步驟1912,按下述方法算出中間樣本的平均滯後或音調周期Lav。周期數估值Nper算為Nper=round(A*L+(160-L)(Lp+L)2LpL)]]>中間樣本的平均滯後為Lav=(160-L)LNperL-A*]]>在步驟1914,根據下述在前一與當前原型餘量之間的內插,算出當前幀中其餘的剩餘樣本
式中x=L/Lav。非整數點 的樣本值(等於nα或nα+A*)用一套sinc函數表計算。選擇的sinc序列為sinc(-3-F4-F),其中F是n捨入最接近1/8倍數的小數部分,序列開頭對準rprev((N-3)%LP),N是 捨入最接近1/8後的整數部分。
注意,該操作與上述步驟1306的彎曲基本上相同。因此,在一替代實施例中,步驟1914的內插值用彎曲濾波器計算。技術人員應明白,對於這裡描述的各種目的,重複使用單個彎曲濾波器更經濟。
參照圖17,在步驟1706,更新音調濾波器模塊1512從重建的餘量 將值複製到音調濾波器存儲器。同樣地,也要更新音調濾波器的存儲器。
在步驟1708,LPC合成濾波器1514對重建的餘量 濾波,作用是更新LPC合成濾波器的存儲器。
現在描述圖16A的第二個濾波器更新模塊910實施例。如步驟1702所述,在步驟1802,由代碼簿與旋轉參數重建原型餘量,導致rcurr(n)。
在步驟1804,按下式從rcurr(n)複製L樣本複製件,更新音調濾波器模塊1610更新音調濾波器存儲器。
pitch_mem(i))=rcurr((L-(131%L)+i)%L),0≤i<13l或者pitch_mem(131-1-i)=rcurr(L-l-i%L),O≤i<131其中131最好是最大滯後為127.5的音調濾波器階數。在一實施例中,音調前置濾波器的存儲器同樣用當前周期rcurr(n)的複製件替換pitch_prefilt_mem(i)=pitch_mem(i),0≤i<131在步驟1806,rcurr(n)最好應用感性加權的LPC係數循環濾波,如VIIIB節所述,導致sc(n)。
在步驟1808,用sc(n)的值,最好是後10個值(對第10階LPC濾波器)更新LPC合成濾波器的存儲器。
E.PPP解碼器參照圖9和10,在步驟1010,PPP解碼器模式206根據收到的代碼簿與旋轉參數重建原型餘量rcurr(n)。解碼代碼簿912,旋轉器914和彎曲濾波器918的工作方式如上節所述。周期內插器920接收重建的原型餘量rcurr(n)和前一重建的原型餘量rcurr(n),在兩個原型之間內插樣本,並輸出合成的語音信號 下節描述周期內插器920。
F.周期內插器在步驟1012,周期內插器920接收rcurr(n),輸出合成的語音信號(n)。圖15A與16b是兩個周期內插器920的替代實施例。在圖15B的第一例中,周期內插器920包括對準與內插模塊1516,LPC合成濾波器1518和更新音調濾波器模塊1520。圖16B的第二例包括循環LPC合成濾波器1616,對準與內插模塊1618,更新音調濾波器模塊1622和更新LPC濾波器模塊1620。圖20和21表示兩實施例的步驟1012的流程圖。
參照圖15B,在步驟2002,對準與內插模塊1516對當前剩餘原型rcurr(n)與前一剩餘原型rprev(n)之間的樣本重建剩餘信號,形成 ,模塊1516以步驟1704所述的方式(圖19)操作。
在步驟2004,更新音調濾波器模塊1520根據重建的剩餘信號 更新音調濾波器存儲器,如步驟1706所述。
在步驟2006,LPC合成濾波器1518根據重建的剩餘信號 合成輸出語音信號 操作時,LPC濾波器存儲器自動更新。
參照圖16B和21,在步驟2102,更新音高調濾波器模塊1622根據重建的當前剩餘原型rcurr(n)更新音調濾波器存儲器,如步驟1804所示。
在步驟2104,循環LPC合成濾波器1616接收rcurr(n),合成當前語音原型sc(n)(長為L樣本),如VIIIB節所述。
在步驟2106更新LPC濾波器模塊1620更新LPC濾波器存儲器,如步驟1808所述。
在步驟2108,對準與內插模塊1618在前一與當前原型周期之間重建語音樣本。前一原型餘量rprev(n)循環濾波(在LPC合成結構中),僅內插可以語音域進行。對準與內插模塊1618以步驟1704的方式操作(見圖19),只是對語音原型而不是對剩餘原型操作。對準與內插的結果就是合成的語音信號s(n)。
IX.噪聲激勵的線性預測(NELP)編碼模式噪聲激勵的線性預測(NELP)編碼法將語音信號模擬成一個偽隨機噪聲序列,由此實現比CELP或PPP編碼法更低的位速率。用信號再現來衡量,NELP解碼的操作最有效,此時語音信號很少有或沒有音調結構,如非話音或背景噪聲。
圖22詳細示出了NELP編碼器模式204和NELP解碼器模式206,前者包括能量估算器2202和編碼代碼簿2204,後者包括解碼代碼簿2206,隨機數發生器2210,乘法器2212和LPC合成濾波器2208。
圖23是示明NELP編碼步驟的流程圖2300,包括編碼和解碼。這些步驟與NELP編/解碼器模式的各種元件一起討論。
在步驟2302,能量估算器2202將四個子幀的剩餘信號能量都算成Esfi=0.5log2(n=40i40i+39s2(n)40),0i4]]>在步驟2304,編碼代碼簿2204計算一組代碼簿參數,形成編碼的語音信號senc(n)。在一實施例中,該組代碼簿參數包括單個參數,即標引I0,它被置成等於j值,並將 其中0≤j<128減至最小。代碼簿矢量SFEQ用於量化子幀能量Esfi,並包括等於幀內子幀數的元數(在實施例中為4)。這些代碼簿矢量最好按技術人員已知的普通技術產生,用於建立隨機或訓練的代碼簿。
在步驟2306,解碼代碼簿2206對收到的代碼簿參數解碼。在一實施例中,按下式解碼該組子幀增益GiG1=2SFEQ(10,1),或G1=20.2SFEQ(10,1)+0.2log Gprsv-2(用零速率編碼方案對前一幀編碼)其中0≤i<4,Gprev是代碼簿激勵增益,對應於前一幀的最後一個子幀。
在步驟2308,隨機數發生器2210產生一單位變化隨機矢量nz(n),該矢量在步驟2310按各子幀內合適的增益Gi標定,建立激勵信號Ginz(n)。
在步驟2312,LPC合成濾波器2208對激勵信號Ginz(n)濾波,形成輸出語音信號 在一實施例中,也應用了零速率模式,其中對當前幀的各子幀使用了從最近非零速率NWLP子幀獲得的增益G,與LPC參數。技術人員應明白,在連續出現多個NELP幀時,可有效地應用這種零速率模式。
X.結論雖然以上描述了本發明的各種實施例,但應明白,這些都是示例,不用來作限制,因此,本發明的範圍不受上述任一示例性實施例限制,僅由所附的權項及其等效物限定。
上述諸較佳實施例的說明可供任何技術人員用於製作或應用本發明。儘管參照諸較佳實施例具體示出並描述了本發明,但是技術人員應明白,在不違背本發明的精神與範圍的情況下,可在形式上和細節上作出各種變化。
權利要求
1.一種用於語音信號的可變速率編碼的方法,其特徵在於,包括以下步驟(a)把語音信號歸類為有效或無效;(b)把所述有效語音歸類為多個有效語音類型中的一個;(c)根據語音信號是有效還是無效,如果有效,則進一步根據所述有效語音類型來選擇編碼模式;(d)依據所述編碼模式對語音信號進行編碼,從而形成經編碼的語音信號。
2.如權利要求1所述的方法,其特徵在於還包括依據所述編碼模式對所述經編碼的語音信號進行解碼從而形成合成語音信號的步驟。
3.如權利要求1所述的方法,其特徵在於所述編碼模式包括CELP編碼模式、PPP編碼模式或NELP編碼模式。
4.如權利要求3所述的方法,其特徵在於所述編碼步驟依據所述編碼模式以與所述編碼模式有關的預定位速率進行編碼。
5.如權利要求4所述的方法,其特徵在於所述CELP編碼模式與每秒8500位的位速率有關,所述PPP編碼模式與每秒3900位的位速率有關,所述NELP編碼模式與每秒1550位的位速率有關。
6.如權利要求3所述的方法,其特徵在於所述編碼模式還包括零速率模式。
7.如權利要求1所述的方法,其特徵在於所述多個有效語音類型包括話音、非話音和過渡有效語音。
8.如權利要求7所述的方法,其特徵在於選擇編碼模式的所述步驟包括以下步驟(a)如果所述語音被歸類為有效過渡語音,則選擇CELP模式;(b)如果所述語音被歸類為有效話音語音,則選擇PPP模式;以及(c)如果所述語音被歸類為無效語音或有效非話音語音,則選擇NELP模式。
9.如權利要求8所述的方法,其特徵在於如果選中所述CELP模式,則所述經編碼的語音信號包括代碼簿參數和音調濾波器參數,如果選中所述PPP模式,則所述經編碼的語音信號包括代碼簿參數和旋轉參數,或者如果選中所述NELP模式,則所述經編碼的語音信號包括代碼簿參數。
10.如權利要求1所述的方法,其特徵在於所述把語音歸類為有效或無效的所述步驟包括基於兩個能帶的閾值處理方案。
11.如權利要求1所述的方法,其特徵在於所述把語音歸類為有效或無效的所述步驟包括在前Nho個幀被歸類為有效時,把後M個幀歸類為有效的步驟。
12.如權利要求1所述的方法,其特徵在於還包括使用「超前」來計算初始參數的步驟。
13.如權利要求12所述的方法,其特徵在於所述初始參數包括LPC係數。
14.如權利要求1所述的方法,其特徵在於所述編碼模式包括NELP編碼模式,以線性預測編碼(LPC)分析濾波器對語音信號進行濾波而產生的剩餘信號來表示該語音信號,所述編碼步驟包括以下步驟(i)估計剩餘信號的能量,以及(ii)從第一代碼簿中選擇一代碼矢量,其中所述代碼矢量近似於所述估計的能量;所述解碼步驟包括以下步驟(i)產生一隨機矢量,(ii)從第二編碼簿中檢索所述代碼矢量,(iii)根據所述代碼矢量對所述隨機矢量進行定標,從而所述經定標的隨機矢量的能量近似於所述估計的能量,以及(iv)以LPC合成濾波器對所述經定標的隨機矢量進行濾波,其中所述經濾波的定標隨機矢量形成所述合成語音信號。
15.如權利要求14所述的方法,其特徵在於語音信號被分成幀,每個所述幀包括兩個或更多的子幀,所述估計能量的步驟包括估計每個所述子幀的剩餘信號的能量,所述代碼矢量包括近似於每個所述子幀的估計能量的值。
16.如權利要求14所述的方法,其特徵在於所述第一代碼簿和所述第二代碼簿是隨機代碼簿。
17.如權利要求14所述的方法,其特徵在於所述第一代碼簿和所述第二代碼簿是訓練代碼簿。
18.如權利要求14所述的方法,其特徵在於所述隨機矢量包括單位變量隨機矢量。
19.一種用於對語音信號進行編碼的可變速率編碼系統,包括歸類裝置,用於把語音信號歸類為有效或無效,如果有效,則把所述有效語音歸類為多個有效語音類型中的一個;多個編碼裝置,用於把語音信號編碼成為經編碼的語音信號,其中根據語音信號有效還是無效,如果有效,則進一步根據所述有效語音類型而動態選擇所述編碼裝置對語音信號進行編碼。
20.如權利要求19所述的系統,其特徵在於還包括對所述經編碼的語音信號進行解碼的多個解碼裝置。
21.如權利要求19所述的系統,其特徵在於所述多個編碼裝置包括CELP編碼裝置、PPP編碼裝置和NELP編碼裝置。
22.如權利要求20所述的系統,其特徵在於所述多個解碼裝置包括CELP解碼裝置、PPP解碼裝置和NELP解碼裝置。
23.如權利要求21所述的系統,其特徵在於每個所述編碼裝置以一預定位速率進行編碼。
24.如權利要求23所述的系統,其特徵在於所述CELP編碼裝置以每秒8500位的速率進行編碼,所述PPP編碼裝置以每秒3900位的速率進行編碼,所述NELP編碼裝置以每秒1550位的速率進行編碼。
25.如權利要求21所述的系統,其特徵在於所述多個編碼裝置還包括零速率編碼裝置,所述多個解碼裝置還包括零速率解碼裝置。
26.如權利要求19所述的系統,其特徵在於所述多個有效語音類型包括話音、非話音和過渡有效語音。
27.如權利要求26所述的系統,其特徵在於如果所述語音被歸類為有效過渡語音,則選擇所述CELP編碼器,如果所述語音被歸類為有效話音語音,則選擇所述PPP編碼器;以及如果所述語音被歸類為無效語音或有效非話音語音,則選擇所述NELP編碼器。
28.如權利要求27所述的系統,其特徵在於如果選中所述CELP編碼器,則所述經編碼的語音信號包括代碼簿參數和音調濾波器參數,如果選中所述PPP編碼器,則所述經編碼的語音信號包括代碼簿參數和旋轉參數,或者如果選中所述NELP編碼器,則所述經編碼的語音信號包括代碼簿參數。
29.如權利要求19所述的系統,其特徵在於所述歸類裝置根據兩個能帶的閾值處理方案把語音歸類為有效或無效。
30.如權利要求19所述的系統,其特徵在於如果前Nho個幀被歸類為有效,所述歸類裝置把後M個幀歸類為有效。
31.如權利要求19所述的系統,其特徵在於以線性預測編碼(LPC)分析濾波器對語音信號進行濾波而產生的剩餘信號來表示該語音信號,所述多個編碼裝置包括NELP編碼裝置,所述NELP編碼裝置包括能量估計器,用於計算剩餘信號的能量的估計,以及編碼代碼簿裝置,用於從第一代碼簿中選擇一代碼矢量,其中所述代碼矢量近似於所述估計的能量;所述多個解碼裝置包括NELP解碼裝置,所述NELP解碼裝置包括隨機數發生器,用於產生一隨機矢量,解碼代碼簿裝置,用於從第二編碼簿中檢索所述代碼矢量,乘法裝置,用於根據所述代碼矢量對所述隨機矢量進行定標,從而所述經定標的隨機矢量的能量近似於所述估計的能量,以及用於以LPC合成濾波器對所述經定標的隨機矢量進行濾波的裝置,其中所述經濾波的定標隨機矢量形成所述合成語音信號。
32.如權利要求19所述的系統,其特徵在於語音信號被分成幀,每個所述幀包括兩個或更多的子幀,所述能量估計器裝置計算每個所述子幀的剩餘信號的能量的估計,所述代碼矢量包括近似於每個所述子幀的估計能量的值。
33.如權利要求19所述的系統,其特徵在於所述第一代碼簿和所述第二代碼簿是隨機代碼簿。
34.如權利要求19所述的系統,其特徵在於所述第一代碼簿和所述第二代碼簿是訓練代碼簿。
35.如權利要求19所述的系統,其特徵在於所述隨機矢量包括單位變量隨機矢量。
全文摘要
一種用於對語音信號進行可變速率編碼的方法和設備。對輸入語音信號進行歸類,根據此歸類選擇適當的編碼模式。對於每個歸類,選擇以可接受的語音再現質量實現最低位速率的編碼模式。通過僅利用高保真模式(即,廣泛適用於不同類型的語音的高的位速率),在可接受的輸出需要此保真度的語音部分中實現低的平均位速率。在這些模式產生可接受的輸出的語音部分中使用較低的位速率。把輸入語音信號歸類為有效和無效區。有效區被進一步歸類為話音、非話音和過渡區。可依據所需的保真水平把各種編碼模式應用於不同類型的有效語音。可依據每個特定模式的強弱來利用編碼模式。在語音信號的性質隨時間而變化時,本設備在這些模式之間的動態切換。在適當時,把語音的區域模擬成偽隨機噪聲,從而獲得明顯較低的位速率。本發明以動態的方式使用此編碼,而無論檢測到非話音語音還是背景噪聲。
文檔編號H03M7/30GK1331826SQ99814819
公開日2002年1月16日 申請日期1999年12月21日 優先權日1998年12月21日
發明者S·曼朱那什, W·加德納 申請人:高通股份有限公司