專利名稱:矢量量化器方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及使用代碼激勵的線性預(yù)測編碼(CELP),使用隨機(jī)編碼或矢量激勵的語音編碼方法,以及更具體地講,涉及用于矢量相加激勵的線性預(yù)測編碼(VSELP)的矢量量化器方法。
代碼激勵的線性預(yù)測(CELP)是一用于產(chǎn)生高質(zhì)量合成語音的語音編碼技術(shù)。這種語音編碼也稱為矢量激勵的線性預(yù)測,被用于許多的語音通信和語音合成應(yīng)用中。CELP特別是應(yīng)用于數(shù)字語音加密和數(shù)字無線電話通信系統(tǒng),這里語音質(zhì)量,數(shù)據(jù)速率,大小和費用都是重要的問題。
在CELP語音編碼器中,模擬輸入語音信號特性的長期(音調(diào)(pitch))和短期(峰段(formant))預(yù)測器包含在一套時變?yōu)V波器內(nèi)。具體地,可使用一個長期和一個短期濾波器。用于濾波器的激勵信號從已存貯的改進(jìn)序列的代碼簿或碼矢(codevectors)中選擇。
對于每一幀語音,選擇一最佳的激勵信號。語音編碼器施加一單獨碼矢到濾波器以產(chǎn)生一重建的語音信號,該重建的語音信號和原始輸入的語音信號相比較,產(chǎn)生一誤差信號。該誤差信號通過一譜噪聲加權(quán)濾波器被加權(quán)。譜噪聲加權(quán)濾波器有一以人體聽力感覺為基礎(chǔ)的響應(yīng)。最佳激勵信號是一選出的碼矢,對當(dāng)時的語音幀它以最小能量產(chǎn)生加權(quán)的誤差信號。
典型地,線性預(yù)測編碼(LPC)是用來模擬采樣區(qū)段內(nèi)的短期信號相關(guān),也稱為短期濾波器。短期信號相關(guān)表示聲道的諧振頻率。LPC系數(shù)是一組語音模型參量。其它的參量組可用來表示加于短期預(yù)測濾波器的激勵信號的特性。這些其它的語音模型參量包括線譜頻率(LSF),逆譜(cepstral)系數(shù),反射系數(shù),對數(shù)面積比和反正弦。
語音編碼器通常對激勵信號進(jìn)行矢量量化以減少為表示信號特性所必需的比特數(shù)。LPC系數(shù)可在量化前被轉(zhuǎn)換為其它的上述的參量組。這些系數(shù)可被單獨地量化(標(biāo)量量化)或被一組地量化(矢量量化)。標(biāo)量量化不如矢量量化那樣有效。然而標(biāo)量量化在計算和存貯要求上比矢量量化費便宜。LPC參量的矢量量化是應(yīng)用于主要考慮編碼效率的地方。
多段矢量量化可被用來均衡編碼效率,矢量量化器搜索復(fù)雜性,和矢量量化器存貯要求等。第一類多段矢量量化是將一Np元素的LPC參量矢量劃分為n段,n段的每一段是單獨地被矢量量化。第二類多段矢量量化是在n個矢量的代碼簿中劃分LPC參量,這里每個矢量代碼簿復(fù)蓋所有Np矢量元素。為了說明矢量量化,假設(shè)Np=10個元素,每個元素以2比特代表。傳統(tǒng)的矢量量化每10個元素將要求220個碼矢來表示所有可能碼矢的可能性。第一類帶有兩段的多段矢量量化每5個元素將要求210+210個碼矢。第二類帶有2段的多段矢量量化每5個元素將要求210+210個碼矢。這些矢量量化的每一種方法對于編碼效率,搜索復(fù)雜性和存貯要求等方面都提供不同的利益。這樣,現(xiàn)代技術(shù)的語音編碼器將會從矢量量化方法和設(shè)備(這些設(shè)備和方法增加了編碼效率,或減少了搜索復(fù)雜性或存貯要求而無需改變相應(yīng)的要求)中得益。
圖1是一無線電通信系統(tǒng)的方框圖,它包括依據(jù)本發(fā)明的語音編碼器。
圖2是依據(jù)本發(fā)明的語音編碼器的方框圖。
圖3是依據(jù)本發(fā)明所使用的反正弦函數(shù)的曲線圖。
這里描述代碼激勵線性預(yù)測編碼(CELP)的一種變形,被稱為矢量相加激勵的線性預(yù)測編碼(VSELP)是本發(fā)明的優(yōu)選實施例。VSELP使用一具有預(yù)先定義的結(jié)構(gòu)的激勵代碼簿,這樣,代碼簿搜索過程所要求的計算就大大減少。這個VSELP語音編碼器使用基于定點點陣技術(shù)(FLAT)的反射系數(shù)的單一或多段矢量量化器。此外,這個語音編碼器使用了預(yù)量化器以減少矢量代碼簿搜索復(fù)雜性,和使用高分辨率標(biāo)量量化器以減少為存貯反射系數(shù)矢量代碼簿所需要的存貯器總量。這就得到一反射系數(shù)的高性能的矢量量化器,它在計算上是有效的并已減少了存貯要求。
圖1是無線電通信系統(tǒng)100的方框圖。無線電通信系統(tǒng)100包括兩個收發(fā)機(jī)101,113,他們互相發(fā)送和接收語音數(shù)據(jù)。這兩個收發(fā)機(jī)101,113可以是中繼無線電系統(tǒng),或無線電話通信系統(tǒng)或任何其它發(fā)送和接收語音數(shù)據(jù)的無線電通信系統(tǒng)的一部分。在發(fā)射機(jī)中,語音信號被輸入到話筒108,語音編碼器選擇被量化的語音模型參量。被量化的參量的代碼被發(fā)送到另一收發(fā)信機(jī)113。在另一收發(fā)信機(jī)113,所發(fā)送的被量化參量的代碼被接收機(jī)121接收,并用來在語音譯碼器123中再生語音。再生的語音輸出到揚(yáng)聲器124。
圖2是一VSELP語音編碼器200的方框圖。VSELP語音編碼器200使用所接收的代碼來決定使用代碼簿中的激勵矢量。VSELP編碼器使用有2M個碼矢(它由M個基本矢量構(gòu)成)的激勵代碼簿。字度Vm(n)為第m個基本矢量,定義ui(n)為代碼簿中的第i個碼矢。于是ui(n)=Σm=1Mθimvm(n)---(1.10)]]>這里0≤i-≤2M-1;0≤n≤N-1。換句話說,代碼簿中的每一個碼矢被構(gòu)成為M個基本矢量的線性組合。線性組合由Q參量定義。θim被定義為θim=+1如果碼字i的比特m=1
θim=-1如果碼字i的比特m=0碼矢i被構(gòu)成為M個基本矢量之和,這里每一基本矢量的符號(正號或負(fù)號)由碼字i中相應(yīng)的比特狀態(tài)來決定。注意如果我們求補(bǔ)碼字i中全部比特數(shù),相應(yīng)的碼矢就是碼矢i的負(fù)數(shù)。所以,對于每個碼矢,它的負(fù)數(shù)也是代碼簿中的一個碼矢。由于為相應(yīng)的碼字彼此互補(bǔ),這些碼矢對被稱為互補(bǔ)碼矢。
適宜的矢量被選擇后,增益單元205對所選擇的矢量乘以增益項γ換算。增益單元205的輸出加到一組線性濾波器207和209以獲得重建語音的N個樣值。濾波器包括一“長期”(或“音調(diào)”)濾波器207,它將音調(diào)周期性插入激勵中。“長期”濾波器207的輸出又加到“短期”(或“峰段”)濾波器209。短期濾波器209給信號加上譜包絡(luò)。
長期濾波器207包括長期預(yù)測器系數(shù)(LTP)。長期濾波器207試圖從一個或多個很遠(yuǎn)以前的樣值中預(yù)測下一個輸出樣值。如果僅有一個過去的樣值被應(yīng)用于預(yù)測器中,那么,預(yù)測器就是一單抽頭預(yù)測器。典型地使用一到三個抽頭。含有一個單抽頭長期預(yù)測器的長期(“音調(diào)”)濾波器207,其傳遞函數(shù)由(1.1)給出B(z)=11-βz-L---(1.1)]]>B(z)的特性由兩個量L和β表示。L稱為“滯后”。對于聲頻的語音,L典型地應(yīng)是音調(diào)周期或是它的倍數(shù)。L也可能是一非整數(shù)值。如果L是一非整數(shù),一個內(nèi)插的有限脈沖響應(yīng)(FIR)濾波器被用來產(chǎn)生部分延遲的樣值。β是長期(或“音調(diào)”)預(yù)測器系數(shù)。
短期濾波器209包括短期預(yù)測器系數(shù)αi,它試圖從前面的Np個輸出樣值中預(yù)測下一個輸出樣值。Np典型的范圍是從8到12。在本優(yōu)選的實施例中,Np等于10。短期濾波器209相當(dāng)于傳統(tǒng)的Lpc合成濾波器。短期濾波器209的傳遞函數(shù)由(1.2)給出A(z)=11-Σi=1Npαiz-i---(1.2)]]>短期濾波器209的特性由αi參量表示。對于全極點“合成”濾波器,它是直接形式濾波器系數(shù)。關(guān)于αi參量的詳情可在下面見到。
各種參量(代碼,增益,濾波器參量)并不以相同的速率發(fā)送到合成器(語音譯碼器)。典型地,短期參量的更新通常比代碼少。我們將定義短期參量更新率為“幀頻”,更新之間的間隔為一“幀”。代碼更新率由矢量長度N決定。我們將定義代碼更新率為“子幀頻”,代碼更新間隔為“子幀”。一幀通常由整數(shù)個子幀組成。增益和長期參量可以子幀頻,幀頻或根據(jù)語音編碼器設(shè)計的兩者之間的某些速率更新。
代碼簿搜索過程包括嘗試每一個碼矢作為可能激勵CELP合成器的碼矢。合成語音S′(n)在比較器211和輸入語音S(n)相比較,而產(chǎn)生一差值信號ei。這個差值信號ei(n)由一譜加權(quán)濾波器W(z)213(也可能由第二加權(quán)濾波器C(z)加以濾波以產(chǎn)生一加權(quán)的誤差信號e′(n)。e′(n)中的功率在能量計算器215上計算。產(chǎn)生最小加權(quán)誤差功率的碼矢被選為該子幀的碼矢。譜加權(quán)濾波器213用來對基于感官考慮的誤差譜進(jìn)行加權(quán)。這個加權(quán)濾波器213是語音譜的一個函數(shù),并能以短期(譜)濾波器209的α參量來表示。W(z)=1-Σi=1Npαiz-i1-Σi=1Npα~iz-i---(1.3)]]>有兩種方法能用來計算增益γ??梢栽诟鶕?jù)殘余能量的代碼簿搜索之前決定增益。這個增益然后可被固定用于代碼簿搜索。另一個方法是當(dāng)代碼簿搜索時優(yōu)化每個碼矢的增益。產(chǎn)生最小加權(quán)誤差的碼矢將被選擇,并且它相應(yīng)的最佳增益將被用于γ。由于增益是對每個碼矢的優(yōu)化,所以后一方法一般地能產(chǎn)生更好的效果。這個方法也意味著增益項必須以子幀頻更新。此技術(shù)的最佳代碼和增益可計算如下1.對于子幀計算已加權(quán)的輸入信號y(n)。2.計算d(n),子幀的B(z)和W(z)(和(C(z),如果使C(z)的情況下)濾波器的零輸入響應(yīng)。(零輸入響應(yīng)是濾波器沒有輸入時的響應(yīng);濾波器狀態(tài)的衰減)。3.在整個子幀計算 p(n)=y(tǒng)(n)-d(n) (0≤n≤N-1)4.對于每個代碼i。
a.計算g(n),即碼矢i的B(z)和W(z)(和C(z),如果使用的情況下)的零狀態(tài)響應(yīng)。(零狀態(tài)響應(yīng)是將起始濾波狀態(tài)置為零的濾波器輸出)。
b.計算Ci=Σn=0N-1gi(n)p(n)---(1.5)]]>即,已濾波的碼矢i和p(n)之間的互相關(guān)c.計算Gi=Σn=0N-1|gi(n)|2---(1.6)]]>即,已濾波的碼矢i中的功率。5.選擇i,它使
達(dá)到最大。6.使用所選擇的碼字和它相應(yīng)的量化增益,更新B(z)和W(z)(和C(z),如使用的情況下)濾波器的濾波狀態(tài),以得到合成器在步驟2的下一子幀起始的同樣濾波狀態(tài)。碼矢i的最佳增益由(1.8)式給出γi=CiGi---(1.8)]]>使用最佳增益γi的碼矢i的總加權(quán)誤差由(1.9)給出Ei=(Σn=0N-1p2(n))-|Ci|2Gi---(1.9)]]>短期預(yù)測器參量是圖2短期濾波器209的αi′。這些是標(biāo)準(zhǔn)的LPC直接形式濾波器系數(shù),許多LPC分析技術(shù)可被用來決定這些系數(shù)。在本優(yōu)選實施例中,使用了一個快速定點協(xié)方差點陣算法(FLAT)。FLAT具有點陣算法的全部優(yōu)點,包括有保證的濾波器穩(wěn)定性,非窗口分析和在循環(huán)內(nèi)量化反射系數(shù)的能力。此外,F(xiàn)LAT在數(shù)值上是健全的,并能在一定點處理器上很容易實現(xiàn)。
短期預(yù)測器參量是從輸入語音計算的,沒有使用預(yù)加重。用于參量計算的分析長度是170個樣值(NA=170)。預(yù)測器的階數(shù)是10(Np=10)。
這部分將詳細(xì)描述FLAT算法。令落入分析間隔內(nèi)輸入語音的樣值用S(n)表示;0≤n≤NA-1。因為FLAT是一點陣算法,可以認(rèn)為該技術(shù)是試圖逐級地建立一最佳(它使殘余能量最小)的逆點陣濾波器。定義bj(n)為來自逆點陣濾波器第j級的反向余項,fj(n)為來自逆點陣濾波器第j級的正向余項,我們可定義Fj(i,k)=Σn=NpNA-1fj(n-i)fj(n-k)---(2.1)]]>為fj(n)的自相關(guān);Bj(i,k)=Σn=NpNA-1bj(n-i-1)bj(n-k-1)---(2.2)]]>為bj(n-1)的自相關(guān);以及Cj(i,k)=Σn=NpNA-1fj(n-i)bj(n-k-1)---(2.3)]]>為fj(n)和bj(n-1)之間的互相關(guān)。令rj表示逆點陣第j級的反射系數(shù)。于是Fj(i,k)=Fj-1(i,k)+rj(Cj-1(i,k)+Cj-1(k,i))+rj2Bj-1(i,k)---(2.4)]]>和Bj(i,k)=Bj-1(i+1,k+1)+rj(Cj-1(i+1,k+1)+Cj-1(k+1,i+1))+rj2Fj-1(i+1,k+1)---(2.5)]]>和Cj(i,k)=Cj-1(i,k+1)+rj(Bj-1(i,k+1)+Fj-1(i,k+1))+rj2Cj-1(k+1,i)---(2.6)]]>我們已選擇的用來決定rj的公式可表示為Tj=-2Cj-1(0,0)+Cj-1(Np-j,Np-j)Fj-1(0,0)+Bj-1(0,0)+Fj-1(Np-j,Np-j)+Bj-1(Np-j,Np-j)]]>FLAT算法現(xiàn)可描述如下1.首先從輸入語音中計算協(xié)方差(自相關(guān))矩陣φ(i,k)=ΣNPNA-1s(n-i)s(n-k)---(2.8)]]>0≤i,k≤NP.2.
F0(i,k)=f(i,k)0≤i,k≤NP-1(2.9)B0(i,k)=f(i+1,k+1)0≤i,k≤NP-1(2.10)C0(i,k)=f(i,k+1)0≤i,k≤NP-1(2.11)3.設(shè)j=14.用(2.7)式計算rj5.如j=Np,于是結(jié)束6.用(2.4)計算Fj(i,k)0≤i,k≤Np-j-1用(2.5)計算B(i,k) 0≤i,k≤Np-j-1用(2.6)計算Cj(i,k)0≤i,k≤Np-j-17.j=j(luò)+1;轉(zhuǎn)到4在解出反射系數(shù)之前,用給自相關(guān)函數(shù)開窗的方法修正φ數(shù)值φ′(i,k)=φ(i,k)w(|i-k|)(2.12)在計算反射系數(shù)之前,給自相關(guān)函數(shù)開窗通稱為譜平滑(SST)。
從反射系數(shù)rj,可計算短期LPC預(yù)測系數(shù)αi。
使用反射系數(shù)的28比特三段矢量量化器。矢量量化器的段分別復(fù)蓋反射系數(shù)r1-r3,r4-r6,和r7-r10。矢量量化器段的比特分配是Q111比特Q29比特Q38比特為避免窮舉的矢量量化器搜索的計算復(fù)雜性,在每一段使用了反射系數(shù)矢量的預(yù)量化器。每段預(yù)量化器的大小是P16比特P25比特
P34比特在一給定段,來自預(yù)量化器的每個矢量的殘余誤差被計算并存入暫時存貯器中。搜索這個表以識別最低失真的4個預(yù)量化器矢量。每個選出的預(yù)量化器矢量的指數(shù)是用來計算進(jìn)入矢量量化器表中的偏移,與預(yù)量化器矢量相連系的量化器矢量鄰接的子集從這里開始。在第k段每個矢量量化器子集的大小由下式給出Sk=2Qk2Pk---(2.13)]]>與選出的預(yù)量化器矢量相連系的量化器矢量的4個子集被檢索用來尋找產(chǎn)生最低殘余誤差的量化器矢量。這樣,在第一段估算64個預(yù)量化器矢量和128個量化器矢量,在第二段估算32個預(yù)量化器矢量和64個量化器矢量,在第三段估算16個預(yù)量化器矢量和64個量化器矢量。通過上述具有頻帶擴(kuò)展的FLAT技術(shù)所計算的最佳反射系數(shù)在矢量量化之前被轉(zhuǎn)換為一自相關(guān)矢量。
FLAT算法的自相關(guān)方案AFLAT是被用來計算正在被估算的反射系數(shù)矢量的殘余誤差能量。象FLAT一樣,當(dāng)計算最佳反射系數(shù)或從當(dāng)前段的矢量量化器中選擇反射系數(shù)時,這個算法具有部分地補(bǔ)償來自以前點陣級中反射系數(shù)量化誤差的能力。這個改善對于具有高反射系數(shù)量化失真的幀是很重要的?,F(xiàn)在描述AFLAT算法(在帶有預(yù)量化器的多段矢量量化器的范圍內(nèi))
在0≤i≤Np范圍內(nèi),根據(jù)最佳反射系數(shù)計算自相關(guān)序列R(i)?;蛘撸筛鶕?jù)其它的LPC參量表示(如直接形式LPC預(yù)測器系數(shù)αi′)來計算自相關(guān)序列,或直接根據(jù)輸入語音來計算。定義AFLAT循環(huán)的起始條件P0(i)=R(i),0 ≤i≤Np-1(2.14)V0(i)=R(|i+1|),1-Np≤i≤Np-1(2.15)初始化矢量量化器段指數(shù)kk=1 (2.16)令I(lǐng)1(k)是第k段中第一點陣級的指數(shù),Ih(k)是第k段的最后點陣級的指數(shù)。在第k段估算來自點陣級Ih(k)的殘余誤差的循環(huán),已知r,來自預(yù)量化器的反射系數(shù)矢量或來自量化器的反射系數(shù)矢量表示如下。初始化點陣級的指數(shù)j,以指向第k段的開始j=I1(k)(2.17)設(shè)置Pj-1和Vj-1的起始條件為Pj-1(i)=Pj-1(i),0≤i≤Ib(k)-I1(k)+1 (2.18)Vj-1(i)=Vj-1(i),-Ib(k)+I1(k)-1≤i≤Ih(k)-I1(k)+1(2.19)
用下式計算Vj和Pj數(shù)值,Pj(i)=(1+r^j2)Pj-1(i)+r^j[Vj-1(i)+Vj-1(-i)],0≤i≤Ib(k)-j---(2.20)]]>Vj(i)=Vj-1(i+1)+r^j2Vj-1(-i-1)+2r^iPj-1(|i+1|),j-Ib(k)≤i≤Ib(k)-j---(2.21)]]>j增加j=j(luò)+1(2.22)如j≤Ih(k)轉(zhuǎn)到(2.20)式。已知反射系數(shù)矢量
,來自點陣級Ih(k)的殘余誤差由下式給出Er=PIh(k)(0)---(2.23)]]>使用概述的AFLAT循環(huán),估算來自第k段預(yù)量化器的每個矢量引起的殘余誤差,識別要搜索的量化器矢量的4個子集,并計算來自所選出的4個子集的每個量化器矢量引起的殘余誤差。在4個子集中所有量化器矢量范圍內(nèi)使Er為最小的量化器矢量
的指數(shù),被用Qk比特編碼。如k<3,于是在k+1段進(jìn)行循環(huán)的起始條件需要計算。設(shè)點陣級指數(shù)j等于j=I1(k)(2.24)計算P‾j(i)=(1+r~j2)P‾j-1(i)+r~j[V‾j-1(i)+V‾j-1(-i)],0≤i≤Np-j-1---(2.25)]]>V‾J(i)=V‾j-1(i+1)+r~j2V‾j-1(-i-1)+2r~jP‾j-1(|i+1|),j-Np+1≤i≤Np-j-1---(2.26)]]>j增加,j=j(luò)+1(2.27)如j≤Ih(k),轉(zhuǎn)到式(2.25)增加矢量量化器分段指數(shù)kk=k+1(2.28)如k≤3,轉(zhuǎn)到(2.17)。否則,選擇三段的反射系數(shù)矢量的指數(shù),并終止反射系數(shù)矢量量化器的搜索。
為了使反射系數(shù)矢量量化器的存貯要求為最小,單個反射系數(shù)的八位代碼而不是實際的反射系數(shù)值被存貯于矢量量化器表中,該代碼被用來從有256項的標(biāo)量量化表中查尋反射系數(shù)值。八位代碼表示通過均勻采樣圖3所示的反正弦函數(shù)所得到的反射系數(shù)值。反射系數(shù)值從-1到+1變化。當(dāng)值是接近于+/-1的極限時,在反射系數(shù)域(X軸)中的非線性間隔提供更精確的反射系數(shù)。而當(dāng)值是近于0時,提供稍差的精確度。假設(shè)為256量化級時,和在反射系數(shù)域中均勻采樣相比較,這減少了由于反射系數(shù)的標(biāo)量量化引起的譜失真。
權(quán)利要求
1.存貯反射系數(shù)矢量的方法包含以下步驟提供具有2N個反射系數(shù)值的表,每個反射系數(shù)值以N位代碼尋址;和存貯一個N位代碼以表示表中的反射系數(shù)值中的一個值。
2.依照權(quán)利要求1存貯的方法,其中,反射系數(shù)值是非線性范圍的。
3.依照權(quán)利要求1存貯的方法,其中,反射系數(shù)值是范圍在-1和+1之間的反正弦。
全文摘要
矢量相加激勵的線性預(yù)測編碼(VSELP)語音編碼器提供了改進(jìn)的質(zhì)量,減少了通常語音編碼器的復(fù)雜性。VSELP使用代碼簿,它有一預(yù)先定義的結(jié)構(gòu)使得代碼簿搜索過程所要求的計算大為減少。這個VSELP語音編碼器運用基于定點陣技術(shù)(FLAT)的反射系數(shù)的單一或多段矢量量化器。此外,這個語音編碼器使用預(yù)量化器來減小搜索的復(fù)雜性,使用高分辨標(biāo)量量化器來減小所需要的存貯總量。以減少計算量和存貯要求。
文檔編號G10L19/08GK1166019SQ9710345
公開日1997年11月26日 申請日期1997年3月12日 優(yōu)先權(quán)日1993年3月26日
發(fā)明者艾瑞·A·格森, 馬克·A·杰休科, 馬休·A·哈特曼 申請人:摩托羅拉公司