用于判斷回聲參考信號在當(dāng)前幀是否存在回聲。
[0170] 具體地,回聲判斷單元402可以依據(jù)回聲參考信號的能量判斷回聲參考信號在當(dāng) 前幀是否存在回聲,并根據(jù)判斷的結(jié)果做相應(yīng)的處理。
[0171]確定當(dāng)前幀的回聲參考信號的能量的基本原理是,從包含當(dāng)前幀的回聲參考信號 的預(yù)定信號長度中采集多個時間點的信號能量;根據(jù)采集的多個時間點的信號能量得到信 號能量的平均值,該平均值即為當(dāng)前幀的回聲參考信號的信號能量。
[0172] 其中所述預(yù)定信號長度的取值與預(yù)設(shè)的最大時延有關(guān)。預(yù)設(shè)的最大時延可以根據(jù) 硬件設(shè)備或軟件系統(tǒng)的實際情況進行選取。
[0173] 在對當(dāng)前幀的信號能量進行計算時,通過將采集的時間點擴展為大于等于當(dāng)前幀 長的預(yù)定信號長度,可以避免由于時延超過當(dāng)前幀而導(dǎo)致檢測不到回聲的情況。
[0174]在確定了當(dāng)前幀的回聲參考信號能量后,回聲判斷單元402可以將信號能量的平 均值與最小能量閾值進行比較,如果所述信號能量的平均值大于或等于最小能量的閾值, 則判斷為存在回聲,否則不存在回聲。
[0175]極端情況下,考慮到從系統(tǒng)獲取的回聲參考信號比較純凈,當(dāng)設(shè)備自身不發(fā)聲時, 回聲參考信號的預(yù)設(shè)最小能量值可以為〇。
[0176] 然而,由于回聲參考信號中存在噪聲,從而對回聲參考信號產(chǎn)生干擾,因此可以將 最小能量的閾值設(shè)定為大于〇的一個值,以對噪聲給出一定的寬容性。該閾值的大小可以根 據(jù)系統(tǒng)實際情況進行設(shè)置。
[0177] 當(dāng)回聲參考信號的能量大于等于最小能量的閾值時,表示當(dāng)前幀存在回聲,則可 以交由其他功能單元繼續(xù)執(zhí)行確定所述回聲參考信號在當(dāng)前幀的回聲時延的操作;
[0178] 其中,所述功能單元包括回聲時延確定單元404。
[0179] 否則,可以交由維護單元405取前一幀的回聲時延,或者不做處理;
[0180] 其中,維護單元405可以用于維護每一幀確定的回聲時延并且用于獲取所維護的 回聲時延。
[0181]互相關(guān)函數(shù)確定單元403,用于確定回聲參考信號和聲音輸入信號的互相關(guān)函數(shù); 以及回聲時延確定單元404,用于利用在當(dāng)前幀的互相關(guān)函數(shù)以確定回聲時延。
[0182]通過互相關(guān)函數(shù)確定單元403確定回聲參考信號和聲音輸入信號在當(dāng)前幀的互相 關(guān)函數(shù)的目的是使回聲時延確定單元404能夠基于互相關(guān)函數(shù)獲取當(dāng)前幀回聲參考信號與 聲音輸入信號之間的時延差,或者稱為回聲參考信號在當(dāng)前幀的回聲時延。
[0183]具體地,由于互相關(guān)函數(shù)的互相關(guān)就是兩個函數(shù)之間的相似性,當(dāng)兩個函數(shù)都具 有相同周期分量的時候,它的極大值同樣能體現(xiàn)這種周期性的分量。由此,回聲時延確定單 元404可以根據(jù)互相關(guān)函數(shù)的峰值來確定回聲參考信號在當(dāng)前幀的回聲時延。
[0184]可替代地,由于互相關(guān)函數(shù)與功率譜之間存在快速傅里葉變換(FFT)的關(guān)系,因此 考慮到工程實現(xiàn)的計算效率,為了加快對當(dāng)前幀的回聲時延的計算速度,互相關(guān)函數(shù)確定 單元403可以使用快速傅里葉變換(FFT)和快速傅里葉反變換(IFFT)來確定互相關(guān)函數(shù),從 而使回聲時延確定單元404利用快速傅里葉變換確定的互相關(guān)函數(shù)的峰值來確定所述回聲 參考信號在當(dāng)前幀的回聲時延。
[0185]具體地,由于快速傅里葉變換所處理的是頻域信號,因此可以將當(dāng)前幀的互相關(guān) 函數(shù)中的時域變量轉(zhuǎn)換為頻域變量,從而利用快速傅里葉變換確定所述互相關(guān)函數(shù)的峰 值。
[0186]當(dāng)互相關(guān)函數(shù)的相關(guān)峰很尖銳時,比較容易得到準確的峰值位置,從而精確確定 當(dāng)前幀的回聲時延。因此如果通過互相關(guān)函數(shù)確定單元403和回聲時延確定單元404就可以 獲得滿意的互相關(guān)函數(shù)和回聲時延,則可以將直接將回聲時延確定單元所確定的當(dāng)前幀的 回聲時延作為跟蹤回聲時延的結(jié)果輸出。
[0187]然而在實際應(yīng)用中,受到環(huán)境噪聲和語音傳播信道復(fù)雜性的影響,互相關(guān)函數(shù)可 能出現(xiàn)多個虛假峰或者沒有明顯的主峰。優(yōu)選地,為了增強互相關(guān)主峰,本實施例還可以在 互相關(guān)函數(shù)確定單元403和回聲時延確定單元404的基礎(chǔ)上,選擇互相關(guān)函數(shù)跟蹤濾波單元 406和/或回聲時延跟蹤濾波單元408,以使互相關(guān)函數(shù)以及回聲時延能夠結(jié)合跟蹤濾波來 提高所確定的當(dāng)前幀的回聲時延的精度。
[0188]互相關(guān)函數(shù)跟蹤濾波單元406,用于對當(dāng)前幀的互相關(guān)函數(shù)進行跟蹤濾波。
[0189]具體地,互相關(guān)函數(shù)跟蹤濾波單元406可以具體執(zhí)行以下操作:利用第一系數(shù)對當(dāng) 前幀的互相關(guān)函數(shù)進行濾波;利用第二系數(shù)對前一幀跟蹤濾波后的互相關(guān)函數(shù)進行跟蹤; 結(jié)合所述利用第一系數(shù)濾波的結(jié)果以及利用第二系數(shù)跟蹤的結(jié)果,得到所述跟蹤濾波后的 互相關(guān)函數(shù)。
[0190] 如果第一系數(shù)越大,則跟蹤性能越好;如果第一系數(shù)越小,則濾波性能越好。
[0191] 作為一種優(yōu)選的實施方式,第一系數(shù)和第二系數(shù)可以互相約束,例如第一系數(shù)采 用α,第二系數(shù)采用1-α。
[0192] 優(yōu)選地,為了有效濾除互相關(guān)函數(shù)的雜波,因此可以將第一系數(shù)的α值取得比較 小,例如可以把α濾波系數(shù)取在0-0.2之間。或者,也可以根據(jù)實際使用時的需要進行設(shè)置。
[0193] 由于環(huán)境噪聲和聲傳播信道的影響,可能會使確定的回聲時延產(chǎn)生誤差,因此在 根據(jù)經(jīng)過跟蹤濾波或者未經(jīng)過跟蹤濾波的互相關(guān)函數(shù)確定了回聲時延后,可以利用回聲時 延跟蹤濾波單元408對回聲時延進行濾波和跟蹤,從而去除回聲時延中出現(xiàn)的誤差,保證時 延差能夠穩(wěn)定、準確、連續(xù),以此保證AEC性能的長期穩(wěn)定性。
[0194] 在利用回聲時延跟蹤濾波單元408對回聲時延進行跟蹤濾波之前,需要對確定出 的所述當(dāng)前幀的回聲時延進行誤差分析,依據(jù)誤差分析結(jié)果對所述當(dāng)前幀的回聲時延進行 跟蹤濾波,該功能是通過誤差分析單元407來實現(xiàn)的。
[0195] 具體地,誤差分析單元407可以執(zhí)行如下操作:
[0196] 獲取當(dāng)前幀之前的一個或多個幀的回聲時延并確定其均值和方差。
[0197] 確定當(dāng)前幀的回聲時延與均值之差的絕對值。
[0198] 如果所述絕對值小于等于誤差閾值,則確定所述當(dāng)前幀的回聲時延的誤差在誤差 范圍以內(nèi);否則,確定所述當(dāng)前幀的回聲時延的誤差超過誤差范圍。其中該誤差閾值由所述 方差確定。
[0199] 回聲時延跟蹤濾波單元408,用于依據(jù)誤差分析結(jié)果,對所述當(dāng)前幀的回聲時延進 行跟蹤濾波。
[0200] 具體地,回聲時延跟蹤濾波單元408主要執(zhí)行如下操作:利用第三系數(shù)對當(dāng)前幀的 回聲時延進行濾波;利用第四系數(shù)對前一幀跟蹤濾波后的回聲時延進行跟蹤;結(jié)合所述利 用第三系數(shù)濾波的結(jié)果以及利用第四系數(shù)跟蹤的結(jié)果,實現(xiàn)對所述當(dāng)前幀的回聲時延進行 跟蹤濾波。
[0201] 如果當(dāng)前幀的回聲時延的誤差在誤差范圍以內(nèi),則側(cè)重跟蹤性能的處理,以及如 果當(dāng)前幀的回聲時延的誤差超過誤差范圍,則側(cè)重濾波去噪處理。具體地:
[0202] 如果當(dāng)前幀的回聲時延的誤差在誤差范圍以內(nèi),則通過增加第三系數(shù)的值以增加 跟蹤的權(quán)重。
[0203] 如果當(dāng)前幀的回聲時延的誤差超過誤差范圍,則通過減小第三系數(shù)的值以增加濾 波的權(quán)重。
[0204]作為一種優(yōu)選的實施方式,第三系數(shù)和第四系數(shù)可以互相約束,例如第三系數(shù)采 用α',第二系數(shù)采用1-α'。
[0205] 若經(jīng)過能量檢測,當(dāng)前幀不存在回聲,則交由維護單元405取前一幀的回聲時延; 或者,若當(dāng)前幀不存在回聲,則不做處理。
[0206] 最后,可以將確定的當(dāng)前幀的回聲時延作為時延跟蹤結(jié)果,或者將獲得的前一幀 的回聲時延作為時延跟蹤結(jié)果而發(fā)送到AEC,從而通過時延補償使進入AEC的回聲參考信號 與聲音輸入信號嚴格對齊,提高AEC的性能。
[0207]下面給出一個測試,說明本發(fā)明的實際效果。
[0208]以android手機為例,使用本發(fā)明的跟蹤回聲時延的方法,通過android底層獲取 揚聲器發(fā)出的回聲參考信號u(k),以及手機麥克風(fēng)錄取的聲音輸入信號d(k),采用開源語 音處理包speecx中的AEC模塊進行回聲消除測試。
[0209] 若沒有采用本發(fā)明進行時延跟蹤,則存在時延抖動,回聲消除效果如圖5所示,其 中上圖表示回聲參考信號u(k),中圖表示麥克風(fēng)錄音的聲音輸入信號d(k),下圖表示回聲 消除的輸出結(jié)果e(k),可以看出,回聲消除效果很一般,尤其是下圖中輸出結(jié)果的后半段, 回聲明顯沒有被消除。
[0210] 圖6示出了本發(fā)明跟蹤的回聲參考信號u(k)與麥克風(fēng)錄音的聲音輸入信號d(k)之 間的時延估計結(jié)果,以采樣點表示,可以看出時延隨時間變化出現(xiàn)明顯抖動。
[0211] 圖7示出了根據(jù)本發(fā)明跟蹤的回聲時延進行時延補償后的自動回聲消除的效果 圖,如圖7所示,在對時延進行補償后,回聲被消除的非常干凈。
[0212] 上述測試說明本發(fā)明對提升AEC的性能和穩(wěn)定性具有重要