本發(fā)明涉及編解碼領(lǐng)域,特別地,涉及頻域包絡(luò)的矢量量化方法和裝置。
背景技術(shù):
通常,將輸入信號(hào)的一幀中的所有頻點(diǎn)或者部分頻點(diǎn)的值求平均能量再開(kāi)根號(hào)就獲得了這些頻點(diǎn)的頻域包絡(luò)。
目前,編解碼器中對(duì)頻域包絡(luò)進(jìn)行量化的方法通常是指簡(jiǎn)單的標(biāo)量量化或者矢量量化。但是,當(dāng)一些特殊的情況,例如需要在一幀中求出很多個(gè)頻域包絡(luò)同時(shí)對(duì)于用于量化頻域包絡(luò)的比特?cái)?shù)也存在一定限制時(shí),如果每個(gè)頻域包絡(luò)都采用標(biāo)量量化則會(huì)耗費(fèi)大量比特。
對(duì)于現(xiàn)有的矢量量化方法而言,包括以下步驟:(1)將需要量化的頻點(diǎn)根據(jù)矢量的維數(shù)劃分成若干個(gè)矢量;(2)預(yù)先使用大量的矢量樣本根據(jù)每個(gè)矢量量化的比特?cái)?shù)b訓(xùn)練出一個(gè)2^b長(zhǎng)度的碼本,即這個(gè)碼本有2^b個(gè)矢量,這些矢量是根據(jù)大量矢量樣本事先訓(xùn)練好的;(3)用需要量化的矢量a與碼本中的每個(gè)矢量進(jìn)行比較,找出與矢量a最接近的矢量b;(4)這個(gè)矢量b在碼本中的位置索引即為矢量a的量化值。因此,如果全部頻域包絡(luò)組合在一起做矢量量化則需要很大的碼本,導(dǎo)致復(fù)雜度的提升。
如何設(shè)計(jì)一種簡(jiǎn)單有效的頻域包絡(luò)矢量量化方法同時(shí)又能保證量化質(zhì)量是亟需解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出了頻域包絡(luò)的矢量量化方法和裝置,旨在解決由于碼本的比特?cái)?shù)不夠多而頻域包絡(luò)的數(shù)量較多所引起的量化精度不夠或者復(fù)雜度過(guò)高的問(wèn)題。
一方面,提出了一種頻域包絡(luò)的矢量量化方法,包括:將一幀中的n個(gè)頻域包絡(luò)劃分為n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò),n1、n、m為正整數(shù),且m大于或等于2,n大于n1;采用b比特的第一碼本對(duì)所述n1個(gè)矢量中的第一矢量進(jìn)行量化,以獲得所述第一矢量量化的碼字,其中所述第一碼本被劃分為2b1個(gè)部分,b為正整數(shù)且大于或等于2,b1為正整數(shù)且大于或等于1;根據(jù)所述第一矢量量化的碼字,確定量化后的第一矢量與所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分相關(guān)聯(lián),其中i為正整數(shù),i大于或等于1且小于或等于2b1;根據(jù)所述第i個(gè)部分的碼本確定所述第二碼本;基于所述第二碼本,對(duì)所述n1個(gè)矢量中第二矢量進(jìn)行量化。
結(jié)合第一方面,在第一方面的第一實(shí)施方式中,所述根據(jù)所述第i個(gè)部分的碼本確定第二碼本包括:采用所述第一碼本中的第i個(gè)部分作為第二碼本,其中所述第一碼本中的第i個(gè)部分的比特?cái)?shù)為b-b1。
結(jié)合第一方面,在第一方面的第二實(shí)施方式中,所述根據(jù)所述第i個(gè)部分的碼本確定第二碼本包括:采用預(yù)先訓(xùn)練的碼本作為第二碼本,其中所述預(yù)先訓(xùn)練的碼本的比特?cái)?shù)與所述第一碼本中的第i個(gè)部分的比特?cái)?shù)相同,均為b-b1。
結(jié)合第一方面或其第一、第二實(shí)施方式,在第一方面的第三實(shí)施方式中,當(dāng)b1為1時(shí),所述根據(jù)所述第一矢量量化的碼字,確定量化后的第一矢量與所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分相關(guān)聯(lián)包括:當(dāng)所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的前半部分,確定量化后的第一矢量與所述第一碼本的所述前半部分相關(guān)聯(lián);或者當(dāng)所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的后半部分,確定量化后的第一矢量與所述第一碼本的所述后半部分相關(guān)聯(lián)。
結(jié)合第一方面或其第一、第二實(shí)施方式,在第一方面的第四實(shí)施方式中,當(dāng)m為2且b1為1時(shí),所述根據(jù)所述第一矢量量化的碼字,確定量化后的第一矢量與所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分相關(guān)聯(lián)包括:確定與所述碼字對(duì)應(yīng)的量化后的第一矢量的第一個(gè)值與第二個(gè)值的比值是否在預(yù)定范圍;當(dāng)確定所述比值在預(yù)定范圍,確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的前半部分相關(guān)聯(lián);或者當(dāng)確定所述比值不在預(yù)定范圍,確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的后半部分相關(guān)聯(lián)。
結(jié)合第一方面或其第一至第四實(shí)施方式,在第一方面的第五實(shí)施方式中,所述將一幀中的n個(gè)頻域包絡(luò)劃分為n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò):當(dāng)所述一幀包括m個(gè)子幀,且所述m個(gè)子幀中每個(gè)子幀包括n1個(gè)包絡(luò),其中m與n1的乘積為n,將所述m個(gè)子幀中的每個(gè)子幀中對(duì)應(yīng)的包絡(luò)組合成一個(gè)矢量從而得到n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò)。
第二方面,提出了一種頻域包絡(luò)的矢量量化裝置,包括:矢量劃分單元,用于將一幀中的n個(gè)頻域包絡(luò)劃分為n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò),n1、n、m為正整數(shù),且m大于或等于2,n大于n1;第一量化單元,用于采用b比特的第一碼本對(duì)所述矢量劃分單元所劃分的所述n1個(gè)矢量中的第一矢量進(jìn)行量化,以獲得所述第一矢量量化的碼字,其中所述第一碼本被劃分為2b1個(gè)部分,b為正整數(shù)且大于或等于2,b1為正整數(shù)且大于或等于1;第一確定單元,用于根據(jù)所述第一量化單元量化的所述第一矢量量化的碼字,確定量化后的第一矢量與所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分相關(guān)聯(lián),其中i為正整數(shù),i大于或等于1且小于或等于2b1;第二確定單元,用于根據(jù)所述第一確定單元確定的所述第i個(gè)部分的碼本確定所述第二碼本;第二量化單元,用于基于所述第二確定單元確定的所述第二碼本,對(duì)所述n1個(gè)矢量中第二矢量進(jìn)行量化。
結(jié)合第二方面,在第二方面的第一實(shí)施方式中,所述第二確定單元具體用于:采用所述第一碼本中的第i個(gè)部分作為第二碼本,其中所述第一碼本中的第i個(gè)部分的比特?cái)?shù)為b-b1。
結(jié)合第二方面,在第二方面的第二實(shí)施方式中,所述第二確定單元具體用于:采用預(yù)先訓(xùn)練的碼本作為第二碼本,其中所述預(yù)先訓(xùn)練的碼本的比特?cái)?shù)與所述第一碼本中的第i個(gè)部分的比特?cái)?shù)相同,均為b-b1。
結(jié)合第二方面或其第一、第二實(shí)施方式,在第二方面的第三實(shí)施方式中,當(dāng)b1為1時(shí),所述第一確定單元具體用于:當(dāng)所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的前半部分,確定量化后的第一矢量與所述第一碼本的所述前半部分相關(guān)聯(lián);或者當(dāng)所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的后半部分,確定量化后的第二矢量與所述第一碼本的所述后半部分相關(guān)聯(lián)。
結(jié)合第二方面或其第一、第二實(shí)施方式,在第二方面的第四實(shí)施方式中,當(dāng)m為2且b1為1時(shí),所述第一確定單元具體用于:確定所述碼字對(duì)應(yīng)的量化后的第一矢量的第一個(gè)值與第二個(gè)值的比值是否在預(yù)定范圍;當(dāng)確定所述比值在預(yù)定范圍,確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的前半部分相關(guān)聯(lián);或者當(dāng)確定所述比值不在預(yù)定范圍,確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的后半部分相關(guān)聯(lián)。
結(jié)合第二方面或其第一至第四實(shí)施方式,在第二方面的第五實(shí)施方式中,所述矢量劃分單元具體用于:當(dāng)所述一幀包括m個(gè)子幀,且所述m個(gè)子幀中每個(gè)子幀包括n1個(gè)包絡(luò),其中m與n1的乘積為n,將所述m個(gè)子幀中的每個(gè)子幀中對(duì)應(yīng)的包絡(luò)組合成一個(gè)矢量從而得到n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò)。
本發(fā)明實(shí)施例通過(guò)將頻域包絡(luò)劃分為多個(gè)具有更少維數(shù)的矢量,能夠使用較少比特?cái)?shù)的碼本對(duì)頻域包絡(luò)矢量進(jìn)行矢量量化,不但能夠降低矢量量化的復(fù)雜度,并且能夠保證矢量量化的效果。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面所描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是根據(jù)本發(fā)明實(shí)施例的頻域包絡(luò)的矢量量化方法的流程圖。
圖2是根據(jù)本發(fā)明實(shí)施例的頻域包絡(luò)的矢量量化裝置的結(jié)構(gòu)示意圖。
圖3是實(shí)現(xiàn)本發(fā)明實(shí)施例的頻域包絡(luò)的矢量量化方法的編解碼器。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都應(yīng)屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例針對(duì)在頻域包絡(luò)進(jìn)行矢量量化時(shí)總比特?cái)?shù)受限的情況,根據(jù)需要編碼的頻域包絡(luò)的特點(diǎn),利用子幀間各個(gè)頻域包絡(luò)相關(guān)性等關(guān)系,提出了一種簡(jiǎn)單而又節(jié)省比特同時(shí)也能保證量化效果的頻域包絡(luò)的矢量量化方法。本發(fā)明實(shí)施例的矢量量化方法均針對(duì)一幀包含多個(gè)頻域包絡(luò)的情況。
以下將參照?qǐng)D1描述根據(jù)本發(fā)明實(shí)施例的頻域包絡(luò)的矢量量化方法。該矢量量化方法包括以下步驟。
s101,將一幀中的n個(gè)頻域包絡(luò)劃分為n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò),n1、n、m為正整數(shù)且大于或等于2,n大于n1。
例如,首先將一幀中的n個(gè)頻域包絡(luò)分為n1個(gè)m維矢量,于是n1×m=n。然后,對(duì)n1個(gè)矢量進(jìn)行矢量量化。這樣,由于維數(shù)減少,要達(dá)到合理的量化精度,單個(gè)矢量所需的比特?cái)?shù)也不用太多,矢量量化的復(fù)雜度也同時(shí)減少。
當(dāng)一幀包括m個(gè)子幀,且所述m個(gè)子幀中每個(gè)子幀包括n1個(gè)包絡(luò),其中m與n1的乘積為n,為了減少維數(shù),還可以將所述m個(gè)子幀中的每個(gè)子幀中對(duì)應(yīng)的包絡(luò)組合成一個(gè)矢量。這里,對(duì)應(yīng)的包絡(luò)可以是對(duì)應(yīng)位置的包絡(luò)。例如,在該m個(gè)子幀中,每個(gè)子幀的第一個(gè)包絡(luò)組合為第一矢量,每個(gè)子幀的第二個(gè)包絡(luò)組合為第二矢量,依此類(lèi)推。最后,得到n1個(gè)矢量,其中每個(gè)矢量包括m個(gè)頻域包絡(luò)。
一般地,對(duì)于不同的頻域包絡(luò)特性,可以采用不同的矢量組合方式:其一,當(dāng)同一子幀有多于兩個(gè)頻域包絡(luò)時(shí),同時(shí)子幀數(shù)比較少,比如只有兩個(gè)子幀時(shí),則可以將不同子幀的同一個(gè)頻域包絡(luò)進(jìn)行組合,這樣得到多個(gè)2維矢量;其二,當(dāng)存在多于兩個(gè)子幀時(shí),也可以將每個(gè)子幀的第一個(gè)頻域包絡(luò)組合成第一個(gè)矢量,每個(gè)子幀的第j個(gè)頻域包絡(luò)組合成第j個(gè)矢量。
s102,采用第一碼本對(duì)所述n1個(gè)矢量中的第一矢量進(jìn)行量化,以獲得所述第一矢量量化的碼字,其中所述第一碼本的b比特被劃分為2b1個(gè)部分,b為正整數(shù)且大于或等于2,b1為正整數(shù)且大于或等于1。
例如,對(duì)第一矢量進(jìn)行矢量量化需要的比特?cái)?shù)為b,那么需要訓(xùn)練得到一個(gè)具有2^b碼字的第一碼本。由于這n1個(gè)頻域包絡(luò)矢量屬于同一幀,因此可以根據(jù)這些矢量的前后關(guān)系對(duì)n1個(gè)矢量的碼本的順序進(jìn)行調(diào)整,從而根據(jù)前面的矢量的量化結(jié)果,估計(jì)出后續(xù)矢量的范圍,減少對(duì)后續(xù)矢量進(jìn)行矢量量化所需的比特?cái)?shù)。
容易理解,若將第一碼本分為2個(gè)部分,之后采用第一碼本的其中一個(gè)部分對(duì)后續(xù)矢量進(jìn)行量化,則量化后續(xù)矢量的碼本只有b-1個(gè)比特;若將第一碼本分為4個(gè)部分,之后采用第一碼本的其中一個(gè)部分對(duì)后續(xù)矢量進(jìn)行量化,則量化后續(xù)矢量的碼本只有b-3個(gè)比特;依次類(lèi)推。也就是說(shuō),可以使用較小的碼本對(duì)頻域包絡(luò)矢量進(jìn)行矢量量化,而且能夠降低矢量量化的復(fù)雜度以及保證矢量量化的效果。
s103,根據(jù)所述第一矢量量化的碼字,確定量化后的第一矢量與所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分相關(guān)聯(lián),其中i為正整數(shù),i大于或等于1且小于或等于2b1。
例如,當(dāng)b1為1時(shí),第一碼本被劃分為2個(gè)部分。因此,將量化后的第一矢量與第一碼本中的每個(gè)矢量進(jìn)行比較,找出第一碼本中的與第一矢量最接近的矢量,該矢量在第一碼本中的位置索引即為第一矢量的量化值。
當(dāng)確定該第一矢量的量化值位于第一碼本的前半部分,則確定所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的前半部分,即確定量化后的第一矢量與所述第一碼本的前半部分相關(guān)聯(lián),可以采用第一碼本的前半部分作為第二碼本;否則,確定所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的后半部分,即確定量化后的第一矢量與所述第一碼本的后半部分相關(guān)聯(lián),可以采用第一碼本的后半部分作為第二碼本。
或者,例如,當(dāng)m為2且b1為1時(shí),第一碼本被劃分為2個(gè)部分,且每個(gè)矢量是2維的。因此,將量化后的第一矢量與第一碼本中的每個(gè)矢量進(jìn)行比較,找出第一碼本中的與第一矢量最接近的矢量,該矢量在第一碼本中的位置索引即為第一矢量的量化值。
然后,確定所述碼字對(duì)應(yīng)的量化后的第一矢量的第一個(gè)值與第二個(gè)值的比值是否在預(yù)定范圍;當(dāng)確定所述比值在預(yù)定范圍,確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的前半部分相關(guān)聯(lián);或者當(dāng)確定所述比值不在預(yù)定范圍,確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的后半部分相關(guān)聯(lián)。這里,預(yù)定范圍是根據(jù)經(jīng)驗(yàn)預(yù)先設(shè)定的一個(gè)閾值范圍。
假設(shè)二維矢量的第一碼本為{(a1,b1),(a2,b2),(a3,b3),(a4,b4)},其中(a1,b1)的碼字(也即(a1,b1)在第一碼本中的位置索引)為1,(a2,b2)的碼字為2,(a3,b3)的碼字為3,(a4,b4)的碼字為4。碼字就是碼本中的每個(gè)矢量在碼本中對(duì)應(yīng)的位置索引。若確定第一矢量量化后的碼字為3,也就是說(shuō),所述碼字對(duì)應(yīng)的量化后的第一矢量為(a3,b3)。接著,將第一個(gè)值a3與第二個(gè)值b3的比值與預(yù)定范圍[a,b]進(jìn)行比較,若在該范圍內(nèi),則確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的前半部分相關(guān)聯(lián),可以采用第一碼本的前半部分作為第二碼本,否則確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的后半部分相關(guān)聯(lián),可以采用第一碼本的后半部分作為第二碼本。
s104,根據(jù)所述第i個(gè)部分的碼本確定第二碼本。
例如,如上所述,可以采用所述第一碼本中的第i個(gè)部分作為第二碼本,其中所述第一碼本中的第i個(gè)部分的比特?cái)?shù)為b-b1?;蛘?,例如,可以采用預(yù)先訓(xùn)練的碼本作為第二碼本,其中所述預(yù)先訓(xùn)練的碼本的比特?cái)?shù)與所述第一碼本中的第i個(gè)部分的比特?cái)?shù)相同,均為b-b1。
也就是說(shuō),第二矢量的碼本都可以直接根據(jù)第一個(gè)矢量的量化碼本取其一部分來(lái)確定。實(shí)際操作中,根據(jù)不同編解碼器的要求,也可以重新訓(xùn)練一個(gè)或者多個(gè)只有第一碼本的部分碼字的碼本(具有b-b1比特)作為第二個(gè)及后續(xù)矢量的碼本,從而達(dá)到減少量化比特?cái)?shù)和優(yōu)化量化質(zhì)量的效果。
s105,基于所述第二碼本,對(duì)所述n1個(gè)矢量中第二矢量進(jìn)行量化。
例如,可以基于第一個(gè)矢量量化的結(jié)果確定的第二碼本對(duì)第二個(gè)以及后續(xù)的矢量進(jìn)行量化。也就是,采用b比特的第一碼本對(duì)所述n1個(gè)矢量中的第一個(gè)矢量進(jìn)行量化,以獲得所述第一個(gè)矢量量化的碼字;然后,確定所述第一個(gè)矢量量化的碼字屬于所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分;再根據(jù)所述第i個(gè)部分的碼本確定第二碼本;最后,采用所述第二碼本,對(duì)所述n1個(gè)矢量中除第一個(gè)矢量之外的其他矢量進(jìn)行量化。
或者,例如,也可以基于第一個(gè)矢量量化的結(jié)果確定的第二碼本對(duì)第二個(gè)矢量進(jìn)行量化,然后再基于第二個(gè)矢量量化的結(jié)果確定的第三碼本對(duì)第三個(gè)矢量進(jìn)行量化,以此類(lèi)推。
由此可見(jiàn),本發(fā)明實(shí)施例通過(guò)將頻域包絡(luò)劃分為多個(gè)具有更少維數(shù)的矢量,能夠使用較小的碼本對(duì)頻域包絡(luò)矢量進(jìn)行矢量量化,不但能夠降低矢量量化的復(fù)雜度,并且能夠保證矢量量化的效果。
在一種實(shí)施方式中,當(dāng)b1為1時(shí),在步驟s103的確定所述第一個(gè)矢量量化的碼字屬于所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分,并在步驟s104中根據(jù)所述第i個(gè)部分的碼本確定第二碼本具體包括:
確定所述第一個(gè)矢量量化的碼字是否屬于所述第一碼本的所述2個(gè)部分中的第一部分,例如前半部分;
當(dāng)確定所述第一個(gè)矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的前半部分,則確定量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的前半部分相關(guān)聯(lián),進(jìn)一步確定第二碼本為所述第一碼本的前半部分;或者
當(dāng)確定所述第一個(gè)矢量量化的碼字不屬于所述第一碼本的所述2個(gè)部分中的前半部分,則確定量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的后半部分相關(guān)聯(lián),進(jìn)一步確定第二碼本為所述第一碼本的后半部分。
此時(shí),第二碼本只需b-1個(gè)比特。
在另一實(shí)施方式中,當(dāng)m為2且b1為1時(shí),在步驟103的根據(jù)所述第一矢量量化的碼字,確定量化后的第一矢量與所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分相關(guān)聯(lián),并在步驟s104中根據(jù)所述第i個(gè)部分的碼本確定第二碼本具體包括:
確定所述碼字對(duì)應(yīng)的量化后的第一個(gè)矢量(二維矢量)的前一個(gè)值與后一個(gè)值的比值是否在預(yù)定范圍;
當(dāng)確定所述比值在預(yù)定范圍,則確定量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的前半部分相關(guān)聯(lián),進(jìn)一步確定第二碼本為所述第一碼本的前半部分;或者
當(dāng)確定所述比值不在預(yù)定范圍,則確定量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的后半部分相關(guān)聯(lián),進(jìn)一步確定第二碼本為所述第一碼本的后半部分。
此時(shí),第二碼本只需b-1個(gè)比特。
在上述兩個(gè)實(shí)施方式中,示例性地描述了具有b個(gè)比特的第一碼本被分為2個(gè)部分的情況,這也是比較容易實(shí)現(xiàn)的實(shí)施方式。應(yīng)理解,本發(fā)明實(shí)施例中的第一碼本并不限于僅被分為2個(gè)部分,還可以是4個(gè)部分、8個(gè)部分,甚至更多的2的整數(shù)次方個(gè)部分。一般而言,若第一碼本被分為越多的部分,確定出的第二碼本的準(zhǔn)確性則越低,從而可能影響量化精度。因此,通常可以結(jié)合實(shí)際能使用的比特?cái)?shù)來(lái)考慮b1的取值,即將第一碼本分成幾個(gè)部分可以保證量化質(zhì)量。
以下給出了一些具體實(shí)施例,詳細(xì)描述根據(jù)本發(fā)明實(shí)施例的頻域包絡(luò)的矢量量化方法。
第一具體實(shí)施例。若一幀中包括n個(gè)頻域包絡(luò),該幀劃分為n1個(gè)子幀,每個(gè)子幀里有相同的頻域包絡(luò)數(shù)m,那么每個(gè)子幀的頻域包絡(luò)(共m個(gè)頻域包絡(luò))打包在一起作為一個(gè)矢量,則有n1個(gè)矢量:
首先,利用事先訓(xùn)練并排序好的2^b個(gè)碼字的第一碼本a,對(duì)第一個(gè)矢量用b比特進(jìn)行量化,量化結(jié)果為ind(1);
然后,判斷量化結(jié)果ind(1)在第一碼本a中的位置是否在前半部分:
若是,則采用碼本a的前半部分的碼字作為新碼本(即第二碼本,包括b-1個(gè)比特),對(duì)第二個(gè)及后續(xù)矢量用b-1比特進(jìn)行量化;
否則,若不是,則采用碼本a的后半部分的碼字作為新碼本(即第二碼本,包括b-1個(gè)比特),對(duì)第二個(gè)及后續(xù)矢量用b-1比特進(jìn)行量化。
由此可見(jiàn),該第一具體實(shí)施例首先對(duì)總碼本(例如,第一碼本)進(jìn)行排序,然后結(jié)合第一個(gè)矢量的量化結(jié)果,估計(jì)后續(xù)矢量的量化結(jié)果,然后縮小碼本范圍對(duì)后續(xù)矢量進(jìn)行量化。
第二具體實(shí)施例。如果矢量是2維的時(shí)候,還可以采用本具體實(shí)施例的方法:
首先,利用事先訓(xùn)練并排序好的2^b個(gè)碼字的第一碼本a,對(duì)第一個(gè)矢量用b比特進(jìn)行量化,量化結(jié)果為ind(1);
然后,判斷第一個(gè)矢量量化后的兩個(gè)值的比值,即將量化后的第一個(gè)矢量的前一個(gè)值除以后一個(gè)值,判斷是否在事先給定的范圍[a,b]內(nèi):
若是,則采用第一碼本a的前半部分的碼字作為新碼本(即第二碼本,包括b-1個(gè)比特),對(duì)第二個(gè)及后續(xù)矢量用b-1比特進(jìn)行量化;
否則,若不是,則采用第一碼本a的后半部分的碼字作為新碼本(即第二碼本,包括b-1個(gè)比特),對(duì)第二個(gè)及后續(xù)矢量用b-1比特進(jìn)行量化。
由此可見(jiàn),本具體實(shí)施例是根據(jù)二維向量的特點(diǎn),估計(jì)后續(xù)矢量的量化結(jié)果,然后縮小碼本范圍對(duì)后續(xù)矢量進(jìn)行量化。
以下將結(jié)合圖2描述根據(jù)本發(fā)明實(shí)施例的頻域包絡(luò)的矢量量化裝置。
在圖2中,頻域包絡(luò)的矢量量化裝置20包括矢量劃分單元21、第一量化單元22、第一確定單元23、第二確定單元24和第二量化單元25。其中:
矢量劃分單元21用于將一幀中的n個(gè)頻域包絡(luò)劃分為n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò),n1、n、m為正整數(shù),且m大于或等于2,n大于n1;
第一量化單元22用于采用b比特的第一碼本對(duì)所述矢量劃分單元21所劃分的所述n1個(gè)矢量中的第一矢量進(jìn)行量化,以獲得所述第一矢量量化的碼字,其中所述第一碼本被劃分為2b1個(gè)部分,b為正整數(shù)且大于或等于2,b1為正整數(shù)且大于或等于1;
第一確定單元23用于根據(jù)所述第一量化單元22量化的所述第一矢量量化的碼字,確定量化后的第一矢量與所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分相關(guān)聯(lián),其中i為正整數(shù),i大于或等于1且小于或等于2b1;
第二確定單元24用于根據(jù)所述第一確定單元23確定的所述第i個(gè)部分的碼本確定所述第二碼本;
第二量化單元25用于基于所述第二確定單元24確定的所述第二碼本,對(duì)所述n1個(gè)矢量中第二矢量進(jìn)行量化。
具體地,第二確定單元24可以用于采用所述第一碼本中的第i個(gè)部分作為第二碼本,其中所述第一碼本中的第i個(gè)部分的比特?cái)?shù)為b-b1?;蛘?,第二確定單元24可以用于采用預(yù)先訓(xùn)練的碼本作為第二碼本,其中所述預(yù)先訓(xùn)練的碼本的比特?cái)?shù)與所述第一碼本中的第i個(gè)部分的比特?cái)?shù)相同,均為b-b1。。
具體地,當(dāng)b1為1時(shí),第一確定單元23可以用于當(dāng)所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的前半部分,則確定量化后的第一矢量與所述第一碼本的所述前半部分相關(guān)聯(lián);或者當(dāng)所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的后半部分,則確定量化后的第一矢量與所述第一碼本的所述后半部分相關(guān)聯(lián)。
或者,當(dāng)m為2且b1為1時(shí),第一確定單元23可以用于確定所述碼字對(duì)應(yīng)的量化后的第一矢量的第一個(gè)值與第二個(gè)值的比值是否在預(yù)定范圍;當(dāng)確定所述比值在預(yù)定范圍,確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的前半部分相關(guān)聯(lián);或者當(dāng)確定所述比值不在預(yù)定范圍,確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的后半部分相關(guān)聯(lián)。
具體地,矢量劃分單元21還可以用于:當(dāng)所述一幀包括m個(gè)子幀,且所述m個(gè)子幀中每個(gè)子幀包括n1個(gè)包絡(luò),其中m與n1的乘積為n,將所述m個(gè)子幀中的每個(gè)子幀中對(duì)應(yīng)的包絡(luò)組合成一個(gè)矢量從而得到n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò)。
本發(fā)明實(shí)施例通過(guò)將頻域包絡(luò)劃分為多個(gè)具有更少維數(shù)的矢量,能夠使用較少比特?cái)?shù)的碼本對(duì)頻域包絡(luò)矢量進(jìn)行矢量量化,不但能夠降低矢量量化的復(fù)雜度,并且能夠保證矢量量化的效果。
圖3示出了實(shí)現(xiàn)本發(fā)明實(shí)施例的頻域包絡(luò)的矢量量化方法的編解碼器。該編解碼器30包括處理器31和存儲(chǔ)器32。其中,處理器31用于將一幀中的n個(gè)頻域包絡(luò)劃分為n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò),n1、n、m為正整數(shù),且m大于或等于2,n大于n1;采用b比特的第一碼本對(duì)所述n1個(gè)矢量中的第一矢量進(jìn)行量化,以獲得所述第一矢量量化的碼字,其中所述第一碼本被劃分為2b1個(gè)部分,b為正整數(shù)且大于或等于2,b1為正整數(shù)且大于或等于1;根據(jù)所述第一矢量量化的碼字,確定量化后的第一矢量與所述第一碼本的所述2b1個(gè)部分中的第i個(gè)部分相關(guān)聯(lián),其中i為正整數(shù),i大于或等于1且小于或等于2b1;根據(jù)所述第i個(gè)部分的碼本確定所述第二碼本;基于所述第二碼本,對(duì)所述n1個(gè)矢量中第二矢量進(jìn)行量化。存儲(chǔ)器32用于存儲(chǔ)處理器31執(zhí)行上述方法的指令。
具體而言,當(dāng)所述一幀包括m個(gè)子幀,且所述m個(gè)子幀中每個(gè)子幀包括n1個(gè)包絡(luò),其中m與n1的乘積為n,處理器31可以將所述m個(gè)子幀中的每個(gè)子幀中對(duì)應(yīng)的包絡(luò)組合成一個(gè)矢量從而得到n1個(gè)矢量,其中所述n1個(gè)矢量中的每一個(gè)矢量包括m個(gè)頻域包絡(luò)。
處理器31可以采用所述第一碼本中的第i個(gè)部分作為第二碼本,其中所述第一碼本中的第i個(gè)部分的比特?cái)?shù)為b-b1;或者,采用預(yù)先訓(xùn)練的碼本作為第二碼本,其中所述預(yù)先訓(xùn)練的碼本的比特?cái)?shù)與所述第一碼本中的第i個(gè)部分的比特?cái)?shù)相同,均為b-b1。
當(dāng)b1為1時(shí),處理器31可以根據(jù)所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的前半部分,確定量化后的第一矢量與所述第一碼本的所述前半部分相關(guān)聯(lián);或者根據(jù)所述第一矢量量化的碼字屬于所述第一碼本的所述2個(gè)部分中的后半部分,確定量化后的第一矢量與所述第一碼本的所述后半部分相關(guān)聯(lián)?;蛘撸?dāng)m為2且b1為1時(shí),處理器31可以根據(jù)所述與所述碼字對(duì)應(yīng)的量化后的第一矢量第一個(gè)值與第二個(gè)值的比值是否在預(yù)定范圍,確定量化后的第一矢量與所述第一碼本的所述前半部分或后半部分相關(guān)聯(lián);當(dāng)確定所述比值在預(yù)定范圍,確定所述量化后的第一矢量與所述第一碼本的所述2個(gè)部分中的前半部分相關(guān)聯(lián);或者當(dāng)確定所述比值不在預(yù)定范圍,確定所述第二碼本與所述第一碼本的所述2個(gè)部分中的后半部分相關(guān)聯(lián)。
由此可見(jiàn),本發(fā)明實(shí)施例通過(guò)將頻域包絡(luò)劃分為多個(gè)具有更少維數(shù)的矢量,能夠使用較少比特?cái)?shù)的碼本對(duì)頻域包絡(luò)矢量進(jìn)行矢量量化,不但能夠降低矢量量化的復(fù)雜度,并且能夠保證矢量量化的效果。
應(yīng)理解,本發(fā)明的每個(gè)權(quán)利要求所敘述的方案也應(yīng)看做是一個(gè)實(shí)施例,并且是權(quán)利要求中的特征是可以結(jié)合的,如本發(fā)明中的判斷步驟后的執(zhí)行的不同分支的步驟可以作為不同的實(shí)施例。
本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來(lái)實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專(zhuān)業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。