本發(fā)明實(shí)施例涉及通信技術(shù)領(lǐng)域,尤其涉及一種音頻信號的時(shí)域包絡(luò)處理方法及裝置、編碼器。
背景技術(shù):
隨著語音頻壓縮技術(shù)的高速發(fā)展,各種語音頻編碼算法也相繼出現(xiàn)。在語音頻編碼算法的處理過程中,需要計(jì)算時(shí)域包絡(luò),現(xiàn)有的計(jì)算并量化時(shí)域包絡(luò)的過程為:根據(jù)事先設(shè)定好的計(jì)算時(shí)域包絡(luò)的個(gè)數(shù)M,M為正整數(shù),將預(yù)處理后的原始高帶信號和預(yù)測的高帶信號分別分成M個(gè)子幀,對子幀進(jìn)行加窗,然后計(jì)算各個(gè)子幀內(nèi)預(yù)處理后的原始高帶信號和預(yù)測的高帶信號的能量或幅度比。其中,事先設(shè)定好的計(jì)算時(shí)域包絡(luò)的個(gè)數(shù)M是根據(jù)前向緩存(lookahead buffer)的長度來確定。前向緩存是當(dāng)前幀為了計(jì)算一些參數(shù)的需要,將輸入信號的最后某些樣點(diǎn)緩存不用,在下一幀計(jì)算參數(shù)時(shí)使用,當(dāng)前幀使用的是前一幀緩存的樣點(diǎn)。緩存的這些樣點(diǎn)即為前向緩存,緩存的樣點(diǎn)的個(gè)數(shù)即為前向緩存的長度。
上述對時(shí)域包絡(luò)的處理過程存在的問題是:在求解時(shí)域包絡(luò)時(shí),利用的都是對稱窗,同時(shí)為了保證子幀間和幀間的混疊,根據(jù)前向緩存(lookahead)的長度計(jì)算了多個(gè)時(shí)域包絡(luò)。但在計(jì)算時(shí)域包絡(luò)時(shí),如果信號的時(shí)域分辨率太高,會造成幀內(nèi)能量的不連續(xù),從而引入很差的聽覺感受。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種音頻信號的時(shí)域包絡(luò)處理方法及裝置、編碼器,可解決在計(jì)算時(shí)域包絡(luò)時(shí)造成的幀內(nèi)能量的不連續(xù)的問題。
第一方面,本發(fā)明實(shí)施例提供一種音頻信號的時(shí)域包絡(luò)處理方法,包括:
根據(jù)接收到的當(dāng)前幀信號,得到所述當(dāng)前幀信號的高帶信號;
根據(jù)預(yù)先確定的時(shí)域包絡(luò)個(gè)數(shù)M將所述當(dāng)前幀的高帶信號分成M個(gè)子幀,其中,M為大于等于2的整數(shù);
計(jì)算每一個(gè)所述子幀的時(shí)域包絡(luò);
其中,所述計(jì)算每一個(gè)所述子幀的時(shí)域包絡(luò)包括:
采用非對稱窗對所述M個(gè)子幀中的最前端的子幀和所述M個(gè)子幀中的最末端的子幀進(jìn)行加窗;
對所述M個(gè)子幀中除所述最前端的子幀和所述最末端的子幀之外的子幀進(jìn)行加窗。
根據(jù)本發(fā)明實(shí)施例提供的音頻信號的時(shí)域包絡(luò)的處理方法,在不同的條件下采用不同的窗長度和/或窗形狀求解時(shí)域包絡(luò),減少因?yàn)闀r(shí)域包絡(luò)差別太大引入的能量不連續(xù)的影響,能夠提升輸出信號的性能。
在第一方面的第一種可能的實(shí)施方式中,在采用非對稱窗對所述M個(gè)子幀中的最前端的子幀和所述M個(gè)子幀中的最末端的子幀進(jìn)行加窗之前,所述方法還包括:
根據(jù)所述當(dāng)前幀信號的高帶信號的前向緩存的長度確定所述非對稱窗;或者,
根據(jù)所述當(dāng)前幀信號的高帶信號的前向緩存的長度和所述時(shí)域包絡(luò)個(gè)數(shù)M確定所述非對稱窗。
結(jié)合第一方面或第一方面的第一種可能的實(shí)施方式,在第一方面的第二種可能的實(shí)施方式中,所述對所述M個(gè)子幀中除所述最前端的子幀和所述最末端的子幀之外的子幀進(jìn)行加窗,包括:
對所述M個(gè)子幀中除最前端的子幀和所述最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗;或者,
對所述M個(gè)子幀中除最前端的子幀和所述最末端的子幀之外的子幀采用非對稱窗進(jìn)行加窗。
結(jié)合第一方面,在第一方面的第三種可能的實(shí)施方式中,所述非對稱窗的窗長與對所述M個(gè)子幀中除所述最前端的子幀和所述最末端的子幀之外的子幀進(jìn)行加窗所采用的窗的窗長相同。
結(jié)合第一方面的第一種可能的實(shí)施方式至第一方面的第三種可能的實(shí)施方式任意之一所述的方法,在第一方面的第四種可能的實(shí)施方式中,所述根據(jù)所述當(dāng)前幀音頻信號的高帶信號的前向緩存的長度確定非對稱窗,包括:
當(dāng)所述當(dāng)前幀信號的高帶信號的前向緩存的長度小于第一閾值時(shí),根據(jù)當(dāng)前幀的前一幀信號的高帶信號和所述當(dāng)前幀信號的高帶信號的前向緩存的長度確定所述非對稱窗,其中,所述當(dāng)前幀的前一幀信號的高帶信號的最末端子幀采用的非對稱窗和所述當(dāng)前幀信號的高帶信號的最前端子幀采用的非對稱窗的混疊部分等于所述當(dāng)前幀信號的高帶信號的前向緩存的長度,所述第一閾值等于所述當(dāng)前幀的高帶信號的幀長除以M。
結(jié)合第一方面的第一種可能的實(shí)施方式至第一方面的第三種可能的實(shí)施方式任意之一所述的方法,在第一方面的第五種可能的實(shí)施方式中,所述根據(jù)所述當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗,包括:
當(dāng)所述當(dāng)前幀信號的高帶信號的前向緩存的長度大于第一閾值時(shí),根據(jù)所述當(dāng)前幀的前一幀信號的高帶信號和所述當(dāng)前幀信號的高帶信號的前向緩存的長度確定所述非對稱窗,其中,所述當(dāng)前幀的前一幀信號的高帶信號的最末端子幀采用的非對稱窗和所述當(dāng)前幀信號的高帶信號的最前端子幀采用的非對稱窗的混疊部分等于所述第一閾值,所述第一閾值等于所述當(dāng)前幀的高帶信號的幀長除以M。
結(jié)合第一方面至第一方面的第五種可能的實(shí)施方式任意之一所述的方法,在第一方面的第六種可能的實(shí)施方式中,根據(jù)下列之一方式確定所述時(shí)域包絡(luò)個(gè)數(shù)M:
根據(jù)所述當(dāng)前幀信號得到所述當(dāng)前幀信號的低帶信號,當(dāng)所述當(dāng)前幀信號的低帶信號的基音周期大于第二閾值時(shí),M=M1;或者,
根據(jù)所述當(dāng)前幀信號得到所述當(dāng)前幀信號的低帶信號,當(dāng)所述當(dāng)前幀信號的低帶信號的基音周期不大于第二閾值時(shí),M=M2;
其中,M1,M2均為正整數(shù),且M2>M1。
結(jié)合第一方面至第一方面的第五種可能的實(shí)施方式任意之一所述的方法,在第一方面的第七種可能的實(shí)施方式中,所述方法還包括:
根據(jù)所述當(dāng)前幀信號得到所述當(dāng)前幀信號的低帶信號的基音周期;
當(dāng)所述當(dāng)前幀信號的類型與所述當(dāng)前幀的前一幀信號的類型相同,且所述當(dāng)前幀的低帶信號的基音周期大于第三閾值時(shí),對每一個(gè)所述子幀的時(shí)域包絡(luò)進(jìn)行平滑處理。
第二方面,本發(fā)明實(shí)施例提供一種音頻信號的時(shí)域包絡(luò)處理裝置,包括:
高帶信號獲取模塊,用于根據(jù)接收到的當(dāng)前幀信號,得到所述當(dāng)前幀信號的高帶信號;
子幀獲取模塊,用于根據(jù)預(yù)先確定的時(shí)域包絡(luò)個(gè)數(shù)M將所述當(dāng)前幀的高帶信號分成M個(gè)子幀,其中,M為大于等于2的整數(shù);
時(shí)域包絡(luò)獲取模塊,用于計(jì)算每一個(gè)所述子幀的時(shí)域包絡(luò);
其中,所述時(shí)域包絡(luò)獲取模塊具體用于:
采用非對稱窗對所述M個(gè)子幀中的最前端的子幀和所述M個(gè)子幀中的最末端的子幀進(jìn)行加窗;
對所述M個(gè)子幀中除所述最前端的子幀和所述最末端的子幀之外的子幀進(jìn)行加窗。
根據(jù)本發(fā)明實(shí)施例提供的音頻信號的時(shí)域包絡(luò)的處理裝置,在不同的條件下采用不同的窗長度和/或窗形狀求解時(shí)域包絡(luò),減少因?yàn)闀r(shí)域包絡(luò)差別太大引入的能量不連續(xù)的影響,能夠提升輸出信號的性能。
在第二方面的第一種可能的實(shí)施方式中,所述時(shí)域包絡(luò)獲取模塊還用于:
根據(jù)所述當(dāng)前幀信號的高帶信號的前向緩存的長度確定所述非對稱窗;或者,
根據(jù)所述當(dāng)前幀信號的高帶信號的前向緩存的長度和所述時(shí)域包絡(luò)個(gè)數(shù)M確定所述非對稱窗。
結(jié)合第二方面的實(shí)施方式,在第二方面的第二種可能的實(shí)施方式中,所述時(shí)域包絡(luò)獲取模塊具體用于:
采用非對稱窗對所述M個(gè)子幀中的最前端的子幀和所述M個(gè)子幀中的最末端的子幀進(jìn)行加窗,對所述M個(gè)子幀中除最前端的子幀和所述最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗;或者,
采用非對稱窗對所述M個(gè)子幀中的最前端的子幀和所述M個(gè)子幀中的最末端的子幀進(jìn)行加窗,對所述M個(gè)子幀中除最前端的子幀和所述最末端的子幀之外的子幀采用非對稱窗進(jìn)行加窗。
結(jié)合第二方面的實(shí)施方式,在第二方面的第三種可能的實(shí)施方式中,所述非對稱窗的窗長與對所述M個(gè)子幀中除所述最前端的子幀和所述最末端的子幀之外的子幀進(jìn)行加窗所采用的窗的窗長相同。
結(jié)合第二方面至第二方面的第三種可能的實(shí)施方式任意之一所述的裝置,在第二方面的第四種可能的實(shí)施方式中,還包括:確定模塊,用于根據(jù)下列之一方式確定所述時(shí)域包絡(luò)個(gè)數(shù)M:
根據(jù)所述當(dāng)前幀信號得到所述當(dāng)前幀信號的低帶信號,當(dāng)所述當(dāng)前幀信號的低帶信號的基音周期大于第二閾值時(shí),M=M1;或者,
根據(jù)所述當(dāng)前幀信號得到所述當(dāng)前幀信號的低帶信號,當(dāng)所述當(dāng)前幀信號的低帶信號的基音周期不大于第二閾值時(shí),M=M2;
其中,M1,M2均為正整數(shù),且M2>M1。
本發(fā)明第三方面的實(shí)施例公開了一種編碼器,所述編碼器具體用于:
用于根據(jù)接收到的當(dāng)前幀信號,得到所述當(dāng)前幀信號的低帶信號和所述當(dāng)前幀信號的高帶信號;
對所述當(dāng)前幀信號的低帶信號進(jìn)行編碼,得到低帶編碼的激勵信號;
對所述當(dāng)前幀信號的高帶信號進(jìn)行線性預(yù)測,得到線性預(yù)測系數(shù);
量化所述線性預(yù)測系數(shù),得到量化后的線性預(yù)測系數(shù);
根據(jù)所述低帶編碼的激勵信號和所述量化后的線性預(yù)測系數(shù)得到預(yù)測的高帶信號;
計(jì)算及量化所述預(yù)測的高帶信號的時(shí)域包絡(luò);
其中,所述計(jì)算所述預(yù)測的高帶信號的時(shí)域包絡(luò)包括:
根據(jù)預(yù)先確定的時(shí)域包絡(luò)個(gè)數(shù)M將所述預(yù)測的高帶信號分成M個(gè)子幀,其中,M為大于等于2的整數(shù),
采用非對稱窗對所述M個(gè)子幀中的最前端的子幀和所述M個(gè)子幀中的最末端的子幀進(jìn)行加窗,
對所述M個(gè)子幀中除所述最前端的子幀和所述最末端的子幀之外的子幀進(jìn)行加窗;
對量化后的時(shí)域包絡(luò)進(jìn)行編碼。
根據(jù)本發(fā)明實(shí)施例提供的編碼器,在不同的條件下采用不同的窗長度和/或窗形狀求解時(shí)域包絡(luò),減少因?yàn)闀r(shí)域包絡(luò)差別太大引入的能量不連續(xù)的影響,能夠提升輸出信號的性能。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為一種對音頻信號進(jìn)行編碼的過程示意圖;
圖2為本發(fā)明音頻信號的時(shí)域包絡(luò)處理方法實(shí)施例一的流程圖;
圖3為本發(fā)明實(shí)施例中對音頻信號進(jìn)行處理的示意圖;
圖4為本發(fā)明另一實(shí)施例的對音頻信號進(jìn)行處理的示意圖;
圖5為本發(fā)明另一實(shí)施例的對音頻信號進(jìn)行處理的示意圖;
圖6為本發(fā)明音頻信號的時(shí)域包絡(luò)處理方法實(shí)施例二的流程圖;
圖7為本發(fā)明實(shí)施例的時(shí)域包絡(luò)處理裝置的結(jié)構(gòu)示意圖;
圖8為本發(fā)明實(shí)施例的編碼器的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為一種對語音頻信號進(jìn)行編碼的過程示意圖,如圖1所示,在編碼端,在獲得原始音頻信號后,首先對原始音頻信號進(jìn)行信號分解,得到原始音頻信號的低帶信號和高帶信號,接著對低帶信號通過已有算法進(jìn)行編碼得到低帶的碼流,已有算法(例如代數(shù)碼本激勵線性預(yù)測編碼(Algebraic Code Excited Linear Prediction,簡稱:ACELP),或碼本激勵線性預(yù)測編碼(Code Excited Linear Prediction,簡稱:CELP等算法),同時(shí),在進(jìn)行低帶編碼過程中,得到低帶的激勵信號,并對低帶激勵信號進(jìn)行預(yù)處理;對于原始音頻信號的高帶信號,首先進(jìn)行預(yù)處理,然后做線性預(yù)測(Linear prediction,以下簡稱:LP)分析得到LP系數(shù),量化該LP系數(shù)。接著將預(yù)處理后的低帶激勵信號通過LP合成濾波器(濾波器系數(shù)為量化后的LP系數(shù))得到預(yù)測的高帶信號。根據(jù)預(yù)處理后的高帶信號和預(yù)測的高帶信號,計(jì)算及量化高帶信號的時(shí)域包絡(luò),最后輸出編碼碼流(MUX)。計(jì)算并量化高帶信號的時(shí)域包絡(luò)的過程為:根據(jù)事先設(shè)定好的時(shí)域包絡(luò)的個(gè)數(shù)N,將預(yù)處理后的高帶信號和預(yù)測的高帶信號分別分成N個(gè)子幀,對每一個(gè)子幀進(jìn)行加窗,然后計(jì)算預(yù)處理后的原始高帶信號每一個(gè)子幀和預(yù)測的高帶信號的相對應(yīng)的每一個(gè)子幀的時(shí)域能量或子幀內(nèi)每個(gè)樣點(diǎn)幅度的平均值。其中,事先設(shè)定好的時(shí)域包絡(luò)的個(gè)數(shù)N是根據(jù)前向緩存(lookahead)的長度來確定的,N為正整數(shù)。
本發(fā)明實(shí)施例提供一種音頻信號的時(shí)域包絡(luò)處理方法,主要用于圖1中所示的計(jì)算及量化時(shí)域包絡(luò)的步驟,還可以用于其它采用同樣原理的求解時(shí)域包絡(luò)的處理流程中。下面結(jié)合附圖詳細(xì)說明本發(fā)明實(shí)施例提供的音頻信號的時(shí)域包絡(luò)處理方法。
圖2為本發(fā)明音頻信號的時(shí)域包絡(luò)處理方法實(shí)施例一的流程圖,如圖2所示,本實(shí)施例的方法包括:
S21、根據(jù)接收到的當(dāng)前幀信號,得到當(dāng)前幀信號的高帶信號。
當(dāng)前幀信號即可以是語音信號,也可以是音樂信號,還可能是噪音信號,在此不做具體的限制。
S22、根據(jù)預(yù)先確定的時(shí)域包絡(luò)個(gè)數(shù)M將當(dāng)前幀的高帶信號分成M個(gè)子幀,其中,M為大于等于2的整數(shù)。
其中,具體來說,要預(yù)先確定的時(shí)域包絡(luò)個(gè)數(shù)M可以是根據(jù)整體算法要求和經(jīng)驗(yàn)值確定。時(shí)域包絡(luò)個(gè)數(shù)M例如是編碼器事先根據(jù)整體算法或經(jīng)驗(yàn)值確定,確定后不會改變。例如一般對20ms一幀的輸入信號,如果輸入信號相對平穩(wěn),求解4個(gè)或者2個(gè)時(shí)域包絡(luò),但對一些非平穩(wěn)信號,需要求解更多如8個(gè)時(shí)域包絡(luò)。
S23、計(jì)算每一個(gè)子幀的時(shí)域包絡(luò)。
其中,計(jì)算每一個(gè)子幀的時(shí)域包絡(luò)包括:
采用非對稱窗對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中的最末端的子幀進(jìn)行加窗。
對M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀進(jìn)行加窗。
進(jìn)一步地,在采用非對稱窗對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中的最末端的子幀進(jìn)行加窗之前,本實(shí)施例的方法還可以包括:
根據(jù)當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗;或者,
根據(jù)當(dāng)前幀信號的高帶信號的前向緩存的長度和時(shí)域包絡(luò)個(gè)數(shù)M確定非對稱窗。
其中,對M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀進(jìn)行加窗,具體可以包括:
對M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗;或者,
對M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀采用非對稱窗進(jìn)行加窗。
其中,在一種可能的實(shí)施方式中,對最前端子幀和最末端子幀加窗使用的非對稱窗的窗長與對M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀進(jìn)行加窗所采用的窗的窗長相同。
在上述實(shí)施例中,作為一種可實(shí)施的方式,根據(jù)當(dāng)前幀音頻信號的高帶信號的前向緩存的長度確定非對稱窗,包括:
當(dāng)當(dāng)前幀信號的高帶信號的前向緩存的長度小于第一閾值時(shí),根據(jù)當(dāng)前幀的前一幀信號的高帶信號和當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗,其中,當(dāng)前幀的前一幀信號的高帶信號的最末端子幀采用的非對稱窗和當(dāng)前幀信號的高帶信號的最前端子幀采用的非對稱窗的混疊部分等于當(dāng)前幀信號的高帶信號的前向緩存的長度,第一閾值等于當(dāng)前幀的高帶信號的幀長除以M。
在一種可能的實(shí)施方式中,根據(jù)當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗,包括:
當(dāng)當(dāng)前幀信號的高帶信號的前向緩存的長度大于第一閾值時(shí),根據(jù)當(dāng)前幀的前一幀信號的高帶信號和當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗,其中,當(dāng)前幀的前一幀信號的高帶信號的最末端子幀采用的非對稱窗和當(dāng)前幀信號的高帶信號的最前端子幀采用的非對稱窗的混疊部分等于第一閾值,第一閾值等于當(dāng)前幀的高帶信號的幀長除以M。
在本發(fā)明的一種實(shí)施例中,根據(jù)下列之一方式確定時(shí)域包絡(luò)個(gè)數(shù)M:
根據(jù)當(dāng)前幀信號得到當(dāng)前幀信號的低帶信號,當(dāng)當(dāng)前幀信號的低帶信號的基音周期大于第二閾值時(shí),M=M1;或者,
根據(jù)當(dāng)前幀信號得到當(dāng)前幀信號的低帶信號,當(dāng)當(dāng)前幀信號的低帶信號的基音周期不大于第二閾值時(shí),M=M2;
其中,M1,M2均為正整數(shù),且M2>M1。在一種可能的方式中,M1=4,M2=8。
在上述實(shí)施例中,進(jìn)一步地,本實(shí)施例的方法還可以包括:
根據(jù)當(dāng)前幀信號得到當(dāng)前幀信號的低帶信號的基音周期;
當(dāng)當(dāng)前幀信號的類型與當(dāng)前幀的前一幀信號的類型相同,且當(dāng)前幀的低帶信號的基音周期大于第三閾值時(shí),對每一個(gè)子幀的時(shí)域包絡(luò)進(jìn)行平滑處理。
對時(shí)域包絡(luò)做平滑處理,具體可以是:將相鄰的兩個(gè)子幀的時(shí)域包絡(luò)加權(quán),加權(quán)后的時(shí)域包絡(luò)作為這兩個(gè)子幀的時(shí)域包絡(luò)。例如,當(dāng)解碼端連續(xù)兩幀信號都是濁音信號,或者一幀是濁音信號一幀是普通信號,且低帶信號的基音周期大于給定閾值(大于70個(gè)樣點(diǎn),此時(shí)低帶信號的采樣率為12.8kHz采樣)時(shí),則對解碼的高帶信號時(shí)域包絡(luò)做平滑處理,否則保持時(shí)域包絡(luò)不變。平滑處理可以為:
env[0]=0.5*(env[0]+env[1]);
env[1]=0.5*(env[0]+env[1]);
…
env[N-1]=0.5*(env[N-1]+env[N]);
env[N]=0.5*(env[N-1]+env[N])。
其中,env[]為時(shí)域包絡(luò)。
可以理解的是,上述步驟序號只是為了幫助理解本發(fā)明實(shí)施例而做出的一種示例,而不是對本發(fā)明實(shí)施例的具體限制。在實(shí)際的處理過程中,并不需要嚴(yán)格的按照上述順序的限制。例如,可以先對除最前端和最末端的子幀之外的子幀進(jìn)行加窗,再對最前端和最末端的子幀進(jìn)行加窗。
圖3為本發(fā)明實(shí)施例中對音頻信號進(jìn)行處理的示意圖。
如圖3所示,在編碼端,在獲得原始音頻信號后,首先對原始音頻信號進(jìn)行信號分解,得到原始音頻信號的低帶信號和高帶信號,接著對低帶信號通過已有算法進(jìn)行編碼得到低帶的碼流,同時(shí),在進(jìn)行低帶編碼過程中,得到低帶的激勵信號,并對低帶激勵信號進(jìn)行預(yù)處理;對于原始音頻信號的高帶信號,首先進(jìn)行預(yù)處理,然后做LP分析得到LP系數(shù),量化該LP系數(shù)。接著將預(yù)處理后的低帶激勵信號通過LP合成濾波器(濾波器系數(shù)為量化后的LP系數(shù))得到預(yù)測的高帶信號。根據(jù)預(yù)處理后的高帶信號和預(yù)測的高帶信號,計(jì)算及量化高帶信號的時(shí)域包絡(luò),最后輸出編碼碼流。
除了計(jì)算及量化高帶信號的時(shí)域包絡(luò)的步驟之外,對于音頻信號的其它步驟的處理可以參考現(xiàn)有技術(shù)中所采用的方法,在此不再贅述。
下面以具體對圖3中所示的N+1幀的處理來描述本發(fā)明實(shí)施例中計(jì)算及量化時(shí)域包絡(luò)的步驟。
如圖3所示,將第N+1幀按照需要計(jì)算的時(shí)域包絡(luò)的個(gè)數(shù)劃分為M個(gè)子幀,M為正整數(shù)。在一種可能的實(shí)施方式中,M的值可以是3、4、5、8等。在此不做限制。
對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中最末端的子幀采用非對稱窗進(jìn)行加窗。N+1幀的M個(gè)子幀中最前端的子幀為與前一幀(N幀)的信號有重疊部分的子幀;最末端的子幀為與后一幀(N+2幀,圖中未示出)的信號有重疊部分的子幀。在一種可能的方式中,如圖3所示,最前端的子幀即為N+1幀中最左端的子幀,最末端的子幀即為N+1幀中最右端的子幀??梢岳斫獾氖?,最左和最右只是結(jié)合圖3的一種具體示例,而不是對本發(fā)明實(shí)施例的限制。實(shí)際中子幀的劃分是不存在最左、最右這種方向性限制的。
對于最前端的子幀和最末端的子幀加窗所使用的非對稱窗可以完全相同,也可以不同。在此不做限制。在一種可能的實(shí)現(xiàn)方式中,最前端子幀使用的非對稱窗的窗長和最末端子幀所使用的非對稱窗的窗長相同。
在本發(fā)明的一個(gè)實(shí)施例中,如圖3所示,對N+1幀的M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗。
在本發(fā)明的一個(gè)實(shí)施例中,對于最前端的子幀和最末端的子幀加窗所采用的非對稱窗的窗長與對其它子幀采用的對稱窗的窗長相等。可以理解的是,在另一種可能的方式中,非對稱窗的窗長和對稱窗的窗長也可以不等。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz時(shí),可以求解8個(gè)時(shí)域包絡(luò)。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz時(shí),也可以求解4個(gè)時(shí)域包絡(luò)。
在本發(fā)明的一個(gè)實(shí)施例中,除了預(yù)先設(shè)定之外,還可以根據(jù)N+1幀的其它信息預(yù)先確定時(shí)域包絡(luò)的個(gè)數(shù)N。下面是確定時(shí)域包絡(luò)的個(gè)數(shù)N的實(shí)現(xiàn)方式的示例:
在一種可能實(shí)現(xiàn)的方式中,當(dāng)?shù)贜+1幀的低帶信號的基音周期大于第二閾值時(shí),N=4;或者,當(dāng)?shù)贜+1幀的低帶信號的基音周期不大于第二閾值時(shí),N=8。對于采用率為12.8kHz的低帶信號,第二閾值可以為70個(gè)樣點(diǎn)??梢岳斫獾氖?,上述數(shù)值只是為了幫助理解本發(fā)明實(shí)施例而做出的一種具體舉例,而不是對本發(fā)明實(shí)施例的具體限制。如圖3所示,在對第N+1幀的信號進(jìn)行信號分解時(shí)可以得到第N+1幀的低帶信號,信號分解所采用的方法和求解低帶信號的基音周期的方式可以采用現(xiàn)有技術(shù)中的任意一種方式,在此不做具體的限制。
可以理解的是,除了利用低帶信號的基音周期以外,還可以利用信號的能量等其它參數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,在利用非對稱窗對最前端的子幀和最末端的子幀進(jìn)行加窗時(shí),根據(jù)前向緩存的長度確定非對稱窗。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz,求解8個(gè)時(shí)域包絡(luò)時(shí),加窗所采用的非對稱窗的窗長和對稱窗的窗長可以都為20個(gè)樣點(diǎn)。利用幀長除以包絡(luò)個(gè)數(shù)得到第一閾值,此示例中第一閾值等于10。則當(dāng)前向緩存的長度小于10個(gè)樣點(diǎn)時(shí),第8個(gè)子幀(即,最末端的子幀)采用的窗和第1個(gè)子幀(即,最前端的子幀)采用的窗的混疊部分等于前向緩存的長度。當(dāng)前向緩存的長度大于等于10個(gè)樣點(diǎn)時(shí),第8個(gè)子幀采用的窗的右側(cè)和第1個(gè)子幀采用的窗的左側(cè)的長度可以等于另一側(cè)(例如第一個(gè)子幀采用的窗的右側(cè)或第八個(gè)子幀采用的窗的左側(cè))的窗長(10個(gè)樣點(diǎn)),也可以根據(jù)經(jīng)驗(yàn)設(shè)定一個(gè)長度(如,保持和前向緩存小于10個(gè)樣點(diǎn)時(shí)相同的長度)。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz,求解4個(gè)時(shí)域包絡(luò)時(shí),加窗所采用的非對稱窗的窗長和對稱窗的窗長可以都為40個(gè)樣點(diǎn)。利用幀長除以包絡(luò)個(gè)數(shù)得到第一閾值,此示例中第一閾值等于20。
在加窗后,計(jì)算各個(gè)子幀內(nèi)預(yù)處理后的原始高帶信號和預(yù)測的高帶信號的時(shí)域能量或子幀內(nèi)每個(gè)樣點(diǎn)幅度的平均值。具體的計(jì)算方式可參考現(xiàn)有技術(shù)中提供的方式,本發(fā)明實(shí)施例提供的信號處理的方法在加窗時(shí)所采用的窗的形狀和所需要加窗的個(gè)數(shù)的確定方式與現(xiàn)有技術(shù)不同。其它的計(jì)算方式均可參考現(xiàn)有技術(shù)中提供的方式。
根據(jù)本發(fā)明實(shí)施例提供的音頻信號的時(shí)域包絡(luò)的處理方法,在不同的條件下采用不同的窗長度和/或窗形狀求解時(shí)域包絡(luò),減少因?yàn)闀r(shí)域包絡(luò)差別太大引入的能量不連續(xù)的影響,能夠提升輸出信號的性能。
下面以具體對圖4中所示的N+1幀的處理來描述本發(fā)明另一實(shí)施例中計(jì)算及量化時(shí)域包絡(luò)的步驟。
圖4為本發(fā)明另一實(shí)施例的對音頻信號進(jìn)行處理的示意圖,如圖4所示,和圖3所示類似,將第N+1幀按照需要計(jì)算的時(shí)域包絡(luò)的個(gè)數(shù)劃分為M個(gè)子幀,M為正整數(shù)。在一種可能的實(shí)施方式中,M的值可以是3、4、5、8等。在此不做限制。
對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中最末端的子幀采用非對稱窗進(jìn)行加窗。如圖4所示,對于最前端的子幀和最末端的子幀加窗所使用的非對稱窗不同。在一種可能的實(shí)現(xiàn)方式中,最前端子幀使用的非對稱窗的窗長和最末端子幀所使用的非對稱窗的窗長相同,也可以不同。
在本發(fā)明的一個(gè)實(shí)施例中,如圖4所示,對N+1幀的M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀采用形狀相同的非對稱窗進(jìn)行加窗。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz時(shí),可以求解8個(gè)時(shí)域包絡(luò)。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz時(shí),也可以求解4個(gè)時(shí)域包絡(luò)。
在本發(fā)明的一個(gè)實(shí)施例中,除了預(yù)先設(shè)定之外,還可以根據(jù)N+1幀的其它信息預(yù)先確定時(shí)域包絡(luò)的個(gè)數(shù)N。下面是確定時(shí)域包絡(luò)的個(gè)數(shù)N的實(shí)現(xiàn)方式的示例:
在一種可能實(shí)現(xiàn)的方式中,當(dāng)?shù)贜+1幀的低帶信號的基音周期大于第二閾值時(shí),N=4;或者,當(dāng)?shù)贜+1幀的低帶信號的基音周期不大于第二閾值時(shí),N=8。對于采用率為12.8kHz的低帶信號,第二閾值可以為70個(gè)樣點(diǎn)??梢岳斫獾氖?,上述數(shù)值只是為了幫助理解本發(fā)明實(shí)施例而做出的一種具體舉例,而不是對本發(fā)明實(shí)施例的具體限制。如圖4所示,在對第N+1幀的信號進(jìn)行信號分解時(shí)可以得到第N+1幀的低帶信號,信號分解所采用的方法和求解低帶信號的基音周期的方式可以采用現(xiàn)有技術(shù)中的任意一種方式,在此不做具體的限制。
可以理解的是,除了利用低帶信號的基音周期以外,還可以利用信號的能量等其它參數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,在利用非對稱窗對最前端的子幀和最末端的子幀進(jìn)行加窗時(shí),根據(jù)前向緩存的長度確定非對稱窗。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz,求解8個(gè)時(shí)域包絡(luò)時(shí),加窗所采用的非對稱窗的窗長和對稱窗的窗長可以都為20個(gè)樣點(diǎn)。利用幀長除以包絡(luò)個(gè)數(shù)得到第一閾值,此示例中第一閾值等于10。則當(dāng)前向緩存的長度小于10個(gè)樣點(diǎn)時(shí),第8個(gè)子幀采用的窗(即,最末端的子幀)和第1個(gè)子幀(即,最前端的子幀)采用的窗的混疊部分等于前向緩存的長度。當(dāng)前向緩存的長度大于等于10個(gè)樣點(diǎn)時(shí),第8個(gè)子幀采用的窗的右側(cè)和第1個(gè)子幀采用的窗的左側(cè)的長度可以等于另一側(cè)(例如第1個(gè)子幀采用的窗的右側(cè)或第8個(gè)子幀采用的窗的左側(cè))的窗長(10個(gè)樣點(diǎn)),也可以根據(jù)經(jīng)驗(yàn)設(shè)定一個(gè)長度(如,保持和前向緩存小于10個(gè)樣點(diǎn)時(shí)相同的長度)。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz,求解4個(gè)時(shí)域包絡(luò)時(shí),加窗所采用的非對稱窗的窗長和對稱窗的窗長可以都為40個(gè)樣點(diǎn)。利用幀長除以包絡(luò)個(gè)數(shù)得到第一閾值,此示例中第一閾值等于20。
在加窗后,計(jì)算各個(gè)子幀內(nèi)預(yù)處理后的原始高帶信號和預(yù)測的高帶信號的時(shí)域能量或子幀內(nèi)每個(gè)樣點(diǎn)幅度的平均值。具體的計(jì)算方式可參考現(xiàn)有技術(shù)中提供的方式,本發(fā)明實(shí)施例提供的信號處理的方法在加窗時(shí)所采用的窗的形狀和所需要加窗的個(gè)數(shù)的確定方式與現(xiàn)有技術(shù)不同。其它的計(jì)算方式均可參考現(xiàn)有技術(shù)中提供的方式。
下面以具體對圖5中所示的N+1幀的處理來描述本發(fā)明另一實(shí)施例中計(jì)算及量化時(shí)域包絡(luò)的步驟。
圖5為本發(fā)明另一實(shí)施例的對音頻信號進(jìn)行處理的示意圖,如圖5所示,在編碼端,在獲得原始音頻信號后,首先對原始音頻信號進(jìn)行信號分解,得到原始音頻信號的低帶信號和高帶信號,接著對低帶信號通過已有算法進(jìn)行編碼得到低帶的碼流,同時(shí),在進(jìn)行低帶編碼過程中,得到低帶的激勵信號,并對低帶激勵信號進(jìn)行預(yù)處理;對于原始音頻信號的高帶信號,首先進(jìn)行預(yù)處理,然后做LP分析得到LP系數(shù),量化該LP系數(shù)。接著將預(yù)處理后的低帶激勵信號通過LP合成濾波器(濾波器系數(shù)為量化后的LP系數(shù))得到預(yù)測的高帶信號。根據(jù)預(yù)處理后的高帶信號和預(yù)測的高帶信號,計(jì)算及量化高帶信號的時(shí)域包絡(luò),最后輸出編碼碼流。
除了計(jì)算及量化高帶信號的時(shí)域包絡(luò)的步驟之外,對于音頻信號的其它步驟的處理可以參考現(xiàn)有技術(shù)中所采用的方法,在此不再贅述。
下面以具體對圖5中所示的N+1幀的處理來描述本發(fā)明實(shí)施例中計(jì)算及量化時(shí)域包絡(luò)的步驟。
如圖5所示,將第N+1幀按照需要計(jì)算的時(shí)域包絡(luò)的個(gè)數(shù)劃分為M個(gè)子幀,M為正整數(shù)。在一種可能的實(shí)施方式中,M的值可以是3、4、5、8等。在此不做限制。
對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中最末端的子幀采用非對稱窗進(jìn)行加窗。N+1幀的M個(gè)子幀中最前端的子幀為與前一幀(N幀)的信號有重疊部分的子幀;最末端的子幀為與后一幀(N+2幀,圖中未示出)的信號有重疊部分的子幀。在一種可能的方式中,如圖3所示,最前端的子幀即為N+1幀中最左端的子幀,最末端的子幀即為N+1幀中最右端的子幀??梢岳斫獾氖牵钭蠛妥钣抑皇墙Y(jié)合圖3的一種具體示例,而不是對本發(fā)明實(shí)施例的限制。實(shí)際中子幀的劃分是不存在最左、最右這種方向性限制的。
對于最前端的子幀和最末端的子幀加窗所使用的非對稱窗可以完全相同,也可以不同。在此不做限制。在一種可能的實(shí)現(xiàn)方式中,最前端子幀使用的非對稱窗的窗長和最末端子幀所使用的非對稱窗的窗長相同。
在本發(fā)明的一種可能實(shí)現(xiàn)的方式中,對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中最末端的子幀采用非對稱窗進(jìn)行加窗,其中對M個(gè)子幀中的最前端的子幀采用的非對稱窗與對M個(gè)子幀中最末端的子幀采用的非對稱窗的形狀不同,其中一個(gè)非對稱窗以水平方向旋轉(zhuǎn)180度可以與另一個(gè)非對稱窗重合。在一種可能的實(shí)現(xiàn)方式中,最前端子幀使用的非對稱窗的窗長和最末端子幀所使用的非對稱窗的窗長相同。在本發(fā)明的一個(gè)實(shí)施例中,如圖5所示,對N+1幀的M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗。對稱窗的窗長與非對稱窗的窗長不同。例如,對幀長為20ms(80個(gè)樣點(diǎn))采樣率為4kHz的信號:如果前向緩存為5個(gè)樣點(diǎn),求解4個(gè)時(shí)域包絡(luò),采用本實(shí)施例的窗,兩端的窗長為30個(gè)樣點(diǎn),連續(xù)兩幀混疊時(shí)的樣點(diǎn)數(shù)為5個(gè)樣點(diǎn),中間的兩個(gè)窗長為50個(gè)樣點(diǎn),混疊25個(gè)樣點(diǎn)。
在本發(fā)明的一個(gè)實(shí)施例中,如圖5所示,對N+1幀的M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗。
在本發(fā)明的一個(gè)實(shí)施例中,對于最前端的子幀和最末端的子幀加窗所采用的非對稱窗的窗長與對其它子幀采用的對稱窗的窗長相等。可以理解的是,在另一種可能的方式中,非對稱窗的窗長和對稱窗的窗長也可以不等。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz時(shí),可以求解8個(gè)時(shí)域包絡(luò)。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz時(shí),也可以求解4個(gè)時(shí)域包絡(luò)。
在本發(fā)明的一個(gè)實(shí)施例中,除了預(yù)先設(shè)定之外,還可以根據(jù)N+1幀的其它信息預(yù)先確定時(shí)域包絡(luò)的個(gè)數(shù)N。下面是確定時(shí)域包絡(luò)的個(gè)數(shù)N的實(shí)現(xiàn)方式的示例:
在一種可能實(shí)現(xiàn)的方式中,當(dāng)?shù)贜+1幀的低帶信號的基音周期大于第二閾值時(shí),N=4;或者,當(dāng)?shù)贜+1幀的低帶信號的基音周期不大于第二閾值時(shí),N=8。對于采用率為12.8kHz的低帶信號,第二閾值可以為70個(gè)樣點(diǎn)。可以理解的是,上述數(shù)值只是為了幫助理解本發(fā)明實(shí)施例而做出的一種具體舉例,而不是對本發(fā)明實(shí)施例的具體限制。如圖3所示,在對第N+1幀的信號進(jìn)行信號分解時(shí)可以得到第N+1幀的低帶信號,信號分解所采用的方法和求解低帶信號的基音周期的方式可以采用現(xiàn)有技術(shù)中的任意一種方式,在此不做具體的限制。
可以理解的是,除了利用低帶信號的基音周期以外,還可以利用信號的能量等其它參數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,在利用非對稱窗對最前端的子幀和最末端的子幀進(jìn)行加窗時(shí),根據(jù)前向緩存的長度確定非對稱窗。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz,求解8個(gè)時(shí)域包絡(luò)時(shí),加窗所采用的非對稱窗的窗長和對稱窗的窗長可以都為20個(gè)樣點(diǎn)。利用幀長除以包絡(luò)個(gè)數(shù)得到第一閾值,此示例中第一閾值等于10。則當(dāng)前向緩存的長度小于10個(gè)樣點(diǎn)時(shí),第8個(gè)子幀(即,最末端的子幀)采用的窗和第1個(gè)子幀(即,最前端的子幀)采用的窗的混疊部分等于前向緩存的長度。當(dāng)前向緩存的長度大于等于10個(gè)樣點(diǎn)時(shí),第8個(gè)子幀采用的窗的右側(cè)和第1個(gè)子幀采用的窗的左側(cè)的長度可以等于另一側(cè)(例如第一個(gè)子幀采用的窗的右側(cè)或第八個(gè)子幀采用的窗的左側(cè))的窗長(10個(gè)樣點(diǎn)),也可以根據(jù)經(jīng)驗(yàn)設(shè)定一個(gè)長度(如,保持和前向緩存小于10個(gè)樣點(diǎn)時(shí)相同的長度)。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz,求解4個(gè)時(shí)域包絡(luò)時(shí),加窗所采用的非對稱窗的窗長和對稱窗的窗長可以都為40個(gè)樣點(diǎn)。利用幀長除以包絡(luò)個(gè)數(shù)得到第一閾值,此示例中第一閾值等于20。
在加窗后,計(jì)算各個(gè)子幀內(nèi)預(yù)處理后的原始高帶信號和預(yù)測的高帶信號的時(shí)域能量或子幀內(nèi)每個(gè)樣點(diǎn)幅度的平均值。具體的計(jì)算方式可參考現(xiàn)有技術(shù)中提供的方式,本發(fā)明實(shí)施例提供的信號處理的方法在加窗時(shí)所采用的窗的形狀和所需要加窗的個(gè)數(shù)的確定方式與現(xiàn)有技術(shù)不同。其它的計(jì)算方式均可參考現(xiàn)有技術(shù)中提供的方式。
根據(jù)本發(fā)明實(shí)施例提供的音頻信號的時(shí)域包絡(luò)的處理方法,在不同的條件下采用不同的窗長度和/或窗形狀求解時(shí)域包絡(luò),減少因?yàn)闀r(shí)域包絡(luò)差別太大引入的能量不連續(xù)的影響,能夠提升輸出信號的性能。
本實(shí)施例提供的音頻信號的時(shí)域包絡(luò)處理方法,通過根據(jù)接收到的音頻幀信號得到音頻幀的高帶信號,然后根據(jù)預(yù)先確定的時(shí)域包絡(luò)個(gè)數(shù)M將音頻幀的高帶信號分成M個(gè)子幀,最后計(jì)算每一個(gè)子幀的時(shí)域包絡(luò)。從而有效避免了在lookahead很短,同時(shí)要保證子幀間很好的混疊引起的求解過多時(shí)域包絡(luò)的問題,進(jìn)而避免了對一些信號,因過多求解時(shí)域包絡(luò)而引入的能量不連續(xù)的問題,同時(shí)降低了計(jì)算復(fù)雜度。
圖6為本發(fā)明音頻信號的時(shí)域包絡(luò)處理方法實(shí)施例二的流程圖,如圖6所示,本實(shí)施例的方法可以包括:
S60、接收到待處理信號后,根據(jù)第一頻帶內(nèi)時(shí)域信號的平穩(wěn)狀態(tài)或第二頻帶信號的基音周期大小,確定對待處理信號計(jì)算的時(shí)域包絡(luò)個(gè)數(shù)M,第一頻帶為待處理信號的時(shí)域信號的頻帶或整個(gè)輸入信號的頻帶,第二頻帶為低于給定閾值的頻帶或整個(gè)輸入信號的頻帶。
其中,確定對待處理信號計(jì)算的時(shí)域包絡(luò)個(gè)數(shù)M,具體包括:
當(dāng)?shù)谝活l帶內(nèi)時(shí)域信號處于平穩(wěn)狀態(tài)或第二頻帶信號的基音周期大于預(yù)設(shè)閾值時(shí),M等于M1,否則M等于M2,M1大于M2,M1、M2都為正整數(shù),預(yù)設(shè)閾值根據(jù)采樣率確定。
平穩(wěn)狀態(tài)是指時(shí)域信號在一定時(shí)間內(nèi)的能量或幅度的均值變化不大,或時(shí)域信號在一定時(shí)間內(nèi)的偏差小于給定閾值。
例如,對幀長為20ms(80個(gè)樣點(diǎn))采樣率為4kHz的高帶信號,如果高帶時(shí)域信號子幀間的能量的比值小于給定閾值(小于0.5),或低帶信號的基音周期大于給定閾值(大于70個(gè)樣點(diǎn),此時(shí)低帶信號的采樣率為12.8kHz采樣),則在對高帶信號求解時(shí)域包絡(luò)時(shí),求解4個(gè)時(shí)域包絡(luò);否則,求解8個(gè)時(shí)域包絡(luò)。
例如,對幀長為20ms(320個(gè)樣點(diǎn))采樣率為16kHz的高帶信號,如果高帶時(shí)域信號子幀間的能量的比值小于給定閾值(小于0.5),或低帶信號的基音周期大于給定閾值(大于70個(gè)樣點(diǎn),此時(shí)低帶信號的采樣率為12.8kHz采樣),則在對高帶信號求解時(shí)域包絡(luò)時(shí),求解2個(gè)時(shí)域包絡(luò);否則,求解4個(gè)時(shí)域包絡(luò)。
S61、將待處理信號分成M個(gè)子幀,計(jì)算每一個(gè)子幀的時(shí)域包絡(luò)。
其中,本實(shí)施例對每一個(gè)子幀進(jìn)行加窗處理時(shí),不限定采用何種加窗方式進(jìn)行加窗處理。
本實(shí)施例提供的音頻信號的時(shí)域包絡(luò)處理方法,通過根據(jù)不同的條件求解不同個(gè)數(shù)的時(shí)域包絡(luò),有效避免了對一定條件下的信號求解過多的時(shí)域包絡(luò)造成的能量不連續(xù),進(jìn)而引起的聽覺質(zhì)量下降,同時(shí),可以有效降低算法的平均復(fù)雜度。
本發(fā)明實(shí)施例還提供一種音頻信號的時(shí)域包絡(luò)處理裝置,可以用于執(zhí)行圖1-圖5中所示部分方法,還可以用于其它采用同樣原理的求解時(shí)域包絡(luò)的處理流程中。下面結(jié)合附圖詳細(xì)說明本發(fā)明實(shí)施例提供的音頻信號的時(shí)域包絡(luò)處理裝置的結(jié)構(gòu)。
圖7為本發(fā)明實(shí)施例的時(shí)域包絡(luò)處理裝置的結(jié)構(gòu)示意圖,如圖7所示,本實(shí)施例的時(shí)域包絡(luò)處理裝置70包括:高帶信號獲取模塊71,用于根據(jù)接收到的當(dāng)前幀信號,得到當(dāng)前幀信號的高帶信號;子幀獲取模塊72,用于根據(jù)預(yù)先確定的時(shí)域包絡(luò)個(gè)數(shù)M將當(dāng)前幀的高帶信號分成M個(gè)子幀,其中,M為大于等于2的整數(shù);時(shí)域包絡(luò)獲取模塊73,用于計(jì)算每一個(gè)子幀的時(shí)域包絡(luò);其中,時(shí)域包絡(luò)獲取模塊73具體用于:采用非對稱窗對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中的最末端的子幀進(jìn)行加窗;對M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀進(jìn)行加窗。
在本發(fā)明實(shí)施例一種可能的方式中,時(shí)域包絡(luò)獲取模塊73還用于:
根據(jù)當(dāng)前幀信號的高帶信號的前向緩存的長度確定非對稱窗;或者,
根據(jù)當(dāng)前幀信號的高帶信號的前向緩存的長度和時(shí)域包絡(luò)個(gè)數(shù)M確定非對稱窗。
在本發(fā)明一個(gè)實(shí)施例中,時(shí)域包絡(luò)獲取模塊73具體用于:
采用非對稱窗對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中的最末端的子幀進(jìn)行加窗,對M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗;或者,
采用非對稱窗對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中的最末端的子幀進(jìn)行加窗,對M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀采用非對稱窗進(jìn)行加窗。
在本發(fā)明實(shí)施例一種可能的實(shí)現(xiàn)方式中,非對稱窗的窗長與對M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀進(jìn)行加窗所采用的窗的窗長相同。在本發(fā)明的一個(gè)實(shí)施例中,時(shí)域包絡(luò)獲取模塊73還用于:根據(jù)當(dāng)前幀信號得到當(dāng)前幀信號的低帶信號的基音周期;
當(dāng)當(dāng)前幀信號的類型與當(dāng)前幀的前一幀信號的類型相同,且當(dāng)前幀的低帶信號的基音周期大于第三閾值時(shí),對每一個(gè)子幀的時(shí)域包絡(luò)進(jìn)行平滑處理。
對時(shí)域包絡(luò)做平滑處理,具體可以是:將相鄰的兩個(gè)子幀的時(shí)域包絡(luò)加權(quán),加權(quán)后的時(shí)域包絡(luò)作為這兩個(gè)子幀的時(shí)域包絡(luò)。例如,當(dāng)解碼端連續(xù)兩幀信號都是濁音信號,或者一幀是濁音信號一幀是普通信號,且低帶信號的基音周期大于給定閾值(大于70個(gè)樣點(diǎn),此時(shí)低帶信號的采樣率為12.8kHz采樣)時(shí),則對解碼的高帶信號時(shí)域包絡(luò)做平滑處理,否則保持時(shí)域包絡(luò)不變。平滑處理可以為:
env[0]=0.5*(env[0]+env[1]);
env[1]=0.5*(env[0]+env[1]);
…
env[N-1]=0.5*(env[N-1]+env[N]);
env[N]=0.5*(env[N-1]+env[N])。
其中,env[]為時(shí)域包絡(luò)。
在本發(fā)明的一個(gè)實(shí)施例中,時(shí)域包絡(luò)處理裝置70還包括:確定模塊74,用于根據(jù)下列之一方式確定時(shí)域包絡(luò)個(gè)數(shù)M:
根據(jù)當(dāng)前幀信號得到當(dāng)前幀信號的低帶信號,當(dāng)當(dāng)前幀信號的低帶信號的基音周期大于第二閾值時(shí),M=M1;或者,
根據(jù)當(dāng)前幀信號得到當(dāng)前幀信號的低帶信號,當(dāng)當(dāng)前幀信號的低帶信號的基音周期不大于第二閾值時(shí),M=M2;
其中,M1,M2均為正整數(shù),且M2>M1。
在本發(fā)明的實(shí)施例中,要預(yù)先確定的時(shí)域包絡(luò)個(gè)數(shù)M可以是根據(jù)整體算法要求和經(jīng)驗(yàn)值確定。時(shí)域包絡(luò)個(gè)數(shù)M例如是編碼器事先根據(jù)整體算法或經(jīng)驗(yàn)值確定,確定后不會改變。例如一般對20ms一幀的輸入信號,如果輸入信號相對平穩(wěn),求解4個(gè)或者2個(gè)時(shí)域包絡(luò),但對一些非平穩(wěn)信號,需要求解更多如8個(gè)時(shí)域包絡(luò)。
具體來說,首先,在編碼端,在獲得原始音頻信號后,首先對原始音頻信號進(jìn)行信號分解,得到原始音頻信號的低帶信號和高帶信號,接著對低帶信號通過已有算法進(jìn)行編碼得到低帶的碼流,同時(shí),在進(jìn)行低帶編碼過程中,得到低帶的激勵信號,并對低帶激勵信號進(jìn)行預(yù)處理;對于原始音頻信號的高帶信號,首先進(jìn)行預(yù)處理,然后做LP分析得到LP系數(shù),量化該LP系數(shù)。接著將預(yù)處理后的低帶激勵信號通過LP合成濾波器(濾波器系數(shù)為量化后的LP系數(shù))得到預(yù)測的高帶信號。根據(jù)預(yù)處理后的高帶信號和預(yù)測的高帶信號,計(jì)算及量化高帶信號的時(shí)域包絡(luò),最后輸出編碼碼流。
除了計(jì)算及量化高帶信號的時(shí)域包絡(luò)的步驟之外,對于音頻信號的其它步驟的處理可以參考現(xiàn)有技術(shù)中所采用的方法,在此不再贅述。
本實(shí)施例的裝置,可以用于執(zhí)行圖2-圖5所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理類似。
在一個(gè)具體的示例中,在編碼端,在獲得原始音頻信號后,首先對原始音頻信號進(jìn)行信號分解,得到原始音頻信號的低帶信號和高帶信號,接著對低帶信號通過已有算法進(jìn)行編碼得到低帶的碼流,同時(shí),在進(jìn)行低帶編碼過程中,得到低帶的激勵信號,并對低帶激勵信號進(jìn)行預(yù)處理;對于原始音頻信號的高帶信號,首先進(jìn)行預(yù)處理,然后做LP分析得到LP系數(shù),量化該LP系數(shù)。接著將預(yù)處理后的低帶激勵信號通過LP合成濾波器(濾波器系數(shù)為量化后的LP系數(shù))得到預(yù)測的高帶信號。根據(jù)預(yù)處理后的高帶信號和預(yù)測的高帶信號,計(jì)算及量化高帶信號的時(shí)域包絡(luò),最后輸出編碼碼流。
除了計(jì)算及量化高帶信號的時(shí)域包絡(luò)的步驟之外,對于音頻信號的其它步驟的處理可以參考現(xiàn)有技術(shù)中所采用的方法,在此不再贅述。
將第N+1幀按照需要計(jì)算的時(shí)域包絡(luò)的個(gè)數(shù)劃分為M個(gè)子幀,M為正整數(shù)。在一種可能的實(shí)施方式中,M的值可以是3、4、5、8等。在此不做限制。
對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中最末端的子幀采用非對稱窗進(jìn)行加窗。N+1幀的M個(gè)子幀中最前端的子幀為與前一幀(N幀)的信號有重疊部分的子幀;最末端的子幀為與后一幀(N+2幀,圖中未示出)的信號有重疊部分的子幀。在一種可能的方式中,最前端的子幀即為N+1幀中最左端的子幀,最末端的子幀即為N+1幀中最右端的子幀??梢岳斫獾氖?,最左和最右只是一種具體示例,而不是對本發(fā)明實(shí)施例的限制。實(shí)際中子幀的劃分是不存在最左、最右這種方向性限制的。
對于最前端的子幀和最末端的子幀加窗所使用的非對稱窗可以完全相同,也可以不同。在此不做限制。在一種可能的實(shí)現(xiàn)方式中,最前端子幀使用的非對稱窗的窗長和最末端子幀所使用的非對稱窗的窗長相同。
在本發(fā)明的一個(gè)實(shí)施例中,對N+1幀的M個(gè)子幀中除最前端的子幀和最末端的子幀之外的子幀采用對稱窗進(jìn)行加窗。
在本發(fā)明的一個(gè)實(shí)施例中,對于最前端的子幀和最末端的子幀加窗所采用的非對稱窗的窗長與對其它子幀采用的對稱窗的窗長相等??梢岳斫獾氖?,在另一種可能的方式中,非對稱窗的窗長和對稱窗的窗長也可以不等。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz時(shí),可以求解8個(gè)時(shí)域包絡(luò)。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz時(shí),也可以求解4個(gè)時(shí)域包絡(luò)。
在本發(fā)明的一個(gè)實(shí)施例中,除了預(yù)先設(shè)定之外,還可以根據(jù)N+1幀的其它信息預(yù)先確定時(shí)域包絡(luò)的個(gè)數(shù)N。下面是確定時(shí)域包絡(luò)的個(gè)數(shù)N的實(shí)現(xiàn)方式的示例:
在一種可能實(shí)現(xiàn)的方式中,當(dāng)?shù)贜+1幀的低帶信號的基音周期大于第二閾值時(shí),N=4;或者,當(dāng)?shù)贜+1幀的低帶信號的基音周期不大于第二閾值時(shí),N=8。對于采用率為12.8kHz的低帶信號,第二閾值可以為70個(gè)樣點(diǎn)??梢岳斫獾氖?,上述數(shù)值只是為了幫助理解本發(fā)明實(shí)施例而做出的一種具體舉例,而不是對本發(fā)明實(shí)施例的具體限制。在對第N+1幀的信號進(jìn)行信號分解時(shí)可以得到第N+1幀的低帶信號,信號分解所采用的方法和求解低帶信號的基音周期的方式可以采用現(xiàn)有技術(shù)中的任意一種方式,在此不做具體的限制。
可以理解的是,除了利用低帶信號的基音周期以外,還可以利用信號的能量等其它參數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,在利用非對稱窗對最前端的子幀和最末端的子幀進(jìn)行加窗時(shí),根據(jù)前向緩存的長度確定非對稱窗。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz,求解8個(gè)時(shí)域包絡(luò)時(shí),加窗所采用的非對稱窗的窗長和對稱窗的窗長可以都為20個(gè)樣點(diǎn)。利用幀長除以包絡(luò)個(gè)數(shù)得到第一閾值,此示例中第一閾值等于10。則當(dāng)前向緩存的長度小于10個(gè)樣點(diǎn)時(shí),第8個(gè)子幀(即,最末端的子幀)采用的窗和第1個(gè)子幀(即,最前端的子幀)采用的窗的混疊部分等于前向緩存的長度。當(dāng)前向緩存的長度大于等于10個(gè)樣點(diǎn)時(shí),第8個(gè)子幀采用的窗的右側(cè)和第1個(gè)子幀采用的窗的左側(cè)的長度可以等于另一側(cè)(例如第一個(gè)子幀采用的窗的右側(cè)或第八個(gè)子幀采用的窗的左側(cè))的窗長(10個(gè)樣點(diǎn)),也可以根據(jù)經(jīng)驗(yàn)設(shè)定一個(gè)長度(如,保持和前向緩存小于10個(gè)樣點(diǎn)時(shí)相同的長度)。
在一種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)贜+1幀的幀長為80個(gè)樣點(diǎn),采樣率為4kHz,求解4個(gè)時(shí)域包絡(luò)時(shí),加窗所采用的非對稱窗的窗長和對稱窗的窗長可以都為40個(gè)樣點(diǎn)。利用幀長除以包絡(luò)個(gè)數(shù)得到第一閾值,此示例中第一閾值等于20。
在加窗后,計(jì)算各個(gè)子幀內(nèi)預(yù)處理后的原始高帶信號和預(yù)測的高帶信號的時(shí)域能量或子幀內(nèi)每個(gè)樣點(diǎn)幅度的平均值。具體的計(jì)算方式可參考現(xiàn)有技術(shù)中提供的方式,本發(fā)明實(shí)施例提供的信號處理的方法在加窗時(shí)所采用的窗的形狀和所需要加窗的個(gè)數(shù)的確定方式與現(xiàn)有技術(shù)不同。其它的計(jì)算方式均可參考現(xiàn)有技術(shù)中提供的方式。
本實(shí)施例提供的音頻信號的時(shí)域包絡(luò)處理裝置,通過根據(jù)不同的條件求解不同個(gè)數(shù)的時(shí)域包絡(luò),有效避免了對一定條件下的信號求解過多的時(shí)域包絡(luò)造成的能量不連續(xù),進(jìn)而引起的聽覺質(zhì)量下降,同時(shí),可以有效降低算法的平均復(fù)雜度。
下面結(jié)合圖8描述本發(fā)明實(shí)施例的一種編碼器80,圖8為本發(fā)明實(shí)施例的編碼器的結(jié)構(gòu)示意圖,如圖8所示,編碼器80具體用于:
用于根據(jù)接收到的當(dāng)前幀信號,得到當(dāng)前幀信號的低帶信號和當(dāng)前幀信號的高帶信號;
對當(dāng)前幀信號的低帶信號進(jìn)行編碼,得到低帶編碼的激勵信號;
對當(dāng)前幀信號的高帶信號進(jìn)行線性預(yù)測,得到線性預(yù)測系數(shù);
量化線性預(yù)測系數(shù),得到量化后的線性預(yù)測系數(shù);
根據(jù)低帶編碼的激勵信號和量化后的線性預(yù)測系數(shù)得到預(yù)測的高帶信號;
計(jì)算及量化預(yù)測的高帶信號的時(shí)域包絡(luò);
其中,計(jì)算所述預(yù)測的高帶信號的時(shí)域包絡(luò)包括:
根據(jù)預(yù)先確定的時(shí)域包絡(luò)個(gè)數(shù)M將預(yù)測的高帶信號分成M個(gè)子幀,其中,M為大于等于2的整數(shù),
采用非對稱窗對M個(gè)子幀中的最前端的子幀和M個(gè)子幀中的最末端的子幀進(jìn)行加窗,
對M個(gè)子幀中除所述最前端的子幀和最末端的子幀之外的子幀進(jìn)行加窗;
對量化后的時(shí)域包絡(luò)進(jìn)行編碼。
可以理解的是,編碼器80可以用于執(zhí)行上述任意的方法實(shí)施例。也可以包括任意實(shí)施例的時(shí)域包絡(luò)處理裝置70。具體的編碼器80所執(zhí)行的功能可參考前述方法和裝置實(shí)施例,在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。