施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0073]圖1為一種對語音頻信號進(jìn)行編碼的過程示意圖,如圖1所示,在編碼端,在獲得原始音頻信號后,首先對原始音頻信號進(jìn)行信號分解,得到原始音頻信號的低帶信號和高帶信號,接著對低帶信號通過已有算法進(jìn)行編碼得到低帶的碼流,已有算法(例如代數(shù)碼本激勵線性預(yù)測編碼(Algebraic Code Excited Linear Predict1n,簡稱:ACELP),或碼本激勵線性預(yù)測編碼(Code Excited Linear Predict1n,簡稱:CELP等算法),同時,在進(jìn)行低帶編碼過程中,得到低帶的激勵信號,并對低帶激勵信號進(jìn)行預(yù)處理;對于原始音頻信號的高帶信號,首先進(jìn)行預(yù)處理,然后做線性預(yù)測(Linear predict1n,以下簡稱:LP)分析得到LP系數(shù),量化該LP系數(shù)。接著將預(yù)處理后的低帶激勵信號通過LP合成濾波器(濾波器系數(shù)為量化后的LP系數(shù))得到預(yù)測的高帶信號。根據(jù)預(yù)處理后的高帶信號和預(yù)測的高帶信號,計算及量化高帶信號的時域包絡(luò),最后輸出編碼碼流(MUX)。計算并量化高帶信號的時域包絡(luò)的過程為:根據(jù)事先設(shè)定好的時域包絡(luò)的個數(shù)N,將預(yù)處理后的高帶信號和預(yù)測的高帶信號分別分成N個子幀,對每一個子幀進(jìn)行加窗,然后計算預(yù)處理后的原始高帶信號每一個子幀和預(yù)測的高帶信號的相對應(yīng)的每一個子幀的時域能量或子幀內(nèi)每個樣點幅度的平均值。其中,事先設(shè)定好的時域包絡(luò)的個數(shù)N是根據(jù)前向緩存(lookahead)的長度來確定的,N為正整數(shù)。
[0074]本發(fā)明實施例提供一種音頻信號的時域包絡(luò)處理方法,主要用于圖1中所示的計算及量化時域包絡(luò)的步驟,還可以用于其它采用同樣原理的求解時域包絡(luò)的處理流程中。下面結(jié)合附圖詳細(xì)說明本發(fā)明實施例提供的音頻信號的時域包絡(luò)處理方法。
[0075]圖2為本發(fā)明音頻信號的時域包絡(luò)處理方法實施例一的流程圖,如圖2所示,本實施例的方法包括:
[0076]S21、根據(jù)接收到的當(dāng)前幀信號,得到當(dāng)前幀信號的高帶信號。
[0077]當(dāng)前幀信號即可以是語音信號,也可以是音樂信號,還可能是噪音信號,在此不做具體的限制。
[0078]S22、根據(jù)預(yù)先確定的時域包絡(luò)個數(shù)Μ將當(dāng)前幀的高帶信號分成Μ個子幀,其中,Μ為大于等于2的整數(shù)。
[0079]其中,具體來說,要預(yù)先確定的時域包絡(luò)個數(shù)Μ可以是根據(jù)整體算法要求和經(jīng)驗值確定。時域包絡(luò)個數(shù)Μ例如是編碼器事先根據(jù)整體算法或經(jīng)驗值確定,確定后不會改變。例如一般對20ms —幀的輸入信號,如果輸入信號相對平穩(wěn),求解4個或者2個時域包絡(luò),但對一些非平穩(wěn)信號,需要求解更多如8個時域包絡(luò)。
[0080]S23、計算每一個子幀的時域包絡(luò)。
[0081]其中,計算每一個子幀的時域包絡(luò)包括:
[0082]采用非對稱窗對Μ個子幀中的最前端的子幀和Μ個子幀中的最末端的子幀進(jìn)行加窗。
[0083]對Μ個子幀中除最前端的子幀和最末端的子幀之外的子幀進(jìn)行加窗。
[0084]進(jìn)一步地,在采用非對稱窗對Μ個子幀中的最前端的子幀和Μ個子幀中的最末端的子幀進(jìn)行加窗之前,本實施例的方法還可以包括:
[0085]根據(jù)當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗;或者,
[0086]根據(jù)當(dāng)前幀信號的高帶信號的前向緩存的長度和時域包絡(luò)個數(shù)Μ確定非對稱窗。
[0087]其中,對Μ個子幀中除最前端的子幀和最末端的子幀之外的子幀進(jìn)行加窗,具體可以包括:
[0088]對Μ個子幀中除最前端的子幀和最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗;或者,
[0089]對Μ個子幀中除最前端的子幀和最末端的子幀之外的子幀采用非對稱窗進(jìn)行加窗。
[0090]其中,在一種可能的實施方式中,對最前端子巾貞和最末端子巾貞加窗使用的非對稱窗的窗長與對Μ個子幀中除最前端的子幀和最末端的子幀之外的子幀進(jìn)行加窗所采用的窗的窗長相同。
[0091]在上述實施例中,作為一種可實施的方式,根據(jù)當(dāng)前幀音頻信號的高帶信號的前向緩存的長度確定非對稱窗,包括:
[0092]當(dāng)當(dāng)前幀信號的高帶信號的前向緩存的長度小于第一閾值時,根據(jù)當(dāng)前幀的前一幀信號的高帶信號和當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗,其中,當(dāng)前幀的前一幀信號的高帶信號的最末端子幀采用的非對稱窗和當(dāng)前幀信號的高帶信號的最前端子幀采用的非對稱窗的混疊部分等于當(dāng)前幀信號的高帶信號的前向緩存的長度,第一閾值等于當(dāng)前幀的高帶信號的幀長除以Μ。
[0093]在一種可能的實施方式中,根據(jù)當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗,包括:
[0094]當(dāng)當(dāng)前幀信號的高帶信號的前向緩存的長度大于第一閾值時,根據(jù)當(dāng)前幀的前一幀信號的高帶信號和當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗,其中,當(dāng)前幀的前一幀信號的高帶信號的最末端子幀采用的非對稱窗和當(dāng)前幀信號的高帶信號的最前端子幀采用的非對稱窗的混疊部分等于第一閾值,第一閾值等于當(dāng)前幀的高帶信號的幀長除以Μ。
[0095]在本發(fā)明的一種實施例中,根據(jù)下列之一方式確定時域包絡(luò)個數(shù)Μ:
[0096]根據(jù)當(dāng)前幀信號得到當(dāng)前幀信號的低帶信號,當(dāng)當(dāng)前幀信號的低帶信號的基音周期大于第二閾值時,M = Ml ;或者,
[0097]根據(jù)當(dāng)前幀信號得到當(dāng)前幀信號的低帶信號,當(dāng)當(dāng)前幀信號的低帶信號的基音周期不大于第二閾值時,Μ = M2 ;
[0098]其中,Μ1,Μ2均為正整數(shù),且Μ2>Μ1。在一種可能的方式中,Ml = 4,M2 = 8。
[0099]在上述實施例中,進(jìn)一步地,本實施例的方法還可以包括:
[0100]根據(jù)當(dāng)前幀信號得到當(dāng)前幀信號的低帶信號的基音周期;
[0101]當(dāng)當(dāng)前幀信號的類型與當(dāng)前幀的前一幀信號的類型相同,且當(dāng)前幀的低帶信號的基音周期大于第三閾值時,對每一個子幀的時域包絡(luò)進(jìn)行平滑處理。
[0102]對時域包絡(luò)做平滑處理,具體可以是:將相鄰的兩個子幀的時域包絡(luò)加權(quán),加權(quán)后的時域包絡(luò)作為這兩個子幀的時域包絡(luò)。例如,當(dāng)解碼端連續(xù)兩幀信號都是濁音信號,或者一幀是濁音信號一幀是普通信號,且低帶信號的基音周期大于給定閾值(大于70個樣點,此時低帶信號的采樣率為12.8kHz采樣)時,則對解碼的高帶信號時域包絡(luò)做平滑處理,否則保持時域包絡(luò)不變。平滑處理可以為:
[0103]env [0] = 0.5* (env [0]+env [1]);
[0104]env [1] = 0.5* (env [0]+env [1]);
[0105]…
[0106]env [N~l] = 0.5* (env [N_l]+env [N]);
[0107]env [N] = 0.5* (env [N_l]+env [N])。
[0108]其中,env □為時域包絡(luò)。
[0109]可以理解的是,上述步驟序號只是為了幫助理解本發(fā)明實施例而做出的一種示例,而不是對本發(fā)明實施例的具體限制。在實際的處理過程中,并不需要嚴(yán)格的按照上述順序的限制。例如,可以先對除最前端和最末端的子幀之外的子幀進(jìn)行加窗,再對最前端和最末端的子幀進(jìn)行加窗。
[0110]圖3為本發(fā)明實施例中對音頻信號進(jìn)行處理的示意圖。
[0111]如圖3所示,在編碼端,在獲得原始音頻信號后,首先對原始音頻信號進(jìn)行信號分解,得到原始音頻信號的低帶信號和高帶信號,接著對低帶信號通過已有算法進(jìn)行編碼得到低帶的碼流,同時,在進(jìn)行低帶編碼過程中,得到低帶的激勵信號,并對低帶激勵信號進(jìn)行預(yù)處理;對于原始音頻信號的高帶信號,首先進(jìn)行預(yù)處理,然后做LP分析得到LP系數(shù),量化該LP系數(shù)。接著將預(yù)處理后的低帶激勵信號通過LP合成濾波器(濾波器系數(shù)為量化后的LP系數(shù))得到預(yù)測的高帶信號。根據(jù)預(yù)處理后的高帶信號和預(yù)測的高帶信號,計算及量化高帶信號的時域包絡(luò),最后輸出編碼碼流。
[0112]除了計算及量化高帶信號的時域包絡(luò)的步驟之外,對于音頻信號的其它步驟的處理可以參考現(xiàn)有技術(shù)中所采用的方法,在此不再贅述。
[0113]下面以具體對圖3中所示的N+1幀的處理來描述本發(fā)明實施例中計算及量化時域包絡(luò)的步驟。
[0114]如圖3所示,將第N+1幀按照需要計算的時域包絡(luò)的個數(shù)劃分為Μ個子幀,Μ為正整數(shù)。在一種可能的實施方式中,Μ的值可以是3、4、5、8等。在此不做限制。
[0115]對Μ個子幀中的最前端的子幀和Μ個子幀中最末端的子幀采用非對稱窗進(jìn)行加窗。Ν+1巾貞的Μ個子巾貞中最前端的子巾貞為與前一巾貞(Ν巾貞)的信號有重疊部分的子巾貞;最末端的子巾貞為與后一巾貞(Ν+2巾貞,圖中未7Κ出)的信號有重疊部分的子巾貞。在一種可能的方式中,如圖3所示,最前端的子巾貞即為Ν+1巾貞中最左端的子巾貞,最末端的子巾貞即為Ν+1巾貞中最右端的子幀。可以理解的是,最左和最右只是結(jié)合圖3的一種具體示例,而不是對本發(fā)明實施例的限制。實際中子幀的劃分是不存在最左、最右這種方向性限制的。
[0116]對于最前端的子幀和最末端的子幀加窗所使用的非對稱窗可以完全相同,也可以不同。在此不做限制。在一種可能的實現(xiàn)方式中,最前端子幀使用的非對稱窗的窗長和最末端子巾貞所使用的非對稱窗的窗長相同。
[0117]在本發(fā)明的一個實施例中,如圖3所示,對Ν+1幀的Μ個子幀中除最前端的子幀和最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗。
[0118]在本發(fā)明的一個實施例中,對于最前端的子幀和最末端的子幀加窗所采用的非對稱窗的窗長與對其它子幀采用的對稱窗的窗長相等??梢岳斫獾氖?,在另一種可能的方式中,非對稱窗的窗長和對稱窗的窗長也可以不等。
[0119]在本發(fā)明的一個實施例中,當(dāng)?shù)讦?1幀的幀長為80個樣點,采樣率為4kHz時,可以求解8個時域包絡(luò)。
[0120]在一種可能的實現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個樣點,采樣率為4kHz時,也可以求解4個時域包絡(luò)。
[0121]在本發(fā)明的一個實施例中,除了預(yù)先設(shè)定之外,還可以根據(jù)N+1幀的其它信息預(yù)先確定時域包絡(luò)的個數(shù)N。下面是確定時域包絡(luò)的個數(shù)N的實現(xiàn)方式的示例:
[0122]在一種可能實現(xiàn)的方式中,當(dāng)?shù)贜+1幀的低帶信號的基音周期大于第二閾值時,N = 4 ;或者,當(dāng)?shù)贜+1幀的低帶信號的基音周期不大于第二閾值時,N = 8。對于采用率為12.8kHz的低帶信號,第二閾值可以為70個樣點??梢岳斫獾氖?,上述數(shù)值只是為了幫助理解本發(fā)明實施例而做出的一種具體舉例,而不是對本發(fā)明實施例的具體限制。如圖3所示,在對第N+1幀的信號進(jìn)行信號分解時可以得到第N+1幀的低帶信號,信號分解所采用的方法和求解低帶信號的基音周期的方式可以采用現(xiàn)有技術(shù)中的任意一種方式,在此不做具體的限制。
[0123]可以理解的是,除了利用低帶信號的基音周期以外,還可以利用信號的能量等其它參數(shù)。
[0124]在本發(fā)明的一個實施例中,在利用非對稱窗對最前端的子幀和最末端的子幀進(jìn)行加窗時,根據(jù)前向緩存的長度確定非對稱窗。
[0125]在一種可能的實現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個樣點,采樣率為4kHz,求解8個時域包絡(luò)時,加窗所采用的非對稱窗的窗長和對稱窗的窗長可以都為20個樣點。利用幀