一種網(wǎng)絡(luò)語(yǔ)音對(duì)講方法、裝置及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種網(wǎng)絡(luò)語(yǔ)音對(duì)講的方法、裝置和系統(tǒng),該方法包括:對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步;將對(duì)端發(fā)送的音頻流作為參考音頻流對(duì)本地錄制的音頻流中的回聲進(jìn)行過(guò)濾;對(duì)過(guò)濾后的音頻流進(jìn)行編碼壓縮并通過(guò)網(wǎng)絡(luò)進(jìn)行發(fā)送。采用本發(fā)明實(shí)施例的方法、裝置和系統(tǒng),對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步,并將對(duì)端發(fā)送的音頻流作為過(guò)濾回聲的參考音頻,優(yōu)化了編解碼并消除了回聲,提高了網(wǎng)絡(luò)語(yǔ)音的對(duì)講通話(huà)質(zhì)量。
【專(zhuān)利說(shuō)明】一種網(wǎng)絡(luò)語(yǔ)音對(duì)講方法、裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種網(wǎng)絡(luò)語(yǔ)音對(duì)講方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]隨著科學(xué)技術(shù)的不斷發(fā)展,人們對(duì)生活的要求越來(lái)越高,相互之間的聯(lián)系更是頻繁,伴隨著android系統(tǒng)和3G網(wǎng)絡(luò)的廣泛應(yīng)用,android系統(tǒng)上的網(wǎng)絡(luò)語(yǔ)音通話(huà)越來(lái)越普遍,人們可以通過(guò)以太網(wǎng)進(jìn)行正常的語(yǔ)音對(duì)講,而免費(fèi)、方便、清晰、流暢的通話(huà)系統(tǒng)是當(dāng)今網(wǎng)絡(luò)語(yǔ)音通話(huà)發(fā)展的一個(gè)方向。目前android系統(tǒng)上有一些較成熟的應(yīng)用,能夠滿(mǎn)足對(duì)講要求,但基本上都是收費(fèi)的,而且很少能夠做到實(shí)時(shí)、無(wú)噪聲、流暢的通話(huà),用戶(hù)體驗(yàn)不是非常滿(mǎn)意,能夠滿(mǎn)足這些要求的一般通過(guò)硬件來(lái)處理,但這種方式不通用,也增加了成本。
[0003]網(wǎng)絡(luò)語(yǔ)音對(duì)講系統(tǒng),能夠在兩臺(tái)或者多臺(tái)設(shè)備之間通過(guò)以太網(wǎng)進(jìn)行正常的語(yǔ)音對(duì)講。網(wǎng)絡(luò)語(yǔ)音對(duì)講系統(tǒng)分為發(fā)送端和接收端,在發(fā)送端,音頻錄制模塊通過(guò)MIC將聲音轉(zhuǎn)為Pcm音頻流,送入編碼模塊壓縮音頻數(shù)據(jù),最后通過(guò)網(wǎng)絡(luò)將編碼后的數(shù)據(jù)發(fā)送出去;在接收端,通過(guò)接收模塊獲取編碼的音頻數(shù)據(jù),送入解碼模塊,還原音頻流數(shù)據(jù),最后送入播放模塊將接收到的音頻流播放出來(lái)。在實(shí)際的使用過(guò)程中,網(wǎng)絡(luò)語(yǔ)音對(duì)講會(huì)產(chǎn)生回聲,而且會(huì)有延時(shí),造成通話(huà)質(zhì)量不高。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā) 明要解決的技術(shù)問(wèn)題是提供一種網(wǎng)絡(luò)語(yǔ)音對(duì)講方法、裝置及系統(tǒng),以解決網(wǎng)絡(luò)語(yǔ)音對(duì)講中的回聲造成通話(huà)質(zhì)量不高的問(wèn)題。
[0005]本發(fā)明解決上述技術(shù)問(wèn)題所采用的技術(shù)方案如下:
[0006]根據(jù)本發(fā)明的一個(gè)方面,提供的一種網(wǎng)絡(luò)語(yǔ)音對(duì)講方法,包括以下步驟:
[0007]對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步;
[0008]將對(duì)端發(fā)送的音頻流作為參考音頻流對(duì)本地錄制的音頻流中的回聲進(jìn)行過(guò)濾;
[0009]對(duì)過(guò)濾后的音頻流進(jìn)行編碼壓縮并通過(guò)網(wǎng)絡(luò)進(jìn)行發(fā)送。
[0010]優(yōu)選地,對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步的步驟,具體包括:
[0011]設(shè)置用于對(duì)本地錄制的音頻流進(jìn)行緩存的錄制緩沖區(qū),以及對(duì)參考音頻流進(jìn)行緩存的參考緩沖區(qū);當(dāng)參考緩沖區(qū)接收到數(shù)據(jù)時(shí),對(duì)所本地錄制的音頻流和參考音頻流進(jìn)行數(shù)據(jù)同步。
[0012]進(jìn)一步地,錄制緩沖區(qū)能夠?qū)幀錄制的音頻流數(shù)據(jù)進(jìn)行緩存,參考緩沖區(qū)能夠?qū)幀參考音頻流的數(shù)據(jù)進(jìn)行緩存;其中M>N,且M和N為自然數(shù)。
[0013]優(yōu)選地,將對(duì)端發(fā)送的音頻流作為參考音頻流對(duì)本地錄制的音頻流中的回聲進(jìn)行過(guò)濾的步驟,具體包括:
[0014]根據(jù)預(yù)設(shè)的固定間隔的時(shí)間段,檢查對(duì)端發(fā)送的音頻流的幀數(shù)據(jù),當(dāng)幀數(shù)據(jù)小于speex算法預(yù)定的緩沖值時(shí),通過(guò)speex算法將本地錄制的音頻流中的回聲進(jìn)行過(guò)濾;當(dāng)對(duì)端發(fā)送的音頻流的幀數(shù)據(jù)大于speex算法預(yù)定的緩沖值時(shí),則丟棄部分幀數(shù)據(jù)。
[0015]優(yōu)選地,對(duì)過(guò)濾后的音頻流進(jìn)行編碼壓縮包括:對(duì)過(guò)濾后的音頻流逐幀進(jìn)行緩存和編碼壓縮。
[0016]根據(jù)本發(fā)明的另一個(gè)方面,提供的一種網(wǎng)絡(luò)語(yǔ)音對(duì)講裝置,該裝置包括同步模塊、回聲消除模塊、音頻編碼模塊以及發(fā)送模塊,其中:同步模塊,用于對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步;回聲消除模塊,將對(duì)端發(fā)送的音頻流作為參考音頻流對(duì)本地錄制的音頻流中的回聲進(jìn)行過(guò)濾;音頻編碼模塊,用于對(duì)過(guò)濾后的音頻流進(jìn)行編碼壓縮;發(fā)送模塊,用于將編碼壓縮的音頻流通過(guò)網(wǎng)絡(luò)進(jìn)行發(fā)送。
[0017]優(yōu)選地,同步模塊包括錄制緩沖區(qū)、參考緩沖區(qū)和數(shù)據(jù)同步單元,其中:錄制緩沖區(qū),用于對(duì)本地錄制的音頻流進(jìn)行緩存;參考緩沖區(qū),用于對(duì)參考音頻流進(jìn)行緩存;數(shù)據(jù)同步單元,用于當(dāng)參考緩沖區(qū)接收到數(shù)據(jù)時(shí),對(duì)本地錄制的音頻流和參考音頻流進(jìn)行數(shù)據(jù)同步。[0018]優(yōu)選地,回聲消除模塊具體用于:根據(jù)預(yù)設(shè)的固定間隔的時(shí)間段,檢查對(duì)端發(fā)送的音頻流的幀數(shù)據(jù),當(dāng)幀數(shù)據(jù)小于speex算法預(yù)定的緩沖值時(shí),通過(guò)speex算法將本地錄制的音頻流中的回聲進(jìn)行過(guò)濾;當(dāng)對(duì)端發(fā)送的音頻流的幀數(shù)據(jù)大于speex算法預(yù)定的緩沖值時(shí),則丟棄部分幀數(shù)據(jù)。
[0019]優(yōu)選地,音頻編碼模塊具體用于:對(duì)過(guò)濾后的音頻流逐幀進(jìn)行緩存和編碼壓縮。
[0020]根據(jù)本發(fā)明的又一個(gè)方面,提供的一種網(wǎng)絡(luò)語(yǔ)音對(duì)講系統(tǒng),該系統(tǒng)包括接收裝置以及上述網(wǎng)絡(luò)語(yǔ)音對(duì)講裝置,接收裝置包括接收模塊、音頻解碼模塊和音頻播放模塊,其中:接收模塊,用于接收編碼壓縮后的音頻流;音頻解碼模塊,用于還原接收到的編碼壓縮后的音頻流;音頻播放模塊,用于播放還原的音頻流。
[0021]本發(fā)明實(shí)施例的方法、裝置和系統(tǒng),對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步,將對(duì)端發(fā)送的音頻流作為過(guò)濾回聲的參考音頻,優(yōu)化了編解碼并消除了回聲,提高了網(wǎng)絡(luò)語(yǔ)音的對(duì)講通話(huà)質(zhì)量。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0022] 圖1是相關(guān)技術(shù)中回首廣生的原理不意圖;
[0023]圖2是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)語(yǔ)音對(duì)講方法流程圖。
[0024]圖3是本發(fā)明實(shí)施例在應(yīng)用層調(diào)用speex算法接口函數(shù)示意圖;
[0025]圖4是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)語(yǔ)音對(duì)講方法的具體流程圖。
[0026]圖5是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)語(yǔ)音對(duì)講裝置的模塊結(jié)構(gòu)圖。
[0027]圖6是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)語(yǔ)音對(duì)講系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0028]為了使本發(fā)明所要解決的技術(shù)問(wèn)題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0029]在網(wǎng)絡(luò)語(yǔ)音對(duì)講中,影響通話(huà)質(zhì)量的主要是回音和延時(shí)。請(qǐng)參與圖1,在A端,人聲a通過(guò)麥克風(fēng)b錄入,喇口入c播放B端傳輸過(guò)來(lái)的聲音,c播放的一部分聲音e也被麥克風(fēng)b錄入,聲音e就是回聲,這樣聲音e和聲音a都被傳輸?shù)搅?B端,喇口入j播放的聲音就包括了人聲a和聲音e,而聲音e是由B端傳輸過(guò)來(lái)的,所以B端播放的聲音能夠聽(tīng)到自己的聲音e,同理,在A端也能夠聽(tīng)到自己的聲音h。根據(jù)這個(gè)原理可知,回音消除就是在麥克風(fēng)錄制之后濾除掉圖1中的聲音e和聲音h。根據(jù)回音產(chǎn)生的原理,消除回音將播放的對(duì)端音頻流作為參考音頻,將麥克風(fēng)錄制的音頻流中回聲那部分通過(guò)一定算法(例如speex算法)濾除掉。但是如果參考的音頻不正確,就難以濾除回聲。
[0030]如圖2所示是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)語(yǔ)音對(duì)講的方法,該方法包括:
[0031]S201、對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步;
[0032]優(yōu)選地,本步驟可以通過(guò)以下方式實(shí)現(xiàn):
[0033]設(shè)置用于對(duì)本地錄制的音頻流進(jìn)行緩存的錄制緩沖區(qū),以及對(duì)參考音頻流進(jìn)行緩存的參考緩沖區(qū);當(dāng)參考緩沖區(qū)接收到數(shù)據(jù)時(shí),對(duì)所本地錄制的音頻流和參考音頻流進(jìn)行數(shù)據(jù)同步。錄制緩沖區(qū)能夠?qū)幀錄制的音頻流數(shù)據(jù)進(jìn)行緩存,參考緩沖區(qū)能夠?qū)幀參考音頻流的數(shù)據(jù)進(jìn)行緩存;其中M>N,且M和N為自然數(shù)。
[0034]S202、將對(duì)端發(fā)送的音頻流作為參考音頻流對(duì)本地錄制的音頻流中的回聲進(jìn)行過(guò)濾;
[0035]S203、對(duì)過(guò)濾后的音頻流進(jìn)行編碼壓縮并通過(guò)網(wǎng)絡(luò)進(jìn)行發(fā)送;
[0036]優(yōu)選地,本步驟可以對(duì)過(guò)濾后的音頻流逐幀進(jìn)行緩存和編碼壓縮。編碼壓縮后的音頻流用于對(duì)端接收并 還原進(jìn)行播放。
[0037]具體來(lái)說(shuō),設(shè)置錄制音頻流的緩沖區(qū)和存放對(duì)端音頻流的緩沖區(qū),同時(shí)都有接收到數(shù)據(jù)時(shí),進(jìn)行數(shù)據(jù)同步。即當(dāng)錄制的音頻流的緩沖區(qū)接收到數(shù)據(jù),且存放播放的對(duì)端音頻流的緩沖區(qū)接收到數(shù)據(jù)時(shí),可認(rèn)為此時(shí)的數(shù)據(jù)是同步的,采用此時(shí)的對(duì)端音頻流作為參考音頻。在實(shí)際應(yīng)用中,當(dāng)錄制的音頻流的緩沖區(qū)接收到N幀數(shù)據(jù),且播放的對(duì)端音頻流的緩沖區(qū)接收到N+1幀數(shù)據(jù)時(shí),效果較好。其中,幀數(shù)據(jù)與編碼采樣率成正比,例如:若編碼采樣率為8KB,一幀大小為160字節(jié);若采樣率為16KB,一幀大小為320字節(jié);若采樣率為32KB,一幀大小為640字節(jié)。
[0038]優(yōu)選地,本發(fā)明實(shí)施例中的回聲消除可采用一定算法的過(guò)濾,例如speex算法。由于本地錄制的音頻流是均勻穩(wěn)定的,而網(wǎng)絡(luò)傳送過(guò)來(lái)的遠(yuǎn)端音頻流的速度是不穩(wěn)定的,可每間隔固定的時(shí)間段,檢查作為參考音頻的對(duì)端發(fā)送的音頻流的幀數(shù)據(jù)大小,如果大于speex算法預(yù)定的緩沖值,則丟棄部分,以更好的選擇參考音頻;如果小于speex算法預(yù)定的緩沖值,則可以采用speex算法進(jìn)行回聲過(guò)濾。
[0039]由于音頻的編碼需要一段時(shí)間,按照8K采樣,每幀160字節(jié),編碼需要大約20ms左右的時(shí)間,壓縮音頻數(shù)據(jù)與回音消除同步可減少延遲??赏ㄟ^(guò)將緩存的一幀過(guò)濾后的音頻流數(shù)據(jù)完成編碼壓縮后,再緩存新的一幀過(guò)濾后的音頻流數(shù)據(jù)的方式來(lái)減少延遲。
[0040]以下以基于android平臺(tái),采用開(kāi)源的speex算法做回音消除和音頻編解碼來(lái)進(jìn)一步闡述本發(fā)明。Speex算法是專(zhuān)門(mén)針對(duì)音頻的編解碼的算法,該算法也在不斷的更新,現(xiàn)在已經(jīng)有了回音消除模塊,經(jīng)過(guò)實(shí)踐證明,speex可以較好的實(shí)現(xiàn)音頻編解碼和消除回聲。
[0041]請(qǐng)參閱圖3, java應(yīng)用層獲取speex庫(kù)函數(shù)的方法,由于speex算法是c語(yǔ)言編寫(xiě),要在java應(yīng)用層調(diào)用就需要將speex算法做成JNI庫(kù)文件,如圖所示,先從speex中提取接口函數(shù)封裝成JNI函數(shù),回音消除主要是speex_echo_cancelIation函數(shù),該函數(shù)通過(guò)對(duì)比錄制和播放的聲音,從錄制的聲音中濾除播放(回聲)的聲音;編解碼主要是speex_bits_write壓縮函數(shù)和speex_bits_read_from解壓函數(shù)。
[0042]各層封裝函數(shù)請(qǐng)參閱表1,將JNI封裝文件編譯成.so庫(kù)文件,在應(yīng)用層加載這個(gè)庫(kù),封裝應(yīng)用接口函數(shù),在應(yīng)用層調(diào)用表1中java應(yīng)用層封裝函數(shù)進(jìn)行回音消除和音頻編解碼。
[0043]表1開(kāi)源的speex算法中的各層封裝函數(shù)
[0044]
【權(quán)利要求】
1.一種網(wǎng)絡(luò)語(yǔ)音對(duì)講的方法,其特征在于,該方法包括: 對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步; 將所述對(duì)端發(fā)送的音頻流作為參考音頻流對(duì)所述本地錄制的音頻流中的回聲進(jìn)行過(guò)濾; 對(duì)過(guò)濾后的音頻流進(jìn)行編碼壓縮并通過(guò)網(wǎng)絡(luò)進(jìn)行發(fā)送。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步的步驟,具體包括: 設(shè)置用于對(duì)所述本地錄制的音頻流進(jìn)行緩存的錄制緩沖區(qū),以及對(duì)所述參考音頻流進(jìn)行緩存的參考緩沖區(qū);當(dāng)所述參考緩沖區(qū)接收到數(shù)據(jù)時(shí),對(duì)所本地錄制的音頻流和所述參考音頻流進(jìn)行數(shù)據(jù)同步。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于: 所述錄制緩沖區(qū)能夠?qū)幀所述錄制的音頻流數(shù)據(jù)進(jìn)行緩存,所述參考緩沖區(qū)能夠?qū)幀所述參考音頻流的數(shù)據(jù)進(jìn)行緩存;其中M>N,且M和N為自然數(shù)。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述將所述對(duì)端發(fā)送的音頻流作為參考音頻流對(duì)所述本地錄制的音頻流中的回聲進(jìn)行過(guò)濾的步驟,具體包括: 根據(jù)預(yù)設(shè)的固定間 隔的時(shí)間段,檢查對(duì)端發(fā)送的音頻流的幀數(shù)據(jù),當(dāng)幀數(shù)據(jù)小于speex算法預(yù)定的緩沖值時(shí),通過(guò)speex算法將所述本地錄制的音頻流中的回聲進(jìn)行過(guò)濾;當(dāng)對(duì)端發(fā)送的音頻流的幀數(shù)據(jù)大于speex算法預(yù)定的緩沖值時(shí),則丟棄部分幀數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對(duì)過(guò)濾后的音頻流進(jìn)行編碼壓縮包括:對(duì)過(guò)濾后的音頻流逐幀進(jìn)行緩存和編碼壓縮。
6.一種網(wǎng)絡(luò)語(yǔ)音對(duì)講裝置,其特征在于,該裝置包括同步模塊、回聲消除模塊、音頻編碼模塊以及發(fā)送模塊,其中: 同步模塊,用于對(duì)本地錄制的音頻流和對(duì)端發(fā)送的音頻流進(jìn)行數(shù)據(jù)同步; 回聲消除模塊,將所述對(duì)端發(fā)送的音頻流作為參考音頻流對(duì)所述本地錄制的音頻流中的回聲進(jìn)行過(guò)濾; 音頻編碼模塊,用于對(duì)過(guò)濾后的音頻流進(jìn)行編碼壓縮; 發(fā)送模塊,用于將編碼壓縮的音頻流通過(guò)網(wǎng)絡(luò)進(jìn)行發(fā)送。
7.根據(jù)權(quán)利要求6所述的對(duì)講裝置,其特征在于,所述同步模塊包括錄制緩沖區(qū)、參考緩沖區(qū)和數(shù)據(jù)同步單元,其中: 錄制緩沖區(qū),用于對(duì)所述本地錄制的音頻流進(jìn)行緩存; 參考緩沖區(qū),用于對(duì)所述參考音頻流進(jìn)行緩存; 數(shù)據(jù)同步單元,用于當(dāng)所述參考緩沖區(qū)接收到數(shù)據(jù)時(shí),對(duì)所述本地錄制的音頻流和所述參考音頻流進(jìn)行數(shù)據(jù)同步。
8.根據(jù)權(quán)利要求6所述的對(duì)講裝置,其特征在于,所述回聲消除模塊具體用于:根據(jù)預(yù)設(shè)的固定間隔的時(shí)間段,檢查對(duì)端發(fā)送的音頻流的幀數(shù)據(jù),當(dāng)幀數(shù)據(jù)小于speex算法預(yù)定的緩沖值時(shí),通過(guò)speex算法將所述本地錄制的音頻流中的回聲進(jìn)行過(guò)濾;當(dāng)對(duì)端發(fā)送的音頻流的幀數(shù)據(jù)大于speex算法預(yù)定的緩沖值時(shí),則丟棄部分幀數(shù)據(jù)。
9.根據(jù)權(quán)利要求7所述的對(duì)講裝置,其特征在于,所述音頻編碼模塊具體用于:對(duì)過(guò)濾后的音頻流逐幀進(jìn)行緩存和編碼壓縮。
10.一種網(wǎng)絡(luò)語(yǔ)音對(duì)講系統(tǒng),其特征在于,包括接收裝置以及如權(quán)利要求6-9任意項(xiàng)所述的網(wǎng)絡(luò)語(yǔ)音對(duì)講裝置,所述接收裝置包括接收模塊、音頻解碼模塊和音頻播放模塊,其中: 所述接收模塊,用于接收編碼壓縮后的音頻流; 所述音頻解碼模塊,用于還原接收到的編碼壓縮后的音頻流; 所述音頻播放模 塊,用于播放還原的音頻流。
【文檔編號(hào)】H04Q5/24GK103905928SQ201210572566
【公開(kāi)日】2014年7月2日 申請(qǐng)日期:2012年12月25日 優(yōu)先權(quán)日:2012年12月25日
【發(fā)明者】余焰, 羅世振, 陳兵, 劉文超 申請(qǐng)人:安科智慧城市技術(shù)(中國(guó))有限公司