專利名稱:通信系統(tǒng)中的實時回聲檢測、跟蹤、對消以及噪聲填充的制作方法
技術領域:
本發(fā)明與通信系統(tǒng)中通常稱為回聲的反射語音信號的處理技術有關。具體地說,本發(fā)明涉及到檢測和跟蹤通話期間的回聲,通過從接收到的語音信息中削去返回的回聲來消除回聲,以及用一些噪聲樣本代替削去的回聲,使得這樣的噪聲填充與通信信道中存在的噪聲相當。
在美國專利No.5,587,998中揭示了一種降低語音通信網(wǎng)中殘存的遠端回聲的方法和設備,提出了在本地網(wǎng)中進行遠端回聲控制以改善本地發(fā)話人的通信境遇的一些想法。這種方法包括測量從發(fā)出語音信號到發(fā)生反射之間的延遲,以便可預測地識別回聲;將預測對時間進行平滑;以及衰減或消除落在規(guī)定范圍內的回聲。在這里作為
圖1和2轉載的998專利的圖1和2示出的語音通信網(wǎng)環(huán)境采用本發(fā)明非常有利。圖3-6給出了降低/消除一旦檢測到的回聲的算法概況。在本申請中還轉載了998專利的圖3-5。998專利從第8欄第43行至第11欄第19行說明了按998專利的圖6檢測、跟蹤和對回聲估值進行時間平滑的算法。
回聲如果發(fā)生在相當靠近發(fā)話人處,那么就會聽到一種雨桶效應。在長距離的陸地通信或衛(wèi)星通信中,如果距離(和絕對路徑延遲)相當大,本地發(fā)話人就會聽到回聲,他發(fā)出的話經(jīng)傳到反射點(例如混合網(wǎng)絡或其他失配處)再返回的延遲出現(xiàn)在他的耳邊。在實時語音通信網(wǎng)中,這種回聲不能識別和脫線處理,而又需要實時識別和立即消除。因此,必需執(zhí)行這樣一種回聲消除算法,一旦識別出回聲就能立即加以消除。所以,軟件設計者部署任務時需要在哪些必需實時執(zhí)行和哪些可以在平時執(zhí)行之間作出選擇。
一旦實現(xiàn)了回聲跟蹤和削波,就會出現(xiàn)一種令發(fā)話人在語音通信中不舒服地聽不到任何聲音的寂靜期。也就是說,在進行了這樣的語音信號處理后,對于本地發(fā)話人來說會有一段沒有任何信號的完全寂靜期。因此,本發(fā)明的一個目的是在實現(xiàn)回聲跟蹤和實時削波的同時還實現(xiàn)一種噪聲填充算法,用與本地發(fā)話人在語音通信信道上經(jīng)受到的相近的噪聲填充這種寂靜期。
此外,已知的回聲消除方法和設備在工作中會產(chǎn)生一些具有很高的噪聲能量的尖峰,使近端發(fā)話人聽到一陣噼啪聲,一種有些像著火發(fā)出的爆裂聲音。本發(fā)明的另一個目的就是所提供的消除回聲的跟蹤和削波算法還考慮了這種噼啪聲,不但是消除了這種噼啪聲,還通過噪聲填充算法用不令人討厭的噪聲來填充噼啪聲消除后留下的空隙。
因此,在本技術領域需要開發(fā)一種實時執(zhí)行的回聲檢測、跟蹤、消除和噪聲填充的算法,為本地用戶提供一個接到遠端用戶的比較安靜的無回聲語音通信信道。如果在通信信道的兩端部進行這樣的處理,那么通話的雙方就能進行無回聲的語音通信。
按照本發(fā)明所提出的算法,從一個近端發(fā)話人和一個遠端發(fā)話人之間的一個給定語音通信得到的有兩個輸入數(shù)據(jù)流去話近端話聲和來話遠端話聲。語音活動檢測電路通過檢測語音活動情況來檢測話聲。在去話話聲與來話話聲高度相關時,如果與去話話聲相比反射話聲的幅度不很小的話,就會出現(xiàn)可以聽得見的討厭的回聲。因此,通過得到平均幅度相關與去話和來話信道之間時間延遲的關系,導出一些加到本算法的跟蹤器上的輸入。本算法可以劃分成三個功能部分(1)回聲檢測和跟蹤;(2)回聲消除;(3)噪聲填充。對于回聲檢測和跟蹤功能來說,是通過延遲計算法找出取決于去話和來話信道之間時間延遲的相關函數(shù)平均幅度的最大值來確定回聲位置。一個跟蹤算法部分用來保證回聲位置估值比較一致,不會造成虛假和出格的估計。第二個功能是削波。削波器在檢測/跟蹤器確定了會話中有回聲后確定什么時間消除來話遠端信號。第三個功能是噪聲填充,一旦檢測/跟蹤和削波功能確定由于有回聲而需要消除當前來話信號時就產(chǎn)生一系列噪聲樣點來代替。本算法的這些功能(檢測/跟蹤、削波和噪聲填充)在一種保證實時操作的軟件和固件設計中實現(xiàn)非常方便。在這種設計中,實時性能是通過將話聲樣值和其他數(shù)據(jù)保存在一些循環(huán)緩存器內和將一個主程序和一些附屬功能程序配置在一個模塊化結構內加以保證的。
原則上,任何時候從相同反射點發(fā)生回聲的情況應該是一致的。因此,所測量的從本地發(fā)話人到各反射點之間的延遲都是可預測的,從而往返延遲也是可預測的。各去話語音段和來話語音段都被限制在比較窄的頻率范圍(語音電話帶寬)內。這個頻率范圍雖然由于應用場合不同有些差別,但大致包括在300Hz至3000Hz之間的頻率范圍內。因此,即使反射損耗的大小可能由于語音頻率的不同稍有些變化,然而往返延遲應該是可預測的。此外,往返的傳輸損耗同樣也是可預測的。將收集的近端信號數(shù)據(jù)與遠端信號數(shù)據(jù)進行相關和對歷來的數(shù)據(jù)進行各種測試,就可以預測強弱回聲的情況。這個過程在此稱為回聲檢測和跟蹤。此外,按照本發(fā)明,在返回或來話話聲通路中的經(jīng)過預期延遲、具有所預測的功率的反射話聲在到達近端發(fā)話人之前就可加以消除。而且,按照本發(fā)明,可以估計出來話話聲通路的噪聲段,確定它是音調式噪聲還是白噪聲后,根據(jù)確定結果加以復制。所復制的噪聲用來填充消除回聲信號以及通常在回聲消除中所出現(xiàn)的任何爆裂聲和其他不希望有的噪聲而留下的寂靜期。
經(jīng)過檢測和跟蹤、削波以及爆裂聲消除和噪聲填充算法這些操作可能還會留下殘留的回聲效應沒有校正。因此,設置了一個殘留回聲削波器來除去能量較小的短促殘留回聲。對于這種不連續(xù)和突發(fā)性的殘留回聲,根據(jù)參考功率電平(近端發(fā)送通路)、所測得的回聲延遲、近端語音活動檢測器和回聲損耗電平導出一個回聲窗。這個回聲窗提供了保證算法對殘留回聲進行定位、在預定門限啟動削波器消除殘留回聲能量所需的時間。
本發(fā)明的其他優(yōu)點和特性可從附圖6-27所示和對優(yōu)選實例性的詳細說明中看出。在這些附圖中圖1-5取自列作本申請參考的由Patrik M.Velardo,Jr.和WoodsonD.Wynn提出的美國專利5,587,998;圖6A為計算近端話聲與遠端返回信號之間的相關函數(shù)的功能流程圖,而圖6B為相關計算的嵌套循環(huán)的功能流程圖;圖7示出了送至本發(fā)明的檢測/跟蹤器的輸入和這些輸入運用情況,圖7a例示了作為去話與來話信道之間時間延遲的函數(shù)的原始相關性估計的條形圖,圖7b例示了一個語音通信信道的相關曲線圖,而圖7c給出了示出回聲路徑延遲對時間的關系,暗黑色部分為回聲關聯(lián)處;圖8a示出了用循環(huán)緩存器存儲幀和塊的詳細情況,這種存儲方式可以使回聲檢測和跟蹤實時進行。
圖8b示出了為實時處理圖8a那樣的近端和遠端信號所進行的循環(huán)數(shù)據(jù)緩存情況;圖9列出了跟蹤用來通話的通信信道中的回聲的例示變量表;圖10-15示出了本發(fā)明的跟蹤算法部分的八個步驟的細節(jié),前三個步驟示于圖10,都與怎樣處理去話與來話之間的原始相關性測量結果有關,圖11所示的步驟4與強回聲檢測有關,圖12a和12b所示的步驟5與弱回聲檢測有關,圖13所示的步驟6與回聲延遲時間平滑有關,圖14所示的步驟7與多語音通信掃描(幀)回聲跟蹤有關,而圖15所示的步驟8與確定回聲是否存在有關。
圖16a示出了一個存儲歷來話聲幀功率的數(shù)組,圖16b示出了跟蹤削波器消除圖16a所示數(shù)組識別為爆裂聲的高度非線性回聲的表達式,而圖16c例示了本發(fā)明的算法檢測到的非線性回聲和用噪聲補復代替的情況;圖17a為列出跟蹤/削波算法部分所需各個輸入的例示表,而圖17b為列出跟蹤/削波部分的各個變量的例示表;圖18給出了計算倒頻譜距離的式子,倒頻譜距離為表示從本地發(fā)話人至反射點再返回的頻譜距離的變量;圖19給出了通過頻譜匹配消除回聲的跟蹤/削波算法;圖20給出了不用頻譜匹配消除回聲的跟蹤/削波算法;圖21列出了其他削波條件,而圖22列出了禁止削波的條件;圖23例示了本發(fā)明算法的輸出,回聲經(jīng)檢測、跟蹤、消除后用通過本算法的噪聲填充算法確定和填充的噪聲代替,圖23a示出了回聲消除前的時間序列,而圖23b示出了回聲消除和噪聲補復后的時間序列;圖24為列出用噪聲充填消除了回聲的各個時間間隔的噪聲填充算法的各個輸入的表;圖25和26給出了噪聲填充算法,第一步是確定噪聲特性,例如是音調噪聲還是白噪聲,圖25涉及噪聲特性確定,圖26涉及用特性由噪聲特性確定步驟所確定的噪聲對某段時間進行填充;圖25A給出了噪聲特性確定算法,圖25B示出了音調噪聲和白噪聲的功率譜以及比較門限,圖25C示出了音調噪聲的自相關函數(shù);圖26A給出了噪聲填充算法,圖26B和26C分別示出了對于白噪聲填充例的Noise[]數(shù)組緩存器曲線和所產(chǎn)生的噪聲填充緩存器曲線,而圖26D和26E分別示出了對于音調噪聲填充例的Noise[]數(shù)組緩存器曲線和所產(chǎn)生的噪聲填充緩存器曲線;圖27示出了本發(fā)明的回聲檢測/跟蹤、回聲消除和噪聲填充以及另一個為降低總噪聲而采取的殘余回聲消除功能的總體規(guī)劃和包括回聲檢測/跟蹤和消除及噪聲填充的回聲消除過程;圖27A示出了總體功能的功能方框圖;圖27B示出了消除殘余回聲的回聲窗預測過程;圖27C示出了話聲功率電平檢測情況,其中圖27C(1)示出了信號功率與信號電平的關系而圖27C(2)示出了100ms的估計窗內信號幀話聲信號電平采樣情況;圖27D示出了滑動估計窗的形成情況,而圖27E示出了話聲頻譜(0-4000Hz)與功率電平的關系。
圖1或2所示的現(xiàn)有技術的通信網(wǎng)包括本地網(wǎng)10和遠程網(wǎng)20,這不應與諸如本地交換承載方(LEC)或長途網(wǎng)之類的遠程通信術語相混淆。本發(fā)明和998專利所揭示的非常容易在盡可能接近本地網(wǎng)10的本地用戶或本地呼叫方處實現(xiàn),以便能校正常駐的遠端回聲控制(RPEC)發(fā)明60(圖2)以遠直至遠端方(圖1)之間任何環(huán)節(jié)上發(fā)生的回聲。因此,諸如地區(qū)性Bell運營公司那樣的專用網(wǎng)運營方、LEC,或者諸如AT&T公司那樣的長途網(wǎng)提供方之類可以通過各自采用本發(fā)明或者出售或出租本發(fā)明的方法和/或設備或者作為一種為用戶提供附加服務的業(yè)務這些方式來利用本發(fā)明,從中獲益。本發(fā)明對經(jīng)常需要接入傳輸設施差、具有一些會導致反射和回聲的阻抗失配情況的遠程網(wǎng)進行長途呼叫的用戶特別有用。例如,對于經(jīng)常對在改善傳輸方面缺少投資甚至沒有投資的遠地進行呼叫的用戶來說,本發(fā)明的作用可能是有相當大的價值??傊?,在這里所謂“本地發(fā)話方”是指預約、購買或者得到本發(fā)明所提供的服務的發(fā)話人。此外,在接近本地發(fā)話方處應用可能最為方便。
參見圖2,可以假設本發(fā)明可以用于通信通路分開的四線或雙向信道中的任何地方。實際上,本發(fā)明甚至可用于用戶所在處,例如用于傳輸通路分開的、具有四線或載波專用小交換機(PBX)中繼設施的專用小交換機處。這里所用的其他術語與在上述998專利中所用的相同。
通常,在專用非交換或公用交換通信網(wǎng)中引起反射或回聲的是由于阻抗的不匹配,例如在用來從兩線(在兩根線上同時進行雙向傳輸)變換成四線或等效四線(在四根線上或等效四根線上本地至遠程與遠程至本地在各自分開的通路上傳輸)的混合網(wǎng)絡處所遇到的,圖1和2所示只是兩種情況。眾所周知,通信網(wǎng)中總有不可避免的阻抗失配之處,然而最為顯著的恐怕還是在混合網(wǎng)格處。這些地方包括(但并不局限于)在端到端鏈路的本地和長途網(wǎng)部分中的交換機和語音放大器以及在本地用戶環(huán)路中的銅對規(guī)轉換裝置、負載線圈、橋接抽頭之類。所有這些都可以引起反射和回聲,而這些反射和回聲都可以用本發(fā)明的REFC 60加以校正。
在這些附圖中,圖6給出了獲取原始相關性測量的各個步驟的情況。具體地說,圖6A給出了近端話聲與遠端包括話聲的返回信號之間的相關性計算的功能流程圖,而圖6B給出了相關性計算的內部算法循環(huán)。如圖6A所示,方框300、440表示為在一個本地發(fā)話人(近端話聲)和一個遠地方(遠端話聲)之間建立的給定通信鏈路隨時不斷對數(shù)據(jù)和從遠端返回的近端話聲的回聲進行存儲器存儲,(遠端話聲加上近端話聲的回聲表示一個合并成的遠端信號)。方框300表示將本地發(fā)話人的與最大所關心的延遲相應的過去幀存入緩沖存儲器和將從遠端接收到的當前信號存入緩沖存儲器。延遲估計算法的前幾個步驟是在方框310,對幀加海寧窗;在方框320,對幀進行快速付立葉變換(FFT);在方框340,對FFT進行抽??;以及在方框360,計算功率譜。對每個新的近端幀和每個新的遠端幀都要進行這些運算。圖6A示出了對于當前遠端幀和與需測試的最長延遲(例如為980ms)相應的過去近端幀進行的這些運算。然后,在方框380,得出過去近端幀與每個經(jīng)延遲的遠端幀的交叉譜。這個過程反復執(zhí)行,每次循環(huán)對功率譜進行平均,直至達到預定的近端幀數(shù)(例如為25幀)。這個過程的控制流程示于圖6B。在更新了功率譜對每方框385足夠幀數(shù)取平均后,就在方框390計算出相關性估值,過程返回,重新開始。圖6的更詳細的情況將結合對圖8的討論予以說明。這樣的實時相關性計算就得出了對回聲路徑延遲和回聲回損的預測。
下面將結合圖6-15所示的本發(fā)明的一個實施例對本發(fā)明的回聲檢測和跟蹤功能進行更詳細的說明。首先參見圖7,給出的是一系列典型輸入,具體地說,是一個包括平均幅度相關性與一個通信鏈路(最好是一個往返延遲明顯的接至遙遠的遠地方的長途鏈路)的去話(朝向遠地方)信道和來話(返回本地發(fā)話人)信道之間的時間延遲的關系的amt.ametric[]數(shù)組。分段的通信路徑例如劃分成一系列20毫秒的增量段,40個增量段形成一個總時長近似為1秒的語聲/背景段。典型的采樣率為每秒8000個樣點。
看一下圖8a,最好將來話和去話信號的數(shù)據(jù)流組織成一系列各由三個塊、每塊80個樣點總共240個樣點的相互交疊的幀。所示的三個幀都有一個交疊的樣本塊,左上是最老的幀,而右下是最新的幀。
軟件設計最好采用頂?shù)降椎慕Y構,主程序短而簡單,集成容易。此外,這種模塊化結構最好將與機器有關的匯編語言碼與C語言碼或其它高級語言碼分開。延遲計算軟件確定使遠端話聲和近端話聲相關性最大的延遲值。然后,判定在這點的遠端話聲是否為近端話聲的回聲。跟蹤軟件對通話過程中的延遲估計進行平滑,以便避免出現(xiàn)諸如出格的亂真估計(超出預期范圍的不良估計)。
遵從常規(guī)的軟件設計實踐,最好可用標題文件和條件編譯標志來指示系統(tǒng)的各種相互關系,每個受調用的功能應該執(zhí)行一個明確的任務或為一組有關任務提供上層控制。最好將所有的常數(shù)列在一個標題文件內,這樣只要在一個工作區(qū)就可以改變這些常數(shù)了。
將數(shù)據(jù)組織到一些結構和緩存器內,把算法劃分成一些模塊和功能,以及控制流程最好都設計成呈清晰的問題結構。在以下各節(jié)中將詳細說明本發(fā)明的這些情況。首先說明話聲數(shù)據(jù)和所計算數(shù)據(jù)的緩存,最后說明跟蹤算法的控制流程。
話聲數(shù)據(jù)和所計算數(shù)據(jù)以能反映數(shù)據(jù)和問題的結構的方式組織起來存入緩存器。為了說明在本發(fā)明的操作中的緩存情況,需要規(guī)定一些術語。設TREADY為每個新的話聲塊到達的時間間隔,BLKSZ為每一塊中的樣點數(shù),SR為采樣率,而FRSZ可以是幀長度,也就是一幀中的樣點數(shù)。這些值最好是TREADY=10ms,BLKSZ=80,SR=8000Hz,F(xiàn)RSZ=240。這些值是所提出的這幾個變量的推薦值,根據(jù)實施本發(fā)明的不同情況也可以選取與這些預定的推薦值不同的值。
再來看圖8A,其中示出了值得推薦的用于本發(fā)明的交疊幀處理。按圖6A,這算法有兩個輸入流;即出局或去話話聲信號和來自諸如國外遠地的來話或入局話聲信號。來話流各被劃分為一系列按時在相應時間間隔內到達的塊。例如,程序接收一個長度為BLKSZ(例如80個樣點)的近端樣點塊和一個遠端樣點塊。(如果采樣率SR為每秒8000個樣點,則在本實施例中每個塊包括80個樣點)。來話信號按樣本長度為FRSZ(例如為240個樣點,或三個各有80個樣點的塊)的幀進行處理。每個幀(幀m,m+1或m+2)包括三個塊,即一個當前塊(為方便起見標為塊C)和兩個先前塊(塊B和塊A)。一個幀的最老的塊亦即塊A,與上一幀的最新的塊亦即使C交疊(也就是相同)。例如,最老的幀m的第三塊亦即塊C與幀m+1的第一塊亦即塊A交疊。幀m的塊C和幀m+1的塊A以及幀m+1和m+2的相應塊都是相鄰幀之間交疊的具有80個樣點的塊的例子。
由于幀間的交疊,為了準備好一個要處理的新幀,需要得到兩個塊。一個新幀(例如,幀m+1)將含有一個老的塊(例如,幀m的塊C成為幀m+1的塊A)和兩個新的塊(幀m+1的塊B和C)。
在呼叫開始時,需要得到初始的三個決。此后,每當有兩個新的塊到達后,就與一個老的塊組成一個新的幀。為了方便起見,任何新的塊中的第一個塊標為塊1,而第二個塊標為塊2。任何與一個新幀有關的處理都在其他塊期間執(zhí)行,例如在得到塊2后執(zhí)行。因此,在下一幀(最新幀m+2)的下個塊1到達前,對于幀處理來說有80ms的實時時間可用。話聲處理模塊在所述實現(xiàn)的優(yōu)選話聲處理器的操作時間上甚至被限制為例如這80毫秒的15%即12毫秒左右。
由于每個新話聲幀包括三個等長的塊,而幀間有一個塊交疊,因此需要得到兩個新的話聲塊來形成一個新的話聲幀。本發(fā)明的控制結構將處理任務分成兩個功能塊過程塊1(proc-block1)和過程塊2(proc-block2),而不是只在接收到第二個塊以后才進行處理(這會浪費在第一塊可用后而在第二塊可用前存在的處理時間),從而在各話聲塊到達之間的每個時間間隔內可以進行某些計算。這兩個程序下面將進一步加以說明。
在某個幀的塊1出現(xiàn)并得到處理而塊2還未到達時,處理時間最好不要浪費。算法最好將處理轉至相關性計算和跟蹤功能。例如,如果已經(jīng)足夠數(shù)量的(例如25個)含有話聲的近端幀進行了平均,則在下個塊1時間間隔內執(zhí)行相關性計算和跟蹤功能。這個重復過程示于圖6B。如果還沒有對足夠幀數(shù)(例如少于25個)平均,則在塊1期間不進行其他計算。對于塊1時間間隔來說,就是保存在塊1期間所得到的新的樣點。如所說明的那樣,“main()routine”非常簡短,為得到這些輸入和交替塊1和塊2處理提供一個控制流。
圖8A可以看作一個輸入循環(huán)緩存器的圖。這是一個用來存儲新到達的話聲樣點的緩存器。于是,對于“最老的幀”,塊A可以分配在位置0-79,塊B可以分配在位置80-159,塊C可以分配在位置160-239,而對于一個具有256個位置的循環(huán)緩存器來說,位置240-255可以填塞。這樣位置0-239就形成了一個循環(huán)緩存器。隨著得到新的塊,從最老到最新的樣點的布置在三種可能的次序,即塊A、B、C;塊C、A、B和塊B、C、A,之間輪轉。近端和遠端兩個循環(huán)話聲緩存器都可以這樣構成和工作。
圖8B示出了在本算法中為了實時處理進行數(shù)據(jù)緩存的情況。如圖8A和8B所示,采用循環(huán)緩存器處理效率高,例如,只需增加一個指針或索引,而不必拷貝大量的數(shù)據(jù)。
所采用的想法是維護一段對去話信號幀計算出的譜數(shù)據(jù)的過去歷史,這樣就可以用這數(shù)據(jù)與所有可能是來話回聲的幀進行比較(相關測試)。選擇一個延遲值范圍,這個范圍包括預計可能出現(xiàn)回聲的延遲范圍。在電話中,對于要擾亂對話的情況來說,所關心的最小延遲量可能是在160至400毫秒左右的范圍內。在圖8B所示的例子中,這個值選為200ms。在實際系統(tǒng)中,這個值是一個可變參數(shù),有一個缺省值(例如為200ms),這個參數(shù)的值可以在系統(tǒng)裝入傳輸設施時選定。想法是,在實際系統(tǒng)中,如果需要的話,在不同的安裝場合可以設定不同的最小延遲,例如因為不同的傳輸設施可能要接收從不同的傳輸媒體或世界上不同區(qū)域到來的信號。所關心的最大可能延遲通常是在900至1200ms的范圍內,雖然極端情況下可能會出現(xiàn)長達2400ms的延遲。在圖8B的例中,最大延遲選為980ms。
在圖8B中,上面這行表示近端處理,而下面這行表示遠端處理。圖8B的左面是在呼叫開始后出現(xiàn)的一些初始塊(在本例中為20個)。TEST FRAME表示正在搜索其回聲的過去的去話幀。在本例中,TESTFRAME為含有塊0至塊2的幀0。CURRENT OUTGOIFRAME表示剛計算了頻譜數(shù)據(jù)的最新去話幀。在本例中,CURRENT OUTGOINGFRAME為幀49。這樣,每接收到一個新的幀,信號處理器就對在NDELFRAMES前出現(xiàn)的幀的回聲進行檢測,其中NDELFRAMES等于CURRENT OUTGOING FRAME減去TEST FRAME,在圖8B的例中為49。
想法是,在呼叫的開始,保存初始近端幀的數(shù)據(jù),而略去初始遠端幀的數(shù)據(jù),直至有充分延遲后才開始尋找回聲。例如,圖28B示出了形成幀0至幀9的20個初始近端塊。這些幀的頻譜數(shù)據(jù)保存起來,而相應的初始來話幀則不加分析。從MINIMUM EXPECTED DELAY(最小預期延遲)開始,隨著各幀的到達,來話和去話兩種幀的數(shù)據(jù)都保存起來。在達到MAXIMUM EXPECTED DELAY(最大預期延遲)時,初始化結束,信號處理器將開始尋找TEST FRAME的回聲。在圖8B的例中,上述范圍內的可能值是為200ms的MINIMUM EXPECTED DELAY和為980ms的MAXIMUM EXPECTED DELAY。這兩個延遲應只看作為示例性的,對于電話應用情況可以在前面所討論的范圍內變動。在非電話應用的情況下,這延遲范圍可能是不同的。
設NFAR和NNEAR分別表示數(shù)據(jù)需存儲的遠端和近端幀的數(shù)目。設FIRST DELAY FRAME為與MINIMUM EXPECTED DELAY相應的幀,而CURRENT INCOMING FRAME表示與MAXIMUMEXPECTED DELAY相應的幀(也就是當前的來話幀)。NFAR等于CURRENT INCOMING FRAME減去FIRST DELAY FRAME加1。NNEAR等于CURRENT OUTGOIN FRAME減去TEST FRAME加1。必需存儲NFAR個遠端話聲幀的數(shù)據(jù)。例如,需要存儲50個近端話聲幀和40個遠端話聲幀的數(shù)據(jù)。
為了滿足檢測回聲的處理要求,必需例如在FREC 60(見圖2)存儲總共NNEAR個幀(例如為50個近端話聲幀)和NFAR個幀(例如為40個遠端話聲幀)的數(shù)據(jù)。
數(shù)據(jù)的存儲數(shù)組最好是循環(huán)緩存器,使得每當一個新幀準備就緒,與這個新幀相應的數(shù)據(jù)就重寫在緩存器中的最老的所存儲的數(shù)據(jù)。必需改變的只有一個位置,用不著倒移全部數(shù)據(jù)。如前面所指出的那樣,對于每個近端和遠端緩存器只要用一個索引或指針就可以指出應該將最新的數(shù)據(jù)寫在哪里。
下面是實現(xiàn)用來存儲和組織數(shù)據(jù)的循環(huán)緩存器的一個具體情況。首先介紹一些參數(shù)。設NFAR和NNER分別表示數(shù)據(jù)加以存儲的遠端和近端幀的數(shù)目。如前面所述,NFAR和NNEAR的推薦值分別為40和50。于是,為與遠端話聲有關的數(shù)據(jù)所配備的循環(huán)緩存器包括NFAR個結構,每個用來存儲對于一個遠端話聲幀的數(shù)據(jù)。每個結構中的數(shù)據(jù)包括1)經(jīng)抽取的快速付立葉變換(FFT)處理的帶限樣點,以及2)功率譜。
為與近端話聲有關的數(shù)據(jù)所配置的循環(huán)緩存器是一個具有NNEAR個結構的數(shù)組,每個結構存儲對出局話聲計算得的數(shù)據(jù)。每個(近端)結構中的數(shù)據(jù)包括1)一個指示這個幀中是否含有話聲的標志,以及2)經(jīng)抽取的快速付立葉變換的帶限樣點。
總而言之,一個輸入近端循環(huán)緩存器和一個輸入遠端循環(huán)緩存器形成一些各有一系列話聲樣點的來話塊組成的話聲幀,而一個遠端抽取集循環(huán)緩存器和一個近端抽取集循環(huán)緩存器用來管理過去幀的譜信息的存儲。
在本發(fā)明的實現(xiàn)中還使用了一些非循環(huán)緩存器。一個這樣的緩存器依次相繼存儲近端話聲塊,因為這些話聲塊不必相繼安排在循環(huán)緩存器內。另一個非循環(huán)緩存器存儲用于平均的數(shù)據(jù)。這是一個具有NFAR個結構的數(shù)組,每個結構存有一個延遲值的數(shù)據(jù)。每個這樣的結構含有1)平均功率,以及2)平均交叉功率譜。存入這個延遲值緩存器的索引是它所含的數(shù)據(jù)的延遲值的函數(shù)。
下面將對所推薦的延遲計算任務劃分和跟蹤算法作為一個模塊結構進行說明。在操作中,main()程序是頂層程序。它執(zhí)行初始化和為管理與塊1和塊2有關的交替處理提供高層控制,如前面所作的簡明說明。處理了一個塊后,main()更新所有對于各循環(huán)緩存器的索引的值。
由main()調用的下一層功能為1)預先計算海寧窗各值的程序,2)獲取一個新的樣點塊的程序,3)執(zhí)行所有與塊1有關的處理任務的程序,以及4)執(zhí)行所有與塊2有關處理。
在下一層,有一個組織對一個新的去話話聲幀進行各運算的程序和另一個組織對一個新的來話話聲幀進行各運算的程序。
這個模塊結構的較低層功能最好作如下分類。第一類,是一些獲取新的近端和遠端樣點塊的程序。第二類,是一些執(zhí)行直至相關性估計以前的數(shù)學運算的程序。有一些程序分別用來實現(xiàn)以下功能1)預先計算海寧窗,這樣就可以通過利用這些預先計算出的值來節(jié)約實時運算時間,2)用海寧窗對一幀數(shù)據(jù)進行窗處理,3)快速付立葉變換,4)抽取和帶限FFT,5)計算功率譜,6)計算交叉譜,7)更新對去話話聲的平均,8)更新對來話話聲的平均,9)估計一個幀是否含有話聲,以及10)在程序等待時調用循環(huán)功能,直至可以獲取一個新的話聲樣點塊。除了這些功能以外,還有一個計算相關性和調用跟蹤程序的程序。最后,還有一些與跟蹤部分有關的程序。
為了達到實時處理,其中有些程序用匯編語言實現(xiàn)。這些程序可以包括FFT,交叉譜計算和各平均的更新。
下面將較為詳細地說明對這算法的優(yōu)選控制流程。為了討論方便,還將定義一些參數(shù)。設ENDINIT1和ENDINIT2表示確定在程序執(zhí)行中需開始幀處理的點的幀的計數(shù)。對于這兩個參數(shù)優(yōu)選值為ENDINIT1=22,ENDINIT2=51。
在這個優(yōu)選控制流程中,處理塊2的功能由main()調用。這個功能管理所有直至相關性估計以前的數(shù)學運算。它調用一個程序來得到和抽取對新的去話幀的FFT。如果塊的計數(shù)為ENDINIT1或更大一些,那么它就調用另一個程序來得到和抽取對遠端幀的FFT。在已經(jīng)獲得幀ENDINIT2時,就可以將當前的去話幀與經(jīng)延遲的一些遠端幀進行比較。它調用選通功能來確定是否存在話聲,如果是,它就更新受平均的幀數(shù)的計數(shù)。它計算近端的功率譜,調用一個程序來更新這去話話聲的平均功率。它調用交叉譜程序計算近端幀與各延遲幀的交叉譜向量。然后,它調用一個程序更新與各遠端幀相應的平均功率。
處理新去話幀的程序調用一些功能來計算加窗、FFT和抽取FFT。處理新來話幀的程序調用執(zhí)行加窗、FFT、抽取FFT和功率譜計算這些功能。
處理塊1的功能由main()調用。如果已對足夠數(shù)目的幀進行了平均,那么這個程序就調用一個功能來估計與各延遲值相應的相關性。如果所得到的最大值超過了一個門限,就將與相關性最大值相應的延遲認作一個可能的回聲位置。這個延遲和回聲標志寫入可由程序的其他部分讀出的變量。
跟蹤算法所回答的主要問題是在來話信道中是否有從去話信道反射回來的回聲。因此,跟蹤算法負責監(jiān)測來話與去話信道之間的原始相關性測量,確定整個通話期間是否有回聲。跟蹤算法在下次通過不同的通信鏈路對不同的位置進行呼叫時重新開始。
參見圖7B,所示為遠端與近端信號的相關性(垂直示出,刻度為0.5和1.0)對延遲(示為值自0至40Tau或800ms)與在一個呼叫期間的時間(示為刻度值0-200)的關系圖。參見圖7C,所示的相關圖示出了往返延遲與在遭到一個弱回聲時的相同呼叫期間的時間的關系。相關圖中的暗帶區(qū)示出了弱回聲的高相關和關聯(lián)。
圖9列出了回聲跟蹤算法中所用的示例性變量表。這些變量包括圖7的ametric數(shù)組、直方圖數(shù)組和索引數(shù)組、時間延遲索引、標志、對第一和第二回聲的平滑時間延遲、指數(shù)平均常數(shù)之類。
下面將結合圖10-15說明作為跟蹤算法核心的八個步驟。前三個步驟圖示于圖10。由圖10可見,這過程的第一個步驟是更新amt.ametric[]中原始相關測量(對于回波關聯(lián))的第一和第二峰值的直方圖。在第一個步驟的右方給出的對于示例性的第一和第二相關峰值的直方圖曲線(histo A和histoB)。
算法的步驟2是更新指數(shù)平均ametric[]。所示的一個這樣的函數(shù)是對于右方的相同曲線histoA和histoB平均的ametric結果。
步驟3為更新各histoA和histoB以及ametric的索引。
參見圖11,所示的是檢測強回聲情況的步驟4。在對于某個延遲經(jīng)平均的相關性(ametric[])超過相關門限(Thr-Coh)時就出現(xiàn)檢測到有一個強回聲的條件。在圖11下方所示的ametric直方圖例中,這出現(xiàn)在延遲(Tau)31或820ms處,因為出現(xiàn)在由Tau為31表示的延遲處的最大平均相關值超過了例如為0.25的相關門限。
如圖12a和12b所示,步驟5為檢測來話信道中的第一弱回聲和第二弱回聲。在滿足圖12a中所示的四個條件中的任何條件時,就檢測到一個第一弱回聲。這四個條件i)至iv)中的每個條件都是用來檢查與延遲量有關的平均相關性(ametric[])和與延遲量有關的原始相關性的最大峰值的直方圖(histoA[])之間的關系。如果滿足這四個條件中的任何條件,就檢測到了一個第一弱回聲,然后通過測試是否滿足圖12b所示的四個條件中的任何條件來檢測是否存在一個第二弱回聲。檢測第二弱回聲的四個條件的每個條件都是用來檢查與延遲量有關的平均相關性(ametric[])和與延遲量有關的原始相關性的第二最大峰值的直方圖(histoB[])之間的關系。
圖13所示的步驟為對所檢測到的回聲的時間延遲進行平滑。圖中示出了一種平滑算法和一個在區(qū)域Tp至Tn(在30和32之間)的ametric曲線。
圖14所示的步驟7為在整個呼叫期間一直掃描與延遲量有關的原始相關性(amt.ametric[])的回聲跟蹤。如圖所示,這跟蹤包括對到達的(即檢測到的)第一和第二回聲進行累加計數(shù)。
最后,圖15所示的步驟8為判決是否有回聲。如果第一或第二回聲的到達數(shù)(track.Tcount A和track.TcountB)超過到達數(shù)門限(MinCntA和MinCntB),則置回聲存在標志。
下面將結合圖16-23較為詳細地說明消除回聲的跟蹤削波算法。跟蹤削波程序可以分為兩部分,一部分用來消除爆裂聲,另一部分用來消除回聲。
跟蹤削波的爆裂聲消除部分用來檢測來話信道中可能由于在去話和來話信道之間通信鏈路中加有分支的回聲消除器而出現(xiàn)的高度非線性回聲。為了消除爆裂聲,在數(shù)組TotPowIn[]中存入了相繼四個10ms的來話幀,如圖16A所示。爆裂聲按照圖16B中所列的兩個條件進行檢測。這兩個條件用來檢驗相繼來話幀之間的功率突然變化情況。由于功率的突然變化會產(chǎn)生與話聲或回聲特性不同的幅度尖峰或短脈沖,因此可以從話聲或回聲中區(qū)別出來。在滿足這兩個條件時,就切斷來話信道30ms(用噪聲充填代替)。圖16C示出了跟蹤削波器檢測到了在500-600和800-900時間索引內的爆裂聲而代之以背景噪聲充填的例子。
下面將詳細說明回聲消除的情況。跟蹤削波算法的回聲消除部分用來檢測在來話信道當前處理時間的回聲。圖17A列出了跟蹤削波邏輯所需輸入,而圖7B列出了跟蹤削波算法所計算的、用來確定什么時候消除本地發(fā)話人去話信號的回聲的各個變量。
倒頻譜距離(Cep-dist)與來話和去話信道之間的頻譜距離有關,根據(jù)來話信道的線性預測(lpc)模型和在所測得的回聲延遲的去話信道的lpc模型(lpc模型的階為L)按圖18所示的算式計算,其中l(wèi)pc[n]為對于來話信道當前話聲幀的線性預測模型(L階);以及l(fā)pc-us[ntau]為對于去話信道經(jīng)延遲(延遲量由回聲延遲估計算得)的話聲幀的線性預測模型(L階)。
圖19A至圖22的偽碼總結了將當前的10ms來話幀判為回聲需滿足的條件。圖19B給出了對于倒頻譜距離為0.22時的來話與去話信道功率譜之間的關系,而圖19C給出了對于倒頻譜距離為1.06時的來話與去話信道功率譜之間的關系。注意,前面的圖19B示出了來話和去話以倒頻譜距離為0.22功率譜實際對準的情況,而圖19C則示出了勉強滿足頻譜匹配條件的情況。對于跟蹤削波程序啟動它的削波模式來說,理想情況應該是來話信道和經(jīng)延遲的去話信道之間滿足倒頻譜距離條件達到頻譜匹配。圖19的算法方框1和2與頻譜匹配有關,特別是與為了啟動消除所檢測到的一個回聲而必需滿足的除頻譜匹配以外的其他條件有關。
圖20給出了在沒有頻譜匹配時進行削波的算法方框3、4和5。方框3在兩個信道都判定為話聲但沒有檢測到頻譜匹配時執(zhí)行。方框4在去話信道判定為噪聲而來話信道判定為話聲時執(zhí)行。方框5在來話和去話兩個信道都判定為噪聲時執(zhí)行。圖21給出了其他的削波狀況,步驟6和7。方框6消除一個前面沒有消除的樣點,如果這個樣點是在兩個消除樣點之間的話。方框7含有在上個來話幀中檢測到回聲時應繼續(xù)削波的其他狀況。圖22給出了禁止削波的狀況,如算法方框8、9和10所示。方框8用來在識別出來話信道中開始有遠端話聲后禁止削波。方框9和10用來在識別出雙方發(fā)話狀況時也通過復位clip-echo標志來禁止削波。在跟蹤削波算法的最后,如果clip-echo標志是置位的,就消除來話幀輸出,否則就不作任何處理讓它通過。
其他削波狀況將在以后對給出本發(fā)明總體情況并示出消除未被上述削波器校正的殘留回聲影響的圖27的討論中加以說明。
圖23示出了一段時間序列數(shù)據(jù),是一個跟蹤削波器用算法方框1至7(除了方框2)的條件檢測回聲的回聲消除算法的實例。圖23A示出了一個回聲消除前的時間序列,來話話聲信號在4000至5500之間,而在0至3500存在著不希望有的回聲。圖23B示出了回聲消除后的時間序列,原有回聲的間隙已用噪聲加以填充。
下面將結合圖24至26較為詳細地說明噪聲填充算法。圖24列出了噪聲填充過程的各個輸入。噪聲填充算法用來在每當檢測到有削波狀況時(例如,跟蹤削波器消除回聲時)就用噪聲背景配入來話信道。
圖26A示出了噪聲填充子程序noise-fill()的偽碼。在檢測到80ms的相繼來話“實際”噪聲幀并將之存入Noise[]數(shù)組(除DCME噪聲幀以外)以前噪聲填充算法一直處于初始化狀態(tài)。雖然是處在初始化狀態(tài)(Nfill=0),但由于通過零填充進行了削波,因此仍需要某種噪聲填充。初始化后(Nfill=1),噪聲填充將噪聲背景配入來話信道。這里說明的是兩種噪聲,然而,如果需要的話,可以用音調噪聲和白噪聲以外的其他噪聲類型對算法加以補充。
噪聲填充算法的第一個步驟是確定噪聲的特性。圖25A給出了確定噪聲填充應該是音調噪聲還是白噪聲填充。如圖所示,噪聲特性是根據(jù)所收集到的來話信道噪聲的頻域和時域特性來確定的。如果收集到的來話信道噪聲的頻譜滿足功率門限準則而收集到的來話信道噪聲的時間序列又滿足相關門限準則,那么這種噪聲就歸為以Nperiod表示音調噪聲周期的音調噪聲。如果不滿足這兩個準則中的任何一個準則,那么噪聲就歸為白噪聲,Nperiod設置為800??梢赃x擇lag1和lag2的值,使得在33Hz至2666Hz之間的音調得到檢測。圖25B示出一個音調噪聲的自相關情況的例子。
一旦確定了噪聲的特性,對于白噪聲填充來說,通過從Noise[]數(shù)組中隨機選取樣點來進行填充。圖26B和26C示出了用Noise[]數(shù)組進行白噪聲填充的例子。
對于音調噪聲來說,要根據(jù)存儲在Nperiod變量中的音調持續(xù)期漸增地從Noise[]數(shù)組模塊中選取樣點進行填充。對于這兩種填充情況,填充功率將與Noise[]數(shù)組或上一個話聲幀的輸出功率的最小值匹配。圖26D和26E示出了從Noise[]數(shù)組產(chǎn)生音調噪聲填充的例子。
圖27A示出了本發(fā)明用于進一步降低噪聲和加以改進的系統(tǒng)中的總體情況。遠端接收通路接在圖的左上方,而近端的發(fā)送通路示在左下方。對于每個通路分別在方框2714和2716處各配置了一個在本技術領域眾所周知的簡單的語音活動檢測器。在接收通路中沒有語音活動時,提供一種噪聲降低算法,例如按照Woodson D.Wynn在1993年11月30日提出的美國專利申請No.08/160,770和后來在1995年5月31日提出的部分繼續(xù)的美國專利申請No.08/455,932。
上述本發(fā)明的跟蹤削波器示于方框2715,它按照在方框2701的延遲估計計算啟動削波控制方框2704。如前面所述的延遲跟蹤示于方框2702,它將一個輸入提供給殘留遠端削波(RFEC)激活方框2703。作用于接收通路的話聲波形鑒別方框2705將一個輸入提供給RFEC削波器2706,再由削波器2706啟動削波控制器2704。如下面還將說明的那樣,發(fā)送通路中的語音活動檢測器2716提供一個輸入給回聲窗預測過程2707,再由它控制RFEC削波器2706。
殘留回聲的影響可能出現(xiàn)在來自遠端的來話幀中。殘留遠端回聲的特征是與基準語音信號不呈線性關系,而且能量小、突發(fā)、持續(xù)期短、零星散布和不連續(xù)。因此,RFEC削波器根據(jù)它本身的包括信號功率的斜升在內的測量數(shù)據(jù)組、跟蹤削波器2715的削波狀態(tài)和來自檢測器2716的發(fā)話聲似然性進行操作。雖然跟蹤削波器2715象上面所述那樣利用對相關性計算的長期平均,但RFEC削波器并不利用相關性。按圖27C和27D,RFEC削波器保持例如對一個具有10幀的循環(huán)緩存器中100ms的接收信號電平的滑動估計。在每個幀中,計算出包括大部分話聲能量的頻率低于2000Hz的信號功率,根據(jù)一組在一個殘留回聲預期電平左右的固定門限得出信號電平的估計。這個信號電平的估計降低了斜升檢測的信號功率起伏。參見圖27C,在例如循環(huán)緩存器中的五個交疊、相隔幀的信號電平的加權滑動估計超過門限(即22222)時,就作出功率斜升的判決。如圖27D所示,100ms話聲信號的加權信號電平用下式算得加權信號電平=(t+4幀的信號電平)*10000+(t+2幀的信號電平)*1000+(t幀的信號電平)*100+(t-2幀的信號電平)*10+(t-4幀的信號電平)*1循環(huán)緩存器中這些幀的加權系數(shù)由接收到相應幀的次序確定。由于這算法具有四幀的處理延遲,因此如果在時間“t”的幀是輸出幀,那么在時間t+4的t+4幀就是當前接收到的幀,而幀t-1、t-2、…、t-5都是已經(jīng)按時輸出的幀。如果跟蹤削波器2715沒有消除一個幀而信號功率高于預定門限或功率電平指示是在一個回聲窗(下面將詳細說明)內的功率斜升,那么RFEC削波器2706就不對這個幀作任何處理,讓它通過。
如果信號電平低于殘留回聲門限,而且不具有發(fā)話聲特征(即按圖27E進行的格式檢測)或在回聲窗內信號持續(xù)期小于50ms,那么RFEC削波器2706將消除這個突發(fā)性的殘留回聲信號而代之以適當?shù)脑肼曁畛?由方框2713提供)。參見圖27E,最好通過對語音信號頻譜的格式檢測來作出是否為發(fā)話聲的判決。格式由從每個語音信號幀的線性預測計算(LPC)得出的頻譜峰值和相鄰譜線(LSF)的接近程度指示。圖27E示出了從LPC得出的一個發(fā)話聲信號的頻譜、LPC頻譜包絡和10根譜線。例如,左起第一對LSF所指示的一個頻譜峰說明一個格式頻率在480Hz左右,而左起第三對LSF指示另一個格式頻率在1700Hz左右。
再看一下圖27B,在檢測到回聲而RFEC算法啟動時,可能出現(xiàn)回聲的時間間隔(稱為回聲窗)的大小和位置可以如圖所示根據(jù)基準功率電平(即近端發(fā)送電平)、測得的回聲延遲、語音檢測和回聲損耗電平得出。FREC削波器2706還測量跟蹤削波器2715在回聲窗內的活動情況。如果跟蹤削波器2715在一個它已經(jīng)有效消除回聲的回聲窗內停止削波,那么RFEC削波器2706將在沒有格式檢測的幀內繼續(xù)消除回聲。下面將逐個說明方框2701-2707的工作情況。
方框2701進行以上結合圖6和8所說明的相關計算,用來確定發(fā)射和接收信號之間的回聲延遲。延遲跟蹤方框2702對方框2701得到的計算結果進行跟蹤,產(chǎn)生一個穩(wěn)定的回聲延遲估計(毫秒)。如果延遲是在例如200至1000毫秒的范圍內,RFEC啟動控制方框2703使削波控制方框2704通過開關2710和2713為跟蹤削波器方框2715和RFEC削波器2706雙方開始消除回聲和填充噪聲。殘留遠端回聲削波器2706通過同樣的削波控制功能2704進行工作,因此在跟蹤削波器2715不工作時進行削波。
削波控制器2704控制算法的輸出。在削波控制器2704受到RFEC啟動2703的驅動后,如果有一個信號幀需要消除,控制標志就可以由跟蹤削波器2715和RFEC 2706相應加以置位。如果有一個削波標志被置位,削波控制器2704就控制開關,用適當?shù)脑肼曁畛?711來代替信號幀。如果沒有削波標志被置位,開關2710輸出的接收信號本算法不加處理,延遲一段固定的10ms時間(用來補償處理時間)通過。類似,30ms延遲2708用來補償噪聲降低處理2709,這取決于開關2710的開關位置。
下面將說明話聲波形鑒別器方框2705。話聲波形鑒別器2705測量輸入或接收信號幀是含有發(fā)話聲還是含有功率斜升。再來看圖27E,對于每一個幀,計算出頻率低于2000Hz的信號功率和前兩對相鄰譜線的頻譜峰值電平的測量值。參見圖27C,如果功率電平超過門限,而且按它的100ms的歷程來看呈增長趨勢,那么就為當前信號幀將一個功率斜升標志置位。如果頻譜峰值超過門限,就將一個格式檢測標志置位。這些測量值存儲在一個100ms(即10幀)的循環(huán)緩存器內。
在回聲窗預測器2707指示了回聲窗(見圖27B)時,RFEC削波器2706從話聲波形鑒別器2705取得那些測量值,確定所接收的信號是否應該消除。如果信號電平低于殘留回聲門限而且不具有發(fā)話聲特征(即格式檢測),或者在回聲窗內信號的持續(xù)期小于50ms,那么就將削波控制器2704中的一個標志置位,以消除這信號。
參見圖27B,在檢測到回聲而且RFEC算法啟動時,回聲窗預測器2707將預測接收信號的可能出現(xiàn)回波的時間間隔。由于殘留回聲受到非線性失真,因此不再與它的原來的信號相象,從而作為一個預測器不能用相關性計算?;芈暣案鶕?jù)來自近端發(fā)送的基準功率電平、來自延遲跟蹤2702的所測回聲延遲、來自語音活動檢測器2716的語音檢測和來自延遲跟蹤2702的回聲損耗電平得出。
因此,以上示出和說明了一種作為實現(xiàn)遠端回聲控制算法的算法,這種算法用來檢測回聲(無論是強回聲還是弱回聲)、跟蹤回聲、消除回聲(包括殘留回聲影響)和用電平適當?shù)囊环N或另一種檢測到的噪聲來填充消除回聲而留下的空隙。本發(fā)明可用于遠程通信技術領域或其他領域。所有在這里所參考的美國專利或專利申請全部內容應認為列作本申請的參考。應當指出的是本發(fā)明的專利保護范圍僅由所附權利要求書限定。
權利要求
1.一種處理在一個本地發(fā)話人與一個遠地發(fā)話人之間的語音通信期間所產(chǎn)生的遠程通信信號的裝置,所述裝置包括一個信號處理器,用來處理遠程通信信號的樣點;以及一個循環(huán)緩存器,用來存儲遠程通信信號的樣點。
2.按權利要求1所提出的裝置,其中為近端信號配置了一個循環(huán)緩存器,還為遠端信號配置了一個循環(huán)緩存器。
3.按權利要求2所提出的裝置,其中所述遠端信號循環(huán)緩存器包括一系列構成遠端話聲幀的數(shù)據(jù)結構。
4.按權利要求1所提出的裝置,其中所述經(jīng)采樣的遠程通信信號被匯集成一系列交疊的樣點塊。
5.按權利要求1所提出的裝置,其中所述信號處理器包括一組具有頂至底控制結構的軟件模塊。
6.按權利要求1所提出的裝置,其中所述信號處理器包括對近端和遠端信號進行響應的一個語音活動檢測器和一個延遲估計器,以及一個對延遲估計器和語言活動檢測器進行響應、用來消除回聲的跟蹤削波器。
7.按權利要求6所提出的裝置,其中所述信號處理器還包括一個對回聲消除作出響應、插入噪聲填充的噪聲填充功能塊。
8.按權利要求1所提出的裝置,其中所述信號處理器包括一個對本地和遠地信號進行響應的延遲估計器和一個對延遲估計器進行響應的跟蹤削波器。
9.按權利要求1所提出的裝置,其中所述信號處理器包括一個話聲波形鑒別器、一個回聲窗預測器和一個對所述話聲波形鑒別器和所述回聲窗預測器進行響應、用來消除殘留回聲的削波器。
10.一種處理在一個本地發(fā)話人與一個遠地發(fā)話人之間的語音通信期間所產(chǎn)生的遠程通信信號的方法,所述方法包括下列步驟將通信信號數(shù)據(jù)存入一個循環(huán)緩存器;以及在1)計算和平均功率譜和交叉譜,和2)計算相關性之間分配實時處理任務。
11.一種如在權利要求10中所提出的方法,其中所述循環(huán)緩存器存儲一系列交疊的樣點塊。
12.一種如在權利要求11中所提出的方法,其中第一和第二循環(huán)緩存器分別存儲近端和遠端信號,所述方法還包括檢索循環(huán)緩存器的步驟。
13.一種如在權利要求10中所提出的方法,所述方法還包括將信號延遲計算數(shù)據(jù)組織在一些數(shù)據(jù)結構內的步驟。
14.一種如權利要求11中所提出的方法,其中所述存儲步驟還包括獲取話聲幀、執(zhí)行頻譜計算和對幀進行計數(shù)直到達到一個確定相關性所需的預定幀數(shù)這幾個步驟。
15.一種如在權利要求14中所提出的方法,其中所述執(zhí)行頻譜計算的步驟之前有進行加海寧窗和付立葉分析這兩個步驟。
16.一種如在權利要求15中所提出的方法,其中所述付立葉分析之后接著進行抽取處理。
17.一種處理在一個本地發(fā)話人與一個遠地發(fā)話人之間的語音通信期間所產(chǎn)生的遠程通信信號的方法,所述方法包括下列步驟將近端和遠端數(shù)據(jù)的輸入數(shù)據(jù)流組織入循環(huán)和非循環(huán)緩存器;計算與近端和遠端數(shù)據(jù)之間最大相關性相應的數(shù)據(jù);以及確定回聲位置。
18.一種如在權利要求17中所提出的方法,所述方法還包括消除所述回聲和用噪聲填充代替所述回聲這兩個步驟。
19.一種如在權利要求17中所提出的方法,所述方法還包括確定爆裂聲的位置和用噪聲填充代替所述爆裂聲這兩個步驟。
20.一種如在權利要求17中所提出的方法,所述方法還包括檢測語音活動情況、預測回聲窗和確定殘留回聲影響位置這幾個步驟。
21.一種為了減小在一個本地發(fā)話人與一個遠地發(fā)話人之間的語音通信期間出現(xiàn)的回聲的影響對遠程通信信號的處理方法,所述方法包括下列步驟檢測回聲;跟蹤所述回聲;消除所述回聲;以及用噪聲填充所述回聲消除后留下的空隙。
22.一種如在權利要求21中所提出的為了減小回聲影響對遠程通信信號的處理方法,所述方法還包括下列步驟檢測來話信道中的高度非線性回聲;以及如果檢測到的話,對來自遠地發(fā)話人的來話信道進行削波。
23.一種如在權利要求21中所提出的為了減小回聲影響對遠程通信信號的處理方法,所述方法還包括下列步驟跟蹤噪聲;以及確定所存在的是至少兩種噪聲中的哪種噪聲,而所述用噪聲填充回聲消除后留下的空隙的步驟還包括用所確定的那種噪聲填充所述空隙這個步驟。
24.一種如在權利要求23中所提出的信號處理方法,其中所述確定噪聲類型的步驟包括確定噪聲具有音調噪聲還是白噪聲的特征這個步驟。
25.一種如在權利要求24中所提出的信號處理方法,其中所述噪聲填充的步驟在用音調噪聲填充時包括產(chǎn)生一些在語音頻率范圍內的音調頻率這個步驟。
26.一種為了減小回聲影響對遠程通信信號的處理方法,所述方法包括下列步驟計算倒頻譜距離;匹配來話和去話信道的功率譜;以及根據(jù)功率譜匹配情況確定削波的延遲和功率電平條件。
27.一種如在權利要求26中所提出的方法,所述方法還包括對來話和去話信道加海寧窗、快速付立葉分析和抽取快速付立葉分析結果這幾個預備步驟。
28.一種消除爆裂聲的方法,所述方法包括下列步驟存儲一組來話數(shù)據(jù)幀;以及識別相繼來話數(shù)據(jù)幀之間的非話聲性的尖峰形的功率變化。
29.一種如在權利要求28中所提出的方法,所述方法還包括消除尖峰形功率變化并代之以噪聲填充這個步驟。
30.一種從所接收的由遠端產(chǎn)生的信號中消除回聲的裝置,所述裝置包括一個語音活動檢測器,用來檢測在所接收的遠端信號和近端信號中的語音活動情況;一個延遲估計器,用來估計所接收的遠端信號和近端信號中的延遲;以及一個跟蹤削波器,所述跟蹤削波器對語音活動檢測器和延遲估計器進行響應,用來驅動對回波的消除操作。
31.按權利要求30所提出的消除回聲的裝置,所述裝置還包括一個用噪聲代替被消除的回聲的噪聲填充器。
32.按權利要求30所提出的消除回聲的裝置,所述裝置還包括一個對檢測接收信號中語音活動情況的所述語音活動檢測器進行響應、用來降低噪聲的降噪器。
33.按權利要求30所提出的裝置,所述裝置還包括一個對延遲估計器進行響應的延遲跟蹤器和一個對所述延遲跟蹤器進行響應的殘留遠端回聲驅動器。
34.按權利要求30所提出的裝置,所述裝置還包括一個對接收信號進行響應的話聲波形鑒別器、一個對檢測發(fā)送信號中語音活動情況的語音活動檢測器進行響應的回聲窗預測器和一個用來驅使消除殘留回聲影響的殘留遠端回聲削波器。
35.按權利要求34所提出的裝置,所述裝置還包括一個用噪聲代替被消除的殘留回聲的噪聲填充器。
36.一種能實時操作、處理在包括一個本地信號和一個遠地信號的聲頻通信期間所產(chǎn)生的遠程通信信號的裝置,所述裝置包括一個延遲估計器,用來尋求與一個如本地發(fā)話人從一個遠地發(fā)話人接收到那樣的本地信號回聲相應的延遲;以及一個跟蹤器,用來維護整個聲頻通信期間的延遲估計。
37.一種檢測遠程通信信道中出現(xiàn)回聲的方法,所述方法包括下列步驟存儲經(jīng)平均的遠程通信信道延遲相關性的相關性直方圖;以及根據(jù)相關性直方圖的峰值是否超過一個相關性門限檢測是否出現(xiàn)回聲。
38.一種將遠程通信信道噪聲歸為音調噪聲的方法,所述方法包括下列步驟確定所收集的來話遠程通信信道信號的頻譜是否滿足功率門限準則;確定所收集的來話信道信號的時間序列是否滿足相關性門限準則;以及如果對于功率和相關性的門限準則都滿足,則將這噪聲歸為音調噪聲。
全文摘要
為了減小在一個本地發(fā)話人與一個遠地發(fā)話人之間的語音通信期間的回聲的影響,應用循環(huán)緩存器存儲近端和遠端信號以節(jié)約處理時間。通過遞增索引處理和檢索交疊的樣點塊,產(chǎn)生一個存儲去話和來話樣本之間幅度相關性對時間延遲的關系的數(shù)組。回聲根據(jù)功率譜匹配情況予以消除。被消除的回聲用電平適當?shù)闹辽賰煞N噪聲(音調噪聲和白噪聲)之一的噪聲填充代替。
文檔編號H04B3/23GK1195932SQ9810612
公開日1998年10月14日 申請日期1998年4月1日 優(yōu)先權日1997年4月2日
發(fā)明者露易斯·E·卡瑟拉斯, 琳達·安·塞爾澤, 克里夫·隋 申請人:美國電報電話公司