一種網(wǎng)絡語音同步消噪通訊方法
【技術領域】
[0001] 本發(fā)明涉及通信技術領域,尤其涉及一種網(wǎng)絡語音同步消噪通訊方法。
【背景技術】
[0002] 隨著科學技術的不斷發(fā)展,人們對生活的要求越來越高,相互之間的聯(lián)系更是頻 繁,伴隨著android系統(tǒng)和4G網(wǎng)絡的廣泛應用,android系統(tǒng)上的網(wǎng)絡語音通話越來越普遍, 人們可以通過以太網(wǎng)進行正常的語音對講通訊,而免費、方便、清晰、流暢的通話系統(tǒng)是當 今網(wǎng)絡語音通話發(fā)展的一個方向。目前android系統(tǒng)上有一些較成熟的應用,能夠滿足對講 要求,但基本上都是收費的,而且很少能夠做到實時、無噪聲、流暢的通話,用戶體驗不是非 常滿意,能夠滿足這些要求的一般通過硬件來處理,但這種方式不通用,也增加了成本。
[0003] 網(wǎng)絡語音通訊系統(tǒng),能夠在兩臺或者多臺設備之間通過以太網(wǎng)進行正常的語音對 講。網(wǎng)絡語音通訊系統(tǒng)分為發(fā)送端和接收端,在發(fā)送端,音頻錄制模塊通過MIC將聲音轉為 pcm音頻流,送入編碼模塊壓縮音頻數(shù)據(jù),最后通過網(wǎng)絡將編碼后的數(shù)據(jù)發(fā)送出去;在接收 端,通過接收模塊獲取編碼的音頻數(shù)據(jù),送入解碼模塊,還原音頻流數(shù)據(jù),最后送入播放模 塊將接收到的音頻流播放出來。在實際的使用過程中,網(wǎng)絡語音通訊會產(chǎn)生回聲,而且會有 延時,造成通話質(zhì)量不高。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,本發(fā)明要解決的技術問題是提供一種網(wǎng)絡語音同步消噪通訊方法,以 解決網(wǎng)絡語音通訊中的回聲造成通話質(zhì)量不高的問題。
[0005] 本發(fā)明解決上述技術問題所采用的技術方案如下:
[0006] -種網(wǎng)絡語音同步消噪通訊方法,包括以下步驟:
[0007] 對本地錄制的音頻流和對端發(fā)送的音頻流進行數(shù)據(jù)同步;
[0008] 將對端發(fā)送的音頻流作為參考音頻流對本地錄制的音頻流中的回聲進行過濾;
[0009] 對過濾后的音頻流進行編碼壓縮并通過網(wǎng)絡進行發(fā)送。
[0010] 優(yōu)選地,對本地錄制的音頻流和對端發(fā)送的音頻流進行數(shù)據(jù)同步的步驟,具體包 括:
[0011] 設置用于對本地錄制的音頻流進行緩存的錄制緩沖區(qū),以及對參考音頻流進行緩 存的參考緩沖區(qū);當參考緩沖區(qū)接收到數(shù)據(jù)時,對所本地錄制的音頻流和參考音頻流進行 數(shù)據(jù)同步。
[0012] 進一步地,錄制緩沖區(qū)能夠?qū)幀錄制的音頻流數(shù)據(jù)進行緩存,參考緩沖區(qū)能夠?qū)?Μ幀參考音頻流的數(shù)據(jù)進行緩存;其中M>N,且Μ和N為自然數(shù)。
[0013] 優(yōu)選地,將對端發(fā)送的音頻流作為參考音頻流對本地錄制的音頻流中的回聲進行 過濾的步驟,具體包括:
[0014] 根據(jù)預設的固定間隔的時間段,檢查對端發(fā)送的音頻流的幀數(shù)據(jù),當幀數(shù)據(jù)小于 speex算法預定的緩沖值時,通過speex算法將本地錄制的音頻流中的回聲進行過濾;當對 端發(fā)送的音頻流的幀數(shù)據(jù)大于speex算法預定的緩沖值時,則丟棄部分幀數(shù)據(jù)。
[0015] 優(yōu)選地,對過濾后的音頻流進行編碼壓縮包括:對過濾后的音頻流逐幀進行緩存 和編碼壓縮。
[0016] 本發(fā)明的優(yōu)點在于:本發(fā)明對本地錄制的音頻流和對端發(fā)送的音頻流進行數(shù)據(jù)同 步,將對端發(fā)送的音頻流作為過濾回聲的參考音頻,優(yōu)化了編解碼并消除了回聲,提高了網(wǎng) 絡語音的對講通話質(zhì)量。
【附圖說明】
[0017] 圖1是相關技術中回音產(chǎn)生的原理示意圖;
[0018] 圖2是本發(fā)明實施例提供的一種網(wǎng)絡語音同步消噪通訊方法流程圖。
[0019]圖3是本發(fā)明實施例在應用層調(diào)用speex算法接口函數(shù)示意圖;
[0020] 圖4是本發(fā)明實施例提供的一種網(wǎng)絡語音同步消噪通訊方法的具體流程圖。
[0021] 圖5是本發(fā)明實施例提供的一種網(wǎng)絡語音同步消噪通訊裝置的模塊結構圖。
[0022] 圖6是本發(fā)明實施例提供的一種網(wǎng)絡語音同步消噪通訊系統(tǒng)的結構示意圖。
【具體實施方式】
[0023] 為了使本發(fā)明所要解決的技術問題、技術方案及有益效果更加清楚、明白,以下結 合附圖和實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅 用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0024] 在網(wǎng)絡語音同步消噪通訊中,影響通話質(zhì)量的主要是回音和延時。請參與圖1,在A 端,人聲a通過麥克風b錄入,喇機c播放B端傳輸過來的聲音,c播放的一部分聲音e也被麥克 風b錄入,聲音e就是回聲,這樣聲音e和聲音a都被傳輸?shù)搅?B端,喇機j播放的聲音就包括了 人聲a和聲音e,而聲音e是由B端傳輸過來的,所以B端播放的聲音能夠聽到自己的聲音e,同 理,在A端也能夠聽到自己的聲音h。根據(jù)這個原理可知,回音消除就是在麥克風錄制之后濾 除掉圖1中的聲音e和聲音h。根據(jù)回音產(chǎn)生的原理,消除回音將播放的對端音頻流作為參考 音頻,將麥克風錄制的音頻流中回聲那部分通過一定算法(例如speex算法)濾除掉。但是如 果參考的音頻不正確,就難以濾除回聲。
[0025] 如圖2所示是本發(fā)明實施例提供的一種網(wǎng)絡語音同步消噪通訊的方法,該方法包 括:
[0026] S201、對本地錄制的音頻流和對端發(fā)送的音頻流進行數(shù)據(jù)同步;
[0027] 優(yōu)選地,本步驟可以通過以下方式實現(xiàn):
[0028] 設置用于對本地錄制的音頻流進行緩存的錄制緩沖區(qū),以及對參考音頻流進行緩 存的參考緩沖區(qū);當參考緩沖區(qū)接收到數(shù)據(jù)時,對所本地錄制的音頻流和參考音頻流進行 數(shù)據(jù)同步。錄制緩沖區(qū)能夠?qū)幀錄制的音頻流數(shù)據(jù)進行緩存,參考緩沖區(qū)能夠?qū)Ζ瑤瑓⒖?音頻流的數(shù)據(jù)進行緩存;其中Μ>Ν,且Μ和Ν為自然數(shù)。
[0029] S202、將對端發(fā)送的音頻流作為參考音頻流對本地錄制的音頻流中的回聲進行過 濾;
[0030] S203、對過濾后的音頻流進行編碼壓縮并通過網(wǎng)絡進行發(fā)送;
[0031] 優(yōu)選地,本步驟可以對過濾后的音頻流逐幀進行緩存和編碼壓縮。編碼壓縮后的 音頻流用于對端接收并還原進行播放。
[0032]具體來說,設置錄制音頻流的緩沖區(qū)和存放對端音頻流的緩沖區(qū),同時都有接收 到數(shù)據(jù)時,進行數(shù)據(jù)同步。即當錄制的音頻流的緩沖區(qū)接收到數(shù)據(jù),且存放播放的對端音頻 流的緩沖區(qū)接收到數(shù)據(jù)時,可認為此時的數(shù)據(jù)是同步的,采用此時的對端音頻流作為參考 音頻。在實際應用中,當錄制的音頻流的緩沖區(qū)接收到N幀數(shù)據(jù),且播放的對端音頻流的緩 沖區(qū)接收到N+1幀數(shù)據(jù)時,效果較好。其中,幀數(shù)據(jù)與編碼采樣率成正比,例如:若編碼采樣 率為8KB,一幀大小為160字節(jié);若采樣率為16KB,一幀大小為320字節(jié);若采樣率為32KB,一 幀大小為640字節(jié)。
[0033]優(yōu)選地,本發(fā)明實施例中的回聲消除可采用一定算法的過濾,例如speex算法。由 于本地錄制的音頻流是均勻穩(wěn)定的,而網(wǎng)絡傳送過來的遠端音頻流的速度是不穩(wěn)定的,可 每間隔固定的時間段,檢查作為參考音頻的對端發(fā)送的音頻流的幀數(shù)據(jù)大小,如果大于 speex算法預定的緩沖值,則丟棄部分,以更好的選擇參考音頻;如果小于speex算法預定的 緩沖值,貝U可以采用speex算法進行回聲過濾。
[0034]由于音頻的編碼需要一段時間,按照8K采樣,每幀160字節(jié),編碼需要大約20ms左 右的時間,壓縮音頻數(shù)據(jù)與回音消除同步可減少延遲??赏ㄟ^將緩存的一幀過濾后的音頻 流數(shù)據(jù)完成編碼壓縮后,再緩存新的一幀過濾后的音頻流數(shù)據(jù)的方式來減少延遲。
[0035]以下以基于android平臺,采用開源的speex算法做回音消除和音頻編解碼來進一 步闡述本發(fā)明。Speex算法是專門針對音頻的編解碼的算法,該算法也在不斷的更新,現(xiàn)在 已經(jīng)有了回音消除模塊,經(jīng)過實踐證明,speex可以較好的實現(xiàn)音頻編解碼和消除回聲。 [00 36]請參閱圖3, java應用層獲取speex庫函數(shù)