本發明涉及信號處理領域,并且具體地,涉及處理信號的方法及設備。
背景技術:
目前的通信傳輸越來越重視語音或音頻信號的質量,因此對信號編碼和解碼的要求也越來越高。在現有頻域編碼算法中,通常直接根據頻域包絡的大小對信號的各個子帶進行比特分配,然后利用所分配的比特數對各個子帶進行編碼。然而,實踐表明,在現有的這些編碼算法中,低頻段的子帶對信號編碼質量影響較大,因此低頻段的子帶往往成為信號編碼性能瓶頸,而上述比特分配方式不能很好地適配各個子帶的比特需求,尤其是低頻段的子帶,從而導致信號的編碼質性能較差。相應地,信號的解碼性能也較差。
技術實現要素:
本發明實施例提供處理信號的方法及設備,能夠提升信號的編碼以及解碼性能。
第一方面,提供了一種處理信號的方法,包括:從N個子帶中選擇M個子帶,所述N個子帶是對信號的當前幀的頻譜系數劃分得到的,所述M個子帶的頻段低于所述N個子帶中除所述M個子帶之外的K個子帶的頻段,N為大于1的正整數,M和K均為正整數,M與K之和為N;根據所述M個子帶的性能信息,確定對所述M個子帶的原始包絡值執行修正操作,所述性能信息用于指示所述M個子帶的能量特性和頻譜特性;分別對所述M個子帶的原始包絡值進行修正,以獲取所述M個子帶的修正包絡值;根據所述M個子帶的修正包絡值以及所述K個子帶的原始包絡值,對所述N個子帶進行一次比特分配。
結合第一方面,在第一種可能的實現方式中,所述根據所述M個子帶的性能信息,確定對所述M個子帶的原始包絡值執行修正操作,包括:
根據所述N個子帶的原始包絡值,確定第一參數,其中所述第一參數表 示所述信號的頻譜能量在所述M個子帶上的集中程度;
根據所述M個子帶的原始包絡值,確定第二參數,其中所述第二參數表示所述M個子帶的頻譜波動程度;
在所述第一參數屬于第一范圍并且所述第二參數屬于第二范圍的情況下,確定對所述M個子帶的原始包絡值執行修正操作。
結合第一方面的第一種可能的實現方式,在第二種可能的實現方式中,所述根據所述N個子帶的原始包絡值,確定第一參數,包括:根據所述M個子帶的原始包絡值確定所述M個子帶的總能量;根據所述K個子帶的原始包絡值,確定所述K個子帶的總能量;將所述M個子帶的總能量與所述K個子帶的總能量的比值確定為所述第一參數。
結合第一方面的第一種可能的實現方式或第二種可能的實現方式,在第三種可能的實現方式中,所述根據所述M個子帶的原始包絡值,確定第二參數,包括:根據所述M個子帶的原始包絡值,確定所述M個子帶的總能量和第一子帶的能量,其中在所述M個子帶中所述第一子帶的能量最大;將第一子帶的能量與所述M個子帶的總能量的比值確定為所述第二參數。
結合第一方面或上述任一實現方式,在第四種可能的實現方式中,所述分別對所述M個子帶的原始包絡值進行修正,以獲取所述M個子帶的修正包絡值,包括:根據所述M個子帶的原始包絡值,確定所述M個子帶的總能量和第一子帶的能量,其中在所述M個子帶中所述第一子帶的能量最大;根據所述M個子帶的總能量和所述第一子帶的能量,確定修正因子;利用所述修正因子,分別對所述M個子帶的原始包絡值進行修正,以獲取所述M個子帶的修正包絡值。
結合第一方面或上述任一實現方式,在第五種可能的實現方式中,所述M個子帶中每個子帶的修正包絡值大于同一子帶的原始包絡值。
結合第一方面或上述任一實現方式,在第六種可能的實現方式中,還包括:根據在所述一次比特分配時分別對所述N個子帶分配的比特數,確定所述N個子帶中每個子帶的冗余比特數,所述N個子帶中每個子帶的冗余比特數小于同一子帶中單個信息單位編碼所需要的比特數;根據所述N個子帶中每個子帶的冗余比特數,確定冗余比特總數;根據所述M個子帶的修正包絡值、所述K個子帶的原始包絡值以及冗余比特總數,對所述N個子帶進行二次比特分配。
第二方面,提供了一種處理信號的設備,包括:選擇單元,用于從N個子帶中選擇M個子帶,所述N個子帶是對信號的當前幀的頻譜系數劃分得到的,所述M個子帶的頻段低于所述N個子帶中除所述M個子帶之外的K個子帶的頻段,N為大于1的正整數,M和K均為正整數,M與K之和為N;確定單元,用于根據所述M個子帶的性能信息,確定對所述M個子帶的原始包絡值執行修正操作,所述性能信息用于指示所述M個子帶的能量特性和頻譜特性;修正單元,用于分別對所述M個子帶的原始包絡值進行修正,以獲取所述M個子帶的修正包絡值;分配單元,用于根據所述M個子帶的修正包絡值以及所述K個子帶的原始包絡值,對所述N個子帶進行一次比特分配。
結合第二方面,在第一種可能的實現方式中,所述確定單元,具體用于:根據所述N個子帶的原始包絡值,確定第一參數,其中所述第一參數表示所述信號的頻譜能量在所述M個子帶上的集中程度;根據所述M個子帶的原始包絡值,確定第二參數,其中所述第二參數表示所述M個子帶的頻譜波動程度;在所述第一參數屬于第一范圍并且所述第二參數屬于第二范圍的情況下,確定對所述M個子帶的原始包絡值執行修正操作。
結合第二方面的第一種可能的實現方式,在第二種可能的實現方式中,所述確定單元,具體用于:根據所述M個子帶的原始包絡值確定所述M個子帶的總能量;根據所述K個子帶的原始包絡值,確定所述K個子帶的總能量;將所述M個子帶的總能量與所述K個子帶的總能量的比值確定為所述第一參數。
結合第二方面的第一種可能的實現方式或第二種可能的實現方式,在第三種可能的實現方式中,所述確定單元,具體用于:根據所述M個子帶的原始包絡值,確定所述M個子帶的總能量和第一子帶的能量,其中在所述M個子帶中所述第一子帶的能量最大;將第一子帶的能量與所述M個子帶的總能量的比值確定為所述第二參數。
結合第二方面或上述任一實現方式,在第四種可能的實現方式中,所述修正單元,具體用于:根據所述M個子帶的原始包絡值,確定所述M個子帶的總能量和第一子帶的能量,其中在所述M個子帶中所述第一子帶的能量最大;根據所述M個子帶的總能量和所述第一子帶的能量,確定修正因子;利用所述修正因子,分別對所述M個子帶的原始包絡值進行修正,以 獲取所述M個子帶的修正包絡值。
結合第二方面或上述任一實現方式,在第五種可能的實現方式中,所述M個子帶中每個子帶的修正包絡值大于同一子帶的原始包絡值。
結合第二方面或上述任一實現方式,在第六種可能的實現方式中,所述確定單元,還用于根據在所述一次比特分配時分別對所述N個子帶分配的比特數,確定所述N個子帶中每個子帶的冗余比特數,所述N個子帶中每個子帶的冗余比特數小于同一子帶中單個信息單位編碼所需要的比特數;所述確定單元,還用于根據所述N個子帶中每個子帶的冗余比特數,確定冗余比特總數;所述分配單元,還用于根據所述M個子帶的修正包絡值、所述K個子帶的原始包絡值以及冗余比特總數,對所述N個子帶進行二次比特分配。
本發明實施例中,通過從N個子帶中選擇低頻段的M個子帶,根據M個子帶的能量特性和頻譜特性確定對M個子帶的原始包絡值執行修正操作,根據M個子帶的原始包絡值分別對M個子帶的原始包絡值進行修正,并根據M個子帶的修正包絡值以及K個子帶的原始包絡值,對N個子帶進行一次比特分配,而非直接根據N個子帶的原始包絡值進行比特分配,使得比特分配更為符合各個子帶的比特需求,從而能夠提升信號的編碼以及解碼性能。
附圖說明
為了更清楚地說明本發明實施例的技術方案,下面將對本發明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是根據本發明實施例的處理信號的方法的示意性流程圖。
圖2是根據本發明一個實施例的處理信號的方法的過程的示意性流程圖。
圖3是根據本發明一個實施例的處理信號的設備的示意框圖。
圖4是根據本發明另一實施例的處理信號的設備的示意框圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明的一部分實施例,而不是全部實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都應屬于本發明保護的范圍。
信號的編碼技術和解碼技術,廣泛應用于各種電子設備中,例如:移動電話,無線裝置,個人數據助理(Personal Data Assistant,PDA),手持式或便攜式計算機,全球定位系統(Global Positioning System,GPS)接收機/導航器,照相機,音頻/視頻播放器,攝像機,錄像機,監控設備等。通常,這類電子設備中包括語音或音頻編碼器,還可以包括語音或音頻解碼器,語音或音頻編碼器,以及語音或音頻解碼器可以直接由數字電路或芯片例如數字信號處理(Digital Signal Processor,DSP)芯片實現,或者由軟件代碼驅動處理器執行軟件代碼中的流程而實現。
圖1是根據本發明實施例的處理信號的方法的示意性流程圖。圖1的方法由編碼端執行,例如上述語音或音頻編碼器。圖1的方法還可以由解碼端執行,例如上述語音或音頻解碼器。
在編碼過程中,編碼端可以先將時域信號變換為頻域信號,例如可以采用快速傅立葉變換(Fast Fourier Transform,FFT)或改進離散余弦變換(Modified Discrete Cosine Transform,MDCT)等算法進行時頻變換。然后,可以利用全局增益對頻域信號的頻譜系數進行歸一化,將歸一化的頻譜系數進行分帶從而得到多個子帶。
在解碼過程中,解碼端可以對從編碼端接收的碼流進行解碼,得到歸一化的頻譜系數,將歸一化的頻譜系數進行分帶從而得到多個子帶。
110,從N個子帶中選擇M個子帶,N個子帶是對信號的當前幀的頻譜系數劃分得到的,M個子帶的頻段低于N個子帶中除M個子帶之外的K個子帶的頻段,N為大于1的正整數,M和K均為正整數,M與K之和為N。
本發明實施例中,信號可以是語音信號,也可以是音頻信號。上述K個子帶是N個子帶中除M個子帶之外的所有子帶。
120,根據M個子帶的性能信息,確定對M個子帶的原始包絡值執行修正操作,性能信息用于指示M個子帶的能量特性和頻譜特性。
130,分別對M個子帶的原始包絡值進行修正,以獲取M個子帶的修正包絡值。
140,根據M個子帶的修正包絡值以及K個子帶的原始包絡值,對N個子帶進行一次比特分配。
本發明實施例中,通過從N個子帶中選擇低頻段的M個子帶,根據M個子帶的能量特性和頻譜特性確定對M個子帶的原始包絡值執行修正操作,根據M個子帶的原始包絡值分別對M個子帶的原始包絡值進行修正,并根據M個子帶的修正包絡值以及K個子帶的原始包絡值,對N個子帶進行一次比特分配,而非直接根據N個子帶的原始包絡值進行比特分配,使得比特分配更為符合各個子帶的比特需求,從而能夠提升信號的編碼以及解碼性能。
具體而言,在現有的頻域編碼算法中,直接根據頻域包絡的大小對信號的各個子帶進行比特分配,使得所分配的比特數并不能很好地滿足某些低頻段子帶的比特需求。而本發明實施例中,首先從N個子帶中選擇低頻段的M個子帶,根據M個子帶的能量特性和頻譜特性確定對M個子帶的原始包絡值執行修正操作,根據N個子帶的原始包絡值對M個子帶的原始包絡值進行修正,然后根據M個子帶的修正包絡值以及K個子帶的原始包絡值對N個子帶進行一次比特分配。可見,本發明實施例中,并非直接根據N個子帶的原始包絡值對N個子帶進行比特分配,而是將M個子帶的能量特性和頻譜特性作為考慮因素來確定需要對M個子帶進行修正,從而得到M個子帶各自的修正包絡值,并根據低頻段子帶的修正包絡值以及其它子帶的原始包絡值進行比特分配,使得對各個子帶的比特分配更為合理,尤其是低頻段的M個子帶,從而能夠提升信號的編碼以及解碼性能。
在對頻譜系數劃分得到N個子帶后,可以計算并量化每個子帶的包絡。所以每個子帶具有量化的包絡值。應理解,原始包絡值與修正包絡值是相對而言的,原始包絡值可以指子帶原本的包絡值,即在劃分子帶后計算得到的量化的包絡值。在對子帶原本的包絡值進行修正后得到的包絡值,稱為修正包絡值。因此,本發明實施例中,所提到的原始包絡值和修正包絡值均是指量化的包絡值。
可選地,作為一個實施例,在步驟110中,可以根據子帶諧波性以及子帶能量,從N個子帶中選擇M個子帶。例如,對于M個子帶而言,每個子帶的諧波性強度可以大于預設的強度閾值并且該子帶的能量占N個子帶的總能量的比例大于預設的能量閾值。如上所述,低頻帶子帶往往是信號編碼 性能的瓶頸,而這些子帶中,諧波性較強并且能量占所有子帶總能量一定比例的子帶尤其是編碼性能的瓶頸,因此,根據子帶諧波性以及子帶能量,從N個子帶中選擇M個子帶,這樣對這M個子帶的原始包絡值進行修正后,使得對于這M個子帶的比特分配更為合理,從而能夠更有效地提升信號的編碼及解碼性能。
可選地,作為另一實施例,N個子帶可以是可以按照頻段從小到大的順序排列的。這樣,在步驟110中,可以從N個子帶中選擇前M個子帶。本實施例中,按照頻段從小到大的順序選擇M個子帶,能夠簡化操作,提升信號處理效率。
可選地,作為另一實施例,在步驟120中,可以根據N個子帶的原始包絡值,確定第一參數,其中第一參數可以表示信號的頻譜能量在M個子帶的集中程度。可以根據M個子帶的原始包絡值,確定第二參數,其中第二參數表示M個子帶的頻譜波動程度。可以在所述第一參數屬于第一范圍并且所述第二參數屬于第二范圍的情況下,確定對M個子帶的原始包絡值執行修正操作。
具體地,M個子帶的能量特性可以是信號的頻譜能量在M個子帶的集中程度,M個子帶的頻譜特性可以是M個子帶的頻譜波動程度。
第一范圍與子帶的能量相關,可以是預先設定的。當信號的頻譜能量在除M個子帶的集中程度較小時,可以說明這M個子帶在N個子帶中的比例小,不會對編碼性能造成很大的影響,因此無需修正這M個子帶的原始包絡值。當信號的頻譜能量在M個子帶的集中程度較大時,說明這M個子帶的原始包絡值也會比較大,那么這M個子帶所分配的比特數是足夠用于編碼的,也無需修正這M個子帶的原始包絡值。可以進行實驗仿真預先確定第一范圍。例如,第一范圍可以預設為[1/6,2/3]。
第二范圍與子帶的頻譜波動程度相關,可以是預先設定的。M個子帶的頻譜波動程度小,則即使M個子帶所分配的比特數少也不會對編碼性能造成很大的影響,這樣就無需修正M個子帶的原始包絡值。因此,第二范圍表示子帶的頻譜波動程度較大。可以進行實驗仿真預先確定第二范圍。例如,第二范圍可以預設為或者通常,如果信號中能夠編 碼的帶寬為0~4KHz,第二范圍可以預設為如果信號中能夠編碼的帶寬為0~8KHz,第二范圍可以預設為
當第一參數屬于第一范圍并且第二參數屬于第二范圍時,意味著信號的頻譜能量在M個子帶上的集中程度不是特別大也不是特別小,而且M個子帶的頻譜波動程度較大,可以對M個子帶的原始包絡值進行修正,以便在M個子帶的一次比特分配中使得M個子帶所分配到的比特更符合M個子帶的比特需求。例如,對于M個子帶中每個子帶,修正包絡值大于原始包絡值。那么,相比根據M個子帶的原始包絡值進行一次比特分配而言,根據M個子帶的修正包絡值進行一次比特分配使得M個子帶分配到的比特數要多一些,從而能夠提升M個子帶的編碼性能。
可見,本實施例中,根據N個子帶的原始包絡值確定的第一參數和第二參數可以反映各頻段的特點,因此在第一參數屬于第一范圍并且第二參數屬于第二范圍的情況下確定對M個子帶執行的原始包絡值修正操作,使得后續根據M個子帶的修正包絡值進行比特分配時,M個子帶所分配到的比特數更符合M個子帶的比特需求,從而能夠提升信號的編碼和解碼性能。
可選地,作為另一實施例,在步驟120中,可以根據M個子帶的原始包絡值確定M個子帶的總能量。可以根據K個子帶的原始包絡值確定K個子帶的總能量。可以將M個子帶的總能量與K個子帶的總能量的比值確定為第一參數。
具體地,可以將M個子帶的總能量與K個子帶的總能量的比值確定為第一參數。這樣,能夠
例如,可以按照如下等式計算得到第一參數。第一參數可以由α表示。
其中,可以表示M個子帶的總能量,可以表示K個子帶的總能 量,band_widthi可以表示第i個子帶的帶寬,band_energyi可以表示第i個子帶的能量。band_energyi可以表示第i個子帶的原始包絡值。例如,可以根據第i個子帶的頻譜系數,得到第i個子帶的原始包絡值band_energyi。比如,可以按照下述等式得到band_energyi。
band_energyi=log2Ei
應理解,本領域技術人員根據上述等式,顯然可以進行各種等價的修改或變化來得到第一參數,這樣的修改或變化也落入本發明實施例的范圍內。
可選地,作為另一實施例,在步驟120中,可以根據M個子帶的原始包絡值,確定M個子帶的總能量,并確定第一子帶的能量,其中,在M個子帶中第一子帶的能量最大。可以將第一子帶的能量與M個子帶的總能量的比值確定為第二參數。
具體地,M個子帶的頻譜波動程度可以使用M個子帶的原始包絡值的波動程度來表示。比如,第二參數可以按照如下等式計算得到。第二參數可以由β表示。
其中,和的計算方式可以參照上面的等式。
應理解,本領域技術人員根據上述等式,顯然可以進行各種等價的修改或變化來得到第二參數,這樣的修改或變化也落入本發明實施例的范圍內。
可選地,作為另一實施例,在步驟130中,可以根據M個子帶的原始包絡值,確定M個子帶的總能量和第一子帶的能量,其中在M個子帶中第一子帶的能量最大。可以根據M個子帶的總能量和第一子帶的能量,確定修正因子。然后可以利用修正因子,分別對M個子帶的原始包絡值進行修正,以獲取M個子帶的修正包絡值。
例如,修正因子可以按照如下等式確定。修正因子可以由γ表示。
其中,和的計算方式可以參照上面的等式。
根據修正因子γ,可以對M個子帶中每個子帶的原始包絡值進行修正,例如,可以將每個子帶的原始包絡值乘以修正因子,從而得到該子帶的修正包絡值。
應理解,本領域技術人員根據上述等式,顯然可以進行各種等價的修改或變化來得到修正因子,這樣的修改或變化也落入本發明實施例的范圍內。
可選地,作為另一實施例,在步驟130中,M個子帶中每個子帶的修正包絡值可以大于該子帶的原始包絡值。
具體地,通過對M個子帶中每個子帶的原始包絡值進行修正,得到M個子帶中每個子帶的修正包絡值。而每個子帶的修正包絡值可以大于該子帶的原始包絡值。M個子帶中每個子帶的修正包絡值大于該子帶的原始包絡值,那么在步驟140中,根據M個子帶的修正包絡值進行比特分配,這M個子帶中每個子帶所分配到的比特數將會增大,使得比特分配更符合其比特需求,從而能夠提升信號的編碼及解碼性能。
可選地,作為另一實施例,在步驟130中,M個子帶中每個子帶的修正包絡值可以小于該子帶的原始包絡值。
具體地,M個子帶中每個子帶的修正包絡值可以小于該子帶的原始包絡值,那么在步驟140中,根據M個子帶的修正包絡值以及K子帶的原始包絡值進行比特分配,這M個子帶中每個子帶所分配到的比特數將會較少,相應地K個子帶分別分配到的比特數會增加,這樣使得比特分配更符合其比特需求,從而能夠提升信號的編碼及解碼性能。
可選地,作為另一實施例,在步驟130中,可以按照包絡值從大到小的順序,對N個子帶進行一次比特分配。
可選地,作為另一實施例,在步驟120中,可以根據第二參數確定修正因子。然后可以利用修正因子,分別對M個子帶的原始包絡值進行修正,以獲取M個子帶的修正包絡值。
具體地,可以根據第二參數確定修正因子,根據修正因子,可以對M個子帶中每個子帶的原始包絡值進行修正,例如,可以將每個子帶的原始包 絡值乘以修正因子,從而得到該子帶的修正包絡值,這樣使得M個子帶所分配的比特數更符合M個子帶的比特需求,從而能夠提升信號編碼和解碼性能。
在進行第一次比特分配后,每個子帶所分配的比特數中一般會有冗余的比特。每個子帶的冗余比特數無法編碼該子帶的一個信息單位。因此,可以統計各個子帶的冗余比特數得到冗余比特總數,然后進行二次比特分配。
可選地,作為另一實施例,在步驟140之后,可以根據在一次比特分配時分別對N個子帶分配的比特數,確定N個子帶中每個子帶的冗余比特數,N個子帶中每個子帶的冗余比特數小于同一子帶中單個信息單位編碼所需要的比特數。可以根據N個子帶中每個子帶的冗余比特數,確定冗余比特總數。然后可以根據冗余比特總數,向N個子帶進行二次比特分配。
具體而言,可以將總的冗余比特平均分配給N個子帶。這樣,可以二次利用冗余比特,避免比特浪費,并進一步提升信號的編碼及解碼性能。
上面描述了關于一次比特分配和第二比特分配的過程。如果上述圖1的方法是由編碼端執行的,在二次比特分配之后,編碼端可以利用各個子帶兩次比特分配過程中所分配的比特數量化各個子帶的頻譜系數,將量化的頻譜系數的索引和各個子帶的原始包絡值的索引寫入碼流,然后可以將碼流發送至解碼端。
如果上述圖1的方法是由解碼端執行的,在二次比特分配之后,解碼端可以利用各個子帶在兩次比特分配過程中所分配的比特比特數對量化的頻譜系數進行解碼,得到恢復的信號。
下面將結合具體例子詳細描述本發明實施例。應理解,這些例子只是為了幫助本領域技術人員更好地理解本發明實施例,而非限制本發明實施例的范圍。
在下面的例子中,將以編碼端為例進行描述。
圖2是根據本發明一個實施例的處理信號的方法的過程的示意性流程圖。
201,編碼端對時域信號進行時頻變換。
202,編碼端對頻域信號的頻譜系數劃分成N個子帶,N為大于1的正整數。
具體地,編碼端可以計算全局增益,使用全局增益對原始的頻譜系數進 行歸一化,然后對歸一化后的頻譜系數進行分帶,從而得到各個子帶。
203,編碼端通過計算及量化操作,得到各個子帶的原始包絡值。
204,編碼端從N個子帶中選擇M個子帶,M為正整數。
M個子帶的頻段低于N個子帶中除M個子帶之外的K個子帶的頻段,K為正整數,K與M之和為N。
205,編碼端根據M個子帶的原始包絡值和K個子帶的原始包絡值,確定第一參數。
第一參數可以表示信號的頻譜能量在M個子帶上的集中程度。例如,可以使用M個子帶的總能量與K個子帶的總能量的比值來表示第一參數。第一參數的計算方式可以參照圖1的實施例中第一參數的計算方式,不再贅述。
206,編碼端根據M個子帶的原始包絡值,確定第二參數。
第二參數可以表示M個子帶的頻譜波動程度。例如,可以使用第一子帶的能量與所述M個子帶的總能量的比值來表示第二參數,其中在M個子帶中第一子帶的能量最大。第二參數的計算方式可以參照圖1的實施例中第二參數的計算方式,不再贅述。
207,編碼端確定是否第一參數屬于第一范圍且第二參數屬于第二范圍。
第一范圍和第二范圍可以是預先設定的。例如,第一范圍可以預設為[1/6,2/3]。第二范圍可以預設為或者
208,如果步驟207中編碼端確定第一參數屬于第一范圍且第二參數屬于第二范圍,根據M個子帶的原始包絡值,修正M個子帶的原始包絡值,以分別得到M個子帶的修正包絡值。
具體而言,編碼端可以根據M個子帶的原始包絡值確定修正因子。修正因子的計算方式可以參照圖1的實施例的過程,不再贅述。編碼端可以利用修正因子對M個子帶中每個子帶的原始包絡值進行修正,得到M個子帶的修正包絡值。例如,每個子帶的修正包絡值可以大于該子帶的原始包絡值。
209,編碼端根據M個子帶的修正包絡值以及K個子帶的原始包絡值,對N個子帶進行一次比特分配。
例如,編碼端可以按照包絡值從大到小的順序,對N個子帶進行一次比特分配。對于M個子帶中而言,由于每個子帶的修正包絡值大于該子帶的 原始包絡值,所以相比修正之前,M個子帶中每個子帶所分配到的比特數增多,這樣使得比特分配更符合各個子帶的比特需求,從而使得信號的編碼和解碼性能提升。
210,編碼端對N個子帶進行二次比特分配。
具體地,編碼端可以根據一次比特分配之后N個子帶中每個子帶所分配到的比特數以及每個子帶的帶寬,確定每個子帶的冗余比特數。從而確定N個子帶的冗余比特總數。然后根據冗余比特總數,向N個子帶平均分配總的冗余比特。
211,編碼端根據N個子帶中每個子帶所分配的比特數,量化每個子帶的頻譜系數。
212,編碼端根據步驟211中量化的頻譜系數以及每個子帶的原始包絡值,寫碼流。
具體地,編碼端可以將量化的頻譜系數以及各個子帶的原始包絡值等的索引寫入碼流。具體過程可以參照現有技術,此處不再贅述。
213,如果在步驟207中編碼端確定第一參數不屬于第一范圍或者第二參數不屬于第二范圍,則編碼端根據N個子帶的原始包絡值,對N個子帶進行一次比特分配。
例如,編碼端可以按照包絡值從大到小的順序,對N個子帶進行一次比特分配。
214,編碼端對N個子帶進行二次比特分配。
具體地,編碼端可以根據一次比特分配之后N個子帶中每個子帶所分配到的比特數以及每個子帶的帶寬,確定每個子帶的冗余比特數。從而確定N個子帶的冗余比特總數。然后根據冗余比特總數,向N個子帶平均分配總的冗余比特。
215,編碼端根據N個子帶中每個子帶所分配的比特數,量化每個子帶的頻譜系數。
216,編碼端根據步驟215中量化的頻譜系數以及每個子帶的原始包絡值,寫碼流。
具體地,編碼端可以將量化的頻譜系數以及各個子帶的原始包絡值等的索引寫入碼流。具體過程可以參照現有技術,此處不再贅述。
本發明實施例中,在第一參數屬于第一范圍且第二參數屬于第二范圍的 情況下,根據M個子帶的原始包絡值對低頻段的M個子帶的原始包絡值進行修正,根據M個子帶的修正包絡值以及K個子帶的原始包絡值對N個子帶進行一次比特分配,使得比特分配更符合各個子帶的比特需求,從而能夠提升信號的編碼和解碼性能。
圖3是根據本發明一個實施例的處理信號的設備的示意框圖。圖3的設備300可以是編碼端或解碼端設備。圖3的設備300包括選擇單元310、確定單元320、修正單元330和分配單元340。
選擇單元310從N個子帶中選擇M個子帶,N個子帶是對信號的當前幀的頻譜系數劃分得到的,M個子帶的頻段低于N個子帶中除M個子帶之外的K個子帶的頻段,N為大于1的正整數,M和K均為正整數,M與K之和為N。確定單元320根據M個子帶的性能信息確定對M個子帶的原始包絡值執行修正操作,性能信息用于指示M個子帶的能量特性和頻譜特性。修正單元330分別對M個子帶的原始包絡值進行修正,以獲取M個子帶的修正包絡值。分配單元340根據M個子帶的修正包絡值以及K個子帶的原始包絡值,對N個子帶進行一次比特分配。
本發明實施例中,通過從N個子帶中選擇低頻段的M個子帶,根據M個子帶的能量特性和頻譜特性確定對M個子帶的原始包絡值執行修正操作,根據M個子帶的原始包絡值分別對M個子帶的原始包絡值進行修正,并根據M個子帶的修正包絡值以及K個子帶的原始包絡值,對N個子帶進行一次比特分配,而非直接根據N個子帶的原始包絡值進行比特分配,使得比特分配更為符合各個子帶的比特需求,從而能夠提升信號的編碼以及解碼性能。
可選地,作為一個實施例,確定單元320可以根據N個子帶的原始包絡值,確定第一參數,其中第一參數表示信號的頻譜能量在M個子帶上的集中程度。確定單元320可以根據M個子帶的原始包絡值,確定第二參數,其中第二參數表示M個子帶的頻譜波動程度。確定單元320可以在第一參數屬于第一范圍并且第二參數屬于第二范圍的情況下,確定對M個子帶的原始包絡值執行修正操作。
可選地,作為另一實施例,確定單元320可以根據M個子帶的原始包絡值確定M個子帶的總能量,可以根據K個子帶的原始包絡值,確定K個子帶的總能量,可以將M個子帶的總能量與K個子帶的總能量的比值確定 為第一參數。
可選地,作為另一實施例,確定單元320可以根據M個子帶的原始包絡值,確定M個子帶的總能量和第一子帶的能量,其中在M個子帶中第一子帶的能量最大。確定單元320可以將第一子帶的能量與M個子帶的總能量的比值確定為第二參數。
可選地,作為另一實施例,修正單元330可以根據M個子帶的原始包絡值,確定M個子帶的總能量和第一子帶的能量,其中在M個子帶中第一子帶的能量最大。修正單元330可以根據M個子帶的總能量和第一子帶的能量,確定修正因子,并可以利用修正因子,分別對M個子帶的原始包絡值進行修正,以獲取M個子帶的修正包絡值。
可選地,作為另一實施例,M個子帶中每個子帶的修正包絡值可以大于同一子帶的原始包絡值。
可選地,作為另一實施例,確定單元320還可以根據在一次比特分配時分別對N個子帶分配的比特數,確定N個子帶中每個子帶的冗余比特數,N個子帶中每個子帶的冗余比特數小于同一子帶中單個信息單位編碼所需要的比特數。確定單元320還可以根據N個子帶中每個子帶的冗余比特數,確定冗余比特總數。分配單元340還可以根據M個子帶的修正包絡值、K個子帶的原始包絡值以及冗余比特總數,對N個子帶進行二次比特分配。
設備300的其它功能和操作可以參照圖1和圖2的方法實施例的過程,為了避免重復,此處不再贅述。
圖4是根據本發明另一實施例的處理信號的設備的示意框圖。圖4的設備400可以是編碼端或解碼端設備。圖4的設備400包括存儲器410和處理器420。
存儲器410可以包括隨機存儲器、閃存、只讀存儲器、可編程只讀存儲器、非易失性存儲器或寄存器等。處理器420可以是中央處理器(Central Processing Unit,CPU)。
存儲器410用于存儲可執行指令。處理器420可以執行存儲器410中存儲的可執行指令,用于:從N個子帶中選擇M個子帶,N個子帶是對信號的當前幀的頻譜系數劃分得到的,M個子帶的頻段低于N個子帶中除M個子帶之外的K個子帶的頻段,N為大于1的正整數,M和K均為正整數,M與K之和為N;根據M個子帶的性能信息確定對M個子帶的原始包絡值 執行修正操作,性能信息用于指示M個子帶的能量特性和頻譜特性;分別對M個子帶的原始包絡值進行修正,以獲取M個子帶的修正包絡值;根據M個子帶的修正包絡值以及K個子帶的原始包絡值,對N個子帶進行一次比特分配。
本發明實施例中,通過從N個子帶中選擇低頻段的M個子帶,根據M個子帶的能量特性和頻譜特性確定對M個子帶的原始包絡值執行修正操作,根據M個子帶的原始包絡值分別對M個子帶的原始包絡值進行修正,并根據M個子帶的修正包絡值以及K個子帶的原始包絡值,對N個子帶進行一次比特分配,而非直接根據N個子帶的原始包絡值進行比特分配,使得比特分配更為符合各個子帶的比特需求,從而能夠提升信號的編碼以及解碼性能。
可選地,作為一個實施例,處理器420可以根據N個子帶的原始包絡值,確定第一參數,其中第一參數表示信號的頻譜能量在M個子帶上的集中程度。處理器420可以根據M個子帶的原始包絡值,確定第二參數,其中第二參數表示M個子帶的頻譜波動程度。處理器420可以在第一參數屬于第一范圍并且第二參數屬于第二范圍的情況下,確定對M個子帶的原始包絡值執行修正操作。
可選地,作為另一實施例,處理器420可以根據M個子帶的原始包絡值確定M個子帶的總能量,可以根據K個子帶的原始包絡值,確定K個子帶的總能量,可以將M個子帶的總能量與K個子帶的總能量的比值確定為第一參數。
可選地,作為另一實施例,處理器420可以根據M個子帶的原始包絡值,確定M個子帶的總能量和第一子帶的能量,其中在M個子帶中第一子帶的能量最大。處理器420可以將第一子帶的能量與M個子帶的總能量的比值確定為第二參數。
可選地,作為另一實施例,處理器420可以根據M個子帶的原始包絡值,確定M個子帶的總能量和第一子帶的能量,其中在M個子帶中第一子帶的能量最大。處理器420可以根據M個子帶的總能量和第一子帶的能量,確定修正因子,并可以利用修正因子,分別對M個子帶的原始包絡值進行修正,以獲取M個子帶的修正包絡值。
可選地,作為另一實施例,M個子帶中每個子帶的修正包絡值可以大于 同一子帶的原始包絡值。
可選地,作為另一實施例,處理器420還可以根據在一次比特分配時分別對N個子帶分配的比特數,確定N個子帶中每個子帶的冗余比特數,N個子帶中每個子帶的冗余比特數小于同一子帶中單個信息單位編碼所需要的比特數。處理器420還可以根據N個子帶中每個子帶的冗余比特數,確定冗余比特總數。處理器420還可以根據M個子帶的修正包絡值、K個子帶的原始包絡值以及冗余比特總數,對N個子帶進行二次比特分配。
設備400的其它功能和操作可以參照圖1和圖2的方法實施例的過程,為了避免重復,此處不再贅述。
本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結合來實現。這些功能究竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的范圍。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統、裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
所述功能如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
以上所述,僅為本發明的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以所述權利要求的保護范圍為準。