本發(fā)明屬于回聲消除技術(shù)領(lǐng)域,具體涉及一種確定回聲消除中系統(tǒng)延時的方法。
背景技術(shù):
隨著技術(shù)的不斷進(jìn)步和網(wǎng)絡(luò)帶寬的不斷提升,直接通過手機(jī)、平板電腦等移動終端進(jìn)行視頻直播已經(jīng)成為現(xiàn)實(shí),并已深入到人們的生活中。盡管相較于視頻音頻(語音)的編碼復(fù)雜度和碼流均要小得多,但由于受網(wǎng)絡(luò)延時、網(wǎng)絡(luò)丟包等問題影響,在通訊過程中會產(chǎn)生回聲(Echo),從而影響用戶體驗(yàn),有必要對回聲進(jìn)行處理,盡量降低回聲對終端用戶的影響。
通訊中的回聲可分為聲學(xué)回聲(Acoustic Echo)和線路回聲(Line Echo)。聲學(xué)回聲是由于揚(yáng)聲器的聲音又被送至麥克風(fēng),和輸入語音混合到一起被傳輸?shù)酵ㄓ崒Ψ?;線路回聲是由于物理電子線路的二四線匹配耦合產(chǎn)生的。通常是引入聲學(xué)回聲消除器(Acoustic Echo Canceler,AEC)和線路回聲消除器(Line Echo Canceler,LEC),相應(yīng)的回聲消除技術(shù)通常也可稱為AEC(Acoustic Echo Cancellation)和LEC(Line Echo Cancellation)。
在移動視頻直播中只有聲學(xué)回聲,因此本發(fā)明只考慮聲學(xué)回聲的消除。
目前的回聲消除算法主要是采用自適應(yīng)濾波器模擬回聲路徑,并使其沖激響應(yīng)與實(shí)際回聲路徑盡可能的接近,從而得到回聲信號的估計值,再將該估計值從近端采樣的語音信號中減去即可實(shí)現(xiàn)回聲的消除。
實(shí)際應(yīng)用中典型的自適應(yīng)算法包括:最小均方(Least Mean Square,LMS)算法、歸一化最小均方(Normalized Least Mean Square,NLMS)算法、仿射投影(Affine Projection Algorithm,APA)算法、快速橫向?yàn)V波(Fast Transverse Filter Algorithm)算法,塊自適應(yīng)(Block-Adaptive Algorithm)以及加前置去相關(guān)濾波器的算法。但這些自適應(yīng)算法要么收斂速度慢,要么計算復(fù)雜度高,并且對于時延較大的網(wǎng)絡(luò)環(huán)境,回聲消除效果不好。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術(shù)中存在的問題,提供了一種確定回聲消除中系統(tǒng)延時的方法。其基本原理是對近端采集語音信號和參考信號做頻譜能量進(jìn)行相似性計算,簡單而高效地估計出系統(tǒng)的時延,然后根據(jù)確定的系統(tǒng)延時,對參考信號進(jìn)行濾波模擬產(chǎn)生回波信號,最后通過增益減法消除回聲信號。
一種確定回聲消除中系統(tǒng)延時的方法,所述方法包括以下步驟:
步驟一:對近端語音信號和遠(yuǎn)端參考信號作分段交疊處理,設(shè)每段的信號時長為T,交疊時間為Δt,每次處理的信號分段數(shù)為n,其中Δt≤T/2;
步驟二:對交疊信號使用漢明窗進(jìn)行加窗處理,得到加窗后的近端語音信號和加窗后的遠(yuǎn)端參考信號;
步驟三:對步驟二所述加窗后的近端語音信號進(jìn)行N位FFT運(yùn)算,得到近端語音信號的頻譜,其中N≥T;
步驟四:對步驟二所述加窗后的遠(yuǎn)端參考信號進(jìn)行N位FFT運(yùn)算,得到遠(yuǎn)端參考信號的頻譜,其中N≥T;
步驟五:對步驟三所述的近端語音信號的頻譜和步驟四所述的遠(yuǎn)端參考信號的頻譜按幅值大小進(jìn)行降序排序;
步驟六:得到排序后的頻譜后,進(jìn)一步確定二值化的頻譜數(shù)M;
步驟七:得到頻譜數(shù)M后,對所述近端語音信號和遠(yuǎn)端參考信號的頻譜做二值化處理,得到近端語音信號和遠(yuǎn)端參考信號的二進(jìn)制數(shù);
步驟八:對步驟七中所述的兩個二進(jìn)制數(shù),計算它們的海明距離;
步驟九:重復(fù)步驟四至八,計算出n段分段信號的對應(yīng)海明距離,并對海明距離求和,記為d0;
步驟十:以當(dāng)前時間點(diǎn)為基準(zhǔn),將參考信號向前移動Δt,重復(fù)步驟四至九,得到海明距離d1;
步驟十一:將參考信號不斷前移,重復(fù)步驟四至九,得到海明距離d2,d3,……dn;
步驟十二:搜索所述步驟十得到的海明距離d1和步驟十一得到的海明距離d2,d3,…dn的最小值,其對應(yīng)的時間偏移即為要求的系統(tǒng)延時。
進(jìn)一步地,所述步驟六中頻譜數(shù)M的具體確定方法為:設(shè)頻譜總能量為其中ωi為對應(yīng)頻率為的頻譜系數(shù),給定閾值α,按公式計算M,其中,α<1。
進(jìn)一步地,所述α取值0.8。
進(jìn)一步地,所述步驟七的具體方法為:針對近端語音和遠(yuǎn)端參考信號的頻譜,分別初始化一個N位的二進(jìn)制數(shù)為0,其中第i位對應(yīng)于頻率將步驟五中計算出的M個頻譜系數(shù)對應(yīng)二進(jìn)制數(shù)置1。
進(jìn)一步地,所述步驟八的具體方法為:用個int類型的整數(shù)表示步驟六中的二進(jìn)制數(shù),分別求取對整數(shù)的異或并統(tǒng)計二進(jìn)制結(jié)果中比特位為1的個數(shù),相加即可得到要計算的海明距離。
進(jìn)一步地,確定系統(tǒng)延時后,利用該系統(tǒng)延時,對參考信號的頻譜進(jìn)行濾波,然后通過增益削減法消除回聲,得到消除回聲后的近端輸入頻域信號。
進(jìn)一步地,對所述消除回聲后的近端輸入頻域信號進(jìn)行非線性處理,得到消除回聲后的近端輸入信號,從而得到更高的語音質(zhì)量。
與現(xiàn)有技術(shù)相比,本發(fā)明的方法在消除回聲時具有收斂速度快,計算方法簡單,且對于時延較大的網(wǎng)絡(luò)環(huán)境,回聲消除效果較好等優(yōu)點(diǎn)。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例對本發(fā)明做進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限于此。
在本發(fā)明的實(shí)施方式中,語音信號有兩部分,一部分為遠(yuǎn)端參考信號,通過解碼對端通過網(wǎng)絡(luò)傳輸過來的數(shù)據(jù)包得到;另一部分為近端語音信號,通過移動終端的聲音采集系統(tǒng)采集得到。
如圖1所示,得到語音信號后,首先進(jìn)行分段和交疊處理(Overlap),該處理方式為常規(guī)技術(shù)。假定每個分段的時長為T,交疊時間為Δt(Δt≤T/2),每次處理的語音分段數(shù)為n。由于信號的準(zhǔn)平穩(wěn)性,以及語音基頻周期的限制,通常T可以取10ms。交疊處理一般要求每個分段有不少于50%的交疊,本實(shí)施例中Δt取5ms。每次處理的語音數(shù)據(jù)對應(yīng)的實(shí)際時長為(n-1)*Δt+T,為保證計算時延的精度范圍,前述表達(dá)式應(yīng)與最大時延相當(dāng),本實(shí)施例中n可取99,對應(yīng)的語音數(shù)據(jù)的實(shí)際時長為500ms。
加窗也是常規(guī)技術(shù),通常選取Hamming窗,具體長度取決于語音的實(shí)際采樣率。
快速傅里葉變換(FFT)也是常規(guī)技術(shù),位數(shù)N不小于數(shù)據(jù)的實(shí)際長度。N越大頻譜的分辨率越高,但計算量也越大。本實(shí)施例中N取512已經(jīng)足夠,因?yàn)榧词共蓸勇蕿?8KHz,每個分段的數(shù)據(jù)也就為480點(diǎn)。
得到遠(yuǎn)端參考信號和近端信號每個分段的頻譜后,按幅值大小(能量)進(jìn)行降序排序,注意排序后仍要保留對應(yīng)頻率的信息。
得到排序后的頻譜后,進(jìn)一步確定二值化的頻譜數(shù)M。具體方法如下:設(shè)頻譜總能量為其中ωi為對應(yīng)頻率為的頻譜系數(shù),給定閾值α(α<1),按公式計算M。在實(shí)際操作中,α不宜過大也不宜過小。實(shí)驗(yàn)表明α優(yōu)選為0.8。
得到頻譜數(shù)M后,即可對近端語音和遠(yuǎn)端參考信號的頻譜做二值化處理。具體方法如下:針對近端語音和遠(yuǎn)端參考信號的頻譜分別初始化一個N位(bit)的二進(jìn)制數(shù)為0,其中第i位對應(yīng)于頻率將上述步驟中計算出的M個頻譜系數(shù)對應(yīng)bit置1;
對上述步驟中的兩個二進(jìn)制數(shù),計算它們之間的海明距離。具體地,可用個int類型的整數(shù)表示這兩個二進(jìn)制數(shù),分別求取對整數(shù)的異或并統(tǒng)計二進(jìn)制結(jié)果中比特位為1的個數(shù),相加即可得到要計算的分段海明距離。
對所有分段重復(fù)上述步驟,直至所有分段處理完畢,可得到n個分段海明距離,將這些分段海明距離相加得到一個總的海明距離。
以當(dāng)前時間點(diǎn)為基準(zhǔn),將參考信號向前移動Δt,重復(fù)上述步驟,直至前移結(jié)束。前移的總時間ΔT取決于所要計算的系統(tǒng)時延,該值應(yīng)與最大系統(tǒng)時延相當(dāng),本實(shí)施例中ΔT取500ms(該值可根據(jù)實(shí)際應(yīng)用場景作調(diào)整),這樣前移的次數(shù)為ΔT/Δt=100次,這樣一共得到100個總的海明距離。
搜索這100個海明距離中最小值,其對應(yīng)的時間偏移即為要求的系統(tǒng)延時。容易看出,該系統(tǒng)時延的最小精度為Δt,實(shí)際應(yīng)用中如果需要更高精度的系統(tǒng)延時,可在該得到的系統(tǒng)延時基礎(chǔ)上,在它的鄰域做更小精度的時延計算。
在得到系統(tǒng)延時后,即可進(jìn)行聲學(xué)回聲消除。先進(jìn)行頻域?yàn)V波,再通過增益削減法(Gain Reduction)即可消除絕大部分回聲。由于頻域?yàn)V波和增益削減法均是常規(guī)技術(shù),這里不作詳細(xì)討論。要進(jìn)一步得到更高的語音質(zhì)量,可對消除回聲后的近端輸入頻域信號進(jìn)行非線性處理,得到消除回聲后的近端輸入信號。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。