帶級間預測的超幀聲道參數多級矢量量化方法
2023-05-31 16:43:06
專利名稱:帶級間預測的超幀聲道參數多級矢量量化方法
技術領域:
帶級間預測的超幀聲道參數多級矢量量化方法屬於語音編碼技術領域,特別涉及多幀聯合處理低碼率參數語音編碼技術。
背景技術:
語音編碼在通信系統、語音存儲回放系統、具有語音功能的消費類產品中有廣泛的應用。近些年來國際電信聯盟(ITU)、一些區域組織和一些國家相繼制定了一系列語音壓縮編碼標準,在編碼速率為1.2kb/s到16kb/s上得到了令人滿意的語音質量。目前國內外的研究主要集中在1.2kb/s以下速率高質量語音壓縮編碼上,主要用於無線通信、保密通信、大容量語音存儲回放等。由於編碼速率太低,必須採用多幀聯合(即超幀)處理的參數語音編碼技術,其中最關鍵的是如何對聲道參數進行量化,因為聲道參數量化所需要的比特數最高,對它量化的質量將決定語音可懂度。
直接對聲道A參數量化效果不好,因此需要將聲道A參數轉成線譜對參數,然後再進行量化。如圖1所示,該方法包括以下步驟 步驟(1)對輸入語音信號樣點按時間順序分幀,將連續的若干幀組成一個超幀; 步驟(2)對當前超幀中的每一幀提取聲道A參數; 步驟(3)將當前超幀中的每一幀聲道A參數轉換成線譜對參數; 步驟(4)對當前超幀中的每一幀提取清濁音參數; 步驟(5)對當前超幀的清濁音參數進行矢量量化,得到當前超幀量化後的清濁音參數量化值; 步驟(6)根據當前超幀清濁音參數量化值確定當前超幀模式; 步驟(7)根據當前超幀的模式確定當前超幀中每一個線譜對參數的直流分量,並從每一個線譜對參數中減去相應的直流分量; 步驟(8)根據當前超幀模式和前一個超幀的模式確定一組線譜對參數預測係數; 步驟(9)利用這一組預測係數和前一超幀中最後一幀量化後的餘量線譜對參數計算預測值;從當前超幀中每一個已去直流線譜對參數中減去相應的預測值,得到當前超幀的餘量線譜對參數; 步驟(10)對當前超幀的餘量線譜對參數進行多級矢量量化,得到當前超幀量化後的餘量線譜對參數; 步驟(11)將上述步驟(7)得到的直流分量和上述步驟(9)得到的預測值加到量化後的餘量線譜對參數中得到量化後的線譜對參數; 步驟(12)將當前超幀量化後的線譜對參數轉換成聲道A參數,得到量化後的聲道A參數。
上述已有技術對超幀線譜對參數採用矢量量化,在矢量量化之前對線譜對參數去除直流分量,並利用已處理過的上一超幀線譜對參數對當前超幀的線譜對參數進行預測,然後去除預測分量,再進行多級矢量量化。但在多級矢量量化過程中,搜索上一級碼本所選定的碼矢和下一級待量化的殘差矢量之間的相關性卻沒有得到充分利用,因而量化質量並不是最優的。
如圖1所示,原有技術只去除了各幀之間的相關性,但在低速率參數語音編碼技術中,對各參數尤其是LSF的量化精度要求很高,僅去除幀間冗餘信息,不足以達到較高的量化質量。
發明內容
本發明的目的是克服已有技術的不足之處,提出一種超幀聲道參數矢量量化的方法,能夠充分利用超幀之間、多級矢量量化中上一級碼本的選定碼矢和殘差矢量之間的相關性,預測效率及量化精度更高。
本發明提出的帶級間預測的超幀聲道參數量化方法,包括以下步驟 步驟(1)對輸入語音信號樣點按時間順序分幀,將連續的若干幀組成一個超幀; 步驟(2)對當前超幀中的每一幀提取聲道A參數; 步驟(3)將當前超幀中的每一幀聲道A參數轉換成線譜對參數; 步驟(4)對當前超幀中的每一幀提取清濁音參數; 步驟(5)對當前超幀的清濁音參數進行矢量量化,得到當前超幀量化後的清濁音參數量化值; 步驟(6)根據當前超幀清濁音參數量化值確定當前超幀模式; 步驟(7)根據當前超幀的模式確定當前超幀中每一個線譜對參數的直流分量,並從每一個線譜對參數中減去相應的直流分量; 步驟(8)根據當前超幀模式和前一個超幀的模式確定一組線譜對參數預測係數; 步驟(9)利用這一組預測係數和前一超幀中最後一幀量化後的餘量線譜對參數計算預測值;從當前超幀中每一個已去直流線譜對參數中減去相應的預測值,得到當前超幀的餘量線譜對參數R;同時,設定變量R1=R,設定變量i,令i=1; 步驟(10)對Ri進行矢量量化,在當前第i級碼本中搜索與待量化矢量最近的碼矢
若當前級為最後一級,跳至步驟(14); 步驟(11)根據多級矢量量化級數及當前級數確定一組級間預測係數αn(i,i+1),利用這一組預測係數和當前第i級已定碼矢得到級間預測值Rip,其中, 步驟(12)從第i級待量化線譜對參數Ri中減去步驟(10)中搜索所得到的碼矢
及步驟(11)得到的預測值Rip,得到第i+1級待量化的矢量參數Ri+1; 步驟(13)令i=i+1,重複(10),(11),(12)的步驟,直至完成多級矢量量化最後一級; 步驟(14)將多級矢量量化各級的選定碼矢及級間預測值相加求和,得到量化後的餘量線譜對參數; 步驟(15)將上述步驟(7)得到的直流分量和上述步驟(9)得到的預測值加到步驟(14)量化後的餘量線譜對參數中得到量化後的線譜對參數; 步驟(16)將當前超幀量化後的線譜對參數轉換成聲道A參數,得到量化後的聲道A參數。
本發明的特點是在對線譜對參數的多級矢量量化過程中,不僅採用了幀間預測,在多級矢量量化過程中也採用了級間預測。目前的語音參數編碼模型中,只考慮了超幀幀間的相關性,並利用了此相關性得到餘量線譜對參數,從而降低了量化的計算量和存儲量,並達到了較高的量化精度。本發明經過對大量語音樣本統計,發現多級矢量量化中上一級碼本搜索過程中所選定的碼矢和下一級待量化殘差矢量之間也存在一定的相關性,利用這種相關性可以提高低碼率語音編碼的性能。本發明利用餘量線譜對參數多級矢量量化中,各級之間的相關性,進一步去除冗餘信息,得到新的待量化參數,可以更好地完成餘量線譜對的多級矢量量化。這種方法利用多級矢量量化中上一級碼本搜索過程中選定碼矢和殘差矢量之間的相關性,使得對聲道參數量化的精度得到了提高,進而提高了低碼率語音編碼的質量。
本方法可以提高聲道參數的量化精度,使合成語音具有更高的可懂性。該方法最適合300~2400b/s低速率參數語音編碼。
圖1為已有技術的超幀聲道參數量化方法流程框圖。
圖2為本發明提出的超幀聲道參數量化方法流程框圖。
具體實施例方式 本發明提出的超幀聲道參數矢量量化方法結合附圖及實施例進一步說明如下 本發明的方法流程如圖2所示,包括以下步驟 步驟(1)對輸入語音信號樣點按時間順序分幀,將連續的若干幀組成一個超幀; 步驟(2)對當前超幀中的每一幀提取聲道A參數; 步驟(3)將當前超幀中的每一幀聲道A參數轉換成線譜對參數; 步驟(4)對當前超幀中的每一幀提取清濁音參數; 步驟(5)對當前超幀的清濁音參數進行矢量量化,得到當前超幀量化後的清濁音參數量化值; 步驟(6)根據當前超幀清濁音參數量化值確定當前超幀模式; 步驟(7)根據當前超幀的模式確定當前超幀中每一個線譜對參數的直流分量,並從每一個線譜對參數中減去相應的直流分量; 步驟(8)根據當前超幀模式和前一個超幀的模式確定一組線譜對參數預測係數; 步驟(9)利用這一組預測係數和前一超幀中最後一幀量化後的餘量線譜對參數計算預測值;從當前超幀中每一個已去直流線譜對參數中減去相應的預測值,得到當前超幀的餘量線譜對參數R;同時,設定變量R1=R,設定變量i,令i=1; 步驟(10)對Ri進行矢量量化,在當前第i級碼本中搜索與待量化矢量最近的碼矢
若 當前級為最後一級,跳至步驟(14); 步驟(11)根據多級矢量量化級數及當前級數確定一組級間預測係數αn(i,i+1),利用這一組預測係數和當前第i級已定碼矢得到級間預測值Rip,其中, 步驟(12)從第i級待量化線譜對參數Ri中減去步驟(10)中搜索所得到的碼矢
及步驟(11)得到的預測值Rip,得到第i+1級待量化的矢量參數Ri+1; 步驟(13)令i=i+1,重複(10),(11),(12)的步驟,直至完成多級矢量量化最後一級; 步驟(14)將多級矢量量化各級的選定碼矢及級間預測值相加求和,得到量化後的餘量線譜對參數; 步驟(15)將上述步驟(7)得到的直流分量和上述步驟(9)得到的預測值加到步驟(14)量化後的餘量線譜對參數中得到量化後的線譜對參數; 步驟(16)將當前超幀量化後的線譜對參數轉換成聲道A參數,得到量化後的聲道A參數。
本發明上述方法各步驟的具體實施例分別詳細說明如下 上述方法步驟(1)對輸入語音信號樣點按時間順序分幀,將連續的若干幀組成一個超幀的實施例是按8khz頻率採樣、已經過高通濾波去除工頻幹擾的語音樣點。每20ms,也就是160個語音樣點構成一幀,連續6幀組成一個超幀(根據編碼速率選擇一個超幀所晗幀的數目,例如編碼速率為1200b/s可以選3幀,600b/s選6幀等)。
上述方法步驟(2)的實施例為按美國政府2400b/s多帶激勵的線性預測(MELP)語音編碼算法標準所描述的方法對當前超幀中的每一幀都提取10階聲道A參數an=[a1n,a2n,…,a10n](n=0,1,…,5)。
上述方法步驟(3)的實施例為按美國政府2400b/s多帶激勵的線性預測(MELP)語音編碼算法標準所描述的方法將當前超幀中的每一幀聲道A參數轉換成線譜對參數fn=[f1n,f2n,…,f10n],(n=0,1,…,5)。
上述方法步驟(4)的實施例為按美國政府2400b/s多帶激勵的線性預測(MELP)語音編碼算法標準所描述的方法對當前超幀中的每一幀都提取5個子帶的清濁音參數,子帶為清音用「0」表示,子帶為濁音用「1」表示。這樣一個超幀中6個幀總共有30個子帶清濁音參數,構成一個30維的矢量,每一維的值為「0」或「1」,記做F 上述方法步驟(5)中的實施例為對上述清濁音矢量F用4比特矢量量化,總共有16種超幀清濁音矢量量化值,每一個矢量量化值對應一種超幀模式;本實施例的矢量量化值碼錶由表1給出,對應的超幀模式也在表1中給出。量化失真測度採用加權歐氏距離準則,即使下式所示的失真D最小 D=(F-F(i))·W·(F-F(i))T 其中F(i)(i=0,1,…,15)是矢量量化碼本中的一個碼字,加權矩陣W是一個對角矩陣,其值用來表示各子帶重要性的不同。通常低帶最重要,隨著頻帶的升高重要性依次降低,對每幀的5個子帶分配不同的權重,在本實施例中,5個子帶權重的比例為16∶8∶4∶2∶1,反映了低頻子帶比高頻子帶更重要,從而加權矩陣W如下所示
每個碼字都代表了超幀的一種模式,也就是說,通過超幀清濁判決參數的量化,可以確定超幀的模式。清濁音矢量量化碼字是通過對訓練語音樣本統計得到的出現次數最多的16種超幀清濁音矢量。
上述方法步驟(6)的實施例為通過步驟(5)的實施例中對清濁音矢量F量化的結果,利用表1確定當前超幀的模式,記作F0,下標「0」表示當前超幀。
表1超幀清濁音矢量量化碼錶和對應的超幀模式 上述方法步驟(7)的實施例為使用上述步驟(5)的實施例方法得到的當前超幀模式F0確定各幀線譜對參數的直流分量矢量n=(0,1,…,5),並從對應的線譜對參數中減去直流分量,得到去直流分量後的線譜對參數ln=[l1n,l2n,…,l10n](n=0,1,…,5) ln=fn-dn(F0),(n=0,1,…,5) 直流分量n=(0,1,…,5)是用訓練語音得到的。本實施例的具體做法是將訓練語音按超幀模式分成16個子集,對每個子集的線譜對參數分別求平均值即得到線譜對參數直流分量。
上述方法步驟(8)的實施例為根據當前超幀模式F0和前一超幀模式F-1的轉移模式(F-1,F0)確定一組線譜對參數預測係數矩陣αn(F-1,F0),(n=0,1,…,5),它是一個10×10的矩陣。
上述方法步驟(9)的實施例為利用上述步驟(8)的實施例方法得到的預測係數矩陣αn(F-1,F0)和前一超幀中最後一幀量化後的去直流線譜對參數矢量計算預測值,並從上述步驟(7)的實施例得到的當前超幀中每一個已去直流線譜對參數ln=[l1n,l2n,…,l10n](n=0,1,…,5)中減去相應的預測值,得到當前超幀的餘量線譜對參數 (n=0,1,…,5), 即(n=0,1,…,5) 上式中的T代表轉置。預測係數矩陣αn(F-1,F0)是用訓練語音得到的。本實施例的具體做法是按轉移模式(F-1,F0)將訓練語音分集,對每個集分別求αn(F-1,F0),使下式最小 式中E代表求平均。
將當前超幀中6個幀去除直流分量和預測值後的餘量線譜對參數組成一個60維的矢量如下式所示, 令R1=R,i=1。
上述方法步驟(10)的實施例的具體做法為從當前級碼本Ci中搜索與待量化矢量Ri最近的碼矢,設為
即若當前級為多級矢量量化最後一級,跳至步驟(14)。
上述方法步驟(11)的實施例的具體做法為確定一組餘量線譜對參數多級矢量量化時多級間的預測係數αn(i,i+1),(n=1,...,60;i=1,..,M-1)。本實施例的具體做法是對多級量化的各級碼本與下一級待量化矢量分別求αn(i,i+1),使下式最小 上式中,Rij是第i級的待量化訓練矢量集中的第j個矢量;
是訓練集中第j個矢量在第i級碼本搜索時所得到的碼矢。
級間預測值Rip可以表示為, 上述方法步驟(12)的實施例的具體做法為從第i級待量化矢量中除去步驟(10)中碼本搜索得到的碼矢及步驟(11)中得到的預測值,從而得到第i+1級待量化矢量,如下 其中,Ri為多級矢量量化時第i級待量化矢量,令i=i+1。
上述方法步驟(13)的實施例的具體做法為跳至步驟(10),直至完成多級矢量量化最後一級。
上述方法步驟(14)的實施例的具體做法為將多級碼本搜索各級得到的碼矢及預測值相加,得到解碼端量化後的餘量線譜對矢量,即 其中αn(M,M+1)=0,M為多級量化的級數。
上述方法步驟(15)的實施例的具體做法為將相應的直流分量和預測值加到當前超幀相應的量化後的餘量線譜對參數中,得到當前超幀量化後的線譜對參數,即 (n=0,1,…,5) 式中
是當前超幀中第n幀量化後的線譜對參數矢量,
是步驟(14)中得到的當前超幀中第n幀量化後解碼端得到的的餘量線譜對參數矢量。
上述方法步驟(16)的實施例的具體做法為按照美國政府2400b/s多帶激勵的線性預測(MELP)語音編碼算法標準所描述的方法將量化後的線譜對參數
轉換成聲道A參數,即得到量化後的聲道A參數。
權利要求
1、帶級間預測的超幀聲道參數多級矢量量化方法,其特徵在於,該方法依次按以下步驟實現
步驟(1)對輸入語音信號樣點按時間順序分幀,將連續的若干幀組成一個超幀;
步驟(2)對當前超幀中的每一幀提取聲道A參數;
步驟(3)將當前超幀中的每一幀聲道A參數轉換成線譜對參數;
步驟(4)對當前超幀中的每一幀提取清濁音參數;
步驟(5)對當前超幀的清濁音參數進行矢量量化,得到當前超幀量化後的清濁音參數量化值;
步驟(6)根據當前超幀清濁音參數量化值確定當前超幀模式;
步驟(7)根據當前超幀的模式確定當前超幀中每一個線譜對參數的直流分量,並從每一個線譜對參數中減去相應的直流分量;
步驟(8)根據當前超幀模式和前一個超幀的模式確定一組線譜對參數預測係數;
步驟(9)利用這一組預測係數和前一超幀中最後一幀量化後的餘量線譜對參數計算預測值;從當前超幀中每一個已去直流線譜對參數中減去相應的預測值,得到當前超幀的餘量線譜對參數R;同時,設定變量R1=R,設定變量i,令i=1;
步驟(10)對Ri進行矢量量化,在當前第i級碼本中搜索與待量化矢量最近的碼矢
若當前級為最後一級,跳至步驟(14);
步驟(11)根據多級矢量量化級數及當前級數確定一組級間預測係數αn(i,i+1),利用這一組預測係數和當前第i級已定碼矢得到級間預測值Rip,其中,
步驟(12)從第i級待量化線譜對參數Ri中減去步驟(10)中搜索所得到的碼矢
及步驟(11)得到的預測值Rip,得到第i+1級待量化的矢量參數Ri+1;
步驟(13)令i=i+1,重複(10),(11),(12)的步驟,直至完成多級矢量量化最後一級;
步驟(14)將多級矢量量化各級的選定碼矢及級間預測值相加求和,得到量化後的餘量線譜對參數;
步驟(15)將上述步驟(7)得到的直流分量和上述步驟(9)得到的預測值加到步驟(14)量化後的餘量線譜對參數中得到量化後的線譜對參數;
步驟(16)將當前超幀量化後的線譜對參數轉換成聲道A參數,得到量化後的聲道A參數。
2、按權利要求1所述的方法,其特徵在於,所述步驟(1)中每一個超幀包含6個子幀,每一個子幀包含160個語音樣點。
3、按權利要求1所述的方法,其特徵在於,每一個超幀中包含的子幀數以及每一個子幀中包含的語音樣點數是設定的。
4、按權利要求1所述的方法,其特徵在於,步驟(11)中的級間預測係數按均方誤差最小的原則用訓練語音樣本提前統計得到。
全文摘要
帶級間預測的超幀聲道參數多級矢量量化方法涉及超幀聲道參數矢量量化方法,屬於低速率語音壓縮編碼技術領域,其特徵在於,該方法對已有的基於模式的去直流去幀間預測的多級矢量量化方案進行改進,多級矢量量化過程中,利用上一級碼本的選定碼矢對殘差矢量進行預測,得到預測值,下一級矢量量化的待量化值由上一級矢量量化的待量化值減去上一級的選定碼矢及預測值後得到。測試結果表明,這種帶有多級碼本級間預測的算法與無級間預測的算法相比能夠有效提高聲道參數的量化精度,使合成語音具有更高的可懂性。該方法適合300b/s-2400b/s低速率參數語音編碼。
文檔編號G10L19/00GK101295507SQ200810105138
公開日2008年10月29日 申請日期2008年4月25日 優先權日2008年4月25日
發明者崔慧娟, 昆 唐, 曄 李, 坦 彭, 明 許 申請人:清華大學