專利名稱:通信系統(tǒng)中用于改進(jìn)回波抑制的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信系統(tǒng),特別是涉及雙向通信鏈路的回波抑制。
在例如陸線和無(wú)線電話系統(tǒng)的許多通信系統(tǒng)中,話音信號(hào)常常經(jīng)雙向通信鏈路在兩個(gè)系統(tǒng)用戶之間進(jìn)行傳輸。在這些系統(tǒng)中,近端用戶的語(yǔ)音典型地由在通信鏈路一端的近端麥克風(fēng)檢測(cè),然后通過該鏈路傳送到用于向遠(yuǎn)端用戶再現(xiàn)的遠(yuǎn)端揚(yáng)聲器。相反,遠(yuǎn)端用戶的語(yǔ)音由遠(yuǎn)端麥克風(fēng)檢測(cè),然后經(jīng)該通信鏈路傳送到用于向近端用戶再現(xiàn)的近端揚(yáng)聲器。在通信鏈路的任何一端,由最近的麥克風(fēng)檢測(cè)的揚(yáng)聲器輸出可能通過該通信鏈路不經(jīng)意地向后傳輸,從用戶的角度來看,將引起不可接受的破壞性反饋,或回波。
因此,為了避免傳輸這些不受歡迎的回波信號(hào),麥克風(fēng)的聲音輸入應(yīng)當(dāng)盡可能多地孤立于揚(yáng)聲器的輸出。在傳統(tǒng)的電話機(jī)中,話機(jī)的麥克風(fēng)位于用戶嘴的旁邊同時(shí)話機(jī)的揚(yáng)聲器基本上覆蓋了用戶的耳朵,所以很容易獲得必要的隔離。然而,隨著便攜式電話機(jī)物理大小的減小,和免提揚(yáng)聲器電話機(jī)的更受歡迎,生產(chǎn)商已經(jīng)改為設(shè)計(jì)從揚(yáng)聲器到麥克風(fēng)的聲音路徑不受用戶頭部或身體的阻礙。結(jié)果,在現(xiàn)代系統(tǒng)中,需要更復(fù)雜的回波抑制技術(shù)變得尤為重要。
在免提汽車電話情況下該需要尤其明顯,其中封閉的車輛環(huán)境使得揚(yáng)聲器信號(hào)的多次反射耦合回高增益的免提麥克風(fēng)。用戶在車輛中的移動(dòng)和回波信號(hào)在相對(duì)方向和強(qiáng)度的改變,例如當(dāng)窗戶打開和關(guān)閉時(shí)或當(dāng)用戶在駕駛時(shí)移動(dòng)頭部時(shí),會(huì)使汽車環(huán)境下的回波抑制任務(wù)更加復(fù)雜。另外,最近發(fā)展的數(shù)字電話機(jī)通過話音編碼器來處理語(yǔ)言信號(hào),該話音編碼器引入顯著的信號(hào)延遲并產(chǎn)生非線性信號(hào)失真。從用戶的角度來說這種延長(zhǎng)的延遲傾向擴(kuò)大信號(hào)回波的問題,并且附加的非線性失真使得網(wǎng)絡(luò)設(shè)備的回波抑制更加困難。
響應(yīng)于上述的挑戰(zhàn),電話機(jī)生產(chǎn)商已經(jīng)開發(fā)了多種多樣的回波抑制機(jī)理。在
圖1A中描述了一種示范性的回波抑制系統(tǒng)100。如圖所示,該示范性系統(tǒng)100包括麥克風(fēng)110、揚(yáng)聲器120和回波抑制器130。麥克風(fēng)110的音頻輸出115耦合到回波抑制器130的音頻輸入,回波抑制器130的音頻輸出135充當(dāng)電話機(jī)(未示出)的近端音頻輸入。另外,該電話機(jī)的遠(yuǎn)端音頻輸出125耦合到揚(yáng)聲器120的音頻輸入和回波抑制器130的基準(zhǔn)輸入。
操作中,回波抑制器130處理麥克風(fēng)信號(hào)115以便向遠(yuǎn)端電話用戶提供音頻輸出信號(hào)135。特別是,回波抑制器130根據(jù)遠(yuǎn)端音頻信號(hào)125衰減麥克風(fēng)信號(hào)115,以使從揚(yáng)聲器120到麥克風(fēng)110的聲音回波不回到遠(yuǎn)端電話機(jī)用戶。
典型地,回波抑制器130或者是一種非線性消波型抑制器或者是一種線性定標(biāo)型抑制器。消波型抑制器通常通過除去一部分落在特定范圍值內(nèi)(即,在特定消波窗口內(nèi))的信號(hào)來衰減麥克風(fēng)輸出信號(hào)115。另一方面,定標(biāo)型抑制器通過使麥克風(fēng)輸出信號(hào)115乘以適當(dāng)?shù)臉?biāo)度因數(shù)來衰減該信號(hào)。在兩種情況下,通?;蛘咧苯踊蛘唛g接地根據(jù)遠(yuǎn)端音頻信號(hào)125的幅度來調(diào)整衰減程度,以使麥克風(fēng)輸出115只衰減到遠(yuǎn)端用戶正講話的程度。
例如在名稱為″利用回波估計(jì)以改變誤差信號(hào)的回波消除系統(tǒng)和方法″并于1995年12月12日授予Rasmusson等人的美國(guó)專利5.475,731中描述了一種本領(lǐng)域稱作中心削波器的傳統(tǒng)消波型抑制器,這里并入其全文作為參考。在名稱為″通信系統(tǒng)中用于噪聲和回波抑制的AC中心削波器″并于1996年12月31日提交的專利申請(qǐng)08/775,797中描述另一種稱作AC中心削波器的消波型抑制器。在名稱為″回波消除器處理技術(shù)和處理″并于1994年2月1日授予Genter的美國(guó)專利5,283,784中描述了一種示范性的定標(biāo)型抑制器,這里也并入其全文作為參考。
圖1A的回波抑制器130還可以結(jié)合線性回波消除器以提供更復(fù)雜的回波抑制系統(tǒng)。圖1B描述了一種包括圖1A的麥克風(fēng)110、揚(yáng)聲器120和回波抑制器130以及聲音回波消除器140的示范性系統(tǒng)101。如圖所示,麥克風(fēng)110的音頻輸出115耦合到聲音回波消除器140的音頻輸入,聲音回波消除器140的控制和音頻輸出144、145分別耦合到回波抑制器130的控制和音頻輸入?;夭ㄒ种破?30的音頻輸出135充當(dāng)電話機(jī)(未示出)的近端音頻輸入,并且電話機(jī)的遠(yuǎn)端音頻輸出125耦合到揚(yáng)聲器120的音頻輸入和聲音回波消除器140和回波抑制器130的基準(zhǔn)輸入。
操作中,聲音回波消除器140動(dòng)態(tài)地模擬從揚(yáng)聲器120到麥克風(fēng)110的聲音路徑并試圖從麥克風(fēng)輸出信號(hào)115中消除由麥克風(fēng)110選擇的任何揚(yáng)聲器的聲音。通常用于模擬聲音回波路徑的算法包括熟知的最小均方(LMS)算法和諸如標(biāo)準(zhǔn)化最小均方(NLMS)的變型。在上面參考的Rasmusson等人的美國(guó)專利的5,475,731中描述了一種示范性的基于消除器的最小均方。在名稱為“一種用于通信系統(tǒng)的改進(jìn)的回波消除器”并于1997年5月7日提交的專利申請(qǐng)08/852,729中描述了一種基于消除器的高級(jí)標(biāo)準(zhǔn)化最小均方。
控制輸出或控制量度144例如表示聲音回波消除器140實(shí)現(xiàn)的瞬時(shí)消除,并例如由回波抑制器130用于確定附加的衰減,需要該衰減將任何殘余的回波成分抑制到特定的目標(biāo)程度。在圖1A的系統(tǒng)100中,回波抑制器130可以是消波抑制器或定標(biāo)抑制器。在回波消除器140之后,回波抑制器130也可以是在適當(dāng)時(shí)間(例如,在近端話音活動(dòng)檢測(cè)器表示麥克風(fēng)信號(hào)115不包含近端語(yǔ)音期間)迭擇性地靜音音頻輸出135的簡(jiǎn)單開關(guān)。正如例如在上面引用的專利和專利申請(qǐng)中所描述的,因此根據(jù)所使用的回波抑制器130的類型調(diào)整控制量度144。通常在名稱為“通信系統(tǒng)中用于控制回波抑制的方法和裝置”并于本申請(qǐng)同一日期提交的待審查的美國(guó)專利申請(qǐng)09/005,144中描述了先進(jìn)的用于控制回波抑制器的技術(shù),這里并入其全文作為參考。
注意在圖1A和1B的兩個(gè)示范性的系統(tǒng)100、101中,回波抑制器130衰減整個(gè)音頻信號(hào)。因此,除了衰減回波,回波抑制器130還衰減各種背景噪聲和/或可能存在的近端語(yǔ)言。事實(shí)上,背景噪聲可能抑制到遠(yuǎn)端用戶可能錯(cuò)誤地相信在回波抑制器130工作時(shí)呼叫已經(jīng)被斷開的程度。因此,為了改進(jìn)遠(yuǎn)端用戶的通信質(zhì)量,現(xiàn)在的系統(tǒng)常常在回波抑制器130工作時(shí)向電話機(jī)音頻信號(hào)135中加入舒適噪聲。例如在名稱為“用于向通信系統(tǒng)提供舒適噪聲的方法和裝置”并于本申請(qǐng)同一日期提交的待審查的美國(guó)專利申請(qǐng)09/005.145中描述了生成和利用舒適噪聲的先進(jìn)方法,這里并入其全文作為參考。
盡管上述的系統(tǒng)提供復(fù)雜的回波抑制,但是它們也存在若干顯著的缺點(diǎn)。例如,已知的消波和定標(biāo)回波抑制器可能向近端電話機(jī)信號(hào)引入討厭的人工產(chǎn)物。另外,已知用于控制回波抑制器(即,用于提供適當(dāng)?shù)目刂屏慷?的方法可能導(dǎo)致不適當(dāng)?shù)慕诵盘?hào)失真和/或特定情況下不充分的回波抑制。因此,需要一種用于提供回波抑制和回波抑制控制的改進(jìn)的方法和裝置。
本發(fā)明通過提供一種這里稱作AC中心衰減器的改進(jìn)的回波抑制器來實(shí)現(xiàn)上述和其它的需求,該抑制器通過使一部分通信信號(hào)乘以適當(dāng)?shù)臉?biāo)度因數(shù)來衰減通信信號(hào)的回波成分。特別是,該AC中心衰減器定標(biāo)位于滑動(dòng)衰減窗口內(nèi)的這部分通信信號(hào)。有利的是,該衰減窗口跟蹤通信信號(hào)的一個(gè)值(例如,信號(hào)幅度)以使AC中心衰減器可以抑制回波成分同時(shí)通過其它的信號(hào)成分(例如,近端語(yǔ)音和噪聲)??梢詣?dòng)態(tài)調(diào)整衰減窗口內(nèi)的標(biāo)度因數(shù)和衰減窗口本身的大小以使AC中心衰減器引入最小的信號(hào)失真和少量聽得到的人工產(chǎn)物。
因?yàn)锳C中心衰減器包括定標(biāo)和消波兩個(gè)方面,所以可以適當(dāng)考慮回波抑制器的混合形式。換句話說,該AC中心衰減器關(guān)于位于衰減窗口內(nèi)的這部分通信信號(hào)象定標(biāo)抑制器一樣工作(即,使這部分信號(hào)乘以衰減因數(shù)),并且關(guān)于位于衰減窗口外的這部分通信信號(hào)象消波抑制器一樣工作(即,使這部分信號(hào)通過)。結(jié)果,該AC中心衰減器提供具有最小信號(hào)失真的非常好的回波抑制。
除了該AC中心衰減器,本發(fā)明還提供用于通??刂苹夭ㄒ种破鞯母倪M(jìn)的方法和裝置。例如,本發(fā)明提供動(dòng)態(tài)地測(cè)量環(huán)路回波增益的技術(shù),該技術(shù)可用于正確調(diào)整任何類型的回波抑制器提供的衰減。有利的是,該測(cè)量的環(huán)路回波增益表示由雙向通信系統(tǒng)的各個(gè)方面衰減(例如,通過音量調(diào)整和/或通過經(jīng)過從揚(yáng)聲器到麥克風(fēng)的聲音路徑的自然衰落)引起回波的信號(hào)的程度,并因此表示需要將該引起回波的信號(hào)減少到特定目標(biāo)程度的附加回波抑制。結(jié)果,測(cè)量的環(huán)路增益可用于調(diào)整由定標(biāo)、消波或混合抑制器提供的衰減。
有利的是,該測(cè)量的環(huán)路回波增益可以包括由前端線性回波消除器提供的回波抑制。相應(yīng)地,本發(fā)明提供用于動(dòng)態(tài)測(cè)量由線性回波消除器實(shí)現(xiàn)的抑制的各種技術(shù)。例如,在任何回波消除器的輸入和輸出比較信號(hào)能量可用于提供動(dòng)態(tài)回波消除的適當(dāng)表示。另外,對(duì)于按組更新的回波消除器,比較更新能量和消除器輸入能量可用于提供適當(dāng)?shù)膭?dòng)態(tài)指示符。在每種情況下,本發(fā)明提供用于獲得和利用測(cè)量值的實(shí)用技術(shù)。
在第一個(gè)示范性的實(shí)施例中,一種根據(jù)本發(fā)明的回波抑制裝置包括處理第一通信信號(hào)的回波抑制器,以便抑制由于第二通信信號(hào)的反射引起的回波成分。根據(jù)該實(shí)施例,該回波抑制器定標(biāo)第一通信信號(hào)的第一部分并使第一通信信號(hào)的第二部分通過以提供抑制回波的輸出信號(hào)。利用回波抑制器的衰減窗口選擇第一通信信號(hào)的第一部分,并根據(jù)第一通信信號(hào)的一個(gè)值調(diào)整衰減窗口的中心。例如,可以根據(jù)第一通信信號(hào)的信號(hào)幅度調(diào)整該衰減窗口的中心。另外,可以循環(huán)調(diào)整衰減窗口的中心,結(jié)果,在每個(gè)瞬時(shí),該中心等于回波抑制輸出信號(hào)的前一計(jì)算值。
有利的是,該回波抑制器可以利用可調(diào)整的衰減因數(shù)定標(biāo)第一通信信號(hào)的第一部分,并且可以調(diào)整該衰減因數(shù)以使該回波抑制裝置根據(jù)實(shí)現(xiàn)回波抑制裝置的通信系統(tǒng)中的其它裝置的性能提供回波衰減。例如,可以根據(jù)用于調(diào)整通信系統(tǒng)音頻輸出音量的音量控制信號(hào)來調(diào)整該衰減因數(shù)。另外,可以根據(jù)第二通信信號(hào)和/或由通信系統(tǒng)內(nèi)其它裝置提供的回波衰減來調(diào)整衰減窗口的大小。
根據(jù)另一個(gè)實(shí)施例,一種根據(jù)本發(fā)明的回波抑制裝置包括處理包含回波的輸入信號(hào)和引起回波的基準(zhǔn)信號(hào)以提供抑制回波的輸出信號(hào)的回波抑制器。該回波抑制裝置還包括估計(jì)回波抑制器回波增益的增益控制處理器。根據(jù)第一和第二測(cè)量值的比率計(jì)算該估計(jì)值,其中第一測(cè)量值表示抑制回波的輸出信號(hào)的能量,第二測(cè)量值表示包含回波的輸入信號(hào)或引起回波的基準(zhǔn)信號(hào)的能量。
例如,第一測(cè)量值可以從抑制回波的輸出信號(hào)的樣值平方和的平方根得出,第二測(cè)量值可以從或者包含回波的輸入信號(hào)或者引起回波的基準(zhǔn)信號(hào)的樣值平方和的平方根得出?;蛘撸谝粶y(cè)量值可以從抑制回波的輸出信號(hào)的樣值的均方根得出,第二測(cè)量值可以從或者包含回波的輸入信號(hào)或者引起回波的基準(zhǔn)信號(hào)樣值的均方根得出。另外,以第一和第二測(cè)量值比率的平方根計(jì)算該估計(jì)值,其中第一測(cè)量值從抑制回波的輸出信號(hào)樣值的平方和得出,第二測(cè)量值從或者包含回波的輸入信號(hào)或者引起回波的基準(zhǔn)信號(hào)樣值的平方和得出。
根據(jù)另一個(gè)示范性的實(shí)施例,根據(jù)本發(fā)明的回波抑制裝置包括前端回波抑制器、剩余回波抑制器和增益控制處理器。前端回波抑制器處理包含回波的信號(hào)和引起回波的信號(hào)以便提供中間信號(hào),剩余回波抑制器迭擇性地衰減中間信號(hào)以便提供抑制回波的輸出信號(hào)。增益控制處理器根據(jù)第一和第二測(cè)量值的比率估算前端回波抑制器的回波增益,該回波增益估計(jì)值用于調(diào)整剩余回波抑制器提供的回波衰減。
根據(jù)本發(fā)明的另一個(gè)回波抑制裝置包括回波消除器,包括一個(gè)或多個(gè)自適應(yīng)濾波器系數(shù),該回波消除器處理包含回波的輸入信號(hào)和引起回波的基準(zhǔn)信號(hào)以便提供消除回波的輸出信號(hào)。該回波抑制裝置還包括根據(jù)第一和第二測(cè)量值的比率估計(jì)回波消除器回波增益的增益控制處理器,其中第一測(cè)量值表示時(shí)間間隔內(nèi)回波消除器的至少一個(gè)自適應(yīng)濾波器系數(shù)的改變,其中第二測(cè)量值是基于該時(shí)間間隔內(nèi)或者包含回波的輸入信號(hào)或者引起回波的基準(zhǔn)信號(hào)。
例如,第一測(cè)量值可以從該時(shí)間間隔內(nèi)測(cè)量濾波器系數(shù)改變的峰值或該時(shí)間間隔內(nèi)測(cè)量濾波器系數(shù)改變的平方和的平方根得出。另外,第二測(cè)量值可以從或者包含回波的輸入信號(hào)或者引起回波的基準(zhǔn)信號(hào)樣值平方和的平方根,或者包含回波的輸入信號(hào)或者引起回波的基準(zhǔn)信號(hào)樣值的均方根得出。
在另一個(gè)示范性的實(shí)施例中,根據(jù)本發(fā)明的回波抑制裝置包括回波消除器、剩余回波消除器和增益控制處理器。該回波抑制器包括一個(gè)或多個(gè)自適應(yīng)濾波器系數(shù),該回波抑制器處理包含回波的信號(hào)和引起回波的信號(hào)以便提供回波消除信號(hào)。該剩余回波抑制器選擇性地衰減回波消除信號(hào)以提供回波抑制信號(hào),增益控制處理器根據(jù)第一和第二測(cè)量值的比率估計(jì)回波消除器的回波增益。第一測(cè)量值表示一個(gè)時(shí)間間隔內(nèi)至少一個(gè)自適應(yīng)濾波器系數(shù)的改變,該回波增益估計(jì)值用于調(diào)整由剩余回波抑制器提供的回波衰減。
第一測(cè)量值例如可以從一個(gè)時(shí)間間隔內(nèi)測(cè)量濾波器系數(shù)改變的峰值或該時(shí)間間隔內(nèi)測(cè)量濾波器系數(shù)改變的平方和的平方根得出。另外,第二測(cè)量值例如可以從或者包含回波的輸入信號(hào)或者引起回波的基準(zhǔn)信號(hào)樣值的平方和的平方根或從包含回波的輸入信號(hào)或者引起回波的基準(zhǔn)信號(hào)樣值的均方根得出。另外,該比例可以是計(jì)算第一和第二測(cè)量值的平方根,其中第一測(cè)量值從一個(gè)時(shí)間間隔內(nèi)測(cè)量的過濾器系數(shù)改變的平方和得出,其中第二測(cè)量值是該時(shí)間間隔內(nèi)從或者包含回波的輸入信號(hào)或者引起回波的基準(zhǔn)信號(hào)樣值的平方和得出。
下面參照附圖所示的說明性例子詳細(xì)解釋本發(fā)明的上述和其它特點(diǎn)。本領(lǐng)域普通技術(shù)人員可以理解為了說明和理解來提供所描述的實(shí)施例,并且這里可以想到很多等同的實(shí)施例。
圖1A描述了可以實(shí)現(xiàn)本發(fā)明教義的示范性的回波抑制系統(tǒng)。
圖1B描述可以實(shí)現(xiàn)本發(fā)明教義的另一個(gè)示范性的回波抑制系統(tǒng)。
圖2描述根據(jù)本發(fā)明改進(jìn)的回波抑制器,稱作AC中心削波器。
圖3描述了根據(jù)本發(fā)明另一個(gè)改進(jìn)的回波抑制器,這里稱作AC中心衰減器。
圖4描述了包括圖3AC中心衰減器的示范性的回波抑制系統(tǒng)。
圖5描述包括圖3AC中心衰減器的另一個(gè)示范性的回波抑制系統(tǒng)。
圖6描述了可用于實(shí)現(xiàn)圖5回波抑制系統(tǒng)的示范性的回波消除器。
圖7描述了說明圖5回波抑制系統(tǒng)操作的示范性的音頻信號(hào)。
圖8提供圖7示范性的音頻信號(hào)的另一種表示方式。
正如上面本發(fā)明背景技術(shù)中所描述的,專利申請(qǐng)08/775,797公開了一種稱作AC中心削波器的改進(jìn)的回波抑制器。與完全衰減或者消波落入固定消波窗口(典型地以零為中心)內(nèi)的輸入信號(hào)的傳統(tǒng)中心削波器相比較,該AC中心削波器提供一種可變的消波窗口,其中心大致跟蹤輸入信號(hào)的包絡(luò)。結(jié)果,AC中心削波器提供比傳統(tǒng)中心削波器更好的性能,尤其是在輸入信號(hào)的回波成分疊加到期望的輸入信號(hào)的語(yǔ)音或噪聲成分上時(shí)。
但是,最近的實(shí)驗(yàn)研究表明當(dāng)在語(yǔ)音和/或噪聲期間消波回波時(shí)該AC中心削波器仍然會(huì)引入討厭的失真。本發(fā)明認(rèn)為這種失真來自于AC中心削波器引入的信號(hào)增益的不連續(xù)性。換句話說,該失真是由于落入AC中心削波器可調(diào)窗口內(nèi)的輸入信號(hào)被完全消波,同時(shí)落在可調(diào)窗口外的輸入信號(hào)完全沒有衰減的事實(shí)。
參照?qǐng)D2可以更好地理解AC中心削波器的這個(gè)方面,其中AC中心削波器在特定時(shí)刻的輸出描述為AC中心消波器輸入的函數(shù)。正如在專利申請(qǐng)08/775.797中所描述的,AC中心削波器包括由可調(diào)消波門限Δ定義的可調(diào)消波窗口和基于AC中心削波器的最近輸出設(shè)置的可調(diào)窗口中心。那么,如圖2所示,對(duì)于主要的消波窗口,消波落入窗口內(nèi)的輸入信號(hào)的任何部分,同時(shí)允許落在窗口外的輸入信號(hào)的任何部分未衰減的通過。結(jié)果,AC中心削波器可以如上所述地使語(yǔ)音和噪聲信號(hào)失真。
為了補(bǔ)救這個(gè)問題,本發(fā)明提供另一種改進(jìn)的回波抑制器,這里稱作AC中心衰減器。與AC中心削波器相似,該AC中心衰減器包括滑動(dòng)窗口,該窗口由可調(diào)門限Δ定義并移動(dòng)以大致跟蹤輸入信號(hào)的包絡(luò)。但是,與AC中心削波器不同,該AC中心衰減器不全部消除落入滑動(dòng)窗口內(nèi)的這部分輸入信號(hào)。而是,AC中心衰減器利用合適的衰減因數(shù)α來定標(biāo)這部分輸入信號(hào)。
結(jié)果,在衰減窗口邊界信號(hào)增益的不連續(xù)性可以不那么嚴(yán)重,并且可以調(diào)整該AC中心衰減器以引入與AC中心削波器相比更少可聽到的人工產(chǎn)物。而且,該AC中心衰減器在減少信號(hào)失真方面保持了AC中心削波器的優(yōu)點(diǎn)。換句話說,因?yàn)樵揂C中心衰減器的衰減窗口移動(dòng)以大致跟蹤輸入信號(hào)包絡(luò),該AC中心衰減器可以抑制回波同時(shí)通過其它信號(hào)成分。正如下面所詳細(xì)描述的,可以動(dòng)態(tài)地調(diào)整AC中心衰減器的衰減因數(shù)α和窗口大小Δ以使AC中心衰減器可以連續(xù)提供最大回波抑制和最小信號(hào)失真的適當(dāng)平衡。
在圖3中描述了AC中心衰減器的上述操作。其中該AC中心衰減器在特定時(shí)刻的輸出描述為AC中心衰減器輸入的函數(shù)。注意圖2和圖3,AC中心削波器實(shí)際上是一種特殊情況的AC中心衰減器。換句話說,AC中心削波器實(shí)際上是衰減因數(shù)α設(shè)置為零情況下的AC中心衰減器。還要注意圖3,該AC中心衰減器可以通過將衰減因數(shù)α設(shè)置為1和/或?qū)⒋翱诖笮ˇぴO(shè)置為零進(jìn)入通過模式(即,輸出總是等于輸入的模式)。
例如,可以利用下列的偽碼實(shí)現(xiàn)該AC中心衰減器%如果輸入信號(hào)在窗口的下面,if Input<=(LastOutput-Delta),%使用所有窗口外的信號(hào)并衰減窗口內(nèi)的信號(hào),Output=Input+Delta-ScaleFactor*Delta;%另外如果輸入信號(hào)在窗口的上面elseif Input>=(LastOutput+Delta),%使用所有窗口外的信號(hào)并衰減窗口內(nèi)的信號(hào),Output=Input-Delta+ScaleFactor*Delta;%另外輸入在窗口內(nèi)部,else,%則衰減信號(hào)Output=ScaleFactor*(Input-Lastoutput)+LastOutput;end
%為下一個(gè)循環(huán)保存輸出LastOutput=Output在圖3和上面的偽碼中,通過動(dòng)態(tài)地移動(dòng)衰減窗口的中心使得AC中心衰減器的中心密切跟蹤輸入信號(hào)的包絡(luò)以便不斷匹配AC中心衰減器的輸出。但是,該AC中心衰減器窗口還可以更寬松地跟蹤輸入信號(hào)的包絡(luò)。例如,當(dāng)輸入信號(hào)落在主要窗口之外并不動(dòng),或者否則衰減到零時(shí),可以移動(dòng)窗口中心以匹配AC中心衰減器的輸出?;蛘?,可以限制窗口中心以使窗口的邊界不會(huì)超過輸入信號(hào)的整個(gè)范圍(例如,當(dāng)窗口大小覆蓋輸入信號(hào)的整個(gè)范圍時(shí),窗口中心只能為零)。當(dāng)輸入信號(hào)主要由回波組成(和沒有必要試圖跟蹤輸入包絡(luò)以通過其它信號(hào)成分)時(shí),做其中一件或兩件事可以防止AC中心衰減器引入不必要的信號(hào)失真(由于連續(xù)移動(dòng)衰減窗口)。
有利的是,該AC中心衰減器可以在諸如上述圖1A的系統(tǒng)中用作獨(dú)立的的回波抑制器。相應(yīng)地,圖4描述了一種圖lA的回波抑制器130實(shí)現(xiàn)為AC中心衰減器的示范性系統(tǒng)400。如圖所示,該示范性系統(tǒng)400包括麥克風(fēng)110、揚(yáng)聲器120和AC中心衰減器130,以及增益控制處理器410、乘法器420、包絡(luò)檢波器430和音量增益部件440。
在圖4中,麥克風(fēng)輸出115耦合到增益控制處理器410的第一基準(zhǔn)輸入和AC中心衰減器130的音頻輸入。AC中心衰減器130的音頻輸出135充當(dāng)電話機(jī)(未示出)的音頻輸入,電話機(jī)的音頻輸出445耦合到音量增益部件440的音頻輸入。音量增益部件440的音頻輸出125充當(dāng)揚(yáng)聲器120的音頻輸入并耦合到包絡(luò)檢波器430和增益控制處理器410的第二基準(zhǔn)輸入。
音量控制信號(hào)444耦合到音量增益部件440的控制輸入和增益控制處理器410的第三基準(zhǔn)輸入。增益控制處理器410的第一控制輸出414a耦合到AC中心衰減器130的第一控制輸入,增益控制處理器410的第二控制輸出414b耦合到乘法器420的第一輸入。包絡(luò)檢波器430的基準(zhǔn)輸出435耦合到乘法器420的第二輸入,乘法器420的輸出425耦合到AC中心衰減器130的第二控制輸入。
通常,圖4中系統(tǒng)400的操作類似于圖1A中系統(tǒng)100的操作。換句話說,AC中心衰減器130根據(jù)揚(yáng)聲器信號(hào)125處理麥克風(fēng)信號(hào)115,所以從揚(yáng)聲器120到麥克風(fēng)110的聲音回波不會(huì)回傳到遠(yuǎn)端電話用戶。但是,在圖4的系統(tǒng)400中,增益控制處理器410經(jīng)控制信號(hào)414a、414b調(diào)整由AC中心衰減器130提供的衰減。
圖4的系統(tǒng)400中包含音量增益部件440是為了更好的說明增益控制處理器410的操作。通常,音量增益部件440根據(jù)音量控制信號(hào)444衰減電話音頻信號(hào)445,并將衰減的音頻信號(hào)125傳送到揚(yáng)聲器120。例如,可以由近端用戶調(diào)整音量控制信號(hào)444。
增益控制處理器410利用音量控制信號(hào)444、麥克風(fēng)信號(hào)111和/或揚(yáng)聲器信號(hào)125來調(diào)整AC中心衰減器130提供的衰減。更特別是,增益控制處理器410利用基準(zhǔn)信號(hào)115、444、125動(dòng)態(tài)地估計(jì)環(huán)路或往返路徑,回波增益反過來用于計(jì)算控制信號(hào)414a、414b。估計(jì)的環(huán)路增益表示電話機(jī)音頻信號(hào)445的遠(yuǎn)端語(yǔ)音在其經(jīng)過音量控制部件440和從揚(yáng)聲器120到麥克風(fēng)110的聲音路徑時(shí)正被衰減的程度。所估計(jì)的環(huán)路增益因此能用于計(jì)算AC中心衰減器130應(yīng)該提供的附加衰減量。
例如,AC中心衰減器130的窗口大小Δ可以設(shè)置為剛好足以捕獲輸入音頻信號(hào)115的估計(jì)的回波成分(但是沒有必要更大,因?yàn)樵黾哟翱诖笮?dǎo)致信號(hào)失真增加),可以設(shè)置AC中心衰減器的衰減因數(shù)α以使輸出音頻信號(hào)135的任何剩余回波成分衰減到特定的目標(biāo)程度。例如在上面參考的待審查的名稱為“通信系統(tǒng)中用于控制回波抑制的方法和裝置”并于本申請(qǐng)同一日期提交的專利申請(qǐng)09/005,144中描述了用于基于所估計(jì)的環(huán)路增益設(shè)置窗口大小Δ和衰減因數(shù)α的先進(jìn)方法。下面也通過偽碼描述特定的示范性技術(shù)。
為了估計(jì)整個(gè)的環(huán)路回波增益,控制處理器410計(jì)算由音量增益部件440和從揚(yáng)聲器120到麥克風(fēng)110的聲音路徑提供的回波衰減。音量增益部件440提供的衰減為音量控制信號(hào)444所固有。但是,由聲音路徑提供的衰減(這里稱作信道增益)要基于麥克風(fēng)和揚(yáng)聲器信號(hào)115、125。下面用偽碼描述估計(jì)信道增益的先進(jìn)方法。還要注意,不是動(dòng)態(tài)地估計(jì)操作期間的信道增益,而是事先根據(jù)系統(tǒng)400所希望的工作環(huán)境設(shè)置固定的最差情況的信道增益估計(jì)值。
如圖4所示,增益控制處理器410計(jì)算經(jīng)第一控制信號(hào)414a直接到達(dá)AC中心衰減器的適當(dāng)衰減因數(shù)α。增益控制處理器410還計(jì)算由第二控制信號(hào)414b傳送的適當(dāng)窗口大小(例如,窗口大小剛好大到足以捕獲音頻信號(hào)115所估計(jì)的回波成分)。但是,第二控制信號(hào)414b不直接用作AC中心衰減器130的窗口大小Δ。而是,第二控制信號(hào)414b乘以包絡(luò)檢波器430的輸出435,包絡(luò)檢波器430的輸出425用作AC中心衰減器130的窗口大小Δ。只有必要時(shí)才使估計(jì)的窗口大小乘以檢波器輸出435以確保AC中心衰減器130正在工作。
例如,當(dāng)遠(yuǎn)端用戶沉默時(shí),揚(yáng)聲器信號(hào)125的幅度和包絡(luò)檢波器430的輸出435大致為零。因此,乘法器420的輸出425為零,AC中心衰減器130充當(dāng)通過的功能,對(duì)近端信號(hào)不起作用。或者,當(dāng)遠(yuǎn)端用戶說話時(shí),揚(yáng)聲器信號(hào)125的幅度和包絡(luò)檢波器430的輸出435不為零。因此,乘法器420的輸出425為非零,該AC中心衰減器130按上述工作。
因?yàn)橹挥挟?dāng)遠(yuǎn)端用戶說話時(shí),AC中心衰減器130才工作,所以不會(huì)使近端單方通話情況下的近端話音和噪聲失真。但是,在遠(yuǎn)端單方通話和雙方通話期間,AC中心衰減器130工作并除了抑制回波之外還使近端話音和/或噪聲失真。但是,因?yàn)橛稍揂C中心衰減器130引入的失真比傳統(tǒng)抑制器引入的失真少,所以AC中心衰減器130從不需要完全不工作,甚至在雙方通話期間。結(jié)果,AC中心衰減器130可以充當(dāng)有效的全時(shí)回波抑制器,甚至不需要前端回波消除器。
例如,圖4的包絡(luò)檢波器430可以構(gòu)造為指數(shù)衰減的峰值檢波器。在這種情況下,設(shè)置檢波器430的時(shí)間常數(shù)以使檢波器輸出435的衰減速率不比與揚(yáng)聲器120和麥克風(fēng)110之間的聲音路徑相關(guān)的衰減速率快。換句話說,檢波器輸出435的峰值(揚(yáng)聲器信號(hào)125的峰值引起的)應(yīng)該不比麥克風(fēng)110選擇的相應(yīng)回波信號(hào)(包括混響)衰減快。但是,檢波器430的衰減速率不應(yīng)該慢到使近端傳輸顯著失真。還要注意,可以從包絡(luò)檢波器430的輸入中刪除任何DC偏移(例如,通過AC耦合或高通濾波器),所以AC中心衰減器130的窗口大小不會(huì)人為地設(shè)置和不必要的變高,DC偏移可以存在于揚(yáng)聲器信號(hào)125中或在揚(yáng)聲器信號(hào)125的模數(shù)轉(zhuǎn)換期間引入DC偏移。
有利的是,本發(fā)明的AC中心衰減器還可以結(jié)合諸如上述圖1B的前端回波消除器。相應(yīng)地,圖5描述了圖1B的回波抑制器130實(shí)現(xiàn)為AC中心衰減器的示范性系統(tǒng)500。如圖所述,示范性的系統(tǒng)500包括麥克風(fēng)110、揚(yáng)聲器120、AC中心衰減器130、回波消除器140、乘法器420、包絡(luò)檢波器430和音量增益部件440。
在圖5中,麥克風(fēng)輸出115耦合到回波消除器的音頻輸入,回波消除器140的音頻輸出145耦合到AC中心衰減器130的音頻輸入。AC中心衰減器130的音頻輸出135充當(dāng)電話機(jī)(未示出)的音頻輸入,電話機(jī)的音頻輸出445耦合到音量增益部件440的音頻輸入。音量增益部件440的音頻輸出125耦合到揚(yáng)聲器120的音頻輸入、包絡(luò)檢波器40的基準(zhǔn)輸入和回波消除器140的第一基準(zhǔn)輸入。
音量控制信號(hào)444耦合到音量增益部件440的控制輸入和回波消除器140的第二基準(zhǔn)輸入?;夭ㄏ?40的第一控制輸出144a耦合到AC中心衰減器130的第一控制輸入,回波消除器140的第二控制輸出144b耦合到乘法器420的第一輸入。包絡(luò)檢波器430的基準(zhǔn)輸出435耦合到乘法器420的第二輸入,第二乘法器420的輸出425耦合到AC中心衰減器130的第二控制輸入。
通常,圖5的系統(tǒng)500的操作類似于圖1B的系統(tǒng)101的操作。換句話說,聲音回波消除器140動(dòng)態(tài)地模擬從揚(yáng)聲器120到麥克風(fēng)110的聲音路徑并試圖消除由麥克風(fēng)110選擇的任何揚(yáng)聲器聲音。那么AC中心衰減器130提供必要的附加回波衰減,并選擇性地在輸出信號(hào)135中加入舒適噪聲以補(bǔ)償由AC中心衰減器130衰減的近端噪聲。但是,在圖5的系統(tǒng)500中,回波消除器140包括類似于圖4的增益控制處理器410提供的增益控制處理。
特別的,圖5的回波消除器140估計(jì)從遠(yuǎn)端輸入445,通過音量增益部件440,通過從揚(yáng)聲器120到麥克風(fēng)110的聲音路徑和通過回波消除器140自身的環(huán)路回波增益。根據(jù)麥克風(fēng)、揚(yáng)聲器和消除器輸出信號(hào)115、125、145估計(jì)環(huán)路回波增益,該環(huán)路回波增益用于為AC中心衰減器130計(jì)算第一和第二控制信號(hào)144a、144b。類似于圖4的第一控制信號(hào)414a,圖5的第一控制信號(hào)144a不直接用作AC中心衰減器130的衰減因數(shù)α,類似于圖4第二控制信號(hào)414b,圖5的第二控制信號(hào)144b乘以包絡(luò)檢波器430的輸出以提供AC中心衰減器130的窗口大小Δ。
為了估計(jì)該環(huán)路回波增益,圖5的回波消除器140計(jì)算由音量增益部件440、聲音路徑和回波消除器140自身提供的衰減。如同圖4的系統(tǒng)400,音量增益部件440提供的衰減為音量控制信號(hào)444所固有,由聲音路徑提供的衰減或者動(dòng)態(tài)地根據(jù)麥克風(fēng)和揚(yáng)聲器信號(hào)115、125估計(jì)或者設(shè)置為固定的最差情況下的值。有利的是,可以根據(jù)本發(fā)明提供的多項(xiàng)技術(shù)的任一個(gè)計(jì)算由回波消除器140提供衰減。
在第一個(gè)示范性的實(shí)施例中,回波消除器140估計(jì)根據(jù)麥克風(fēng)信號(hào)115和消除器輸出信號(hào)145提供的瞬時(shí)回波衰減。更特別是,回波消除器140以第一和第二值的比率計(jì)算衰減估計(jì),其中第一和第二值分別表示消除器輸出和輸入信號(hào)145、115的能量。
例如,第一值(即該比率的分子)可以計(jì)算為幅度平方和的平方根,每個(gè)幅度平方相應(yīng)于消除器輸出信號(hào)145的一個(gè)樣值。在這種情況下,第二值(該比率的分母)類似地計(jì)算為消除器輸入信號(hào)115的樣值平方和的平方根?;蛘?,該比率的分子和分母可以分別計(jì)算為消除器輸出和輸入信號(hào)115的均方根(RMS)值。
有利的是,該比率精確表示了回波消除器140在遠(yuǎn)端單方通話期間實(shí)現(xiàn)的消波。換句話說,當(dāng)只有遠(yuǎn)端用戶講話時(shí),麥克風(fēng)和消除器輸出信號(hào)115、145的能量主要來自于回波(雖然背景噪聲也會(huì)貢獻(xiàn)),根據(jù)相對(duì)能量的比率直接表示回波消除器140正刪除多少回波。
本領(lǐng)域技術(shù)人員可以理解用于檢測(cè)遠(yuǎn)端單方通話時(shí)間的方法(即,為了確保只有在適當(dāng)?shù)牡臅r(shí)候才計(jì)算能量比)為人們所熟知。另外,下面用示范性的偽碼描述用于檢測(cè)遠(yuǎn)端單方通話的先進(jìn)方法。然而,因?yàn)檫h(yuǎn)端單方通話檢測(cè)的具體細(xì)節(jié)對(duì)理解本發(fā)明來說并不關(guān)鍵,所以這里省略這些細(xì)節(jié)。
有利的是,還可以根據(jù)揚(yáng)聲器信號(hào)125代替麥克風(fēng)信號(hào)115來計(jì)算該比率的分母(如上所述)。在這種情況下,該比率表示從揚(yáng)聲器120的輸入,通過從揚(yáng)聲器120到麥克風(fēng)110的聲音路徑和通過回波消除器140的瞬時(shí)回波衰減(即,該比率包含信道增益和消除器增益)。
在任何情況下,估計(jì)麥克風(fēng)、揚(yáng)聲器和/或消除器輸出信號(hào)115、125、140中的噪聲可以在執(zhí)行計(jì)算之前從這些信號(hào)中減去以便改進(jìn)作為結(jié)果的比率的準(zhǔn)確度。本領(lǐng)域技術(shù)人員可以理解用于估計(jì)音頻信號(hào)中噪聲電平的方法為人們所熟知。另外,下面用示范性的偽碼描述用于獲得噪聲電平估計(jì)值的先進(jìn)方法。但是,再一次因?yàn)殛P(guān)于噪聲電平估計(jì)的具體細(xì)節(jié)對(duì)于理解目前要求的發(fā)明來說并不關(guān)鍵,因此這里省略這些細(xì)節(jié)。
注意無(wú)論使用了什么類型的回波消除器140,上述的比率都很有價(jià)值地表示了回波消除。換句話說,輸入和輸出能量的比率反映了回波消除程度(在遠(yuǎn)端單方通話期間),不論回波消除器140處理音頻信號(hào)115以抑制回波的準(zhǔn)確方式。因此,用于估計(jì)回波消除器所提供回波衰減的上述技術(shù)適用于各種類型的回波消除器。的確,本技術(shù)通常適用于任何類型的線性和非線性回波抑制器,包括上述消波、定標(biāo)和混合抑制器。
有利的是,本發(fā)明還提供用于估計(jì)特定類型的回波消除器所提供回波抑制的專門技術(shù)。例如,本發(fā)明提供用于估計(jì)按組更新的回波消除器所提供的回波抑制技術(shù)(即,自適應(yīng)濾波器系數(shù)按組更新的回波消除器)。在1995年12月27日提交的名稱為“自適應(yīng)濾波器的測(cè)量會(huì)聚”的待審查的美國(guó)專利申請(qǐng)08/578,944中描述了示范性的按組更新的回波消除器,這里并入其全文作為參考。另外,在專利申請(qǐng)08/852,729中描述了先進(jìn)的按組更新的回波消除器。
為了說明本發(fā)明的技術(shù),在圖6描述了專利申請(qǐng)08/852.729的按組更新的回波消除器的改進(jìn)版本。如圖所示,圖6示范性的消除器140包括系數(shù)寄存器610、更新寄存器620、樣值寄存器630、增益控制處理器640、平方最大值部件650、最大值部件652、第一到第四求和裝置660、662、664、666,第一到第四乘法器670、672、674、676,和第一到第六平方和累加器680、682、684、686、688、690。
圖6中,麥克風(fēng)輸出115耦合到第一平方和累加器680的一個(gè)輸入和第一求和裝置660的加法輸入。第一求和裝置660的輸出145充當(dāng)回波消除器140的音頻輸出并耦合到第二平方和累加器682的一個(gè)輸入和第一乘法器670的定標(biāo)輸入。第一、第二和第三平方和累加器680、682、684的輸出681、683、685分別耦合到增益控制處理器640的第一、第二和第三基準(zhǔn)輸入。增益控制處理器640的第一控制輸出645耦合到第四乘法器676的定標(biāo)輸入,增益控制處理器640的第二和第三控制輸出144a、144b充當(dāng)回波消除器140的第一和第二控制輸出。
音量增益部件440的音頻輸出125耦合到樣值寄存器630的隊(duì)列輸入和揚(yáng)聲器120的音頻輸入,音量控制信號(hào)444耦合到增益控制處理器640的第四基準(zhǔn)輸入。樣值寄存器630的矢量輸出耦合到第一和第二乘法器670、672的矢量輸入。樣值寄存器輸出635的第一和第二抽頭637、639分別耦合到第四和第五平方和累加器686、688的輸入。第四和第五平方和累加器686、688的輸出687、689分別耦合到最大值部件652的第一和第二輸入,最大值部件652的輸出653耦合到增益控制處理器640的第五基準(zhǔn)輸入。
第一乘法器670的矢量輸出671耦合到第三求和裝置664的第一矢量輸入,第一求和裝置664的矢量輸出665耦合到更新寄存器620的矢量輸入。更新寄存器620的矢量輸出625耦合到第三求和裝置664的第二矢量輸入和第四乘法器676、第六平方和累加器690和平方最大值部件650的矢量輸入。第六平方和累加器690和平方最大值部件650的輸出691、651分別耦合到增益控制處理器640的第六和第七基準(zhǔn)輸入。
第四乘法器676的矢量輸出677耦合到第四求和裝置666的矢量輸入,第四求和裝置666的矢量輸出667耦合到系數(shù)寄存器610的矢量輸入。系數(shù)寄存器610的矢量輸出615耦合到第四求和裝置666的矢量輸入和第三乘法器674的矢量輸入。輪廊矢量耦合到第三乘法器674的第二矢量輸入,第三乘法器674的矢量輸出675耦合到第二乘法器672的第二矢量輸入。第三乘法器672的矢量輸出673耦合到第二乘法器662的矢量輸入,第二求和裝置662的定標(biāo)輸出663耦合到第一求和裝置660的減法輸入和第三平方和累加器684的輸入。
例如在專利申請(qǐng)08/852,729中描述了圖6回波消除器140的詳細(xì)操作。一般而言,回波消除器140用作自適應(yīng)濾波器,其中根據(jù)最小均方(LMS)或標(biāo)準(zhǔn)化LMS(NLMS)算法最小化消除器輸出信號(hào)145或誤差信號(hào),因此自適應(yīng)濾波器的傳遞函數(shù)(由系數(shù)寄存器610的一組濾波器系數(shù)定義)會(huì)聚到揚(yáng)聲器120和麥克風(fēng)110之間的回波路徑。如圖所示,對(duì)樣值寄存器630和系數(shù)寄存器610的內(nèi)容卷積以提供麥克風(fēng)信號(hào)115回波成分的估計(jì)值663,回波估計(jì)值663減去麥克風(fēng)信號(hào)115以提供消除器輸出信號(hào)145。根據(jù)消除器輸出信號(hào)145和樣值寄存器630的內(nèi)容以樣值為基礎(chǔ)修改一組更新系數(shù)(存儲(chǔ)在更新寄存器620中),更新系數(shù)用于以分組的方式匹配系數(shù)寄存器610中的系數(shù)(例如,TDMA電話應(yīng)用中每160個(gè)音頻樣值一次)。增益控制處理器640選擇性地利用基準(zhǔn)信號(hào)444、651、653、681、683、685計(jì)算可變更新增益645,并因此控制系數(shù)寄存器610中系數(shù)的匹配速率。
有利的是,本發(fā)明教導(dǎo)更新系數(shù)(即,更新寄存器620的內(nèi)容)可用于表示回波消除器140實(shí)現(xiàn)的瞬時(shí)回波抑制。為此,正如專利申請(qǐng)08/852,729所描述的,首先認(rèn)識(shí)到,分組最后的更新系數(shù)值粗略表示了回波消除器140做得有多好。例如,當(dāng)回波消除器140會(huì)聚時(shí)(即,例如在打開電源或聲音路徑出現(xiàn)突變之后,當(dāng)自適應(yīng)濾波器的傳遞函數(shù)接近聲音路徑的傳遞函數(shù)時(shí)),每個(gè)分組最后的更新系數(shù)值降低。換句話說,當(dāng)回波消除器140的自適應(yīng)濾波器開始匹配真正的聲音回波路徑時(shí),系數(shù)寄存器610的濾波器系數(shù)穩(wěn)定。
因此,根據(jù)本發(fā)明的實(shí)施例,通過標(biāo)準(zhǔn)化一個(gè)或多個(gè)每個(gè)分組最后的更新系數(shù)得到回波消除器140提供的瞬時(shí)回波衰減或增益的測(cè)量值。更特別是,在每個(gè)分組的最后計(jì)算第一和第二值的比率作為衰減估計(jì)值,其中第一值是基于一個(gè)或多個(gè)更新系數(shù),第二值表示消除器輸入信號(hào)115的能量。
例如,可以計(jì)算每個(gè)分組最后更新系數(shù)平方和的平方根(例如平方和累加器691輸出的平方根)作為第一值(即該比率的分子)?;蛘撸摫嚷实姆肿涌梢缘扔诿總€(gè)分組最后的更新系數(shù)峰值(例如等于平方最大值部件651輸出的平方根)。在兩種情況下,如上所述可以計(jì)算消除器輸入信號(hào)115的樣值平方和的平方根作為該比率的分母。
有利的是,該比率提供了回波消除器140提供的回波衰減測(cè)量值,并且如上所述可用于計(jì)算系統(tǒng)環(huán)路增益。或者,根據(jù)揚(yáng)聲器信號(hào)125計(jì)算該比率的分母以表示聲音路徑和回波消除器140的組合提供的回波衰減(即,信道增益和消除器增益的組合)。盡管本發(fā)明的實(shí)施例是參照專利申請(qǐng)08/852,729描述的特定按組更新的回波消除器描述的,但本實(shí)施例同樣適用于任何保持更新系數(shù)的回波消除器。
舉個(gè)例子,在下面提供的偽碼中更詳細(xì)地描述本發(fā)明的各個(gè)方面。寫偽碼以模擬利用32位數(shù)字信號(hào)處理器實(shí)現(xiàn)的示范性回波抑制系統(tǒng)。本領(lǐng)域技術(shù)人員可以理解該碼實(shí)際上是示范性的,可以利用多種多樣的硬件配置實(shí)現(xiàn)等同物。該示范性的回波抑制系統(tǒng)包括專利申請(qǐng)08/852,729描述的改進(jìn)回波消除器的改進(jìn)版結(jié)合上述AC中心衰減器。
<pre listing-type="program-listing"><![CDATA[%MATLAB的AEC和ANLP模擬腳本。%在運(yùn)行此腳本之前,設(shè)置下列變量%inFile=輸入文件名,left=遠(yuǎn)端,right=近端。%outFile=輸出文件名,left=ANLP輸出,right=AEC輸出。%所有文件使用DAT-Link的原始格式。%estnoise.m包含估計(jì)噪聲的函數(shù)。%詞匯%EC=回波消除器=線性回波抑制器%AEC=聲音回波消除器=揚(yáng)聲器回波消除器%NLP=非線性處理=剩余回波抑制器=AC中心衰減器%ANLP=聲音非線性處理%VAD=話音活動(dòng)檢測(cè)器%分?jǐn)?shù)表示法的最大正值。ONE=32767/32768;%讀取包含遠(yuǎn)端和近端信號(hào)的文件fidIn=f open(inFile,′r′);if fidIn==-1error({′Error opening file′inFile})end[LRmatrix,wordCount}=fread(fidIn,[2,inf],′intl6′};fclose(fidIn);%更新積分期間的樣值數(shù)。FRAME_SIZE=160;%較大的幀長(zhǎng)為積分趨于零的雙向通話和近端噪聲提供更大的強(qiáng)壯性。%較大的幀長(zhǎng)還改進(jìn)檢測(cè)會(huì)聚的能力,因?yàn)橄嚓P(guān)更新與幀長(zhǎng)成正比,而非相關(guān)(噪聲)與幀長(zhǎng)的平方根成正比。%較小的幀長(zhǎng)改進(jìn)改變(回波路徑、單方->雙向通話)的反應(yīng)時(shí)間并加速會(huì)聚。%較小的幀長(zhǎng)還改進(jìn)拒絕元音的能力。%160用于方便引入每幀160個(gè)樣值的TDMA電話。%作為結(jié)果結(jié)構(gòu)的20ms幀對(duì)于將語(yǔ)音分成靜態(tài)信號(hào)段幾乎是最佳的。NFRAMES=floor((wordCount/2)/FRAME_SIZE);%要處理的幀數(shù)clear wordCountNSAMPLES=NFRAMES*FRAME_SIZE;%用于消除錯(cuò)誤的基于樣值的矢量長(zhǎng)度。%%從單獨(dú)的文件下載麥克風(fēng)(上行鏈路)和揚(yáng)聲器(下行鏈路)VAD輸出。如果一個(gè)文件也沒找到,運(yùn)行可在近端和遠(yuǎn)端聲音文件執(zhí)行的C,將VAD輸出保存到具有相同前綴的文件。%fidIn=fopen((inFile′_up_vad′],′r′);if fidIn==-1disp([File=′inFile′_up_vad not found--creating…′])fidOut=fopen(′vad_in.raw′,′w′);fwrite(fidOut,LRmatrix(2,:),′int16′);%上行鏈路音頻fclose(fidOut);!nrsim-s=f vad-in.raw junk vad-out.bit!rm vad-in.raw!rm junk.fltfidIn=fopen(′vad-out.bit′,′r′);if fidIn==-1error(′Error opening file=vad-out.bit′)endmicVad=fread(fidln,NFRAME S,′int8′);!rm vad-out.bitfclose(fidIn);fidOut=fopen([inFile′_up_vad′],′w′)fwrite(fidOut,micVad,′int8′);fclose(fidOut)else micVad=fread(fidIn,NFRAMES,′int8′); fclose(fidIn);endfidIn=fopen([inFile′-down-vad′],′r′);if fidIn==-1 disp([′File=′inFile′_down_vad not found--creating…′]) fidOut=fopen(′vad_in.raw′,′w′); fwrite(fidOut,LRmatrix(l,:),′int16′);%下行鏈路音頻fclose(fidOut);!nrsim-s=f vad_in.raw junk vad_out.bit!rm vad_in.raw!rm junk.fltfidIn=fopen(′vad_out.bit′,′r′);if fidIn==-1error(′Error opening file=vad_out.bit′)endspeakerVad=fread(fidIn,NFRAMES,′int8′);!rm vad_out.bitfclose(fidIn);fidOut=fopen([inFile′_down__vad′],′W′);fwrite(fidOut,speakerVad,′int8′);fclose(fidOut);elsespeakerVad=fread(fidIn,NFRAMES,′int8′);fclose(fidIn);end%定標(biāo)輸入使用-1到ONE的范圍。LRmatrix=LRmatrix/32768;%一幀樣值合計(jì)值的右移位數(shù)。FRAME_BITS=ceil(log2(FRAME_SIZE));%將能量量化為32位的標(biāo)度因數(shù)(Z8.23格式w/FRAME_SIZE=160)ENERGY_SCALE=2A(31_FRAME_BITS);%基準(zhǔn)延時(shí)線的抽頭數(shù)。%基準(zhǔn)延時(shí)線必須足夠長(zhǎng),高延時(shí)抽頭幾乎與遠(yuǎn)端信號(hào)無(wú)關(guān),只具有近端能量。AEC_REF_TAPS=512;%FIR回波估計(jì)濾波器的抽頭數(shù)。AEC_COEF_TAPS=256;%用于測(cè)量近端能量的更新矢量的高延時(shí)部分的抽頭數(shù)。AEC_NEAR_TAPS=128;%捕獲汽車噪聲樣值的矢量長(zhǎng)度。COMFORT_NOISE_SIZE=128;%計(jì)算更新矢量峰值與基線比率的門限用于確定最大更新增益。噪聲在[-1 1]的范圍內(nèi)均勻,更新幅度的期望峰值是g*FRAME_SIZE/3,不相關(guān)抽頭更新矢量的RMS期望值是g*sqrt(FRAME_SIZE)/3,其中g(shù)是回波路徑增益。因此,最大更新矢量峰值與基線比是sqrt(FRAME_SIZE)。然而,話音并不像噪聲具有恒定的包絡(luò)。因?yàn)镕RAME_SIZE比更新矢量長(zhǎng)度小得多,語(yǔ)音脈沖串有時(shí)在測(cè)量峰值的但不在測(cè)量基線的更新矢量的區(qū)域內(nèi)。因此,實(shí)際的峰值與基線比可以很高(>300)。由于在噪聲或雙向通話條件下高增益甚至更新低能量的遠(yuǎn)端信號(hào),所以設(shè)置門限太低將引起不穩(wěn)定性。由于在大的回波路徑改變之后高增益只更新高能量反對(duì)遠(yuǎn)端信號(hào),所以設(shè)置門限太高將引起慢適應(yīng)性。以經(jīng)驗(yàn)折衷確定門限。AEC_MAX_GAIN_THRESH=16;%峰值與噪聲的RMS與幀長(zhǎng)無(wú)關(guān)。以經(jīng)驗(yàn)得出用于拒絕近端話音/噪聲和遠(yuǎn)端周期信號(hào)(音調(diào)和元音)的門限。AEC_BASELINE_THRESH=5.5;%預(yù)先計(jì)算用作狀態(tài)測(cè)量乘法器的常數(shù)。AEC_STATUS_GAUGE_SCALER=floor(32768/… (AEC_MAX_GAIN_TRRESH-AEC_BASELINE_THRESH))/32768;%產(chǎn)生FIR系數(shù)的增益輪廊。該輪廊粗略地匹配汽車中系數(shù)的期望范圍。這樣以來,包含周期成分(元音)的更新強(qiáng)制遵循適當(dāng)?shù)闹笖?shù)衰減特性并最小化發(fā)散。較高延時(shí)抽頭的較低增益還減少更新對(duì)系數(shù)的噪聲貢獻(xiàn)。輪廊的整個(gè)影響允許更高的更新增益沒有不穩(wěn)定性。因?yàn)樗械南禂?shù)都具有16位的動(dòng)態(tài)范圍,由于輪廊的結(jié)果更高的延時(shí)抽頭還具有更好的量化。通過計(jì)算FIR 64個(gè)抽頭右移一次來實(shí)現(xiàn)該輪廊。profile=ones(AEC_COEF_TAPS,l);for k=2:(AEC_COEF_TAPS/64),profile((k*64-63):(k*64))=ones(64,1)*2^(l-k);end%分配消除錯(cuò)誤的矢量以加速執(zhí)行。aecUpdateFactor=zeros(1,NFRAMES);aecChanGainHist=zeros(1,NFRAMES);aecSpeedHist=zeros(l,NFRAMES);aecVoiceGainHist=zeros(l,NFRAMES);aecVoiceGainBaseHist=zeros(l,NFRAMES);aecNearRatioHist=zeros(l,NFRAMES);aecNearGainHist=zeros(l,NFRAMES);aecEchoGainHist=zeros(l,NFRAMES);aecInNoiseHist=zeros(l,NFRAMES);aeCInEchoNoiseHist=zeros(l,NFRAMES);aecInVoiceHist=zeros(l,NFRAMES);aeCInEchoVoiceHist=zeros(l,NFRAMES);anlpInVoiceHist=zeros(l,NFRAMES);anlpInNoiseHist=zeros(l,NFRAMES);anlpDeltaHist=zeros(1,NSAMPLES);anlpGainHist=zeros(l,NFRAMES);%初始化變量aecRef=zeros(1,AEC_REF_TAPS); %使用最后的值aecCoef=zeros(AEC_COEF_TAPS,l);%注釋aecInNoise=FRAME_SIZE; %注釋aecInEchoNoise=aecInNoise; %注釋anlpInNoise=aecInNoise;%注釋aecChanGain=ONE; %注釋aecVoiceGain=ONE; %注釋aecVoiceGainBase=aecVoiceGain; %注釋aecNearGain=aecVoieeGain; %注釋aecEchoGain=aecVoiceGain; %注釋anlpComfortNoiselnOld=0; %注釋anlpComfortNoiseOutOld=0; %注釋anlpComfortNoise=zeros(l,COMFORT_NOISE_SIZE};%注釋anlpArCoef=0.75 %注釋aecNearRatio=0;%只為歷史初始化aecInNoiseStateVars=[aecInNoise 0 0];aecInEchoNoisestateVars=[aeeInEchoNoise 0 0);anlpInNoiseStatevars =(anlpInNoise 0 0);anlpSeed=1;anlpArGain=1-anlpArCoef;anlpRefEnvelope=0;anlpOutLast=0;anlpNearspeechCount=0;anlpNearspeechFlag=0;%disp([′aecCoef(l)=′dec2hex(aecCoef(1)*32768+(aecCoef(1)<0)*65536)])%disp([′aecCoef(2}=′dec2hex(aeeCoef(2)*32768+(aeeCoef(1)<0)*65536)])%disp([′aeCInNoise=′deC2hex(aecInNoise*2^31)]}%disp([′anlpInNoise=′deC2hex(anlpInNoise*2^31)]}%disp([′aecChanGain=′deC2hex(aecChanGain*32768)]}%disp([′aecVoiceGain=′deC2hex(aecVoieeGain*3276′8}])%disp([′aecVoiceGainBase=′deC2hex(aecVoiceGainBase*32768}])%disp([′aecEchoGain=′dec2hex(aecEChoGain*32768)])%disp([′anlpComfortNoiseInOld=′deC2hex(anlpComfortNoiseInOld*32768)])t disp([′ anlpComfortNoiseoutOld=′dec2hex(anlpComfortNoiseOutold*32768)])%disp([′anlpArCoef=′dec2hex(anlpArCoef*2^31)])%disp([′anlpArGain=′dec2hex(anlpArGain*32768)])fidOut=fopen(outFile,′w′);for frame=l:NFRAMES,frame%顯示幀數(shù)以表示進(jìn)程。%%AEC前幀部分%%因?yàn)樵谟糜诟翭IR系數(shù)的基準(zhǔn)矢量的抽頭和用于相關(guān)近端能量的抽頭之間存在差距,所以不需要為基準(zhǔn)矢量的每個(gè)抽頭計(jì)算更新矢量。因此,特別為兩個(gè)目的用子矢量表示更新矢量。%清除一幀中累加的更新子矢量。aecUpdate=zeros(AEC-COEF-TAPS,l);%用于FIR系數(shù)更新。aecUpdateNear=zeros(AEC-NEAR-TAPS,l);%用于近端測(cè)量值%清除其它的幀累加器。aecEchoEstEnergy=0;%復(fù)位block_floating_point變量。aeoShiftPending=0;aecErrorShift=0;%將上行鏈路和下行鏈路的PCM音頻樣值放入緩沖器。downlinkAudio=LRmatrix(l,(frame-l)*FRAME_sIZE+l:frame*FRAME_SIZE);uplinkAudio=LRmatrix(2,(frame-l)*FRAME_sIZE+1:frame*FRAME_SIZE);%累加一幀中的AEC近端輸入能量。aecInEnergy=sum(uplinkAudio.^2).;%將能量量化為32位。aeclnEnergy=floor(aecInEnergy*ENERGY_SCALE)/ENERGY_SCALE;%%AEC樣值部分%for k=1:FRAME SIZE,%將遠(yuǎn)端(揚(yáng)聲器)樣值移入基準(zhǔn)延遲線并計(jì)算FIR輸出。在DSP中,一個(gè)指令包含兩個(gè)操作。aecRef=[downlinkAudio(k)aecRef(l:AEC_REF_TAPS-l)];%測(cè)試碼開始%下面的代碼很接近注釋、精確到比特的代碼。aecEchoEst=aecRef(l:AEC_REF_TAPS)*(aecCoef*profile);aecEchoEst=max(min(round(aecEchoEst*32768)/32768,ONE),-1);%試驗(yàn)碼結(jié)束。%aecEchoEst=0;%for m=(AEC_COEF_TAPS/64):-1∶2,%aecEchoEst=aecEchoEst+aecRef(m*64-63:m*64)*aecCoef(m*64-63:m*64);%aecEchoEst=max(min{aecEchoEst,ONE),-l)/2;%%量化為S.31格式%aecEchoEst=floor(aecEchoEst*2^31)/2^31;%end%aecEchoEst=aecEchoEst+aecRef(1∶64)*aecCoef(1∶64);%aecEchoEst=max(min(aecEchoEst,ONE),-1);%%量化為S.15格式%%當(dāng)用0.5的分?jǐn)?shù)將負(fù)數(shù)舍入成整數(shù)時(shí),加2^(-17)以使l的求補(bǔ)運(yùn)算浮點(diǎn)與2的求補(bǔ)運(yùn)算相同。aecEchoEst=round(aecEchoEst*32768+2^(-17))/32768;aecEchoEst=max(min(aecEchoEst,ONE),-1);%累加一幀中的回波估計(jì)值能量。%改進(jìn)小信號(hào)的性能并以其它能量累加相同的方式產(chǎn)生該測(cè)量值,在環(huán)路過程中保存全部的40位累加器。aecEchoEstEnergy=aecEchoEstEnergy+aecEchoEst^2;%計(jì)算AEC輸出=近端(麥克風(fēng))輸入-回波估計(jì)。uplinkAudio(k)=max(min(uplinkAudio(k)-aecEchoEst,ONE),-l);%累加系數(shù)更新=誤差(uplinkAudio(k))和基準(zhǔn)的相關(guān)。使用組浮點(diǎn)表示法,其中aecErrorShift是指數(shù),aecUpdate/aecUpdateNear()是尾數(shù)。T=uplinkAudio(k)*2^aecErrorShift;%量化為S.15格式T=floor(T*32768)/32768;if aecShiftPending,ASM=-1;aecErrorShift=aecErrorShift-1;aecShiftPending=0;elseASM=0;end%計(jì)算用于更新FIR系數(shù)的區(qū)域。aecUpdate=aecUpdate+T*aecRef(l:AEC_COEF_TAPS)′;%計(jì)算用于測(cè)量近端能量的區(qū)域。aecUpdateNear=aecUpdateNear+…T*aecRef(AEC_REF_TAP5_AEC_NEAR_TAP5+1:AEC_REF_TAPS)’;%量化為S.15格式%當(dāng)用0.5的分?jǐn)?shù)將負(fù)數(shù)舍入成整數(shù)時(shí),加2^(-17)以使l的求補(bǔ)運(yùn)算浮點(diǎn)與2的求補(bǔ)運(yùn)算相同。aecUpdate=round(aecUpdate*32768+2^(-17))/32768;aecUpdateNear=round(aecUpdateNear*32768+2^(-17))/32768;aecUpdate=max(min(aecUpdate,ONE),-l);aecUpdateNear=max(min(aecUpdateNear,ONE),-l);aecUpdate=aecUpdate*2^ASM;aecUpdateNear aecUpdateNear*2^ASH;%在可能的右移之后量化為S.15格式。aecUpdate=floor(aecUpdate*32768)/32768;aecUpdateNear=floor(aecUpdateNear*32768)/32768;%發(fā)現(xiàn)更新矢量的平方峰值(假定前128個(gè)抽頭)。目的是得到峰值絕對(duì)值,但是平方峰值在DSP中只循環(huán)較少次,即使是該幀最后的sqrt。aecUpdatePeak2=max(aecupdate(1∶128).^2);%標(biāo)記表示更新在下一環(huán)路中是否需要除以2。aecShiftPending=aecUpdatePeak2>0.25;%0.25=0.5^2end%量化為32位的能量。aecEchoEstEnergy=floor(aecEchoEstEnergy*ENERGY_SCALE)/ENERGY_SCALE;%%AEC后幀部分,%aecOut=uplinkAudio;%將輸出保存為用于消除錯(cuò)誤的文件。%累加一幀中的AEC輸出能量。aecOutEnergy=sum(uplinkAudio.^2);%量化為32位的能量。aecOutEnergy=floor(aecOutEnergy*ENERGY_SCALE)/ENERGY_SCALE;%實(shí)際的基準(zhǔn)能量不同于更新矢量的每個(gè)成分。aecUpdate(1)將使用來自aecRef(1)的能量,aecUpdate(2)將使用來自aecRef(2)的能量等等。為了減少?gòu)?fù)雜性,用一個(gè)數(shù)表示基準(zhǔn)能量。當(dāng)基準(zhǔn)能量用于測(cè)量信道回波增益以便確定適應(yīng)速度或標(biāo)準(zhǔn)化該更新(NLMS)時(shí),用太小的值可能引起不穩(wěn)定性。這里實(shí)現(xiàn)該危害的解決方案是使用端點(diǎn)的最大值,其中輪廊=1。aecRefEnergy=max(sum(aecRef(l:FRAME-SIZE).^2),… sum(aecRef(64:FRAME-SIZE+63).^2);%量化為Z8.7格式aecRefEnergy=floor(aecRefEnergy*128)/128;%測(cè)量更新基準(zhǔn)線作為高延遲元件的RMS,其中期望誤碼和遠(yuǎn)端信號(hào)間的相關(guān)性是0。結(jié)果加1 LSB以確保在量化后aecUpdateBase更大aecPeakToBase更小。這避免了更高回波相關(guān)的虛假印象。在floor操作之后加1 LSB產(chǎn)生和ceiling操作相同的結(jié)果除了所有縮短的比特等于零的罕有情況。aecUpdateBase=sum(aecUpdateNear,^2)/AEC_NEAR_TAPS;%將平方的中間結(jié)果量化為Z.31格式aecUpdateBase=floor(aecUpdateBase*2^31)/2^31;aecUpdateBase=sqrt(aecUpdateBase);%量化為為Z.15格式aecUpdateBase=floor(aecUpdateBase*32768+1)/32768;%找到更新矢量的峰值幅度。aecUpdatePeak=sqrt(aecUpdatePeak2);%計(jì)算更新的峰值-基線比。aecPeakToBase=aecUpdatePeak/aecUpdateBase;%因?yàn)?個(gè)零碎的比特足夠量化為Z11.4格式aecPeakToBase=floor(aecPeakToBase*16)/16;%由更新峰值-基線比計(jì)算狀態(tài)測(cè)量(范圍=[O,ONE])。即使峰值-基準(zhǔn)線比隨幀長(zhǎng)而改變和基準(zhǔn)線門限可以改變,但是用于下行鏈路處理的測(cè)量保持不變。對(duì)于近端話音/噪聲或遠(yuǎn)端周期信號(hào)(元音),測(cè)量<0.1。例如,發(fā)現(xiàn)具有941Hz和1209Hz DTMF雙音頻的第一幀以產(chǎn)生aecPeakToBase=3.5,因此,aecStatusGauge=0。%對(duì)于雙向通話,測(cè)量<0.3。%對(duì)于遠(yuǎn)端單方通話%當(dāng)消除器非常分散時(shí),測(cè)量=ONE,不考慮噪聲。如果近端很安靜,測(cè)量=ONE直到接近完全會(huì)聚。當(dāng)消除器會(huì)聚時(shí),只有剩余的回波能量高于近端噪聲電平引起測(cè)量=ONE。因此,近端噪聲引起較少的更新,但不減少更新增益。aecStatusGauge=(aecPeakToBase-AEC_BASELINE_THRESH)*...AEC_STATUS_GAUGE_SCALER;aecStatusGauge=max(min(aecstatusGauge,ONE),o);%量化為Z.15格式aecStatusGauge=floor(aecStatusGauge*32768)/32768%在AEC輸入估計(jì)噪聲幀能量。[confirmedNoVoiceFlag,aeeInNoiseStateVars]=estnoise(aecInEnergy,…(micVad(frame)==0)&(aecStatusGauge==o),aeeInNoisestateVars);aecInNoise=aecInNoiseStateVars(l);aecInNoise%顯示狀態(tài)aecInNoiseHist(frame)-aecInNoise;%保存用于消除錯(cuò)誤%在AEC輸入(信道增益)估計(jì)回波增益。只在遠(yuǎn)端單方通話期間更新估計(jì),(speakerVad(frame)==1)&(aecStatusGauge>0.3),當(dāng)該比率是精確的,雖然基準(zhǔn)測(cè)量值包括話音和噪聲同時(shí)AEC輸入測(cè)量值只包括話音(aecInVoice>aecInNoise*8),和當(dāng)基準(zhǔn)能量不再受到量化(aecRefEnergy>=10/128)的顯著影響時(shí)。因?yàn)闀r(shí)間未對(duì)準(zhǔn)和頻譜變化,瞬時(shí)的增益測(cè)量值不非常精確。因此,使用平均處理?;夭ㄏ鳛V波器系數(shù)的規(guī)范是信道增益的長(zhǎng)期精確估計(jì)。但是,它不能足夠快地跟蹤變化地回波路徑。另外,因?yàn)樾诺涝鲆婀烙?jì)控制線性回波抑制器的適應(yīng)速度,如果估計(jì)盡可能多的與線性回波抑制器無(wú)關(guān),則改進(jìn)了穩(wěn)定性。因此,使用下面的方案如果瞬時(shí)的測(cè)量值(aecChanGainTrial)小于估計(jì)(aecChanGain),該估計(jì)值指數(shù)下降。為了速度適配,如果誤碼大于50%,該估計(jì)值直接設(shè)置為瞬時(shí)測(cè)量值,估計(jì)值成正比地的下降,如果誤碼大于12.5%,即(aecChanGain-aeCChanGainTrial)/4>aecChanGain/32的aecChanGain-aecChanGainTrial>aecChanGain/8=aecChanGain*0.125。如果瞬時(shí)測(cè)量值大于估計(jì)值,只要測(cè)量值不受近端話音(aecChanGainTrial<2)的完全支配,估計(jì)值指數(shù)上揚(yáng)。因?yàn)楫?dāng)實(shí)際的信道增益很快跳躍時(shí),沒有更新發(fā)生,所以不使用相對(duì)比較諸如(aecChanGainTrial<2*aecChanGain)。利用上抽時(shí)間常數(shù)為下抽時(shí)間常數(shù)的1/8幫助瞬時(shí)測(cè)量值容納近端話音。當(dāng)信道回波增益變差時(shí),難以說出近端語(yǔ)音間的區(qū)別。這里的上抽時(shí)間常數(shù)確定跟蹤速率,以經(jīng)驗(yàn)確定該時(shí)間常數(shù)。aecInVoice=max{o,aecInEnergy-aeCInNoise);aecInVoiceHist(frame)=aecInVoice;if(speakerVad(frame)==1)&(aecStatusGauge>0.3)&...(aecInVoice>aeclnNoise*8)&(aecRefEnergy>=10/128),%將aecInVoice量化為4Z8.20格式以被除用于得到期望的商值。aecChanGainTrial=floor(aecInVoice*2^20)/2^20/aecRefEnergy;%將商量化和限制為Z2.13格式aecChanGainTrial=min(4*ONE,floor(aecChanGainTrial*2^13)/2^13);%計(jì)算商的平方根。aecChanGainTrial=sqrt(aecChanGainTrial);%將根量化為Zl.14格式aecChanGainTrial=floor(aecChanGainTrial*2^14)/2^14;if(aecChanGainTrial<aecChanGain/2),aecChanGain=aecChanGainTrial;elseif(aecChanGain>aecChanGainTrial),aecChanGain=aecChanGain-...max((aecChanGain-aecChanGainTrial)/4,aecChanGain/32);elseif(aecChanGainTrial<2*ONE),aecChanGain=min(ONE,aecChanGain+max(aecChanGain/256,2^(-11));end%量化為Z.15格式aecChanGain=floor(aecChanGain*3276B)/32768;%保存用于消除錯(cuò)誤aecChanGainHist(frame)=aecChanGainTrial;elseaecChanGainHist(frame)=ONE;endaecChanGain%顯示狀態(tài)aecSpeedHist(frame)=aecChanGain;%保存用于消除錯(cuò)誤%確定更新增益。只要增益小于等于1則使用使用NLMS以使適配速度恒定的(與遠(yuǎn)端信號(hào)振幅無(wú)關(guān))。最大函數(shù)比分母加1導(dǎo)致更快地會(huì)聚,因?yàn)樽鳛榻Y(jié)果的增益更高。當(dāng)存在近端噪聲和/或話音時(shí),利用AEC基準(zhǔn)和近端輸入能量限制了標(biāo)準(zhǔn)化增益。不用AEC輸出能量代替AEC近端輸入能量因?yàn)樵跁?huì)聚之后不期望更高的增益,因?yàn)椴换贏EC的輸出使用另一個(gè)參數(shù)控制AEC更新增益來改進(jìn)穩(wěn)定性,所以aecInEnergy應(yīng)該小于沒有近端話音或噪聲的aecRefEnergy以避免麥克風(fēng)過載(因?yàn)楦鶕?jù)最大的近端語(yǔ)音電平設(shè)置麥克風(fēng)增益)。如果我們確信存在具有低近端噪聲的遠(yuǎn)端單方通話(aecInEnergy/16>=aecOutEnergy)則能量乘法器設(shè)置為8。否則,設(shè)置為16。因此,當(dāng)汽車安靜時(shí),匹配更快。太小的能量乘法器導(dǎo)致較小的穩(wěn)定性,引起匹配過沖和抑制回波消除器的輸出。過沖還阻礙具有變化回波路徑的遠(yuǎn)端單方通話和近端語(yǔ)音間的微分。在干擾后不久,太大的乘法器增加回波增益。在分子中,使用測(cè)量根據(jù)情況改變?cè)鲆妗A硗?,將信道回波增益用作乘?shù)以優(yōu)化到信道的適配速度。沒有此乘數(shù),適配或者慢于高信道增益所必須的速度,或者對(duì)于低信道增益不穩(wěn)定,使用規(guī)范的自適應(yīng)濾波器系數(shù)代替基于能量的信道增益導(dǎo)致長(zhǎng)期的更精確的一致估計(jì),在回波路徑改變后的短期內(nèi)速度和穩(wěn)定性將折衷。if(aecInEnergy/16>=aecOutEnergy),aecDenom=max(1,8*max(aecRefEnergy,aecInEnergy);%用于消除錯(cuò)誤,設(shè)置因數(shù)等于負(fù)的測(cè)量值。aecUpdateFactor(frame)=-aecStatusGauge;elseaecDenom=max(l,16*max(aecRefEnergy,aecInEnergy);%用于消除錯(cuò)誤,設(shè)置因數(shù)等于測(cè)量值。aecUpdateFactor(frame)=aecStatusGauge;end%量化為Z12.3格式aecDenom=floor(8*aecDenom)/8;aecNumer=aecChanGain*aecStatusGauge;%量化為22Z.18格式aecNumer=floor(aecNumer*2^18)/2^18;aecUpdateGain=min(aecNumer/aecDenom,ONE);%量化為Z.15格式aecUpdateGain=floor(aecUpdateGain*32768)/32768;%利用自適應(yīng)增益更新矢量加上系數(shù)矢量,aecCoef在用作FIR系數(shù)之前乘以輪廊。aecCoef=aecCoef+(aecUpdate*2^(-aecErrorShift)*aecUpdateGain);%量化為S.15格式%當(dāng)用0.5的分?jǐn)?shù)將負(fù)數(shù)舍入成整數(shù)時(shí),加2^(-17)以使l的求補(bǔ)運(yùn)算浮點(diǎn)與2的求補(bǔ)運(yùn)算相同。aecCoef=round(aecCoef*32768+2^(-17))/32768;aecCoef=max(min(aecCoef,ONE),-l);%噪聲抑制器將在這里處理上行鏈路音頻。通過只在子程序內(nèi)使用aecUpdate和aecUpdateNear,可以在臨時(shí)存儲(chǔ)器中,可用于重疊。%%ANLP前幀部分%%在ANLP輸入累加能量,ANLP輸入經(jīng)由噪聲抑制器連接到AEC輸出。anlpInEnergy=sum(uplinkAudio.^2);%將能量量化為32位。anlpInEnergy=floor(anlpInEnergy*ENERGY_SCALE)/ENERGY_SCALE;%在ANLP輸入估計(jì)噪聲幀能量。使用speakerVad因?yàn)榛夭ü烙?jì)值來自揚(yáng)聲器信號(hào)。[confirmedNoVoiceFlag,anlpInNoiseStateVars]=estnoise(anlpInEnergy,…(micVad(frame)==0)&(aecStatusGauge==o),anlpInNoiseStateVars);anlpInNoise=anlpInNoiseStateVars(l);anlpInNoiseHist(frame)=anlpInNoise;%保存用于消除錯(cuò)誤%當(dāng)確定沒有話音時(shí),計(jì)算舒適噪聲if confirmedNoVoiceflag,anlpComfortNoise=uplinkAudio(l:COMFORT_NOISE_SIZE);%以第一順序ARMA噪聲模型形式使用NLMS算法估計(jì)anlpArCoef:%(1-anlpArCoef)*(l+0.8125*Z^-1)/(1-anlpArCoef*Z^-1).%.ARMA模型將過濾白噪聲以得到聽起來像汽車的噪聲。NLMB算法將最小化下列的表示式%error=uplinkAudio*(1-anlpArCoef+Z^-1)/(1+0.8125*Z^.-l)%誤碼和uplinkAudio*Z^-l間的相關(guān)更新為系數(shù)估計(jì)值。%anlplnEnergy用于標(biāo)準(zhǔn)化更新增益以提供獨(dú)立于電平的適配比率。計(jì)算環(huán)路外的非零分母以保存MIPS。anlpDenom=4*max(1/128,floor(anlplnEnergy*128)/128);error=0;for i=2:FRAME_SIZE,error=-0.8125*error;%量化為5S4.31格式(10*uplinkAudio的最大值)error=floor(error*2^31)/2^31;error=error+uplinkAudio(i-1.i)*[-anlpArCoef;1];quotient=uplinkAudio(i-1:i-1)*floor(error*2^12)/2^12/anlpDenom;quotient=max(min(quotient,ONE),-1);%量化為S.15格式quotient=floor(quotient*32768)/32768;anlpArCoef=anlpArCoef+quotient;anlpArCoef=max(min(anlpArCoef,ONE),-l);endanlpArGain=1-anlpArCoef;%用于消除錯(cuò)誤的舒適噪聲的頻率響應(yīng)曲線plot((0:8191)/8192*4000,…20*log10(abs(freqz(anlpArGain*[1 0.8125],[1-anlpArCoef],8192))))axis(
)pause(l)end%在AEC輸入估計(jì)回波的噪聲幀能量。使用speakerVad因?yàn)榛夭ü烙?jì)值來自揚(yáng)聲器信號(hào)。[confirmedNoVoiceFlag,aeclnEchoNoiseStateVars]=estnoise(…aecEchoEstEnergy,(speakerVad(frame)==0)&(aecStatusGauge==O)’…aecInEchoNoiseStatevars);aecInEchoNoise.aecInEchoNoiseStateVars(l);aecInEchoNoiseHist(frame)=aecInEchoNoise; %保存用于消除錯(cuò)誤test1Hist(frame)=aecInEchoNoiseStateVars(2);%保存用于消除錯(cuò)誤test2Hist(frame)=aecInEchoNoiseStateVars(3);%保存用于消除錯(cuò)誤aecInEchoNoiseStateVars %顯示狀態(tài)%估計(jì)話音能量估計(jì)值。不要使它們低于零。aecInEchoVoice=max(O,aecEchoEstEnergy-aeclnEchoNoise);aecInEchoVoiceHist(frame)=aecInEchoVoice;aecNearVoice=max(O,aecInVoice-aecInEchoVoice);anlpInVoice=max(O,anlpInEnergy-anlpInNoise);anlpInVoiceHist(frame)=anlpInVoice;%向上漏瀉到線性回波消除器基準(zhǔn)線回波增益估計(jì)值。用于比較瞬時(shí)回波增益以檢測(cè)近端語(yǔ)音和用于近端語(yǔ)音期間的ANLP增益。當(dāng)瞬時(shí)回波增益更差時(shí),它足夠快地向上漏泄以跟蹤。在快速跟蹤以避免錯(cuò)誤檢測(cè)遠(yuǎn)端單方通話期間的近端語(yǔ)音和最小化遠(yuǎn)端話音/噪聲期間近端話音/噪聲的失真之間的折衷來以經(jīng)驗(yàn)確定漏泄。在回波路徑改變之后當(dāng)遠(yuǎn)端單方通話時(shí)開始,aecNearGain可以下去、有點(diǎn)上去、然后下去。如果aecNearGain充分高于aecVoiceGainBase,則檢測(cè)近端語(yǔ)音。如果這發(fā)生了,aecVoiceGainBase的漏泄增加以防止它發(fā)生。以經(jīng)驗(yàn)發(fā)現(xiàn)5/4096漏泄常數(shù)以提供足夠的跟蹤速度。但是,增加的漏泄減少檢測(cè)雙方通話期間的近端語(yǔ)音。aecVoiceGainBase=min(aecVoiceGainBase+1/8192,ONE);%測(cè)量除了信道之外的線性回波消除器話音增益。包括信道增益將使近端語(yǔ)音檢測(cè)不可靠。在線性回波消除器的輸出和輸入計(jì)算話音能量比率的根。原始的測(cè)量值不與話音是否來自近端、遠(yuǎn)端、或兩者有關(guān)。在ANLP輸入采取線性回波消除器的輸出因?yàn)樾盘?hào)已經(jīng)經(jīng)過噪聲抑制器,使測(cè)量值更精確。憑借能量的測(cè)量值包括回波的揚(yáng)聲器失真,交互相關(guān)不包括。另外,比較在回波消除器輸入和輸出的能量避免比較回波消除器輸出和基準(zhǔn)時(shí)(由于信道延時(shí))出現(xiàn)的時(shí)間對(duì)準(zhǔn)問題。只有當(dāng)不被量化惡化時(shí)、當(dāng)話音存在(aecInVoice>aeclnNoise*8)時(shí)、和當(dāng)剩余回波可測(cè)量(anlpInVoice>anlpInNoise/2)時(shí)測(cè)量增益。由遠(yuǎn)端信號(hào)的周期成分不會(huì)減少測(cè)量值的準(zhǔn)確度。if(aecInVoice>max(8/2^7,aecInNoise*8))&...(anlplnVoice>anlpInNoise/2),aecvoiceGain=min(ONE,sqrt(anlpInVoice/(flOor(aecInVoice*2^7)/2^7)));%量化為Z.l5格式aecVoiceGain=floor(aecVoiceGain*32768)/32768;%測(cè)量近端話音和總話音的比率。這由于遠(yuǎn)端單方通話期間改變回波路徑產(chǎn)生近端話音較少錯(cuò)誤的表示,因?yàn)樗灰蕾嚮夭ü烙?jì)的能量,而不依賴在輸出如何好地取消回波。但是,類似于aecVoiceGain,當(dāng)消除器非常不熟練時(shí)近端話音的錯(cuò)誤表示也是可能的。通常該比率包括平方根因?yàn)樵捯魷y(cè)量值以能量為單位。但是,通過直接利用能量比可以獲得近端話音和差勁的消除器訓(xùn)練之間更大的差別。這還保存MIPS。aecNearRatio=min(ONE,aecNearVoice/(floor(aecInVoice*2^7)/2^7));%量化為Z.15格式aecNearRatio=floor(aecNearRatio*3276S)/32768;%在遠(yuǎn)端語(yǔ)音期間測(cè)量線性回波消除器基準(zhǔn)線回波增益估計(jì)值。測(cè)量遠(yuǎn)端單方通話何時(shí)可以存在(aecStatusGauge>0.1)以確保參數(shù)跟蹤實(shí)際的回波增益(不是)。否則,可以聽到回波。當(dāng)話音增益小于基準(zhǔn)線估計(jì)值時(shí),更新基準(zhǔn)線回波增益估計(jì)值,因?yàn)檫@表示遠(yuǎn)端單方通話的高概率。通過在話音增益高于基準(zhǔn)線時(shí),使用漏泄電阻和不讓基準(zhǔn)線跟蹤話音增益,基準(zhǔn)線非常強(qiáng)地反對(duì)噪聲和近端語(yǔ)音。if(aecStatusGauge>0.1),aecVoiceGainBase=min(aecVoiceGainBase,aecVoiceGain);end%在近端語(yǔ)音期間測(cè)量線性回波消除器話音并在遠(yuǎn)端單方通話期間(采用話音增益的最小值)復(fù)位。這被用于對(duì)話音增益的比較以檢測(cè)雙方通話??赡艹霈F(xiàn)近端語(yǔ)音的唯一可用指示符是回波消除器測(cè)量很低(aecStatusGauge<0.3)和回波消除器輸出包含話音不可能只是剩余回波的足夠能量(anlpInVoice>anlpInNoise*8)。記住由于遠(yuǎn)端語(yǔ)音的周期成分測(cè)量可能很低。因此,當(dāng)由于改變回波路徑或揚(yáng)聲器失真話音增益突然變壞時(shí)和當(dāng)存在近端語(yǔ)音時(shí),有必要區(qū)分額外的裝置。當(dāng)在遠(yuǎn)端單方通話期間話音增益突然地變壞,持續(xù)時(shí)間趨向相當(dāng)短。因此,濾除參數(shù)的增加,通常拒絕遠(yuǎn)端單方通話事件。濾波器的時(shí)間常數(shù)是遠(yuǎn)端單方通話拒絕和雙向通話識(shí)別速度的折衷,以經(jīng)驗(yàn)確定該常數(shù)。aecNearGainLast=aecNearGain;aecNearGain=min(aecNearGain,aecVoiceGain);if(aecStatusGauge<0.3)&(anlpInVoice>anlpInNoise*8),aecNearGain=aecNearGain+(aecVoiceGain-aecNearGain)/8;%量化為Z.15格式aecNearGain=floor(aecNearGain*32768)/32768;end%使用三種檢測(cè)近端語(yǔ)音方法的任何一種。每個(gè)方法在特定的情況下對(duì)近端語(yǔ)音更敏感。只有總話音比絕對(duì)電平或噪聲充分大以拒絕只存在噪聲的情形時(shí),才出現(xiàn)所有的檢測(cè)。%%方法1。%(aecInEchoVoice<aecInVoice/4)等于(aecNearRatio>=0.75),但是前者對(duì)量化不敏感。抑制aecNearRatio對(duì)于低電平的遠(yuǎn)端單方通話很通常。因此,門限必須很高以避免錯(cuò)誤的檢測(cè)。此檢測(cè)方法只需的限定是狀態(tài)測(cè)量=0和話音增益基準(zhǔn)線低于0.4625=15155/32768。后者的門限是當(dāng)消除器非常不熟練時(shí)避免錯(cuò)誤檢測(cè)和在消除器啟動(dòng)訓(xùn)練之后盡快檢測(cè)雙向通話之間的經(jīng)驗(yàn)折衷。%%方法2%(aecInVoice>32/2^7&anlpInVoice>anlpInNoise*8)拒絕低電平話音。通過這樣做,檢測(cè)可以更敏感于近端話音和總話音較低的比率。而且只有當(dāng)狀態(tài)測(cè)量=0的可接受情形有助于拒絕遠(yuǎn)端單方通話。通過改變具有aecVoiceGainBase的門限優(yōu)化近端語(yǔ)音的靈敏。標(biāo)度因數(shù)和偏移是當(dāng)消除器非常不熟練時(shí)避免錯(cuò)誤檢測(cè)和在消除器啟動(dòng)訓(xùn)練之后盡快檢測(cè)雙向通話之間的經(jīng)驗(yàn)折衷。%%方法3。%當(dāng)回波抑制突然和一致變壞時(shí),比較aecNearGain和aecVoiceGainBase檢測(cè)近端語(yǔ)音。這是因?yàn)閍ecVoiceGainBase對(duì)激變沒有反應(yīng),和aecNearGain使用濾波器以檢測(cè)的一致性。因?yàn)橛糜谟?jì)算aecNearGain濾波器的情形更輕松,該情形允許對(duì)近端語(yǔ)音更高的靈敏度。這些情形包括狀態(tài)測(cè)量<0.3而不是=0,并且不增加話音的最小絕對(duì)電平。當(dāng)回波路徑改變之后遠(yuǎn)端單方通話啟動(dòng)時(shí),aecNearGain短時(shí)間內(nèi)將下降并仍然位于aecVoiceG&inBase之上。為避免這種情況下可以聽到的回波,當(dāng)aecNearGain大于最后的值時(shí),只檢測(cè)近端語(yǔ)音。if((aecStatusGauge==0)&(aecInEchoVoice<aecInVoice/4)&…(aecVoiceGainBase<15155/32768))|…((aecstatusGauge==0)&(aeclnVoice>32/2^7)&…(anlpInVoice>anlpInNoise*8)&…(aecNearRatio-aecVoiceGainBase*1.5>=9830/32768))|…((aecNearGain-aecVoiceGainBase>=6554/32768)&…(aecNearGain>aecNearGainLast),%已經(jīng)檢測(cè)了近端語(yǔ)音。如果此幀開始一新周期的近端語(yǔ)音(空閑時(shí)間已經(jīng)到期和包含話音的最后一幀只是回波),然后將線性回波消除器回波增益設(shè)置為等于基準(zhǔn)線回波增益估計(jì)值。只在近端語(yǔ)音周期開始時(shí)才這樣做以使剩余回波抑制器在近端語(yǔ)音期間具有一致的衰減,而不是在基準(zhǔn)線向上漏泄時(shí)增加失真同時(shí)沒有得到更新。if(anlpNearSpeechCount==0)&(anlpNearSpeeehFlag==0),aecEchoGain=aecVoiceGainBase;end%設(shè)置表示包含近端語(yǔ)音的最后一幀的標(biāo)記,在沒有檢測(cè)到話音期間保持該設(shè)置。anlpNearspeecnFlag=1;%重新啟動(dòng)近端語(yǔ)音空閑時(shí)間計(jì)數(shù)器。當(dāng)非零時(shí),它將超過anlpNearSpeeehFlag以最小化雙方通話期間近端語(yǔ)音剩余回波抑制器的失真,或當(dāng)話音能量太低以致于無(wú)法檢測(cè)時(shí)。如果只有當(dāng)檢測(cè)到遠(yuǎn)端單方通話時(shí)開動(dòng)此計(jì)數(shù)器,將在雙方通話期間較少中斷近端語(yǔ)音。但是,每次在近端的人講話之后遠(yuǎn)端人才聽到他/她開始講話,甚至是很長(zhǎng)時(shí)間的中止之后。當(dāng)從近端語(yǔ)音快速轉(zhuǎn)換到遠(yuǎn)端單方通話(諸如當(dāng)近端的人在遠(yuǎn)端的人語(yǔ)音中間講話時(shí)),空閑時(shí)間將引起遠(yuǎn)端的人聽到回波(在25dB)的較短周期。此人工產(chǎn)物是值得做的,因?yàn)榭臻e時(shí)間顯著地降低了雙向通話期間的中斷。anlpNearSpeechCount=25;%25*20ms=500ms的空閑時(shí)間。endend%如果回波估計(jì)值話音能量至少是15/16的近端話音能量,則假定此幀只包含遠(yuǎn)端回波語(yǔ)音,并清零近端語(yǔ)音標(biāo)記。如果近端語(yǔ)音空閑計(jì)時(shí)器已經(jīng)到期,則剩余回波抑制器將立即進(jìn)入遠(yuǎn)端單方通話模式。否則,當(dāng)近端語(yǔ)音空閑計(jì)時(shí)器到期時(shí),剩余回波抑制器將進(jìn)入遠(yuǎn)端單方通話模式。注意當(dāng)計(jì)數(shù)器工作時(shí)可能再次檢測(cè)近端語(yǔ)音,然后一旦計(jì)數(shù)器期滿剩余回波抑制器將待在近端語(yǔ)音模式。此檢測(cè)方案比較32位數(shù)并不使用基于能量級(jí)、狀態(tài)測(cè)量或來自以前幀的測(cè)量值的限定。因此,該方案相當(dāng)敏感而且強(qiáng)壯。if(aecInEchoVoice>(aecInVoice-aecInVoice/16)),anlpNearSpeechFlag=O;end%如果近端語(yǔ)音空閑計(jì)時(shí)器已經(jīng)到期,和包含話音的最后一幀只有回波,則設(shè)置線性回波消除器回波增益等于最后測(cè)量的線性回波消除器話音增益。假定不存在近端語(yǔ)音,所以剩余回波抑制器試圖抑制所有的的話音。此檢驗(yàn)是在清零anlpNearSpeechFlag之后以使aecEchoGain立即反映判決。if(anlpNearSpeechCount==0)&(anlpNearSpeechFlag=0),aecEchoGain=aecVoiceGain;endaecVoiceGainHist(frame)=aecVoiceGain; %保存用于消除錯(cuò)誤aecVoiceGainBase%狀態(tài)的回波aecVoiceGainBaseHist(frame)=aecVoiceGainBase; %保存用于消除錯(cuò)誤aecEchoGain %狀態(tài)的回波aecEchoGainHist(frame)=aeCEchoGain;%保存用于消除錯(cuò)誤aecNearRatioHist(frame)=aecNearRatio; %保存用于消除錯(cuò)誤aecNearGainHist(frame)=aecNearGain;%保存用于消除錯(cuò)誤anlpNearSpeechCount %狀態(tài)的回波anlpNearSpeechFlag %狀態(tài)的回波%計(jì)算環(huán)路回波增益直到ANLP。ANLP按照需要衰減以符合該系統(tǒng)地總環(huán)路回波抑制目的。?是通過音量控制。aecChanGain從揚(yáng)聲器到麥克風(fēng)--信道。aecEchoGain從線性回波消除器的輸入到輸出。aecLoopEchoGain=aecChanGain*aecEchoGain;%這里插入音量增益。%量化為Z.15格式aecLoopEchoGain=floor(aecLoopEchoGain*32768)/32768%設(shè)置ANLP窗口大小以捕獲預(yù)期的剩余回波,但是不多。這最小化近端話音和噪聲。當(dāng)AEC改進(jìn)其回波增益時(shí),ANLP窗口大小收縮,因此利用aecChanGain和aecEchoGain控制窗口大小。不使用音量控制增益因?yàn)橐袅靠刂浦笫请S之而來的是ANLP的包絡(luò)檢測(cè)器輸入。以RMS測(cè)量回波增益估計(jì)值,但是ANLP需要抑制包括峰值在內(nèi)的整個(gè)剩余回波。因此,利用峰值--RMS因數(shù)乘法器(=3)。anlpWindowGain的動(dòng)態(tài)范圍是2因?yàn)楫?dāng)線性回波消除器非常不熟練時(shí),anlpWindowGain至少需要是2以捕獲窗口內(nèi)的回波。anlpWindowGain=min{2*ONE,3*aecChanGain*aecEchoGain)%量化為Zl.14格式anlpWindowGain=floor(anlpWindowGain*16384)/16384;%如果VAD表示揚(yáng)聲器上只有噪聲,則使ANLP處于通過模式(增益=ONE)。VAD允許高質(zhì)量的近端單方通話,VAD經(jīng)常認(rèn)為當(dāng)只有噪聲時(shí)存在話音,因此需要其它的裝置來最小化這種情況下的近端語(yǔ)音或噪聲。另外,VAD很少認(rèn)為當(dāng)存在低電平話音是只有噪聲。問題有點(diǎn)與揚(yáng)聲器的噪聲電平相稱。但是,在這些情況下,在環(huán)路中具有線性回波消除器提供足夠的回波抑制以使回波聽不見。if speakerVad(frame)==0,,Near-end single-talk condition.anlpEchoGain=ONE;%因?yàn)閟peakerVad=l,揚(yáng)聲器最有可能具有語(yǔ)音,但是沒有必要。如果檢測(cè)到近端語(yǔ)音,假定雙向通話。在這種情況下,設(shè)置總環(huán)路回波抑制目的為-25dB(1843/32768),并設(shè)置ANLP增益為不提供剩余環(huán)路所需的回波抑制。ANLP增益更高(抑制更低),當(dāng)顧客大幅度減低音量時(shí)減少失真。當(dāng)線性回波消除器訓(xùn)練時(shí),這種模式下ANLP增益典型地高于-10dB,噪聲屏蔽不改進(jìn)聲音質(zhì)量。在雙方通話期間遠(yuǎn)端用戶將聽到某些回波,但是人工產(chǎn)物中斷或近端話音的高度失真。elseif(anlpNearSpeechCpunt>0)|{anlpNearSpeechFlag==1),anlpEchoGain=1843/32768/aecLoopEchoGain;%因?yàn)閟peakerVad=l,和不檢測(cè)近端語(yǔ)音,假定存在遠(yuǎn)端單方通話??偔h(huán)路回波抑制目的是-56dB(52/32768),以使當(dāng)兩端具有安靜背景時(shí)回波幾乎聽不見。當(dāng)在雙向通話模式,ANLP增益設(shè)置為不提供剩余環(huán)路所需的回波抑制,當(dāng)顧客大幅度減低音量和線性回波消除器訓(xùn)練時(shí)ANLP增益更高,失真減少。但是,將回波衰減到在噪聲下聽不見所需的增益可以更高,因此兩個(gè)增益更高者用于ANLP以最小化失真。沒有舒適噪聲,用相同的因數(shù)衰減回波和噪聲不改變信噪比,因此不進(jìn)行噪聲屏蔽。舒適噪聲使得在ANLP輸入和輸出的噪聲是相同的電平。因此,ANLP可以衰減回波到噪聲下的可聞閾,只有必要的失真。對(duì)噪聲話音比取平方根因?yàn)樽兞恳阅芰繛閱挝?。將期望的回波噪聲比乘以?shí)際的噪聲回波比將算出噪聲。剩下的是期望實(shí)際回波比,它需要屏蔽該回波的增益。Else %遠(yuǎn)端單方通話條件。ECHO_TO_NOISE_GOAL=1/8;%-18 dBif(anlpInVoice>anlpInNoise),anlpEchoGain=max(52/32768 I aecLoopEchoGain,…ECHO_TO_NOISE_GOAL*sqrt(anlpInNoise/anlpInVoice));else%在吵雜的環(huán)境下,增益不超過ECHO_TO_NOISE_GOAL,即使理論上它可用于低能量話音,因?yàn)楫?dāng)噪聲電平很快下降時(shí)(汽車減速)噪聲估計(jì)值太大。當(dāng)ANLP回波增益太高時(shí)能聽到回波。anlpEchoGain=max(52/32768/aecLoopEchoGain,ECHO_TO_NOISE_GOAL);endendanlpEchoGain=min(ONE,anlpEchoGain);%量化為Z.15格式anlpEchoGain=floor(anlpEChoGain*32768)/32768anlpGainHist(frame)=anlpEchoGain;%為了消除錯(cuò)誤保存%如果需要,近端語(yǔ)音空閑計(jì)數(shù)器減一,以使它獨(dú)立于揚(yáng)聲器VAD工作。anlpNearSpeechCount=max(O,anlpNearSpeechCount-1);%%ANLP樣值部分%%如果ANLP回波增益是1,ANLP不工作,跳到保存MIPS。if(anlpEchoGain==ONE),%保持包絡(luò)檢波器工作。for k=l:FRAME_SIZE,anlpRef=aecRef(FRAME_SIZE-k+l);anlpRefFnvelope=max(abs(anlpRef),255/256*anlpRefEnvelope);anlpRefEnvelope=floor(anlpRefEnvelope*2^31)/2^31;end%更新AC中心衰減器使用的變量以便和處理整個(gè)幀的結(jié)果相同。anlpOutLast=uplinkAudio(FRAME_SIZE);elsefor k=l:FRAME_SIZE,%ANLP遠(yuǎn)端ref=AEC ref。用aecEchoEstinstead替代或者另外不會(huì)給出更好的結(jié)果因?yàn)閍ecEchoEst與剩余回波非常不相關(guān)。AEC ref同樣工作得很好,因?yàn)樗诎琣nlpIn的最早回波之前。峰值檢波器中的長(zhǎng)時(shí)間常數(shù)是ANLP的關(guān)鍵,它使anlpRe與不必要的剩余回波的接近延時(shí)匹配。AEC ref延遲線的偏移可以改變以補(bǔ)償由于未抽樣、下抽樣、緩沖、和/或最小信道延時(shí)的回波路徑中的固定延遲。anlpRef-aecRef(FRAME_SIZE-k+l);%包絡(luò)檢測(cè)(峰值檢測(cè))anlpRef信號(hào)。峰值檢波器的指數(shù)型衰減建立了汽車中混響的衰減。時(shí)間常數(shù)設(shè)置為處理期望的大多數(shù)緩慢衰減的混響情形。不足255/256的極點(diǎn)導(dǎo)致回波通過。大于255/256的極點(diǎn)導(dǎo)致近端的過度失真。anlpRefEnvelope=max(abs(anlpRef),255/256*anlpRefEnvelope);%anlpRefEnvelope應(yīng)該是用于存儲(chǔ)的32位。16位附近的aMoRefEnvelope不會(huì)衰減低于512/2^15??s短為16位的anlpRefEnvelope在低于256/2A.15之后每個(gè)樣值衰減1比特,這太快了(導(dǎo)致回波通過)。%量化為Z.31格式anlpRefEnvelope=floor(anlpRefEnvelope*2^31)/2^31;%ANLP的Delta值是AEC控制的增益并限制W為ONE。anlpDelta=min(ONE,…anlpWindowGain*floor(anlpRefEnvelope*32768)/32768);%量化為Z.15格式anlpDelta=floor(anlpDelta*3276B)!32768;anlpDeltaHist《frame-1)*FRAME_SIZE+k)=anlpDelta;%為了消除錯(cuò)誤保存%%執(zhí)行AC中心衰減器。%%ANLP輸入經(jīng)噪聲抑制器連接到AEC輸出。anlpIn=uplinkAudio(k);%如果輸入低于窗口,》if(anlpOutLast-anlpIn)>=anlpDelta,%使用所有窗口外的信號(hào)并衰減窗口內(nèi)的信號(hào),anlpOutLast=anlpIn+anlpDelta-…anlpEchoGain*anlpDelta;%另外如果輸入信號(hào)在窗口的上面else if(anlpIn-anlpOutLast)>=anlpDelta,%使用所有窗口外的信號(hào)并衰減窗口內(nèi)的信號(hào),anlpOutLast=anlpIn-anlpDelta+…anlpEchoGain*anlpDelta;%另外輸入在窗口內(nèi)部,else,%衰減信號(hào)。anlpOutLast=anlpEchoGain*(anlpIn-anlpOutLast)+anlpOutLast;end%量化為S.15格式anlpOutLast=floor(anlpOutLast*32768)/32768;%為了下次保存。%%加入舒適噪聲以使ANLP輸出噪聲具有相同的電平,類似于汽車噪聲的頻譜輸入到ANLP。%%利用從汽車捕獲噪聲的幀的隨機(jī)樣值。這產(chǎn)生與汽車噪聲相同的白噪聲,即使汽車捕獲的聲音偶爾包含話音。anlpSeed=rem(48271*anlpSeed,2147483647);anlpComfortNoiseIn=anlpComfortNoise(l+…rem(anlpSeed,COMFORT-NOISE-SIZE));%利用上面討論的ARMA模型濾除白噪聲,下面是等價(jià)物,假設(shè)anlpArGain=1-anlpArCoef.%anlpComfortNoiseOut=anlpArCoef*anlpComfortNoiseOutOld+…%anlpArGain*(anlpComfortNoiseIn+O.8125*anlpComfortNoiseInOld);ma=anlpComfortNoiseIn+0.8125*anlpComfortNoiselnOld;%移動(dòng)平均值maDiff=anlpComfortNoiseOutOld-ma;%量化為S1.15格式,舍入是必需的以避免舒適噪聲的偏置。當(dāng)用0.5的分?jǐn)?shù)將負(fù)數(shù)舍入成整數(shù)時(shí),加2^(-17)以使1的求補(bǔ)運(yùn)算浮點(diǎn)與2的求補(bǔ)運(yùn)算相同。maDiff=round(maDiff*32768+2^(-17))/32768;anlpComfortNoiseOut=ma+anlpArCoef*maDiff;%量化為S.15格式,舍入是必需的以避免舒適噪聲的偏置。anlpComfortNoiseOut=round(anlpComfortNoiseout*32768+2A(-17》/32768;anlpComfortNoiseOut=max(-l,min(ONE,anlpComfortNoiseOut));%為下一環(huán)路延時(shí)變量。anlpComfortNoiseInOld=anlpComfortNoiseIn;anlpComfortNoiseOutOld=anlpComfortNoiseOut;%將舒適噪聲限制為窗口大??;anlpComfortNoiseout=min(anlpDelta,…max(-anlpDelta,anlpComfortNoiseoOut));%定標(biāo)舒適噪聲以使ANLP輸出噪聲在電平上等于ANLP輸入噪聲。anlpComfortNoiseOut=anlpComfortNoiseOut*(ONE-anlpEchoGain);%量化為S.15格式anlpComfortNoiseout=floor(anlpcomfortNoiseout*32768)/32768;%在ANLP輸出信號(hào)加上舒適噪聲。uplinkAudio(k)=max(-l,min(ONE,anlpOutLast+anlpCOmfortNoiseOut));endend%以整數(shù)格式保存通過一幀收集的文件輸出。fwrite(fidOut,[uplinkAudio;aecOut]*32768,′int16′);%disp(raecInEnergy=′dec2hex(aecInEnergy*ENERGY_SCALE)])%disp([′aecErrorShift=′dec2chex(aecErrorshift+(aecErrorshift<O)*65536)])%disp([′aecUpdate(l)=′dec2hex(aecUpdate(1)*32768+(aecUpdate(1)<0)*65536)])%disp([′aecUpdate(2)=′dec2hex(aecUdate(2)*32768+(aecUpdate(2)<0)*6S536)])%disp([′aecUpdateNear(l)=′…%dec2hex(aecUpdateNear(1)*32768+(aecUPdateNear{1)<0)*65536)])%disp([′aecUpdateNear(2)=′…%dec2hex(aecUpdateNear(2)*32768+(aecUpdateNear(2)<0)*65536)])%disp(raecupdatePeak2=′dec2hex(aecUPdatePeak2*2^31)])%disp([′aecOutEnergy=′dec2hex(aecOutEnergy*ENERGY_SCALE)])%disp([′aecRefEnergy=′dec2hex(aecRefEnergy*128)])%disp([′anlpInEnergy=′dec2hex(anlplnEnergy*ENERGY_SCALE)])%disp([′aecUPdateBase=′dec2hex(aecUpdateBase*32768)])%disp([′aecupdatePeak=′dec2hex(aecupdatepeak*32768)])%disp([′aecPeakToBase=′dec2hex(aecpeakToBase*16)])%disp([′aecStatusGauge=′dec2hex(aecStatusGauge*32768)])%disp([′aecInNoise=′dec2hex(aeCInNoise*2^31)])%disp([′anlpInNoise=′dec2hex(anlpInNoise*2^31)])%disp([′anlpComfortNoise(l)=,…%dec2hex(anlpComfortNoise(1)*32768+(anlpComfortNoise(1)<0)*65536)])%disp([′anlpComfortNoise(2)=′…%dec2hex(anlpComfortNoise.(2)*32768+(anlpComfortNoise(2)<o(jì))*6SS36)])%disp([′anlpArCoef=′dec2hex(anlpArCoef*2^31)])%disp([′anlpArGain=′dec2hex(anlpArGain*32768)])%disp([′aecChanGainTrial=′dec2hex(aecChanGainTrial)])%disp([′aecChanGain=′dec2hex(aecChanGain*32768)])%disp([′aecVoiceGainBase=′dec2hex(aecVoiceGainBase*32768)])%disp([′aecVoic:eGain=′dec2hex(aecVoiceGain*32768)])%disp([′aecEchoGain=′dec2hex(aecEChoGain*32768)])%disp([′aecDenom=′dec2hex(aecDenom*8)])%disp([′aecNumer=′dec2hex(aecNumer*2^18)])%disp([′aecupdateGain=′dec2hex(aecuPdateGain*32768)])%disp([′aecCoef(1)=′dec2heX(aecCoef(1)*32768+(aecCoef(1)<0)*65536)])%disp([′aecCoef(2)=′dec2hex(aecCoef{2)*32768+(aecCoef(2)<0)*65536)])%diSp([lanlpWindowGain=′dec2hex(anlpWindowGain*16384)])%disp([′anlpEChoGain=′dec2hex(anlpEchoGain*32768)])%disp([′anlpEChoGain=′]);20*loglO(anlpEchoGain)%disp([′anlpcomfortNoiseInOld=′dec2hex(anlpComfortNoiseInold*′32768)])%disp([′anlpComfortNoiseOutOld=′dec2hex(anlpComfortNoiseOutold*32768)])%disp([′uplinkAudio(1)=′…%dec2hex(uplinkAudio{1)*32768+(uplinkAudio(1)<0)*65536)])%disp([′uplinkAudio(2)=,…%dec2hex(′uplinkAudio(2)*32768+(uplinkAudio(2)<0)*65536)])%pause%plot([abs(aecUPdate)/aecUpdateBase;…%zeros(AEC_REF_TAPS-AEC_REF_TAPS-AEC_NEAR_TAPS,1);…%abs(aecuPdateNear)/aeeuPdateBase])%axis(
)%xlabel(′Update elementl),ylabel(′Normalized updatemagnitude′),pause%plot(20*log1O(abs(aecCoef*profile))),axis(1OAEC_COEF_TAPS-1OO l]);%xlabel([Coefficient numberl),ylabel(′Magnitude in dB′),pauseendfclose(fidOut);clear_AEC_MAX_GAIN_THRESHAEC_BASELINE_THRESH AEC_STATUS_GAUGE_SCALERONEclear AEC_COEF_TAPS AEC_NEAR_TAPSAEC_REF_TAPSclear FRAME_SIZE FRAME_BITS ENERGY_SCALECOMFORT_NOISE_SIZEclear eonfirmedNoVoiceFlagclear LRmatrix downlinkAudio uplinkAudio aecRef aecUpdateaecUpdateNear aecOutclear frame m ki anlpSeed aecEchoEst aecShiftPendingaecErrorShift ASM Tclear aecRefEnergy aecInEnergy aecOutEnergy anlplnEnergyaecEchoEstEnergyclear anlpIn anlpRef anlpRefEnvelope anlpDelta alpOutLastclear aecUpdatePeak2 aecUpdatePeak aecUpdateBaseaecPeakToBaseclear aecStatusGauge aecDenom aecNumer aecUpdateGainaecLoopEChoGainclear aecInNoiseStateVars aeclnEchoNOiseStateVarsanlpInNoiseStateVarsclear aecInVoice anlpInVoice aecInEchoVoice aecNearVoiceclear aecNearRatio aecNearGainLast anlpEchoGainclear aecChanGainTrial anlpComfortNoiseInanlpComfortNoiseOutclear aecPeakGain anlpWindowGain anlpDenom anlpArGainerror quotient maclear fidIn fidOut anlpNearspeechCount anlpNearspeechFlagECHO_TO_NOISE_GOAL%基于信號(hào)的幀能量估計(jì)噪聲幀能量?;谝?guī)范的噪聲估計(jì)值提供32位變量的更寬的動(dòng)態(tài)范圍,因此即使在非常低的噪聲電平下(諸如遠(yuǎn)端test_65.raw)保持一致。但是,基于規(guī)范的algo還需要平方根和32位的平方操作(更多的MIPS)。為了量化低噪聲電平已經(jīng)優(yōu)化基于algo的能量,尤其考慮到噪聲電平估計(jì)值對(duì)于非常低噪聲電平不是決定性的(話音總是遠(yuǎn)遠(yuǎn)大于噪聲)它是一件可接受的工作。對(duì)于基于規(guī)范和基于能量的algo適應(yīng)速度可以相同。這里所有的抽取操作只是對(duì)于基于規(guī)范的algo多移動(dòng)一位。%目的是當(dāng)信號(hào)中沒有語(yǔ)音時(shí)很快地更新估計(jì)值否則很慢。當(dāng)汽車噪聲迅速改變時(shí),需要常數(shù)適配以跟蹤汽車噪聲。話音活動(dòng)檢測(cè)器(VAD)輸出是用于確定何時(shí)快速更新的好開始,但當(dāng)實(shí)際存在比噪聲高得多的低電平話音時(shí)有時(shí)它表示沒有話音。noVoiceFlag是線性回波消除器狀態(tài)測(cè)量合格的VAD輸出以增加可靠性。但是,狀態(tài)測(cè)量沒有區(qū)分噪聲和近端語(yǔ)音、雙向通話、或雙音頻。因此,在快速更新周期中算法必須容忍某些話音。在遠(yuǎn)端單方通話期間狀態(tài)測(cè)量做得很好,即它對(duì)于噪聲估計(jì)值的精確性最重要以避免聽得到回波。這里減少錯(cuò)誤偏差(主要在近端語(yǔ)音期間出現(xiàn))使用的技巧是基于比較結(jié)果以固定速率上下抽動(dòng)估計(jì)值而不是線性濾波能量信號(hào)。使用上抽時(shí)間常數(shù)是下抽時(shí)間常數(shù)的1/4,使估計(jì)值不管話音偏向噪聲。以固定增量代替固定時(shí)間常數(shù)上下抽動(dòng)將導(dǎo)致時(shí)間常數(shù)隨噪聲電平而改變。%難以說出上升的噪聲和語(yǔ)音間的區(qū)別。這里上抽時(shí)間常數(shù)確定跟蹤速率。但是上抽必須很慢以便在實(shí)現(xiàn)語(yǔ)音狀態(tài)機(jī)器期間最小化錯(cuò)誤增長(zhǎng)以允許特定情形下更快地增加噪聲估計(jì)值。如果狀態(tài)機(jī)器看到在沒有話音至少900ms期間,信號(hào)能量大于噪聲估計(jì)值8倍,假設(shè)噪聲已經(jīng)增加,噪聲設(shè)置為等于檢驗(yàn)周期的檢驗(yàn)噪聲估計(jì)值。當(dāng)輸入端噪聲由遠(yuǎn)端噪聲支配時(shí),由于AMPS在頻帶控制信道或由于差的RF情形的消退將引起噪聲臨時(shí)下降。狀態(tài)機(jī)器試圖恢復(fù)消退后的噪聲估計(jì)值。首先證實(shí)能量下降是在5到25幀長(zhǎng)。然后確定能量返回到原始的電平。如果能量保持在窗口附近,原始的噪聲電平,需要相對(duì)較短的證實(shí)周期。如果能量跳得遠(yuǎn)遠(yuǎn)高于原始電平,則可以發(fā)生話音,需要較長(zhǎng)得證實(shí)周期以保證噪聲沒有下落。%定義noiseStatevars數(shù)組%(1)=噪聲估計(jì)值%(2)=在消隱之前的噪聲估計(jì)或檢驗(yàn)噪聲估計(jì)值%(3)=狀態(tài)變量/計(jì)數(shù)器function[confirmedNoVoiceFlag,noiseStateVars]=…estnoise(inEnergy,noVoiceFlag,noiseStateVars)%以源常規(guī)定義所需的常數(shù)。%更新積分期間的樣值數(shù)。FRAME_SIZE=l60;%一幀樣值累加的右移位數(shù)值。FRAME_BITS=ceil(log2(FRAME-SIZE));%標(biāo)度因數(shù)將能量量化為32位(Z8.23格式w/FRAME_SIZE=160)ENERGE_SCALE=2^(31-FRAME_BITS);%如果源常規(guī)初始化噪聲估計(jì)值。if noiseStateVars(l)==FRAME_SIZE,%%采取措施加速適應(yīng)呼叫的開始。%%設(shè)置標(biāo)記,舒適噪聲將初始化到該電平。confirmedNoVoiceFlag=1;%噪聲估計(jì)值開始等于能量。noiseStateVars(l)=inEnergy;else%%更新噪聲估計(jì)值。%%作為默認(rèn),清零標(biāo)記以指示沒有舒適噪聲訓(xùn)練。confirmedNoVoiceFlag=0;%%在Matlab上對(duì)白噪聲執(zhí)行下列偏置試驗(yàn)%>>n=160*3000;noise=zeros(1,m);%>>seed-l;for i=l:n,[noise(i)seed]=noisegen(seed);end%>>m=3000;for i=l:m,noiseEnergy(i)=sum(noise(160*(i-l)+1:160*i).^2);end%>>ne=lOO;for i=l:m,if ne>noiseEnergy(i),%>>ne=ne-ne/16;else,ne=ne+nef64;end,neh(i)-ne;end%>>plot(neh)%neh is the noise estimate history.%>>axis(
]></pre>圖7和圖8描述經(jīng)上述偽碼生成的樣值音頻信號(hào)并意欲說明本發(fā)明AC中心衰減器的操作。特別是,圖7描述AC中心衰減器的音頻輸入的一個(gè)例子(例如圖5的信號(hào)145)和相應(yīng)的AC中心衰減器130的音頻輸出的例子(例如,圖5的信號(hào)135)。在圖7中,示范性的AC中心衰減器輸入信號(hào)表示為實(shí)線145,相應(yīng)的AC中心衰減器輸出信號(hào)表示為虛線135。圖8描述了作為實(shí)線135、145的圖7的兩個(gè)音頻信號(hào),因此可以看出去掉了圖7衰減器輸出信號(hào)135虛線的細(xì)節(jié)。如圖所示,示范性的音頻輸入信號(hào)145包括相對(duì)高頻低幅度回波成分疊加在相對(duì)低頻高幅度的噪聲成分。實(shí)際上經(jīng)常遇到這種信號(hào)(例如,在具有嘈雜近端背景的遠(yuǎn)端單方通話期間)并且利用傳統(tǒng)的回波抑制器難以處理該信號(hào)。但是,如圖所示,AC中心衰減器提供音頻輸出135,其中極大抑制了回波成分同時(shí)期望剩下噪聲部分。
本領(lǐng)域技術(shù)人員可以理解,本發(fā)明并不局限于這里為了說明的目的描述的專門的示范性實(shí)施例。例如,實(shí)質(zhì)上本公開實(shí)施例的各種操作單元是概念的。可以利用各種技術(shù)完成實(shí)際的這種單元的功能。此外,例如,利用多個(gè)標(biāo)準(zhǔn)化數(shù)字信號(hào)處理芯片、單個(gè)應(yīng)用程序?qū)iT集成電路或適當(dāng)配置的計(jì)算機(jī)實(shí)現(xiàn)每個(gè)示范性的系統(tǒng)。
還要注意,雖然已經(jīng)聲回波消除的上下文描述了示范性的實(shí)施例,本發(fā)明的教義同樣適用于網(wǎng)絡(luò)回波消除(例如,近端用戶是陸上通信線用戶和遠(yuǎn)端用戶是移動(dòng)用戶)。而且,本發(fā)明的某些方面通常適用于通信系統(tǒng),并不局限于回波抑制系統(tǒng)。因此,由這里所附的權(quán)利要求書定義本發(fā)明的范圍,而不是前面的描述,所有與權(quán)利要求書一致的等同物也包含在其中。
權(quán)利要求
1.一種信號(hào)處理裝置,包含輸入節(jié)點(diǎn),接收輸入信號(hào);和信號(hào)處理器,耦合到所述輸入節(jié)點(diǎn)并處理所述輸入信號(hào)以提供輸出信號(hào),其中所述信號(hào)處理器定標(biāo)所述輸入信號(hào)的第一部分并傳送所述輸入信號(hào)的第二部分以提供所述輸出信號(hào),其中利用所述信號(hào)處理器的衰減窗口選擇所述輸入信號(hào)的所述第一部分,和其中根據(jù)所述輸入信號(hào)值調(diào)整所述衰減窗口的中心。
2.根據(jù)權(quán)利要求1的信號(hào)處理裝置,其中根據(jù)所述輸入信號(hào)的信號(hào)幅度調(diào)整所述衰減窗口的所述中心。
3.根據(jù)權(quán)利要求1的信號(hào)處理裝置,其中遞歸調(diào)整所述衰減窗口的所述中心,以便在每個(gè)瞬時(shí)所述中心等于所述輸出信號(hào)的前一個(gè)計(jì)算值。
4.根據(jù)權(quán)利要求1的信號(hào)處理裝置,其中當(dāng)所述輸入信號(hào)在所述衰減窗口內(nèi)時(shí),所述衰減窗口的所述中心衰減到零。
5.根據(jù)權(quán)利要求1的信號(hào)處理裝置,其中限制所述衰減窗口的所述中心以使所述衰減窗口不超過所述輸入信號(hào)的整個(gè)范圍。
6.根據(jù)權(quán)利要求1的信號(hào)處理裝置,其中所述信號(hào)處理器利用可調(diào)整的衰減因數(shù)定標(biāo)所述輸入信號(hào)的所述第一部分。
7.根據(jù)權(quán)利要求1的信號(hào)處理裝置,其中可以調(diào)整所述衰減窗口的尺寸。
8.一種回波抑制裝置,包含回波抑制器,處理第一通信信號(hào)以抑制其回波成分,所述回波成分由于第二通信信號(hào)的反射引起,其中所述回波抑制器定標(biāo)所述第一通信信號(hào)的第一部分并傳送所述第一通信信號(hào)的第二部分以提供抑制回波的輸出信號(hào),其中利用所述回波抑制器的衰減窗口選擇所述第一通信信號(hào)的所述第一部分,和其中根據(jù)所述第一通信信號(hào)值調(diào)整所述衰減窗口的中心。
9.根據(jù)權(quán)利要求8的回波抑制裝置,其中根據(jù)所述第一通信信號(hào)的信號(hào)幅度調(diào)整所述衰減窗口的所述中心。
10.根據(jù)權(quán)利要求8的回波抑制裝置,其中遞歸調(diào)整所述衰減窗口的所述中心,以便在每個(gè)瞬時(shí),所述中心等于所述抑制回波的輸出信號(hào)的前一個(gè)計(jì)算值。
11.根據(jù)權(quán)利要求8的回波抑制裝置,其中當(dāng)所述第一通信信號(hào)在所述衰減窗口內(nèi)時(shí),所述衰減窗口的所述中心衰減到零。
12.根據(jù)權(quán)利要求8的回波抑制裝置,其中限制所述衰減窗口的所述中心以使所述衰減窗口不超過所述第一通信信號(hào)的整個(gè)范圍。
13.根據(jù)權(quán)利要求8的回波抑制裝置,其中所述信號(hào)處理器利用可調(diào)整的衰減因數(shù)定標(biāo)所述第一通信信號(hào)的所述第一部分。
14.根據(jù)權(quán)利要求13的回波抑制裝置,其中調(diào)整所述衰減因數(shù)以使回波抑制裝置基于其它裝置提供的回波衰減提供回波衰減,其它裝置在實(shí)現(xiàn)所述回波抑制裝置的通信系統(tǒng)內(nèi)。
15.根據(jù)權(quán)利要求14的回波抑制裝置,其中基于音量控制信號(hào)調(diào)整所述衰減因數(shù),該音量控制信號(hào)用于調(diào)整所述通信系統(tǒng)的音頻輸出量。
16.根據(jù)權(quán)利要求8的回波抑制裝置,其中可以調(diào)整所述衰減窗口的尺寸。
17.根據(jù)權(quán)利要求16的回波抑制裝置,其中基于所述第二控制信號(hào)調(diào)整所述衰減窗口的所述大小。
18.根據(jù)權(quán)利要求16的回波抑制裝置,其中基于其它裝置提供的回波衰減調(diào)整所述衰減窗口的所述大小,其它裝置在實(shí)現(xiàn)所述回波抑制裝置的通信系統(tǒng)內(nèi)。
19.根據(jù)權(quán)利要求18的回波抑制裝置,其中基于音量控制信號(hào)調(diào)整所述衰減窗口的所述大小,該音量控制信號(hào)用于調(diào)整所述通信系統(tǒng)的音頻輸出量。
20.一種回波抑制裝置,包括回波抑制器,處理包含回波的輸入信號(hào)和引起回波的基準(zhǔn)信號(hào)以便提供抑制回波的輸出信號(hào);和增益控制處理器,估計(jì)所述回波抑制器的回波增益,其中基于第一和第二測(cè)量值的比率計(jì)算所述估計(jì)值,其中所述第一測(cè)量值表示所述抑制回波的輸出信號(hào)中的能量,和其中所述第二測(cè)量值表示包含回波的輸入信號(hào)和引起回波的基準(zhǔn)信號(hào)其中之一的能量。
21.根據(jù)權(quán)利要求20的回波抑制裝置,其中從所述抑制回波的輸出信號(hào)的樣值平方和的平方根得出所述第一測(cè)量值。
22.根據(jù)權(quán)利要求20的回波抑制裝置,其中從所述抑制回波的輸出信號(hào)的樣值均方根得出所述第一測(cè)量值。
23.根據(jù)權(quán)利要求20的回波抑制裝置,其中從所述包含回波的輸入信號(hào)和所述引起回波的基準(zhǔn)信號(hào)其中之一的樣值平方和的平方根得出所述第二測(cè)量值。
24.根據(jù)權(quán)利要求20的回波抑制裝置,其中從所述包含回波的輸入信號(hào)和所述引起回波的基準(zhǔn)信號(hào)其中之一的樣值均方根得出所述第二測(cè)量值。
25.根據(jù)權(quán)利要求20的回波抑制裝置,其中以所述第一和第二測(cè)量值的所述比率的平方根計(jì)算所述估計(jì)值,其中從所述抑制回波的輸出信號(hào)的樣值平方和得出所述第一測(cè)量值,其中從所述包含回波的輸入信號(hào)和所述引起回波的基準(zhǔn)信號(hào)其中之一的樣值平方和得出所述第二測(cè)量值。
26.根據(jù)權(quán)利要求20的回波抑制裝置,其中所述回波抑制器是一種自適應(yīng)回波消除器。
27.根據(jù)權(quán)利要求26的回波抑制裝置,其中所述回波抑制裝置包括剩余回波抑制器,其中所述自適應(yīng)回波消除器回波增益的所述估計(jì)值用于調(diào)整所述剩余回波抑制器提供的回波衰減。
28.根據(jù)權(quán)利要求26的回波抑制裝置,其中所述回波抑制裝置包括剩余回波抑制器,其中所述自適應(yīng)回波消除器回波增益的所述估計(jì)值用于調(diào)整所述剩余回波抑制器的衰減窗口的大小。
29.一種回波抑制裝置,包括前端回波抑制器,處理包含回波的信號(hào)和引起回波的信號(hào)以便提供中間信號(hào);剩余回波抑制器,選擇性的衰減所述中間信號(hào)以提供抑制回波的輸出信號(hào);和增益控制信號(hào),估計(jì)所述前端回波抑制器的回波增益,其中基于第一和第二測(cè)量值的比率計(jì)算所述估計(jì)值,其中所述估計(jì)值用于調(diào)整所述剩余回波抑制器提供的回波衰減。
30.根據(jù)權(quán)利要求29的回波抑制裝置,其中從所述中間信號(hào)的樣值平方和的平方根得出所述第一測(cè)量值。
31.根據(jù)權(quán)利要求29的回波抑制裝置,其中從所述中間信號(hào)的樣值均方根得出所述第一測(cè)量值。
32.根據(jù)權(quán)利要求29的回波抑制裝置,其中從所述包含回波的信號(hào)和所述引起回波的信號(hào)其中之一的樣值平方和的平方根得出所述第二測(cè)量值。
33.根據(jù)權(quán)利要求29的回波抑制裝置,其中從所述包含回波的信號(hào)和所述引起回波的信號(hào)之一的樣值均方根得出所述第二測(cè)量值。
34.根據(jù)權(quán)利要求29的回波抑制裝置,其中以所述第一和第二測(cè)量值的所述比率的平方根計(jì)算所述估計(jì)值,其中從所述中間信號(hào)的樣值平方和得出所述第一測(cè)量值,其中從所述包含回波的信號(hào)和所述引起回波的信號(hào)其中之一的樣值平方和得出所述第二測(cè)量值。
35.一種回波抑制裝置,包括回波抑制器,處理包含回波的輸入信號(hào)和引起回波的基準(zhǔn)信號(hào)以便提供抑制回波的輸出信號(hào)其中所述回波消除器包括一個(gè)或多個(gè)自適應(yīng)濾波器系數(shù);和增益控制處理器,估計(jì)所述回波抑制器的回波增益,其中基于第一和第二測(cè)量值的比率計(jì)算所述估計(jì)值,其中所述第一測(cè)量值表示時(shí)間間隔內(nèi)至少一個(gè)所述自適應(yīng)濾波器系數(shù)的改變,和其中所述第二測(cè)量值是基于所述時(shí)間間隔內(nèi)的所述包含回波的輸入信號(hào)和所述引起回波的基準(zhǔn)信號(hào)。
36.根據(jù)權(quán)利要求35的回波抑制裝置,其中從所述時(shí)間間隔內(nèi)測(cè)量所述濾波器系數(shù)改變的峰值得出所述第一測(cè)量值。
37.根據(jù)權(quán)利要求35的回波抑制裝置,其中從所述時(shí)間間隔內(nèi)測(cè)量所述濾波器系數(shù)改變的平方和的平方根得出所述第一測(cè)量值。
38.根據(jù)權(quán)利要求35的回波抑制裝置,其中從所述包含回波的輸入信號(hào)和所述引起回波的基準(zhǔn)信號(hào)其中之一的樣值平方和的平方根得出所述第二測(cè)量值。
39.根據(jù)權(quán)利要求35的回波抑制裝置,其中從所述包含回波的輸入信號(hào)和所述引起回波的基準(zhǔn)信號(hào)其中之一的樣值均方根得出所述第二測(cè)量值。
40.根據(jù)權(quán)利要求35的回波抑制裝置,其中所述回波抑制裝置包括剩余回波抑制器,其中所述自適應(yīng)回波消除器回波增益的所述估計(jì)值用于調(diào)整所述剩余回波抑制器提供的回波衰減。
41.根據(jù)權(quán)利要求35的回波抑制裝置,其中所述回波抑制裝置包括剩余回波抑制器,其中所述自適應(yīng)回波消除器回波增益的所述估計(jì)值用于調(diào)整所述剩余回波抑制器的衰減窗口的大小。
42.一種回波抑制裝置,包括回波抑制器,處理包含回波的信號(hào)和引起回波的信號(hào)以便提供消除回波的信號(hào),所述回波消除器包括一個(gè)或多個(gè)自適應(yīng)濾波器系數(shù);剩余回波抑制器,選擇性地衰減所述消除回波的信號(hào)以提供抑制回波的信號(hào);和增益控制處理器,估計(jì)所述回波抑制器的回波增益,其中基于第一和第二測(cè)量值的比率計(jì)算所述估計(jì)值,其中所述第一測(cè)量值表示時(shí)間間隔內(nèi)至少一個(gè)所述自適應(yīng)濾波器系數(shù)的改變,和其中估計(jì)值用于調(diào)整所述剩余回波抑制器提供的回波衰減。
43.根據(jù)權(quán)利要求42的回波抑制裝置,其中從所述時(shí)間間隔內(nèi)測(cè)量所述濾波器系數(shù)改變的峰值得出所述第一測(cè)量值。
44.根據(jù)權(quán)利要求42的回波抑制裝置,其中從所述時(shí)間間隔內(nèi)測(cè)量所述濾波器系數(shù)改變的平方和的平方根得出所述第一測(cè)量值。
45.根據(jù)權(quán)利要求42的回波抑制裝置,其中從所述包含回波的輸入信號(hào)和所述引起回波的基準(zhǔn)信號(hào)其中之一的樣值平方和的平方根得出所述第二測(cè)量值。
46.根據(jù)權(quán)利要求42的回波抑制裝置,其中從所述包含回波的輸入信號(hào)和所述引起回波的基準(zhǔn)信號(hào)其中之一的樣值均方根得出所述第二測(cè)量值。
47.根據(jù)權(quán)利要求42的回波抑制裝置,其中以所述第一和第二測(cè)量值的平方根計(jì)算所述比率,其中從所述時(shí)間間隔內(nèi)測(cè)量所述濾波器系數(shù)改變的平方和得出所述第一測(cè)量值,其中從所述包含回波的輸入信號(hào)和所述引起回波的基準(zhǔn)信號(hào)其中之一的樣值平方和得出所述第二測(cè)量值。
全文摘要
用于在通信系統(tǒng)中實(shí)現(xiàn)回波抑制的方法和裝置包括回波抑制器,這里稱作AC中心衰減器,其通過使一部分通信信號(hào)乘以適當(dāng)?shù)臉?biāo)度因數(shù)來衰減信號(hào)的回波成分。特別是,AC中心衰減器定標(biāo)滑動(dòng)衰減窗口內(nèi)的這部分通信信號(hào)。衰減窗口跟蹤通信信號(hào),因此AC中心衰減器抑制回波成分同時(shí)通過其它的信號(hào)成分(例如,近端語(yǔ)音和噪聲)。動(dòng)態(tài)調(diào)整衰減窗口內(nèi)的標(biāo)度因數(shù)和衰減窗口的大小,以使AC中心衰減器引入最小的信號(hào)失真和少量聽得到的人工產(chǎn)物。實(shí)現(xiàn)動(dòng)態(tài)調(diào)整以便在實(shí)現(xiàn)AC中心衰減器的系統(tǒng)中提供期望的往返回波增益。為此,通過計(jì)算第一和第二值的比率得到回波抑制器實(shí)現(xiàn)的回波衰減測(cè)量值,其中第一和第二值分別表示回波抑制器輸出和輸入信號(hào)的能量電平?;蛘咄ㄟ^計(jì)算第一和第二值的比率得出按組更新的回波消除器實(shí)現(xiàn)的回波衰減,其中第一值表示回波消除器的一組更新系數(shù)的能量電平,第二值表示回波消除器輸入信號(hào)的能量電平。在每種情況下,計(jì)算的比率可用于調(diào)整由剩余回波衰減器提供的衰減程度。
文檔編號(hào)H04B3/20GK1286863SQ98813863
公開日2001年3月7日 申請(qǐng)日期1998年12月30日 優(yōu)先權(quán)日1998年1月9日
發(fā)明者E·D·羅梅斯博格, J·A·J·拉斯穆松 申請(qǐng)人:艾利森公司