數據同步方法、裝置及系統(tǒng),回聲消除方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種數據同步方法、裝置及系統(tǒng),回聲消除方法及系統(tǒng),數據同步方法中將接收幀緩沖區(qū)取第一N字節(jié)數據拷貝至播放隊列和參考幀緩沖區(qū),即播放隊列中第一N字節(jié)數據和參考幀緩沖區(qū)的第一N字節(jié)數據是同步且一致的,由于音頻播放線程和音頻錄制線程為同時啟動,因此播放隊列中第一N字節(jié)數據和音頻錄制線程的第二N字節(jié)數據也是同步的,因此參考幀緩沖區(qū)的第一N字節(jié)數據和音頻錄制線程的第二N字節(jié)數據為同步的,并且兩者是同時放入回聲消除線程中,因此兩者在回聲消除線程中也是同步的。采用本發(fā)明提供的數據同步方法能夠很好的解決第一終端和第二終端的數據不同步的問題,進而能夠更好的解決第一終端聽到回聲問題,提升用戶體驗。
【專利說明】數據同步方法、裝置及系統(tǒng),回聲消除方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及移動通信領域,尤其涉及一種數據同步方法、裝置及系統(tǒng),回聲消除方法及系統(tǒng)。
【背景技術】
[0002]在即時語音通訊應用中,兩個終端通常都是采用外置喇叭放音,這樣必然會產生回音。假設有兩個用戶分別使用第一終端和第二終端在通話。如圖1所示,首先,第一終端的聲音傳輸至第二終端,第二終端用喇叭將聲音放出來,而這時第二終端的麥克則會采集喇叭放出來的聲音,然后回傳至第一終端,使用第一終端的用戶A就會聽到和自己剛才說話一樣的聲音,這就是回聲。
[0003]為了消除這種回聲提升用戶體驗,現(xiàn)有技術中在第二終端增加了一種軟件“聲學回聲消除器”,其原理是將第一終端的聲音A先發(fā)送至聲學回聲消除器,然后再由喇叭放出來,然后第二終端的麥克采集聲音B,將聲音B也發(fā)送至聲學回聲消除器,聲學回聲消除器將聲音B中包含聲音A的聲音去掉,將剩余聲音回傳至第一終端,這樣使用第一終端的用戶便不會聽到自己說話的聲音。
[0004]現(xiàn)有技術中第二終端先將聲音A放入聲學回聲消除器中,后將聲音B放入聲學回聲消除器中,由聲學回聲消除器對兩者聲音數據進行同步,在聲音A和聲音B進入聲學回聲消除器之前并沒有對兩者聲音數據的進行同步處理,完全依靠聲學回聲消除器根據兩者的聲音數據進行同步并進行回聲消除,但是聲學回聲消除器并不能夠完全保證兩個聲音的同步,如果兩個聲音數據稍稍有些不同步,不但不能消除回聲,還會破壞聲音B中的用戶B的聲音。
[0005]因此現(xiàn)在需要一種將第一終端和第二終端的聲音A和聲音B同步的方法,以便能夠更好的利用聲學回聲消除器解決現(xiàn)有技術中第一終端聽到自己講話回聲的問題,提升用戶體驗。
【發(fā)明內容】
[0006]本發(fā)明提供了一種數據同步方法、裝置及系統(tǒng),回聲消除方法及系統(tǒng),本發(fā)明提供的數據同步方法,能夠很好的解決將第一終端和第二終端的數據不同步的問題,進而能夠更好的利用聲學回聲消除器解決第一終端聽到自己講話回聲的問題,提升用戶體驗。
[0007]為了實現(xiàn)上述目的,本發(fā)明提供了以下技術手段:
[0008]一種數據同步方法,包括:
[0009]接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據;
[0010]將所述音頻數據發(fā)送至接收幀緩沖區(qū);
[0011]拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū);
[0012]同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的;[0013]所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū);
[0014]待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,由聲學回聲消除器對兩個N字節(jié)數據進行回聲處理。
[0015]優(yōu)選的,接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據包括:
[0016]音頻數據接收線程通過網絡模塊從遠端接收所述音頻編碼數據;
[0017]通過音頻解碼對所述音頻編碼數據進行解碼得到音頻數據。
[0018]優(yōu)選的,拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū)包括:
[0019]判斷所述接收幀緩沖區(qū)是否達到N字節(jié)音頻數據;
[0020]若所述接收幀緩沖區(qū)達到N字節(jié)音頻數據,則將所述N字節(jié)音頻數據作為所述第一 N字節(jié)數據拷貝至所述播放隊列和所述參考幀緩沖區(qū);
[0021]若所述接收幀緩沖區(qū)未達到N字節(jié)音頻數據,則將N字節(jié)靜音數據作為所述第一N字節(jié)數據拷貝至所述播放隊列和所述參考幀緩沖區(qū)。
[0022]優(yōu)選的,還包括:
[0023]當所述錄制幀緩沖區(qū)未取得所述第二 N字節(jié)數據時,則循環(huán)等待直到所述錄制幀緩沖區(qū)取得第二N字節(jié)數據。
[0024]一種回聲消除方法,包括:
[0025]接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據;
[0026]將所述音頻數據發(fā)送至接收幀緩沖區(qū);
[0027]拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū);
[0028]同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的;
[0029]所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū);
[0030]待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一N字節(jié)數據同時發(fā)送至回聲消除線程;
[0031]聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據,并將其發(fā)送至發(fā)送幀緩沖區(qū);
[0032]音頻數據發(fā)送線程從所述發(fā)送幀緩沖區(qū)中取得所述第三N字節(jié)數據,將所述第三N字節(jié)數據進行音頻編碼,然后通過網絡發(fā)送模塊發(fā)送至遠端。
[0033]優(yōu)選的,聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據包括:
[0034]所述聲學回聲消除器將所述第二 N字節(jié)數據中的頻域與第一 N字節(jié)數據頻域一致內容進行消除,得到第三N字節(jié)數據。
[0035]優(yōu)選的,所述聲學回聲消除器中預設延時參數為100。
[0036]一種數據同步裝置,包括:
[0037]接收單元,用于接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據;
[0038]發(fā)送單元,用于將所述音頻數據發(fā)送至接收幀緩沖區(qū);[0039]拷貝單元,用于拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū);
[0040]啟動單元,用于同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的;
[0041]播放錄制單元,用于所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū);
[0042]同步單元,用于待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,由聲學回聲消除器對兩個N字節(jié)數據進行回聲處理。
[0043]一種數據同步系統(tǒng),包括:第一終端和第二終端;
[0044]所述第一終端,用于發(fā)送音頻編碼數據;
[0045]所述第二終端,用于接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據,將所述音頻數據發(fā)送至接收幀緩沖區(qū),拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū),同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的,所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū),待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,由聲學回聲消除器對兩個N字節(jié)數據進行回聲處理。
[0046]一種回聲消除系統(tǒng),包括:第一終端和第二終端;
[0047]所述第一終端,用于發(fā)送音頻編碼數據;
[0048]所述第二終端,用于接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據,將所述音頻數據發(fā)送至接收幀緩沖區(qū),拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū),同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的,所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū),待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據,并將其發(fā)送至發(fā)送幀緩沖區(qū),音頻數據發(fā)送線程從所述發(fā)送幀緩沖區(qū)中取得所述第三N字節(jié)數據,將所述第三N字節(jié)數據進行音頻編碼,然后通過網絡發(fā)送模塊發(fā)送至遠端。
[0049]本發(fā)明提供了一種數據同步方法,該方法中有音頻播放線程、音頻錄制線程和回聲消除線程三個線程,且音頻播放線程和音頻錄制線程的音頻參數都是一致的,還有接收幀緩沖區(qū)、播放幀緩沖區(qū)和參考幀緩沖區(qū)三個緩沖區(qū)。
[0050]該方法中由于音頻播放線程和音頻錄制線程的音頻參數是一致,即兩者的采樣速率、播放速率、采樣精度等音頻參數是一致的,保證音頻播放線程和音頻錄制線程中除了聲音數據之外,其他的參數都是一致的。本方法中在接收幀緩沖區(qū)取第一 N字節(jié)數據,并將其拷貝至播放隊列和參考幀緩沖區(qū),即為播放隊列中第一 N字節(jié)數據和參考幀緩沖區(qū)中的第一 N字節(jié)數據是同步且一致的。
[0051]該方法中還需保證音頻播放線程和音頻錄制線程同時啟動,即在音頻播放線程播放播放隊列中的第一 N字節(jié)數據時,能夠保證音頻錄制線程也是在錄制第一 N字節(jié)數據的回聲,并得到第二 N字節(jié)數據,因此播放隊列中的第一 N字節(jié)數據和錄制幀緩沖區(qū)的第二 N字節(jié)數據也是同步的。
[0052]由于播放隊列中第一 N字節(jié)數據和參考幀緩沖區(qū)中的第一 N字節(jié)數據是同步且一致的,且播放隊列中第一N字節(jié)數據和錄制幀緩沖區(qū)的第二N字節(jié)數據也是同步的,因此參考幀緩沖區(qū)中的第一 N字節(jié)數據和錄制幀緩沖區(qū)的第二 N字節(jié)數據即為同步的,并且兩者是同時放入回聲消除線程中,因此兩者在回聲消除線程中也是同步的,并由回聲消除器對參考幀緩沖區(qū)中的第一N字節(jié)數據和錄制幀緩沖區(qū)的第二N字節(jié)數據進行回聲處理。本發(fā)明在第一終端和第二終端通話的過程中,循環(huán)執(zhí)行本發(fā)明提供的同步方法。
[0053]因此,采用本發(fā)明提供的數據同步方法能夠很好的解決將第一終端和第二終端的數據不同步的問題,進而能夠更好的利用聲學回聲消除器解決第一終端聽到自己講話回聲的問題,提升用戶體驗。
【專利附圖】
【附圖說明】
[0054]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0055]圖1為現(xiàn)有技術中第一終端和第二終端的通信圖;
[0056]圖2為本發(fā)明實施例公開的數據同步方法的流程圖;
[0057]圖3為本發(fā)明實施例公開的數據同步方法中接收音頻解碼并得到音頻數據的流程圖;
[0058]圖4為本發(fā)明實施例公開的數據同步方法中拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū)流程圖;
[0059]圖5為本發(fā)明實施例公開回聲消除方法的流程圖;
[0060]圖6為本發(fā)明實施例公開回聲消除方法中聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據的流程圖;
[0061]圖7為本發(fā)明實施例公開的數據同步裝置的結構示意圖;
[0062]圖8為本發(fā)明實施例公開的數據同步系統(tǒng)的結構示意圖;
[0063]圖9為本發(fā)明實施例公開的回聲消除裝置的結構示意圖;
[0064]圖10為本發(fā)明實施例公開的回聲消除系統(tǒng)的結構示意圖。
【具體實施方式】
[0065]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0066]如圖2所示,本發(fā)明提供了一種數據同步方法的第一實施例,包括:
[0067]步驟SlOl:接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據;
[0068]如圖3所示,步驟SlOl具體包括以下兩個步驟:[0069]步驟S201:第二終端的音頻數據接收線程通過網絡模塊從遠端接收所述音頻編碼數據;
[0070]步驟S202:第二終端通過音頻解碼對所述音頻編碼數據進行解碼得到音頻數據。
[0071]本發(fā)明中第一終端首先將用戶A聲音數據中的N字節(jié)數據進行音頻編碼,將編碼后得到的音頻編碼數據通過網絡發(fā)送模塊發(fā)送至遠端。第二終端的音頻數據接收線程從遠端接收音頻編碼數據,并通過音頻解碼對音頻編碼數據進行解碼,接到解碼后的音頻數據。
[0072]步驟S102:將所述音頻數據發(fā)送至接收幀緩沖區(qū);
[0073]第二終端將上述步驟中得到的音頻數據發(fā)送至預先開發(fā)的接收幀緩沖區(qū),為后續(xù)過程做準備。
[0074]步驟S103:拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū);
[0075]如圖4所示,該步驟具體包括:
[0076]步驟S301:第二終端判斷所述接收幀緩沖區(qū)是否達到N字節(jié)音頻數據,若達到則進入步驟S302,若未達到則進入步驟S303 ;
[0077]在音頻播放線程啟動后,會在播放隊列中尋求播放所需的數據,音頻播放線程在一個周期中需要播放N字節(jié)數據,其中N為自然數,N的大小與音頻播放線程中的音頻參數的設置有關,在此不做限定。因此為了保證播放隊列中有足夠的數據供音頻播放線程播放,因此第二終端會判斷接收幀緩沖區(qū)中的音頻數據是否達到N字節(jié),即達到音頻播放線程一個周期內的播放需要。
[0078]步驟S302:若所述接收幀緩沖區(qū)達到N字節(jié)音頻數據,則將所述N字節(jié)音頻數據作為所述第一 N字節(jié)數據拷貝至所述播放隊列和所述參考幀緩沖區(qū);
[0079]若接收幀緩沖區(qū)達到N字節(jié)音頻數據,則將N字節(jié)音頻數據作為第一 N字節(jié)數據拷貝至播放隊列和參考幀緩沖區(qū),播放隊列為音頻播放線程取播放數據的隊列,參考幀緩沖區(qū)為在下文中涉及的回聲消除中使用的參考數據所在的緩沖區(qū),本方法中將第一 N字節(jié)數據拷貝至播放隊列和參考幀緩沖區(qū),從而使得播放隊列和參考幀緩沖區(qū)中數據是同步且一致的。
[0080]步驟S303:若所述接收幀緩沖區(qū)未達到N字節(jié)音頻數據,則將N字節(jié)靜音數據作為所述第一 N字節(jié)數據拷貝至所述播放隊列和所述參考幀緩沖區(qū)。
[0081]若所述接收幀緩沖區(qū)未達到N字節(jié)音頻數據,則將N字節(jié)靜音數據作為第一 N字節(jié)數據拷貝至播放隊列和參考幀緩沖區(qū),其中靜音數據是指用一組二進制為O的碼表示脈沖幅值為O的數據,這組二進制碼展現(xiàn)在用戶側時,為沒有聲音的一段空白因此稱為靜音數據。本方法中將第一 N字節(jié)數據拷貝至播放隊列和參考幀緩沖區(qū),從而使得播放隊列和參考幀緩沖區(qū)中第一 N字節(jié)數據是同步且一致的。
[0082]步驟S104:同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的;
[0083]第二終端同時啟動音頻播放線程和音頻錄制線程,其中,音頻播放線程為第二終端播放第一終端聲音A的線程,音頻錄制線程為第二終端錄制聲音B的線程,聲音B包括第二終端側用戶B的聲音和聲音A的回聲。并且由于音頻播放線程和音頻錄制線程的音頻參數是一致,即兩者的采樣速率、播放速率、采樣精度等音頻參數是一致的,保證音頻播放線程和音頻錄制線程中除了聲音數據之外,其他的參數都是一致的。[0084]步驟S105:所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū);
[0085]在上述步驟中音頻播放線程和音頻接收線程已同時啟動,音頻播放線程會從播放隊列中提取第一 N字節(jié)數據進行播放,與此同時,音頻錄制線程也開始通過麥克錄制音頻數據即聲音B,并將錄制得到的音頻數據發(fā)送至錄制幀緩沖區(qū)。
[0086]由于該方法中音頻播放線程和音頻錄制線程是同時啟動,即在音頻播放線程播放播放隊列中的第一 N字節(jié)數據時,能夠保證音頻錄制線程也是在錄制第一 N字節(jié)數據的回聲,并得到第二 N字節(jié)數據,因此播放隊列中的第一 N字節(jié)數據和錄制幀緩沖區(qū)的第二 N字節(jié)數據也是同步的。
[0087]步驟S106:待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,由聲學回聲消除器對兩個N字節(jié)數據進行回聲處理。
[0088]當所述錄制幀緩沖區(qū)未取得所述第二 N字節(jié)數據時,則循環(huán)等待直到所述錄制幀緩沖區(qū)取得第二N字節(jié)數據。因為在下述步驟中需要將錄制幀緩沖區(qū)的數據與參考幀緩沖區(qū)的數據進行對比,并進行回聲消除,因此需要保證錄制幀緩沖區(qū)得到音頻數據長度與第一 N字節(jié)長度一致,以便能夠更好的進行回聲消除。
[0089]待錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,此時獲取的第二 N字節(jié)數據中包括第二終端側用戶B的聲音和播放隊列中的第一N字節(jié)數據的回聲。第二終端同時將第二N字節(jié)數據和參考幀緩沖區(qū)中的第一 N字節(jié)數據發(fā)送至回聲消除線程,由回聲消除線程對兩個數據進行對比,并進行回聲處理。
[0090]由上文可知,播放隊列中第一 N字節(jié)數據和參考幀緩沖區(qū)中的第一 N字節(jié)數據是同步且一致的,且播放隊列中第一 N字節(jié)數據和錄制幀緩沖區(qū)的第二 N字節(jié)數據也是同步的,因此參考幀緩沖區(qū)中的第一N字節(jié)數據和錄制幀緩沖區(qū)的第二N字節(jié)數據即為同步的,并且兩者是同時放入回聲消除線程中,因此兩者在回聲消除線程中也是同步的。
[0091]在第一終端和第二終端通話的過程中,循環(huán)執(zhí)行本發(fā)明提供的同步方法,直到第一終端和第二終端的通話結束,因此采用本發(fā)明提供的數據同步方法能夠很好的解決將第一終端和第二終端的數據不同步的問題,進而能夠更好的利用聲學回聲消除器解決第一終端聽到自己講話回聲的問題,提升用戶體驗。
[0092]本發(fā)明在上述內容中提出了數據同步方法,本發(fā)明在下述內容在數據同步的基礎之上提出了一種回聲消除方法,基于良好同步基礎之上,對回聲進行消除,具體請參見下述實施例。
[0093]如圖5所示,本發(fā)明還提供了一種回聲消除方法,包括:
[0094]步驟S401:接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據;
[0095]步驟S402:將所述音頻數據發(fā)送至接收幀緩沖區(qū);
[0096]步驟S403:拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū);
[0097]步驟S404:同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的;
[0098]步驟S405:所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū);[0099]步驟S406:待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程;
[0100]步驟S401-S406在上述實施例中已經詳細介紹,在此不再贅述,下面詳細介紹后續(xù)步驟。
[0101]步驟S407:聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據,并將其發(fā)送至發(fā)送幀緩沖區(qū);
[0102]具體的,聲學回聲消除器將所述第二 N字節(jié)數據中的頻域與第一 N字節(jié)數據頻域一致內容進行消除,得到第三N字節(jié)數據,如圖6所示,上述步驟具體包括:
[0103]步驟S501:聲學回聲消除器將第一 N字節(jié)數據和第二 N字節(jié)數據經過傅里葉變換得到第一頻域數據和第二頻域數據;
[0104]步驟S502:聲學回聲消除器將第二頻域數據與第一頻域數據一致的內容進行消除得到第三頻域數據;
[0105]步驟S503:將第三頻域數據經過反傅里葉變換得到第三N字節(jié)數據。
[0106]因為第一字節(jié)數據和第二字節(jié)數據均為時域數據,在時域不方便對兩個字節(jié)數據進行處理,因此將兩個N字節(jié)數據進行轉換得到頻域數據,并在頻域中對兩個N字節(jié)數據一致的數據進行消除得到第三頻域數據,為了得到能夠使用的數據因此需要將第三頻域數據轉換為時域數據,因此進行反傅里葉變換得到第三N字節(jié)數據。
[0107]聲學回聲消除器中有一個預設延時參數,假設音頻播放線程將播放隊列中的第一N字節(jié)數據進行播放的時間為tl,第一 N字節(jié)數據經過喇叭播放出的時間為t2,那么t2-tl即為聲學回聲消除器中預設延時參數,經過本發(fā)明工程師大量實驗,本發(fā)明中設定聲學回聲消除器中預設延時參數為100ms。在該參數下,聲學回聲消除器具有以下優(yōu)點:
[0108]I)單方講話時,無回音;
[0109]2)雙方同時講話時,雙方交流流暢無回音;
[0110]3)麥克和用戶的嘴唇距離相對位置改變時,收斂比較快,沒有出現(xiàn)回音
[0111]4)免提播放達到最大音量時,基本無回音。
[0112]步驟S408:音頻數據發(fā)送線程從所述發(fā)送幀緩沖區(qū)中取得所述第三N字節(jié)數據,將所述第三N字節(jié)數據進行音頻編碼,然后通過網絡發(fā)送模塊發(fā)送至遠端。
[0113]在第一終端和第二終端通話的過程中,循環(huán)執(zhí)行本發(fā)明提供的回聲消除方法,直到第一終端和第二終端的通話結束,因為本發(fā)明中數據能夠很好的進行同步,因此采用本發(fā)明提供的數據回聲消除方法能夠很好的利用聲學回聲消除器解決第一終端聽到自己講話回聲的問題,提升用戶體驗。
[0114]如圖7所示,本發(fā)明還提供了一種數據同步裝置,包括:
[0115]接收單元701,用于接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據;
[0116]發(fā)送單元702,用于將所述音頻數據發(fā)送至接收幀緩沖區(qū);
[0117]拷貝單元703,用于拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū);
[0118]啟動單元704,用于同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的;
[0119]播放錄制單元705,用于所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū);
[0120]同步單元706,用于待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,由聲學回聲消除器對兩個N字節(jié)數據進行回聲處理。
[0121]如圖8所示,本發(fā)明還提供了一種數據同步系統(tǒng),包括:第一終端100和第二終端200 ;
[0122]所述第一終端100,用于發(fā)送音頻編碼數據;
[0123]所述第二終端200,用于接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據,將所述音頻數據發(fā)送至接收幀緩沖區(qū),拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū),同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的,所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū),待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,由聲學回聲消除器對兩個N字節(jié)數據進行回聲處理。
[0124]如圖9所示,本發(fā)明還提供了一種回聲消除裝置,包括:
[0125]第二接收單元901,用于接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據;
[0126]第二發(fā)送單元902,用于將所述音頻數據發(fā)送至接收幀緩沖區(qū);
[0127]第二拷貝單元903,用于拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū);
[0128]第二啟動單元904,用于同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的;
[0129]第二播放錄制單元905,用于所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū);
[0130]第二同步單元906,用于待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程。
[0131]回聲處理單元907,用于聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據,并將其發(fā)送至發(fā)送幀緩沖區(qū);
[0132]第三發(fā)送單元908,用于音頻數據發(fā)送線程從所述發(fā)送幀緩沖區(qū)中取得所述第三N字節(jié)數據,將所述第三N字節(jié)數據進行音頻編碼,然后通過網絡發(fā)送模塊發(fā)送至遠端。
[0133]如圖10所示,本發(fā)明還提供了一種回聲消除系統(tǒng),包括:第一終端300和第二終端400 ;
[0134]所述第一終端300,用于發(fā)送音頻編碼數據;
[0135]所述第二終端400,用于接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據,將所述音頻數據發(fā)送至接收幀緩沖區(qū),拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū),同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的,所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū),待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據,并將其發(fā)送至發(fā)送幀緩沖區(qū),音頻數據發(fā)送線程從所述發(fā)送幀緩沖區(qū)中取得所述第三N字節(jié)數據,將所述第三N字節(jié)數據進行音頻編碼,然后通過網絡發(fā)送模塊發(fā)送至遠端。
[0136]本實施例方法所述的功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產品銷售或使用時,可以存儲在一個計算設備可讀取存儲介質中?;谶@樣的理解,本發(fā)明實施例對現(xiàn)有技術做出貢獻的部分或者該技術方案的部分可以以軟件產品的形式體現(xiàn)出來,該軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算設備(可以是個人計算機,服務器,移動計算設備或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0137]本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。
[0138]對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【權利要求】
1.一種數據同步方法,其特征在于,包括: 接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據; 將所述音頻數據發(fā)送至接收幀緩沖區(qū); 拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū); 同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的; 所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū); 待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,由聲學回聲消除器對兩個N字節(jié)數據進行回聲處理。
2.如權利要求1所述的方法,其特征在于,接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據包括: 音頻數據接收線程通過網絡模塊從遠端接收所述音頻編碼數據; 通過音頻解碼對所述音頻編碼數據進行解碼得到音頻數據。
3.如權利要求1所述的方法,其特征在于,拷貝所述第一N字節(jié)數據至播放隊列和參考幀緩沖區(qū)包括: 判斷所述接收幀緩沖區(qū)是否達到N字節(jié)音頻數據; 若所述接收幀緩沖區(qū)達到N字節(jié)音頻數據,則將所述N字節(jié)音頻數據作為所述第一 N字節(jié)數據拷貝至所述播放隊列和所述參考幀緩沖區(qū); 若所述接收幀緩沖區(qū)未達到N字節(jié)音頻數據,則將N字節(jié)靜音數據作為所述第一 N字節(jié)數據拷貝至所述播放隊列和所述參考幀緩沖區(qū)。
4.如權利要求1所述的方法,其特征在于,還包括: 當所述錄制幀緩沖區(qū)未取得所述第二 N字節(jié)數據時,則循環(huán)等待直到所述錄制幀緩沖區(qū)取得第二N字節(jié)數據。
5.一種回聲消除方法,其特征在于,包括: 接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據; 將所述音頻數據發(fā)送至接收幀緩沖區(qū); 拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū); 同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的; 所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū); 待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一N字節(jié)數據同時發(fā)送至回聲消除線程; 聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據,并將其發(fā)送至發(fā)送幀緩沖區(qū); 音頻數據發(fā)送線程從所述發(fā)送幀緩沖區(qū)中取得所述第三N字節(jié)數據,將所述第三N字節(jié)數據進行音頻編碼,然后通過網絡發(fā)送模塊發(fā)送至遠端。
6.如權利要求5所述的方法,其特征在于,聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據包括: 所述聲學回聲消除器將所述第二N字節(jié)數據中的頻域與第一N字節(jié)數據頻域一致內容進行消除,得到第三N字節(jié)數據。
7.如權利要求5或6所述的方法,其特征在于,所述聲學回聲消除器中預設延時參數為100。
8.一種數據同步裝置,其特征在于,包括: 接收單元,用于接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據; 發(fā)送單元,用于將所述音頻數據發(fā)送至接收幀緩沖區(qū); 拷貝單元,用于拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū); 啟動單元,用于同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的; 播放錄制單元,用于所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū); 同步單元,用于待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,由聲學回聲消除器對兩個N字節(jié)數據進行回聲處理。
9.一種數據冋步系統(tǒng),其特征在于,包括:弟一終端和弟_.終端; 所述第一終端,用于發(fā)送音頻編碼數據; 所述第二終端,用于接收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據,將所述音頻數據發(fā)送至接收幀緩沖區(qū),拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū),同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的,所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū),待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,由聲學回聲消除器對兩個N字節(jié)數據進行回聲處理。
10.一種回聲消除系統(tǒng),其特征在于,包括:第一終端和第二終端; 所述第一終端,用于發(fā)送音頻編碼數據; 所述第二終端,用于接 收音頻編碼數據,將所述音頻編碼數據解碼后得到音頻數據,將所述音頻數據發(fā)送至接收幀緩沖區(qū),拷貝所述第一 N字節(jié)數據至播放隊列和參考幀緩沖區(qū),同時啟動音頻播放線程和音頻錄制線程,所述音頻錄制線程和所述音頻播放線程的音頻參數為一致的,所述音頻播放線程播放所述播放隊列中的第一 N字節(jié)數據,同時所述音頻錄制線程通過麥克錄制音頻數據,并發(fā)送至錄制幀緩沖區(qū),待所述錄制幀緩沖區(qū)取得第二 N字節(jié)數據時,將所述第二 N字節(jié)數據和所述參考幀緩沖區(qū)的第一 N字節(jié)數據同時發(fā)送至回聲消除線程,聲學回聲消除器對所述兩個N字節(jié)數據進行回聲消除處理得到第三N字節(jié)數據,并將其發(fā)送至發(fā)送幀緩沖區(qū),音頻數據發(fā)送線程從所述發(fā)送幀緩沖區(qū)中取得所述第三N字節(jié)數據,將所述第三N字節(jié)數據進行音頻編碼,然后通過網絡發(fā)送模塊發(fā)送至遠端。
【文檔編號】H04W56/00GK103442427SQ201310412254
【公開日】2013年12月11日 申請日期:2013年9月11日 優(yōu)先權日:2013年9月11日
【發(fā)明者】唐新春, 劉華旺, 卿遠鵬 申請人:湖南創(chuàng)智數碼科技股份有限公司, 湖南電子信息產業(yè)集團有限公司