專利名稱:消除回聲的優化方法、裝置及系統的制作方法
技術領域:
本發明涉及計算機通信技術領域,尤其涉及一種消除回聲的優化方法、裝置及系統。
背景技術:
在語音通信中,有一個很影響通話質量的因素就是回聲。回聲就是指,說話者通過通信設備發送給其他人的語音又重新回到自己聽筒里的現象。回聲會對說話者產生嚴重的干擾,必須想辦法消除。一般,回聲分為兩種,即“電路回聲”和“聲學回聲”。“電路回聲”可以通過硬件設備的合理設計而消除,在此不作討論。而本發明則是對“聲學回聲”所作的優化處理。“聲學回聲”是指遠端用戶的聲音從聽筒出來以后,經過空氣或其他的傳播媒介傳到近端用戶的話筒,再通過話筒錄音后又重新傳到遠端用戶的聽筒中形成的回聲。當近端用戶的放音音量比較大而錄音設備和放音設備距離比較近時回聲尤其明顯。“聲學回聲”受近端用戶環境的影響,可能產生多路回聲,各個回聲的路徑不同,延遲各異,因而難以消除。對于聲學回聲消除,常見的消除算法有2類,S卩回聲抑制(acoustic echosuppression)算法禾口聲學回聲消除(acoustic echo cancellation)算法。回聲抑制算法是較早的一種回聲控制算法。回聲抑制是一種非線性的回聲消除。它通過簡單的比較器將準備由揚聲器播放的聲音與當前話筒拾取的聲音的電平進行比較,如果前者高于某個閾值,那么就允許傳至揚聲器,而且話筒被關閉,以阻止它拾取揚聲器播放的聲音而引起遠端回聲。如果話筒拾取的聲音電平高于某個閾值,揚聲器被禁止,以達到消除回聲的目的。由于回聲抑制是一種非線性的回聲控制方法,會引起揚聲器播放的不連續,影響回聲消除的效果,隨著高性能的回聲消除器的出現,回聲抑制已經很少有人使用了。聲學回聲消除算法(AEC,ACOustiC Echo Canceller)的回聲消除接口的一般形式為AecFunction (input frame, playback frame, out frame),其是對揚聲器信號與由它產生的多路徑回聲的相關性為基礎,以等量的播放數據輸入作為建立回聲模型的參考數據,利用它對回聲進行估計,并不斷地修改濾波器的系數,使得估計值更加逼近真實的回聲;然后,將回聲估計值從話筒的輸入信號中減去,從而達到消除回聲的目的。其中,回聲消除器的初始化需要兩個參數一次處理的數據量(幀長)和估計的錄音中回聲相對于錄音開頭的偏移量,該偏移量即回聲相對于錄音的延遲的最大值,主要由兩放音延遲和錄音延遲兩部分組成。由于所有的回聲消除器支持的尾長都有一個范圍,偏移量超過這個范圍的回聲就無法消除了,因此回聲消除的效果則跟回聲偏移量的大小息息相關。然而現有的消除回聲的技術大多存在錄音開頭偏移量無法控制的缺陷,從而導致回聲消除的效果欠佳。
發明內容
本發明的主要目的在于公開一種消除回聲的優化方法、裝置及系統,以解決現有的回聲消除器因尾長過長而導致的消除效果不佳的問題。為達上述目的,本發明公開一種消除回聲的優化方法,包括以下步驟通過錄音線程獲取錄音數據,其中所述錄音線程先于放音線程啟動;獲取放音采樣率及其對應的放音緩沖區長度,根據所述放音采樣率及其對應的放音緩沖區長度計算放音延遲時長;當放音數據傳送至回聲消除器以啟動所述回聲消除器后,分離出所述回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個所述放音延遲時長的錄音數據;將所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給所述回聲消除器,供其進行回聲消除處理。為達上述目的,本發明還公開一種消除回聲的優化裝置,包括錄音數據獲取模塊,用于通過錄音線程獲取錄音數據,其中所述錄音線程先于放音線程啟動;放音延遲時長計算模塊,用于獲取放音采樣率及其對應的放音緩沖區長度,根據所述放音采樣率及其對應的放音緩沖區長度計算放音延遲時長;錄音數據發送模塊,用于當放音數據傳送至回聲消除器以啟動所述回聲消除器后,分離出所述回聲消除器啟動后所述錄音數據獲取模塊所得到的錄音數據中排列在前的且對應一個所述放音延遲時長計算模塊所計算的放音延遲時長的錄音數據;將所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給所述回聲消除器,供其進行回聲消除處理。為達上述目的,本發明還公開一種消除回聲的優化系統,包括用于獲取放音數據和錄音數據以進行AEC回聲消除的回聲消除器以及與該回聲消除器建立通信連接的優化裝置,其中,該優化裝置用于執行下述的操作通過錄音線程獲取錄音數據,其中所述錄音線程先于放音線程啟動;獲取放音采樣率及其對應的放音緩沖區長度,根據所述放音采樣率及其對應的放音緩沖區長度計算放音延遲時長;當放音數據傳送至回聲消除器以啟動所述回聲消除器后,分離出所述回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個所述放音延遲時長的錄音數據;將所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給所述回聲消除器,供其進行回聲消除處理。與現有技術相比,本發明公開的消除回聲消除的優化方法、裝置及系統至少具有以下優點錄音線程先于放音線程啟動,放音數據先于錄音數據到達回聲消除器,確保了回聲消除效果的完整性。且在回聲消除器啟動后,分離出回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個所述放音延遲時長的錄音數據,只對回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據進行回聲消除處理,使得回聲消除器處理的錄音數據相對于放音數據的延遲減小了放音延遲這么長,減少了回聲消除器處理回聲的尾長;尾長越小,則同樣長度的數據回聲消除器的處理時間越短,回聲消除算法的收斂也越快,即開始消除回聲的時間越早;從而對回聲消除的效果起到了很好的優化作用。
圖1是本發明實施例公開的消除回聲的優化方法的流程圖;圖2是本發明實施例公開的消除回聲的優化系統的架構圖;圖3是本發明實施例公開的一種消除回聲的優化裝置的結構框圖;圖4為本發明實施例公開的又一種消除消除回聲的優化裝置的結構框圖。
具體實施例方式下面結合說明書附圖對本發明的具體實現方式做一詳細描述。AEC 回聲消除器其接口的一般形式為AecFunction(input frame, playbackframe, out frame),對錄音數據進行回聲消除需要等量的播放數據輸入作為建立回聲模型的參考數據。其中,回聲消除器的初始化需要兩個參數一次處理的數據量(即幀長)和估計的錄音中回聲相對于錄音開頭的偏移量,即回聲相對于錄音的延遲的最大值(即尾長)。本發明實施例所作的優化主要是針對回聲消除器的參數所作出的,其優化方法,如圖1所示,具體包括步驟Si、通過錄音線程獲取錄音數據,其中錄音線程先于放音線程啟動。該步驟中,錄音線程先于放音線程啟動的時間應盡量控制在一個比較短的時間內,而不是兩者之間的時間差越大越好;較佳的,可以將錄音線程先于放音線程啟動的時間控制在一個錄音延遲時長內;而通常,只要錄音線程開始工作了就可以去啟動放音線程了。該步驟中,所謂錄音線程主要是指從通信終端的錄音接口獲取錄音數據的線程;所謂放音線程主要是指向通信終端的放音接口提供放音數據的線程;其中該錄音接口和放音接口大多由該通信終端的聲卡提供。與本發明實施例不同的,如果先啟動放音線程,那么放音一開始,有數據就會給回聲消除器,而這個時候如果錄音線程還沒開始收集錄音數據,那么開頭的那一段放音數據就不會在錄音數據里得到體現,錄音數據里一開始體現的就是較為靠后的放音數據;因為回聲消除器只能消除它“看到過”的回聲,這樣的話回聲消除器要消除的回聲要在后面的放音數據里才出現,那么就一定消不掉。而本發明實施例所采用的“錄音線程先于放音線程啟動”,那么放音線程里給系統播放的所有數據一定會被完整地在錄音線程得到的錄音數據里體現,從而使得回聲消除處理的效果更徹底。步驟S2、獲取放音采樣率及其對應的放音緩沖區長度,根據放音采樣率及其對應的放音緩沖區長度計算放音延遲時長。該步驟中,通信終端的每個放音采樣率(注采樣率即單位時間內的采樣數)都對應有一個最小的放音緩沖區長度,即每種采樣率下的放音緩沖區不能設置的比這個長度短,其中本發明實施例所述的長度是指數據占用的物理空間,一般以采樣數來進行表征,后續不再贅述。其中,獲取放音采樣率及其對應的放音緩沖區長度可以通過調用一個系統的API接口或與通信終端的中央處理器進行交互來具體實現,為本領域技術人員所能輕易實現的技術,在此不做贅述。在該步驟S2之前,需要通過放音線程或者其它方式設定好放音采樣率及其對應的放音緩沖區長度。在放音過程中,基于近端的通信終端與遠端通信終端在軟硬件上的差異,每次給放音API播放的數據會先根據近端通信終端的軟硬件屬性對放音幀進行重采樣,然后再以重采樣的數據去填充放音緩沖區,只有當放音緩沖區被填滿以后才會真正拿到聲卡去播放。如果放音幀比放音緩沖區長,那么放音不會有延遲。如果放音幀比放音緩沖區短,那么就要等若干個放音幀來填充放音緩沖區,直到填滿以后才開始播放第一幀數據。在這段時間內產生的錄音數據也會被送到回聲消除器里去處理,因此這段時間內造成的數據延遲為(以時長為單位)
放音延遲=-1] *放音幀的時長+聲卡延遲I重米樣到放首米樣率后的放首幀的長度 」(公式一)上述公式一中,〖1表示向上取整,即取不小于該數的最小整數,
示“放音巾貞緩沖長度”除以“重采樣到放音巾貞采
重米樣到放首米樣率后的放首幀的長度
樣率后的放音幀的長度”,“*”為乘法符號。而重采樣到放音采樣率的放音幀的長度=放音幀原始長度/放音幀原始采樣率*放音采樣率(注“/”為除法符號,“*”為乘法符號)。其中,放音幀原始的長度及采樣率分別是指遠端通信終端編碼發送的語音幀的幀長和采樣率。其中聲卡延遲是指聲卡得到放音數據以后到它開始播放這段數據的固有延遲,該延遲一般不超過“最小放音緩沖區播放時長”。通常,移動設備支持的放音采樣率有多種,本發明實施例中,為使通信終端及時地向用戶放音,需將放音延遲控制在比較小的范圍內。為此,參照上述公式一,本發明實施例
優選擇取的放音采樣率為使丨二-1 *放音幀的時長
、重米樣到放首米樣率后的放首幀的長度 」
的值最小的放音采樣率,并將其對應的放音緩沖區長度設置為重采樣到放音采樣率下的放音幀長度的不小于其要求的最小放音緩沖區長度的最小整數倍(即滿足兩個條件,1、將放音緩沖區的長度設置為對應放音采樣率下放音幀長度的整數倍;2、滿足條件1所設置的放音緩沖區的長度的值應大于或等于該放音采樣率所要求的下限值,若大于該下限值,則設置后的值應與該下限值之差越小越好)。其中,當步驟S3、當放音數據傳送至回聲消除器以啟動回聲消除器后,分離出回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個放音延遲時長的錄音數據。本發明實施例中,通常在放音線程提交第一個放音幀數據的同時開啟回聲消除器,因此只有在回聲消除器啟動后才有放音數據的播放,從而使得回聲消除器啟動前的錄音數據中是不含有回聲信息的,即該步驟中分離出的錄音數據是不包含有回聲信息的,因此不參與回聲消除器的回聲處理,可直接轉交給編碼器進行編碼傳輸處理以傳送至遠端的通信終端,以確保數據傳輸的完整性。步驟S4、將回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給回聲消除器,供其進行回聲消除處理。本發明實施例中,我們假設聲音一放出來立即被錄到錄音文件里,忽略其在媒介中的傳播時間,因為實際中最突出的回聲是直接回聲,即聲音從播放設備出來,通過空氣或手機本身直接傳輸到錄音設備,而不是經過反射回到錄音設備,一般直接回聲從放音設備出來再回到錄音設備的時間是很短的,一般不到1毫秒,可以忽略。在該步驟S4中,由于放音延遲的時間是大致固定的(計算公式為式一),作為一種優化方式,我們可以把回聲消除器處理的錄音數據從頭部(即按時間順序排列在前的)先丟掉與放音延遲對應時長的數據,那么回聲消除器所處理的錄音和放音數據之間的延遲就只剩下錄音引起的延遲。由于這部分延遲的長度是不確定的,我們就把這部分延遲可能的最大值再加上一個估計的其他因素(比如移動設備處理數據的時間)引起的延遲作為“尾長”。通過上述步驟,使得回聲消除器處理的錄音數據相對于放音數據的延遲減小了放音延遲這么長,減少了回聲消除器處理回聲的尾長;尾長越小,則同樣長度的數據回聲消除器的處理時間越短,回聲消除算法的收斂也越快,即開始消除回聲的時間越早;從而對回聲消除的效果起到了很好的優化作用。實施例二本實施例是在上述實施例一的基礎上對播放數據的聲音對應的回聲在錄音數據中出現的位置相對于錄音的開頭的偏移量做進一步的優化。具體的,由于回聲偏移量的大小主要是由放音延遲和錄音延遲兩部分組成,本實施例則是在實施例一的基礎上,對錄音延遲做進一步的優化處理。錄音也和放音一樣,在每種錄音采樣率下錄音緩沖區長度都有一個下限,錄音緩沖區只能設置得比這個長度長或和這個下限值一樣。當錄音數據填滿第一個緩沖區以后, 我們才能從錄音API中獲得第一個錄音塊,由于回聲消除的原因,我們每次都要從錄音數據里取得和放音幀“等長”(這里的“等長”是指播放時長相等)的錄音幀來進行處理。在放音線程得到第一個放音幀、開始回聲消除這個時刻之后,我們從錄音API里得到的錄音數據里包含有多少在回聲消除開始之前就錄到的正常數據(即錄音延遲)則跟錄音幀長度以及錄音緩沖區的長度都有關。如果錄音緩沖區的長度不是錄音幀長度的整數倍,錄音數據里錄到的回聲消除前的聲音數據的時長最大可能是一個錄音幀時長加上填滿一個錄音緩沖區需要的數據對應的播放時長之和。舉例說明比如錄音緩沖區長度是錄音幀長度的 1. 5倍,可能上一次取錄音幀的時候錄音緩沖區里只剩下0. 99倍錄音幀長度的數據,從而導致不能取得錄音幀,而這時又剛好開始下一個錄音緩沖區的填充,從而下一次取得錄音幀又得等這個緩沖區完全填滿,因此到緩沖區填滿以后,這時殘留的錄音數據就是0. 99倍錄音幀長度加上緩沖區的長度,就是2. 49倍錄音幀長度,接近2. 5倍了。而如果錄音緩沖區長度是錄音幀長度的整數倍,那么錄到的回聲消除前的聲音的最大時長就是填滿一個錄音緩沖區需要的數據對應的等待/錄制時長,如下述公式二。
^該錄音采樣率所對應的錄音幀長度的不小于其要求的錄音緩沖E下限值的最小整數倍
求日她遲<-_丄U^+-
錄首米樣率(公式二)因此本實施例優選將通信終端的錄音緩沖區長度設置(該設置的具體實現可以通過一個系統的API接口調用就可以實現了,上述實施例一中對通信終端放音采樣率及其對應的放音緩沖區的參數的擇取及設置也與此類似,為本領域技術人員所熟知的技藝,在此不做詳述)為對應錄音采樣率下的錄音幀長度的不小于其要求的錄音緩沖區下限值的最小整數倍(即滿足兩個條件,1、將錄音緩沖區的長度設置為對應錄音采樣率下錄音幀長度的整數倍;2、滿足條件1所設置的錄音緩沖區長度的值大于或等于該錄音采樣率所要求的下限值,若大于該下限值,則設置后的值與該下限值之差越小越好)。根據上述公式二,錄音延遲跟錄音采樣率和錄音緩沖區的大小(及能容納該采樣率下錄音幀的個數)息息相關。藉此,當通信終端可設置的錄音采樣率為兩個或兩個以上時,擇取的錄音采樣率則為使“對應的錄音采樣率所對應的錄音幀長度的不小于其要求的錄音緩沖區下限值的最小整數倍”與該對應的“錄音采樣率”之商的值最小的錄音采樣率。 依此,則盡可能地縮短了錄音延遲,使得回聲消除器處理的尾長進一步縮短,尾長越縮短, 則同樣長度的數據回聲消除器的處理時間越短,回聲消除算法的收斂也越快,即開始消除回聲的時間越早;從而對回聲消除的效果起到了進一步的優化作用。進一步的當“最小錄音緩沖區長度”與對應的“錄音采樣率”之商存在兩個或兩個以上的最小值時,優選擇取與放音幀原始采樣率最接近的錄音采樣率,以減少回聲消除過程中重采樣所導致的失真。值得說明的是,在本發明實施例中,在回聲消除器進行回聲消除時,為達到良好的回聲消除效果,播放數據的產生速度要和錄音數據的產生速度達到動態平衡,為此如果錄放音數據的采樣率不同,那么需要在回聲消除器進行回聲消除處理前,把他們統一成同一采樣率下的數據以后再進行回聲消除。因此,本發明可在執行上述實施例一中步驟S4 “將回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給回聲消除器,供其進行回聲消除處理”的過程中,首先以回聲消除器的采樣率對回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據進行重新采樣,然后再將重新采樣后的錄音數據發送給回聲消除器。而后,回聲消除器處理之后的數據再按編碼采樣率重采樣,然后編碼、發送。此外,對于實時的語音處理而言,由于網絡的不穩定性,數據包可能在網絡上丟失或者由于過大的延遲而被其他的處理環節丟棄,那么來自遠端的放音幀可能會少于近端錄音產生的數據量,對于這種情況我們必須補充播放數據,以保證放音數據的量和錄音數據量達到平衡。可選的,本發明實施例可以對放音線程數據產生的速度進行控制,當放音數據未均勻緩存至放音數據隊列中時,通過在該放音數據隊列中填充靜音數據或是通過wsola算法來模擬連續語音數據,以控制拿給聲卡播放的數據量和從聲卡獲得的錄音數據量總是保持一致。綜上,在本發明實施例中,通信終端可以結合自身的屬性和回聲消除效果而靈活設置放音采樣率、放音緩沖區長度、錄音采樣率以及錄音緩沖區長度等參數,以優化通話的實時性、確保數據傳輸的完整性并提高語音數據的信噪比。實施例三與上述方法實施例所對應的,本實施例提供一種消除回聲的優化系統及其裝置, 以供通信終端結合自身的屬性和回聲消除效果而靈活設置放音采樣率、放音緩沖區長度、 錄音采樣率以及錄音緩沖區長度等參數,以優化通話的實時性、確保數據傳輸的完整性并提高語音數據的信噪比。如圖2所示,該系統包括用于獲取放音數據和錄音數據以進行AEC 回聲消除的回聲消除器1以及與該回聲消除器1建立通信連接的優化裝置2,其中,該優化裝置用于執行下述的操作通過錄音線程獲取錄音數據,其中該錄音線程先于放音線程啟動;獲取放音采樣率及其對應的放音緩沖區長度,根據該放音采樣率及其對應的放音緩沖區長度計算放音延遲時長;當放音數據傳送至回聲消除器以啟動回聲消除器后,分離出回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個放音延遲時長的錄音數據;將回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給回聲消除器,供其進行回聲消除處理。可選的,上述優化裝置2的內部功能模塊的架構如圖3所示,包括錄音數據獲取模塊21,用于通過錄音線程獲取錄音數據,其中錄音線程先于放音線程啟動;放音延遲時長計算模塊23,用于獲取放音采樣率及其對應的放音緩沖區長度,根據放音采樣率及其對應的放音緩沖區長度計算放音延遲時長(計算公式可參照上述實施例一種的公式一);錄音數據發送模塊25,用于當放音數據傳送至回聲消除器以啟動回聲消除器后, 分離出回聲消除器啟動后錄音數據獲取模塊21所得到的錄音數據中排列在前的且對應一個放音延遲時長計算模塊23所計算的放音延遲時長的錄音數據;將回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給回聲消除器,供其進行回聲消除處理。較佳的,如圖4所示,上述放音延遲時長計算模塊23還包括放音線程管理單元231,用于對放音線程數據產生的速度進行控制,當放音數據未均勻緩存至放音數據隊列中,通過在該放音數據隊列中填充靜音數據或是通過wsola算法來模擬連續語音數據,控制拿給聲卡播放的數據量和從聲卡獲得的錄音數據量總是保持一致。進一步的,該放音線程管理單元231還用于獲取通信終端的放音采樣率及其對應的最小放音緩沖區長度,并將放音緩沖區的時長設置為重采樣到放音采樣率后的放音幀長度的不小于該最小放音緩沖區長度的最小整數倍;以及當通信終端可設置的放音采樣率為兩個或兩個以上時,擇取的放音采樣率為使當L·』,,7:!^··」-l]*放音幀的時長存在兩個或兩個 、重米樣到放首米樣率后的放首幀的長度 」
以上的最小值時,從中擇取與放音幀原始采樣率最接近的放音采樣率。較佳的,如圖4所示,上述錄音數據獲取模塊21還可以進一步包括用于執行下述操作的錄音線程管理單元211 獲取通信終端的錄音采樣率及其對應的最小錄音緩沖區長度,并將錄音緩沖區的長度設置為對應錄音采樣率下的放錄音幀長度的不小于該最小錄音緩沖區長度的最小整數倍;以及當通信終端可設置的錄音采樣率為兩個或兩個以上時,擇取的錄音采樣率為使 “對應的錄音采樣率所對應的錄音幀長度的不小于其要求的錄音緩沖區下限值的最小整數倍”與對應的“錄音采樣率”之商最小的錄音采樣率;以及當“對應的錄音采樣率所對應的錄音幀長度的不小于其要求的錄音緩沖區下限值的最小整數倍”與對應的“錄音采樣率”之商存在兩個或兩個以上的最小值時,從中擇取與該通信終端的編碼采樣率最接近的錄音采樣率。本實施例中,可選的,上述錄音數據發送模塊2在執行將回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給回聲消除器的操作具體為 以回聲消除器的采樣率對回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據及回聲消除器啟動后的錄音數據進行重新采樣;將重新采樣后的錄音數據發送給回聲消除器。進一步的,該錄音數據發送模塊2還用于將分離出的回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個放音延遲時長的錄音數據及回聲消除器啟動前的錄音數據直接發送給編碼器,供其按編碼采樣率重采樣及編碼發送給對端的通信終端。其中該編碼器還用于對回聲消除后的錄音數據以編碼采樣率進行重采樣及編碼發送給對端的通信終端。本實施例公開的消除回聲消除的優化系統及裝置至少還具有以下優點錄音線程先于放音線程啟動,放音數據先于錄音數據到達回聲消除器,確保了回聲消除效果的完整性。且在回聲消除器啟動后,分離出回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個所述放音延遲時長的錄音數據,只對回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據進行回聲消除處理,使得回聲消除器處理的錄音數據相對于放音數據的延遲減小了放音延遲這么長,減少了回聲消除器處理回聲的尾長;尾長越小,則同樣長度的數據回聲消除器的處理時間越短,回聲消除算法的收斂也越快,即開始消除回聲的時間越早;從而對回聲消除的效果起到了很好的優化作用。通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發明可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述的方法。本領域技術人員可以理解附圖只是一個優選實施例的示意圖,附圖中的模塊或流程并不一定是實施本發明所必須的。本領域技術人員可以理解實施例中的裝置中的模塊可以按照實施例描述進行分布于實施例的裝置中,也可以進行相應變化位于不同于本實施例的一個或多個裝置中。上述實施例的模塊可以合并為一個模塊,也可以進一步拆分成多個子模塊。以上公開的僅為本發明的幾個具體實施例,但是,本發明并非局限于此,任何本領域的技術人員能思之的變化都應落入本發明的保護范圍。
權利要求
1.一種消除回聲的優化方法,其特征在于,包括以下步驟通過錄音線程獲取錄音數據,其中所述錄音線程先于放音線程啟動; 獲取放音采樣率及其對應的放音緩沖區長度,根據所述放音采樣率及其對應的放音緩沖區長度計算放音延遲時長;當放音數據傳送至回聲消除器以啟動所述回聲消除器后,分離出所述回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個所述放音延遲時長的錄音數據;將所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給所述回聲消除器,供其進行回聲消除處理。
2.根據權利要求1所述的消除回聲的優化方法,其特征在于,啟動放音線程時還包括 對放音線程數據產生的速度進行控制,當放音數據未均勻緩存至放音數據隊列中時,通過在該放音數據隊列中填充靜音數據或是通過wsola算法來模擬連續語音數據,以控制拿給聲卡播放的數據量和從聲卡獲得的錄音數據量總是保持一致。
3.根據權利要求2所述的消除回聲的優化方法,其特征在于,所述啟動放音線程之前還包括獲取通信終端的放音采樣率及其對應的最小放音緩沖區長度,并將所述放音緩沖區的時長設置為重采樣到放音采樣率后的放音幀長度的不小于該最小放音緩沖區長度的最小整數倍。
4.根據權利要求3所述的消除回聲的優化方法,其特征在于,當通信終端可設置的放音采樣率為兩個或兩個以上時,擇取的放音采樣率為使L^M J^S7二,SSiMMJ^I —1 *放音幀的時長的值最小的放音采樣率。 、重米樣到放首米樣率后的放首幀的長度 」
5.根據權利要求4所述的消除回聲的優化方法,其特征在于,當- O *放音巾貞的時長存在兩個或兩個以上的最小 、重米樣到放首米樣率后的放首幀的長度」值時,從中擇取與所述放音幀原始采樣率最接近的放音采樣率。
6.根據權利要求1至5任一所述的消除回聲的優化方法,其特征在于,所述啟動錄音線程之前還包括獲取通信終端的錄音采樣率及其對應的最小錄音緩沖區長度,并將所述錄音緩沖區的長度設置為對應錄音采樣率下的錄音幀長度的不小于該最小錄音緩沖區長度的最小整數倍。
7.根據權利要求6所述的消除回聲的優化方法,其特征在于,當通信終端可設置的錄音采樣率為兩個或兩個以上時,擇取的錄音采樣率為使“對應的錄音采樣率所對應的錄音幀長度的不小于其要求的錄音緩沖區下限值的最小整數倍”與對應的“錄音采樣率”之商最小的錄音采樣率。
8.根據權利要求7所述的消除回聲的優化方法,其特征在于,當“對應的錄音采樣率所對應的錄音幀長度的不小于其要求的錄音緩沖區下限值的最小整數倍”與對應的“錄音采樣率”之商存在兩個或兩個以上的最小值時,從中擇取與該通信終端的編碼采樣率最接近的錄音采樣率。
9.根據權利要求8所述的消除回聲的優化方法,其特征在于,所述將所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給所述回聲消除器,供其進行回聲消除處理具體為以回聲消除器的采樣率對所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據進行重新采樣;將重新采樣后的錄音數據發送給回聲消除器,供其進行回聲消除處理。
10.根據權利要求8所述的消除回聲的優化方法,其特征在于,還包括將分離出所述回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個所述放音延遲時長的錄音數據及所述回聲消除器啟動前的錄音數據直接發送給編碼器,供其按編碼采樣率重采樣之后編碼發送給對端的通信終端,其中該編碼器還用于對回聲消除后的錄音數據以編碼采樣率進行重采樣及編碼發送。
11.一種消除回聲的優化裝置,其特征在于,包括錄音數據獲取模塊,用于通過錄音線程獲取錄音數據,其中所述錄音線程先于放音線程啟動;放音延遲時長計算模塊,用于獲取放音采樣率及其對應的放音緩沖區長度,根據所述放音采樣率及其對應的放音緩沖區長度計算放音延遲時長;錄音數據發送模塊,用于當放音數據傳送至回聲消除器以啟動所述回聲消除器后,分離出所述回聲消除器啟動后所述錄音數據獲取模塊所得到的錄音數據中排列在前的且對應一個所述放音延遲時長計算模塊所計算的放音延遲時長的錄音數據;將所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給所述回聲消除器,供其進行回聲消除處理。
12.根據權利要求11所述的消除回聲的優化裝置,其特征在于,所述放音延遲時長計算模塊還包括放音線程管理單元,用于對放音線程數據產生的速度進行控制,當放音數據未均勻緩存至放音數據隊列中時,通過在該放音數據隊列中填充靜音數據或是通過wsola算法來模擬連續語音數據,以控制拿給聲卡播放的數據量和從聲卡獲得的錄音數據量總是保持一致。
13.根據權利要求12所述的消除回聲的優化方法,其特征在于,所述放音線程管理單元還用于獲取通信終端的放音采樣率及其對應的最小放音緩沖區長度,并將所述放音緩沖區的長度設置為重采樣到放音采樣率后的放音幀長度的不小于該最小放音緩沖區長度的最小整數倍;以及當通信終端可設置的放音采樣率為兩個或兩個以上時,擇取的放音采樣率為使丨J^S 二,^^立^/^曲]-1 *放音巾貞的時長的值最小的放音采樣率;以 、重米樣到放首米樣率后的放首幀的長度 」及當- 1I *放音_時長存在兩個或兩個以上的最小值時,從中擇取與所述放音幀原始采樣率最接近的放音采樣率。
14.根據權利要求11至13所述的消除回聲的優化裝置,其特征在于,所述錄音數據獲取模塊還包括用于執行下述操作的錄音線程管理單元獲取通信終端的錄音采樣率及其對應的最小錄音緩沖區長度,并將所述錄音緩沖區的長度設置為對應錄音采樣率下的放錄音幀長度的不小于該最小錄音緩沖區長度的最小整數倍;以及當通信終端可設置的錄音采樣率為兩個或兩個以上時,擇取的錄音采樣率為使“對應的錄音采樣率所對應的錄音幀長度的不小于其要求的錄音緩沖區下限值的最小整數倍”與對應的“錄音采樣率”之商最小的錄音采樣率;以及當“對應的錄音采樣率所對應的錄音幀長度的不小于其要求的錄音緩沖區下限值的最小整數倍”與對應的“錄音采樣率”之商存在兩個或兩個以上的最小值時,從中擇取與該通信終端的編碼采樣率最接近的錄音采樣率。
15.根據權利要求11至13所述的消除回聲的優化裝置,其特征在于,所述錄音數據發送模塊在執行將所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給所述回聲消除器的操作具體為以回聲消除器的采樣率對所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據及回聲消除器啟動后的錄音數據進行重新采樣;將重新采樣后的錄音數據發送給回聲消除器。
16.根據權利要求15所述的消除回聲的優化裝置,其特征在于,所述錄音數據發送模塊還用于將分離出所述回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個所述放音延遲時長的錄音數據及所述回聲消除器啟動前的錄音數據直接發送給編碼器,供其編碼發送給對端的通信終端。
17.一種消除回聲的優化系統,其特征在于,包括用于獲取放音數據和錄音數據以進行 AEC回聲消除的回聲消除器以及與該回聲消除器建立通信連接的優化裝置,其中,該優化裝置用于執行下述的操作通過錄音線程獲取錄音數據,其中所述錄音線程先于放音線程啟動;獲取放音采樣率及其對應的放音緩沖區長度,根據所述放音采樣率及其對應的放音緩沖區長度計算放音延遲時長;當放音數據傳送至回聲消除器以啟動所述回聲消除器后,分離出所述回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個所述放音延遲時長的錄音數據;將所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給所述回聲消除器,供其進行回聲消除處理。
全文摘要
本發明公開一種消除回聲的優化方法、裝置及系統,以解決現有的回聲消除器消除效果不佳的問題。本發明公開的消除回聲的方法包括通過錄音線程獲取錄音數據,其中所述錄音線程先于放音線程啟動;獲取放音采樣率及其對應的放音緩沖區長度,根據所述放音采樣率及其對應的放音緩沖區長度計算放音延遲時長;當放音數據傳送至回聲消除器以啟動所述回聲消除器后,分離出所述回聲消除器啟動后所得到的錄音數據中排列在前的且對應一個所述放音延遲時長的錄音數據;將所述回聲消除器啟動后得到的錄音數據中排列在一個放音延遲時長之后的錄音數據發送給所述回聲消除器,供其進行回聲消除處理。
文檔編號G10L21/02GK102568494SQ20121008808
公開日2012年7月11日 申請日期2012年3月29日 優先權日2012年2月23日
發明者周平, 晏利平, 李曉鵬, 楊曉東, 潘年華, 王海, 羅光喜, 胡海, 黃國宏 申請人:貴陽朗瑪信息技術股份有限公司