国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種消除回聲的方法及裝置制造方法

      文檔序號:2826024閱讀:453來源:國知局
      一種消除回聲的方法及裝置制造方法
      【專利摘要】本發(fā)明公開了一種消除回聲的方法及裝置,屬于語音通信【技術(shù)領(lǐng)域】。所述方法包括:獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù);獲取所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù)據(jù);根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消除處理得到第三聲音數(shù)據(jù)。本發(fā)明通過當前時間單元之前的一個時間單元發(fā)送端發(fā)送的第二聲音數(shù)據(jù)和接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),進行回聲消除處理,將接收端聲音采集設(shè)備采集并生成的數(shù)據(jù)和之前一個單位的聲音數(shù)據(jù)在時間上進行對齊,減輕了各種因素造成的時延,提局了回聲消除的效率。
      【專利說明】一種消除回聲的方法及裝置

      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及語音通信【技術(shù)領(lǐng)域】,特別涉及一種消除回聲的方法及裝置。

      【背景技術(shù)】
      [0002] 隨著語音通信技術(shù)的發(fā)展,通過互聯(lián)網(wǎng)進行語音通話已越來越普及。通信雙方在 進行語音通信時,發(fā)送端的聲音通過網(wǎng)絡(luò)發(fā)送到接收端后通過聲音播放設(shè)備播放出來,此 時聲音還會通過空氣傳播至接收端的聲音采集設(shè)備,并且和接收端產(chǎn)生的聲音一起返回給 發(fā)送端,返回后發(fā)送端會聽到自己的聲音,這個聲音就是在語音通信中產(chǎn)生的回聲。因此為 了提高語音通信的質(zhì)量,需要進行消除回聲的處理。
      [0003] 現(xiàn)有技術(shù)中對于消除回聲的處理方法為:在當前時間接收端接收到發(fā)送端發(fā)送的 聲音數(shù)據(jù)1,將其復(fù)制一份,以及通過聲音播放設(shè)備對其進行播放得到的聲音A1。在當前時 間接收端的聲音采集設(shè)備采集聲音,采集的聲音包括用戶說話的聲音B和聲音播放設(shè)備播 放的聲音A2,根據(jù)采集的聲音生成聲音數(shù)據(jù)2,通過當前時間復(fù)制的聲音數(shù)據(jù)1對當前時間 生成的聲音數(shù)據(jù)2進行回聲消除處理得到聲音數(shù)據(jù)3。其中,需要說明的是:由于聲音播放 設(shè)備播放的聲音在空氣中傳播至聲音采集設(shè)備時會有延遲,以及播放設(shè)備和采集設(shè)備等延 時因素的影響,會導(dǎo)致聲音采集設(shè)備采集到的聲音中包括的聲音A2是聲音播放設(shè)備在當 前時間之前播放的聲音,即聲音A2是聲音播放設(shè)備在播放聲音A1之前播放的聲音。
      [0004] 在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
      [0005] 由于聲音A2是聲音播放設(shè)備在播放聲音A1之前播放的聲音,所以通過當前時間 復(fù)制的一份聲音數(shù)據(jù)1對當前時間生成的聲音數(shù)據(jù)2進行回聲消除處理得到的聲音數(shù)據(jù)3 中可能仍包括回音,降低回聲消除率。


      【發(fā)明內(nèi)容】

      [0006] 為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種消除回聲的方法及裝置。所 述技術(shù)方案如下:
      [0007] -方面,提供了一種消除回聲的方法,所述方法包括:
      [0008] 獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),所述第一聲音 數(shù)據(jù)為所述聲音采集設(shè)備根據(jù)采集到的第一聲音和所述接收端的聲音播放設(shè)備播放的第 二聲音生成的聲音數(shù)據(jù),所述第二聲音是所述接收端的聲音播放設(shè)備根據(jù)發(fā)送端在所述當 前時間單元之前發(fā)送的聲音數(shù)據(jù)進行播放得到的聲音;
      [0009] 獲取所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù)據(jù);
      [0010] 根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消除處理得到第三聲音數(shù) 據(jù)。
      [0011] 另一方面,提供了一種消除回聲的裝置,所述裝置包括:
      [0012] 第一獲取模塊,用于獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音 數(shù)據(jù),所述第一聲音數(shù)據(jù)為所述聲音采集設(shè)備根據(jù)采集到的第一聲音和所述接收端的聲音 播放設(shè)備播放的第二聲音生成的聲音數(shù)據(jù),所述第二聲音是所述接收端的聲音播放設(shè)備根 據(jù)發(fā)送端在所述當前時間單元之前發(fā)送的聲音數(shù)據(jù)進行播放得到的聲音;
      [0013] 第二獲取模塊,用于獲取所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送 的第二聲音數(shù)據(jù);
      [0014] 回聲消除模塊,用于根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消除處 理得到第三聲音數(shù)據(jù)。
      [0015] 本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
      [0016] 通過當前時間單元之前的一個時間單元發(fā)送端發(fā)送的第二聲音數(shù)據(jù)和接收端的 聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),進行回聲消除處理,將接收端聲音采 集設(shè)備采集并生成的數(shù)據(jù)和之前一個單位的聲音數(shù)據(jù)在時間上進行對齊,減輕了各種因素 造成的時延,提1? 了回聲消除的效率。

      【專利附圖】

      【附圖說明】
      [0017] 為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
      [0018] 圖1是本發(fā)明實施例一提供的消除回聲的方法流程圖;
      [0019] 圖2是本發(fā)明實施例一提供的消除回聲的實施環(huán)境的結(jié)構(gòu)示意圖;
      [0020] 圖3是本發(fā)明實施例二提供的消除回聲的方法中創(chuàng)建同步隊列的方法的流程圖;
      [0021] 圖4是本發(fā)明實施例二提供的消除回聲的方法流程圖;
      [0022] 圖5是本發(fā)明實施例三提供的消除回聲的裝置結(jié)構(gòu)示意圖;
      [0023] 圖6是本發(fā)明實施例四提供的消除回聲的裝置結(jié)構(gòu)示意圖。

      【具體實施方式】
      [0024] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方 式作進一步地詳細描述。
      [0025] 實施例一
      [0026] 本發(fā)明實施例提供了一種消除回聲的方法,參見圖1,方法流程包括:
      [0027] 101 :獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),所述第一 聲音數(shù)據(jù)為所述聲音采集設(shè)備根據(jù)采集到的第一聲音和所述接收端的聲音播放設(shè)備播放 的第二聲音生成的聲音數(shù)據(jù),所述第二聲音是所述接收端的聲音播放設(shè)備根據(jù)發(fā)送端在所 述當前時間單元之前發(fā)送的聲音數(shù)據(jù)進行播放得到的聲音;
      [0028] 102 :獲取所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù) 據(jù);
      [0029] 103:根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消除處理得到第三聲 音數(shù)據(jù)。
      [0030] 其中,請參考圖2,其示出了本發(fā)明實施例所涉及的實施環(huán)境的結(jié)構(gòu)示意圖,該實 施環(huán)境包括發(fā)送端201、接收端202。其中,接收端202包括聲音播放設(shè)備2021,聲音采集設(shè) 備2022以及回聲消除模塊2023。
      [0031] 其中回聲則是通過聲音播放設(shè)備2021傳至聲音采集設(shè)備2022而產(chǎn)生的,回聲消 除模塊2023用于消除該產(chǎn)生的回聲。
      [0032] 本發(fā)明實施例通過當前時間單元之前的一個時間單元發(fā)送端發(fā)送的第二聲音數(shù) 據(jù)和接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),進行回聲消除處理,將 接收端聲音采集設(shè)備采集并生成的數(shù)據(jù)和之前一個單位的聲音數(shù)據(jù)在時間上進行對齊,減 輕了各種因素造成的時延,提高了回聲消除的效率。
      [0033] 實施例二
      [0034] 本發(fā)明實施例提供了一種消除回聲的方法,參見圖3,方法流程包括:
      [0035] 301:創(chuàng)建同步隊列。
      [0036] 具體的,采集隊列中獲取到的聲音數(shù)據(jù)包含用戶產(chǎn)生的聲音數(shù)據(jù)以及前一時段播 放隊列中播放的并經(jīng)過空氣傳播至聲音采集設(shè)備后采集到的遠端聲音數(shù)據(jù),這兩方面的聲 音數(shù)據(jù)組成了采集隊列中的近端聲音數(shù)據(jù)。由于通過空氣傳播經(jīng)過該段時間造成時間延 遲,此時采集隊列中收錄的近端聲音數(shù)據(jù)和自適應(yīng)濾波器中獲取到的播放隊列播放的遠端 聲音數(shù)據(jù)并不是同步的,即并不是屬于同一時間點收錄和播放的。因此創(chuàng)建同步隊列是將 播放隊列進行緩存,等待經(jīng)過該段延遲時間,再將采集隊列中的聲音數(shù)據(jù)和同步隊列中緩 存的聲音數(shù)據(jù)進行回聲消除算法計算,以消除采集隊列中收錄到的回聲。
      [0037] 302 :獲取所述發(fā)送端發(fā)送的聲音數(shù)據(jù),以及所述聲音采集設(shè)備生成的聲音數(shù)據(jù)。
      [0038] 其中,同步隊列在創(chuàng)建并初始化時,需要獲取當前的播放隊列中的聲音數(shù)據(jù),即發(fā) 送端發(fā)送的聲音數(shù)據(jù),以及當前的采集隊列中的聲音數(shù)據(jù)即聲音采集設(shè)備采集并生成的聲 音數(shù)據(jù)。
      [0039] 其中,聲音采集設(shè)備為接收端的聲音采集設(shè)備。
      [0040] 303:將所述聲音采集設(shè)備生成的聲音數(shù)據(jù)從所述同步隊列的隊尾入隊,再將所述 發(fā)送端發(fā)送的聲音數(shù)據(jù)從所述同步隊列的隊尾入隊。
      [0041] 當同步隊列在初始化后,由此時獲取到的采集隊列中的聲音數(shù)據(jù)以及此時獲取到 的播放隊列中的聲音數(shù)據(jù)構(gòu)成,此時同步隊列中的長度即為整個延遲對應(yīng)的時間長度。
      [0042] 從此開始,則根據(jù)同步隊列和采集隊列這兩個隊列中的聲音數(shù)據(jù),進行回聲消除 算法。此時,開始進行回聲消除算法的過程,先從采集隊列和同步隊列的頭部分別獲取相同 長度的聲音數(shù)據(jù),例如分別獲取20毫秒的聲音數(shù)據(jù),由于同步隊列中的頭部,目前是由當 前的采集隊列中獲取的,因此此時獲取的20毫秒的數(shù)據(jù)與采集隊列中獲取的20毫秒的數(shù) 據(jù)相同,在回聲消除算法中無法消除這段聲音數(shù)據(jù)中的回聲。同理,對于同步隊列中頭部的 這一整段的采集隊列中的聲音數(shù)據(jù)都是無法消除回聲的,優(yōu)選的方式可以為將采集隊列中 的聲音數(shù)據(jù)和同步隊列中頭部與采集隊列中的聲音數(shù)據(jù)相同長度的聲音數(shù)據(jù)進行丟棄處 理,并不對其進行回聲消除算法的流程;另一個方式則按正常的流程開始對采集隊列中的 聲音數(shù)據(jù)以及同步隊列中的聲音數(shù)據(jù)進行回聲消除算法的計算,并將計算后的聲音數(shù)據(jù)發(fā) 送給對方,雖然無法消除回聲,但是這一周期內(nèi)的采集隊列中的聲音數(shù)據(jù)的數(shù)據(jù)量并不大, 可以忽略不計。
      [0043] 從下一個周期再進行回聲消除算法的流程時,獲取下一個周期中播放隊列中的聲 音數(shù)據(jù),并將其加入到同步隊列中的尾部。并且獲取下一個周期中的采集隊列中的聲音數(shù) 據(jù),此時對應(yīng)同步隊列中的頭部則為上一個周期獲取的播放隊列中的聲音數(shù)據(jù),這兩段數(shù) 據(jù)則可以認為是采集隊列中的回聲是該上一個周期獲取的播放隊列中的聲音數(shù)據(jù),即將采 集隊列中的近端聲音數(shù)據(jù)和播放隊列中的遠端聲音數(shù)據(jù)進行對齊,通過將這兩段聲音數(shù)據(jù) 進行回聲消除算法,即可以根據(jù)在時間上對齊的兩段數(shù)據(jù),將采集隊列中的回聲盡可能的 消除。
      [0044] 例如:在創(chuàng)建同步隊列時,采集隊列中的聲音數(shù)據(jù)包括:前一個時間單位由聲音 播放設(shè)備播放的聲音&,以及當前一個時間單位中用戶B說話的聲音&,因此此時采集隊列 的聲音數(shù)據(jù)的內(nèi)容為&+A。。播放隊列中的聲音數(shù)據(jù)包括:當前一個時間單位中獲取到的聲 音八 1,因此此時播放隊列的聲音數(shù)據(jù)的內(nèi)容為Ai。此時將采集隊列中的聲音數(shù)據(jù)和播放隊 列中的聲音數(shù)據(jù)入隊到同步隊列后,同步隊列的聲音數(shù)據(jù)的結(jié)構(gòu)為。此時,在采集 隊列和同步隊列分別獲取預(yù)設(shè)時間長度20毫秒的聲音數(shù)據(jù),進行回聲消除算法的計算。由 于此時同步隊列的頭部的聲音數(shù)據(jù)和采集隊列中的聲音數(shù)據(jù)相同,那么此時采集隊列中的 回聲是無法消除的,周期性的從采集隊列和同步隊列中提取聲音數(shù)據(jù)進行回聲消除算法, 直至當前一個時間單位中的采集隊列被處理完時,都無法消除其中的回聲。進入到下一個 時間單位時,采集隊列中的聲音數(shù)據(jù)的內(nèi)容為B 2+Ai,其中&為前一個時間單位聲音播放設(shè) 備播放的聲音,通過空氣傳播至聲音采集設(shè)備采集得到,播放隊列中的聲音數(shù)據(jù)的內(nèi)容為 A 2。此時從采集隊列和同步隊列的頭部分別獲取預(yù)設(shè)時間長度20毫秒的聲音數(shù)據(jù),進行回 聲消除算法的計算,采集隊列中的聲音數(shù)據(jù)的內(nèi)容為20毫秒的氏+Ai,同步隊列中由于上一 個階段已經(jīng)將出隊,此時的同步隊列中的提取的內(nèi)容為20毫秒的&。因此此時即可 通過回聲消除算法在B 2+Ai將Ai去除。
      [0045] 本發(fā)明實施例中提供了一種根據(jù)創(chuàng)建的同步隊列進行回聲消除的過程,方法流程 如圖4所示,方法流程包括:
      [0046] 401 :獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),所述第一 聲音數(shù)據(jù)為所述聲音采集設(shè)備根據(jù)采集到的第一聲音和所述接收端的聲音播放設(shè)備播放 的第二聲音生成的聲音數(shù)據(jù),所述第二聲音是所述接收端的聲音播放設(shè)備根據(jù)發(fā)送端在所 述當前時間單元之前發(fā)送的聲音數(shù)據(jù)進行播放得到的聲音。
      [0047] 其中,獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù)的具體過 程為:
      [0048] 從采集隊列的隊頭出隊一個時間單位的聲音數(shù)據(jù),將所述出隊的一個時間單位的 聲音數(shù)據(jù)作為當前時間單位的第一聲音數(shù)據(jù);
      [0049] 其中,所述采集隊列用于存儲在當前時間單位內(nèi)所述聲音采集設(shè)備根據(jù)用戶說話 的第一聲音和所述接收端的聲音播放設(shè)備播放的第二聲音生成的聲音數(shù)據(jù)。
      [0050] 402 :獲取所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù) 據(jù)。
      [0051] 其中,獲取所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù) 據(jù)的具體過程為:
      [0052] 從同步隊列的隊頭出隊一個時間單位的聲音數(shù)據(jù),將所述出隊的一個時間單位的 聲音數(shù)據(jù)作為所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù)據(jù);
      [0053] 其中,所述同步隊列用于存儲發(fā)送端在連續(xù)的多個時間單位內(nèi)發(fā)送的聲音數(shù)據(jù)且 離同步隊列的隊尾最近的一個時間單位的同步數(shù)據(jù)為發(fā)送端在當前時間單位內(nèi)發(fā)送的聲 音數(shù)據(jù)。
      [0054] 403:根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消除處理得到第三聲 音數(shù)據(jù)。
      [0055] 其中,根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消除處理得到第三聲 音數(shù)據(jù)的具體過程為 :
      [0056] 根據(jù)所述第二聲音數(shù)據(jù),并通過回聲消除算法對所述第一聲音數(shù)據(jù)進行回聲消除 處理得到第三聲音數(shù)據(jù)。
      [0057] 其中,回聲消除算法的具體操作步驟是在回聲消除模塊中進行的。
      [0058] 404:將當前所述發(fā)送端發(fā)送一個時間單位的聲音數(shù)據(jù)從所述同步隊列的隊尾入 隊。
      [0059] 在每個時間單位都需要將播放隊列中的該時間單位中獲取到的聲音數(shù)據(jù)入隊到 同步隊列的尾部。
      [0060] 405 :如果所述當前時間單位的殘余回聲系數(shù)大于預(yù)設(shè)閾值,等待在下一個時間單 位獲取接收端的聲音采集設(shè)備生成的下一個時間單位的第四聲音數(shù)據(jù),并從遠端音頻幀相 似度對齊計算循環(huán)隊列中獲取與所述第四聲音數(shù)據(jù)之間的相似度最大的一個時間單位的 聲音數(shù)據(jù),將所述獲取一個時間單位的聲音數(shù)據(jù)在所述遠端音頻幀相似度對齊計算循環(huán)隊 列中的位置作為所述回聲消除算法的遠端輸入位置。
      [0061] 由于時鐘偏移或者初次誤差導(dǎo)致遠端聲音數(shù)據(jù)和近端聲音數(shù)據(jù)的時延過大,遠超 過了同步隊列的同步能力,因此需要調(diào)整回聲消除模塊中的遠端音頻幀相似度對齊計算循 環(huán)隊列中的查詢起始位置。對于調(diào)整遠端音頻幀相似度對齊計算循環(huán)隊列中的遠端輸入的 位置的過程,可以為:
      [0062] (1)計算所述第一聲音數(shù)據(jù)和所述第二聲音數(shù)據(jù)之間的第一互相關(guān)系數(shù),以及計 算所述第一聲音數(shù)據(jù)和所述第三聲音數(shù)據(jù)之間的第二互相關(guān)系數(shù)。
      [0063] 具體的,首先對回聲消除算法輸出的數(shù)據(jù)和采集隊列中獲取的數(shù)據(jù)進行互相關(guān)計 算,確定近端聲音數(shù)據(jù)中是否存在近端講話或其他近端聲音輸入。
      [0064] 先計算第一聲音數(shù)據(jù)和第二聲音數(shù)據(jù)之間的第一互相關(guān)系數(shù)Rxd,再計算第一聲 音數(shù)據(jù)和第三聲音數(shù)據(jù)之間的第二互相關(guān)系數(shù)Rde。
      [0065] (2)根據(jù)所述第一聲音數(shù)據(jù),計算所述第一聲音數(shù)據(jù)的第一信號能量iEnergy,以 及根據(jù)所述第三聲音數(shù)據(jù),計算所述第三聲音數(shù)據(jù)的第二信號能量oEnergy。
      [0066] 通過預(yù)設(shè)算法分別計算第一聲音數(shù)據(jù)和第三聲音數(shù)據(jù)的信號能量。
      [0067] (3)根據(jù)所述第一互相關(guān)系數(shù)和所述第二互相關(guān)系數(shù),判斷所述第一聲音數(shù)據(jù)中 是否存在近端講話或其他近端聲音輸入,以及判斷所述第一聲音數(shù)據(jù)中是否存在回聲。 [0068] 對于判斷第一聲音數(shù)據(jù)中是否存在近端講話或其他近端聲音輸入和判斷第一聲 音數(shù)據(jù)中是否存在回聲的過程具體為:
      [0069] 其中,如果所述第一互相關(guān)系數(shù)小于第二預(yù)設(shè)閾值,且所述第二互相關(guān)系數(shù)大于 第三預(yù)設(shè)閾值時,則確定所述第一聲音數(shù)據(jù)中存在近端講話或其他近端聲音輸入;否則確 定所述第一聲音數(shù)據(jù)中不存在近端講話或其他近端聲音輸入。
      [0070] 具體的,對于如果第二預(yù)設(shè)閾值和第三預(yù)設(shè)閾值距離進行說明:當Rde>0. 98f并 且Rxd〈0. If時,表不第一聲音數(shù)據(jù)中近端有人講話或其他近端聲音輸入。其中第一聲音數(shù) 據(jù)中存在近端講話或其他近端聲音輸入可以表示為:NearTalk=l,如不存在近端講話或其 他近端聲音輸入可以表示為NearTalk=0。
      [0071] 其中,如果所述第一互相關(guān)系數(shù)為零,則確定所述第一聲音數(shù)據(jù)不存在回聲;如果 所述第一互相關(guān)系數(shù)不為零,且所述第一聲音數(shù)據(jù)中存在近端講話或其他近端聲音輸入, 則確定所述第一聲音數(shù)據(jù)不存在回聲;如果所述第一互相關(guān)系數(shù)不為零,且所述第一聲音 數(shù)據(jù)中不存在近端的聲音,則確定所述第一聲音數(shù)據(jù)存在回聲。
      [0072] 其中,第一聲音數(shù)據(jù)中存在回聲則表不為Echo=l ;第一聲音數(shù)據(jù)中不存在回聲則 表示為Echo=0。
      [0073] 具體的判斷過程可以為:
      [0074] 當Rxd為0,即第一聲音數(shù)據(jù)和第二聲音數(shù)據(jù)之間完全無關(guān)時,則表示第一聲音數(shù) 據(jù)中不存在回聲;當Rxd不為0,且NearTalk為1時,則表示第一聲音數(shù)據(jù)中不存在回聲; 當Rxd不為0,且NearTalk不為1時,則表示第一聲音數(shù)據(jù)中存在回聲。
      [0075] (4)獲取上一周期計算的殘余回聲系數(shù),并根據(jù)所述第一信號能量iEnergy,所述 第二信號能量oEnergy,所述第一聲音數(shù)據(jù)中存在近端的聲音的情況,所述第二聲音數(shù)據(jù)中 存在回聲的情況以及所述殘余回聲系數(shù),計算當前周期的殘余回聲系數(shù)。
      [0076] 其中,殘余回聲系數(shù)通過EchoWorse表示,代表周期性記錄的根據(jù)預(yù)設(shè)算法計算 得到的殘余回聲的累積值,并通過該殘余回聲系數(shù)最終確定是否進入二次同步的流程。
      [0077] 因此,計算EchoWorse的過程可以具體為:
      [0078] 當 NearTalk 為 0,且 Echo 為 1,且 oEnergy〈0. l*iEnergy,且 EchoWorse>10 時,將 EchoWorse 進行以下處理:EchoWorse=EchoWorse_2 ;
      [0079] 當 NearTalk 為 0,且 Echo 為 1,且 oEnergy〈0. 5*iEnergy 時,將 EchoWorse 進行以 下處理:EchoWorse++ ;
      [0080] 當 NearTalk 為 0,且 Echo 為 1,且 oEnergy>0· l*iEnergy 時,將 EchoWorse 進行以 下處理:EchoWorse=EchoWorse+2 ;
      [0081] 當 NearTalk 為 0,且 Echo 不為 1,且 oEnergy>iEnergy 時,將 EchoWorse 進行以下 處理:EchoWorse++ ;
      [0082] 當 NearTalk 為 0,且 Echo 為 0,且 oEnergy〈0. l*iEnergy,且 EchoWorse>2 時,將 EchoWorse 進行以下處理:EchoWorse -;
      [0083] 當 NearTalk 為 0,且 Echo 為 0, oEnergy>0· 85*iEnergy,將 EchoWorse 進行以下處 理:EchoWorse=EchoWorse+2。
      [0084] 具體為:
      [0085] if ( NearTalk = 0 ) f l if( Echo ==1 ) { if( oEnergy< O.l^iEnergv ) { if( Echo Worse〉10 ) { EchoWorse= EchoWorse- 2; } }else if( oEnergy< 0.5*iEnergy ) { EchoWorse 十+; }else
      [0086] { EchoWorse= EchoWorse+ 2; } } else { if( oEnergy> i Energy ) EchoWorse++; } } } else
      [ if { oEnergy< 0.1 *i Energy ) { if( EchoWorse> 2 ) { EchoWorse-; } } else if( oEnergy> 0.85*iEnergy ) { EchoWorse =EchoWorse+2; } }
      [0087] 具體的,通過第一聲音數(shù)據(jù)中是否存在近端講話的聲音、第一聲音數(shù)據(jù)是否存在 回聲,以及第一信號能量和第二信號能量確定EchoWorse的計算方式。
      [0088] (5)如果所述當前時間單位的殘余回聲系數(shù)大于預(yù)設(shè)閾值,等待在下一個時間單 位獲取接收端的聲音采集設(shè)備生成的下一個時間單位的第四聲音數(shù)據(jù);
      [0089] 在遠端音頻幀相似度對齊計算循環(huán)隊列中從隊列頭部開始,依次選取預(yù)設(shè)時間長 度的聲音數(shù)據(jù),分別與所述第四聲音數(shù)據(jù)進行互相關(guān)性計算得到互相關(guān)系數(shù),在計算得到 的所有的互相關(guān)系數(shù)中選取最大互相關(guān)系數(shù)對應(yīng)的聲音數(shù)據(jù),并將該聲音數(shù)據(jù)所對應(yīng)的數(shù) 據(jù)位置在所述遠端音頻幀相似度對齊計算循環(huán)隊列中的位置作為所述回聲消除算法的遠 端輸入位置。
      [0090] 當前計算EchoWorse完畢后,對EchoWorse值與預(yù)設(shè)的回聲閾值進行對比,假設(shè)預(yù) 設(shè)的回聲閾值為50,如果EchoWorse值大于該值則觸發(fā)二次同步的流程,以修改回音消除 模塊中遠端音頻幀相似度對齊計算循環(huán)隊列中數(shù)據(jù)的輸入位置。
      [0091] 其中,遠端音頻幀相似度對齊計算循環(huán)隊列為回音消除算法模塊中的一個緩存隊 列,用于保存從同步隊列中提取的數(shù)據(jù),例如在獲取同步隊列中的20毫秒的數(shù)據(jù)時,將該 20毫秒的數(shù)據(jù)入隊遠端音頻幀相似度對齊計算循環(huán)隊列中,此時該隊列保存有1秒鐘的同 步隊列中的數(shù)據(jù)。
      [0092] 本發(fā)明實施例通過當前時間單元之前的一個時間單元發(fā)送端發(fā)送的第二聲音數(shù) 據(jù)和接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),進行回聲消除處理,將 接收端聲音采集設(shè)備采集并生成的數(shù)據(jù)和之前一個單位的聲音數(shù)據(jù)在時間上進行對齊,減 輕了各種因素造成的時延,提高了回聲消除的效率。
      [0093] 實施例三
      [0094] 本發(fā)明實施例提供了一種消除回聲的裝置,參見圖5,該裝置包括:
      [0095] 第一獲取模塊501,用于獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一 聲音數(shù)據(jù),所述第一聲音數(shù)據(jù)為所述聲音采集設(shè)備根據(jù)采集到的第一聲音和所述接收端的 聲音播放設(shè)備播放的第二聲音生成的聲音數(shù)據(jù),所述第二聲音是所述接收端的聲音播放設(shè) 備根據(jù)發(fā)送端在所述當前時間單元之前發(fā)送的聲音數(shù)據(jù)進行播放得到的聲音;
      [0096] 第二獲取模塊502,用于獲取所述當前時間單元之前的一個時間單元所述發(fā)送端 發(fā)送的第二聲音數(shù)據(jù);
      [0097] 回聲消除模塊503,用于根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消 除處理得到第三聲音數(shù)據(jù)。
      [0098] 本發(fā)明實施例通過當前時間單元之前的一個時間單元發(fā)送端發(fā)送的第二聲音數(shù) 據(jù)和接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),進行回聲消除處理,將 接收端聲音采集設(shè)備采集并生成的數(shù)據(jù)和之前一個單位的聲音數(shù)據(jù)在時間上進行對齊,減 輕了各種因素造成的時延,提高了回聲消除的效率。
      [0099] 實施例四
      [0100] 本發(fā)明實施例提供了一種消除回聲的裝置,參見圖6,該裝置包括:
      [0101] 第一獲取模塊601,用于獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一 聲音數(shù)據(jù),所述第一聲音數(shù)據(jù)為所述聲音采集設(shè)備根據(jù)采集到的第一聲音和所述接收端的 聲音播放設(shè)備播放的第二聲音生成的聲音數(shù)據(jù),所述第二聲音是所述接收端的聲音播放設(shè) 備根據(jù)發(fā)送端在所述當前時間單元之前發(fā)送的聲音數(shù)據(jù)進行播放得到的聲音;
      [0102] 第二獲取模塊602,用于獲取所述當前時間單元之前的一個時間單元所述發(fā)送端 發(fā)送的第二聲音數(shù)據(jù);
      [0103] 回聲消除模塊603,用于根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消 除處理得到第三聲音數(shù)據(jù)。
      [0104] 在具體是實施方式中,所述第一獲取模塊601具體用于:
      [0105] 從采集隊列的隊頭出隊一個時間單位的聲音數(shù)據(jù),將所述出隊的一個時間單位的 聲音數(shù)據(jù)作為當前時間單位的第一聲音數(shù)據(jù);
      [0106] 其中,所述采集隊列用于存儲在當前時間單位內(nèi)所述聲音采集設(shè)備根據(jù)用戶說話 的第一聲音和所述接收端的聲音播放設(shè)備播放的第二聲音生成的聲音數(shù)據(jù)。
      [0107] 其中,所述第二獲取模塊602具體用于:
      [0108] 從同步隊列的隊頭出隊一個時間單位的聲音數(shù)據(jù),將所述出隊的一個時間單位的 聲音數(shù)據(jù)作為所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù)據(jù);
      [0109] 其中,所述同步隊列用于存儲發(fā)送端在連續(xù)的多個時間單位內(nèi)發(fā)送的聲音數(shù)據(jù)且 離同步隊列的隊尾最近的一個時間單位的同步數(shù)據(jù)為發(fā)送端在當前時間單位內(nèi)發(fā)送的聲 音數(shù)據(jù)。
      [0110] 其中,所述裝置還包括:
      [0111] 創(chuàng)建模塊603,用于創(chuàng)建同步隊列;
      [0112] 第三獲取模塊604,用于獲取所述發(fā)送端發(fā)送的聲音數(shù)據(jù),以及所述聲音采集設(shè)備 生成的聲音數(shù)據(jù);
      [0113] 第一入隊模塊605,用于將所述聲音采集設(shè)備生成的聲音數(shù)據(jù)從所述同步隊列的 隊尾入隊,再將所述發(fā)送端發(fā)送的聲音數(shù)據(jù)從所述同步隊列的隊尾入隊。
      [0114] 其中,所述回聲消除模塊603具體用于:
      [0115] 根據(jù)所述第二聲音數(shù)據(jù),并通過回聲消除算法對所述第一聲音數(shù)據(jù)進行回聲消除 處理得到第三聲音數(shù)據(jù);
      [0116] 相應(yīng)的,所述裝置還包括:包括:
      [0117] 處理模塊606,用于如果所述當前時間單位的殘余回聲系數(shù)大于預(yù)設(shè)閾值,等待在 下一個時間單位獲取接收端的聲音采集設(shè)備生成的下一個時間單位的第四聲音數(shù)據(jù),并從 遠端音頻幀相似度對齊計算循環(huán)隊列中獲取與所述第四聲音數(shù)據(jù)之間的相似度最大的一 個時間單位的聲音數(shù)據(jù),將所述獲取一個時間單位的聲音數(shù)據(jù)在所述遠端音頻幀相似度對 齊計算循環(huán)隊列中的位置作為所述回聲消除算法的遠端輸入位置。
      [0118] 其中,所述裝置還包括:
      [0119] 第二入隊模塊607,用于將當前所述發(fā)送端發(fā)送一個時間單位的聲音數(shù)據(jù)從所述 同步隊列的隊尾入隊。
      [0120] 本發(fā)明實施例通過當前時間單元之前的一個時間單元發(fā)送端發(fā)送的第二聲音數(shù) 據(jù)和接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),進行回聲消除處理,將 接收端聲音采集設(shè)備采集并生成的數(shù)據(jù)和之前一個單位的聲音數(shù)據(jù)在時間上進行對齊,減 輕了各種因素造成的時延,提高了回聲消除的效率。
      [0121] 上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
      [0122] 本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件 來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀 存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
      [0123] 以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和 原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
      【權(quán)利要求】
      1. 一種消除回聲的方法,其特征在于,所述方法包括: 獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù)據(jù),所述第一聲音數(shù)據(jù) 為所述聲音采集設(shè)備根據(jù)采集到的第一聲音和所述接收端的聲音播放設(shè)備播放的第二聲 音生成的聲音數(shù)據(jù),所述第二聲音是所述接收端的聲音播放設(shè)備根據(jù)發(fā)送端在所述當前時 間單元之前發(fā)送的聲音數(shù)據(jù)進行播放得到的聲音; 獲取所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù)據(jù); 根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消除處理得到第三聲音數(shù)據(jù)。
      2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取接收端的聲音采集設(shè)備生成的 當前時間單位的第一聲音數(shù)據(jù),包括: 從采集隊列的隊頭出隊一個時間單位的聲音數(shù)據(jù),將所述出隊的一個時間單位的聲音 數(shù)據(jù)作為當前時間單位的第一聲音數(shù)據(jù); 其中,所述采集隊列用于存儲在當前時間單位內(nèi)所述聲音采集設(shè)備根據(jù)用戶說話的第 一聲音和所述接收端的聲音播放設(shè)備播放的第二聲音生成的聲音數(shù)據(jù)。
      3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取所述當前時間單元之前的一個 時間單元所述發(fā)送端發(fā)送的第二聲音數(shù)據(jù),包括: 從同步隊列的隊頭出隊一個時間單位的聲音數(shù)據(jù),將所述出隊的一個時間單位的聲音 數(shù)據(jù)作為所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù)據(jù); 其中,所述同步隊列用于存儲發(fā)送端在連續(xù)的多個時間單位內(nèi)發(fā)送的聲音數(shù)據(jù)且離同 步隊列的隊尾最近的一個時間單位的同步數(shù)據(jù)為發(fā)送端在當前時間單位內(nèi)發(fā)送的聲音數(shù) 據(jù)。
      4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述獲取所述當前時間單元之前的一個 時間單元所述發(fā)送端發(fā)送的第二聲音數(shù)據(jù)之前,包括: 創(chuàng)建同步隊列; 獲取所述發(fā)送端發(fā)送的聲音數(shù)據(jù),以及所述聲音采集設(shè)備生成的聲音數(shù)據(jù); 將所述聲音采集設(shè)備生成的聲音數(shù)據(jù)從所述同步隊列的隊尾入隊,再將所述發(fā)送端發(fā) 送的聲音數(shù)據(jù)從所述同步隊列的隊尾入隊。
      5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述第二聲音數(shù)據(jù)對所述第一 聲音數(shù)據(jù)進行回聲消除處理得到第三聲音數(shù)據(jù),包括: 根據(jù)所述第二聲音數(shù)據(jù),并通過回聲消除算法對所述第一聲音數(shù)據(jù)進行回聲消除處理 得到第三聲音數(shù)據(jù); 根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消除處理得到第三聲音數(shù)據(jù)之 后,還包括: 如果所述當前時間單位的殘余回聲系數(shù)大于預(yù)設(shè)閾值,等待在下一個時間單位獲取接 收端的聲音采集設(shè)備生成的下一個時間單位的第四聲音數(shù)據(jù),并從遠端音頻幀相似度對齊 計算循環(huán)隊列中獲取與所述第四聲音數(shù)據(jù)之間的相似度最大的一個時間單位的聲音數(shù)據(jù), 將所述獲取一個時間單位的聲音數(shù)據(jù)在所述遠端音頻幀相似度對齊計算循環(huán)隊列中的位 置作為所述回聲消除算法的遠端輸入位置。
      6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述第二聲音數(shù)據(jù)對所述第一 聲音數(shù)據(jù)進行回聲消除處理得到第三聲音數(shù)據(jù)之后,所述方法還不: 將當前所述發(fā)送端發(fā)送一個時間單位的聲音數(shù)據(jù)從所述同步隊列的隊尾入隊。
      7. -種消除回聲的裝置,其特征在于,所述裝置包括: 第一獲取模塊,用于獲取接收端的聲音采集設(shè)備生成的當前時間單位的第一聲音數(shù) 據(jù),所述第一聲音數(shù)據(jù)為所述聲音采集設(shè)備根據(jù)采集到的第一聲音和所述接收端的聲音播 放設(shè)備播放的第二聲音生成的聲音數(shù)據(jù),所述第二聲音是所述接收端的聲音播放設(shè)備根據(jù) 發(fā)送端在所述當前時間單元之前發(fā)送的聲音數(shù)據(jù)進行播放得到的聲音; 第二獲取模塊,用于獲取所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第 二聲音數(shù)據(jù); 回聲消除模塊,用于根據(jù)所述第二聲音數(shù)據(jù)對所述第一聲音數(shù)據(jù)進行回聲消除處理得 到第三聲音數(shù)據(jù)。
      8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第一獲取模塊具體用于: 從采集隊列的隊頭出隊一個時間單位的聲音數(shù)據(jù),將所述出隊的一個時間單位的聲音 數(shù)據(jù)作為當前時間單位的第一聲音數(shù)據(jù); 其中,所述采集隊列用于存儲在當前時間單位內(nèi)所述聲音采集設(shè)備根據(jù)用戶說話的第 一聲音和所述接收端的聲音播放設(shè)備播放的第二聲音生成的聲音數(shù)據(jù)。
      9. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第二獲取模塊具體用于: 從同步隊列的隊頭出隊一個時間單位的聲音數(shù)據(jù),將所述出隊的一個時間單位的聲音 數(shù)據(jù)作為所述當前時間單元之前的一個時間單元所述發(fā)送端發(fā)送的第二聲音數(shù)據(jù); 其中,所述同步隊列用于存儲發(fā)送端在連續(xù)的多個時間單位內(nèi)發(fā)送的聲音數(shù)據(jù)且離同 步隊列的隊尾最近的一個時間單位的同步數(shù)據(jù)為發(fā)送端在當前時間單位內(nèi)發(fā)送的聲音數(shù) 據(jù)。
      10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括: 創(chuàng)建模塊,用于創(chuàng)建同步隊列; 第三獲取模塊,用于獲取所述發(fā)送端發(fā)送的聲音數(shù)據(jù),以及所述聲音采集設(shè)備生成的 聲音數(shù)據(jù); 第一入隊模塊,用于將所述聲音采集設(shè)備生成的聲音數(shù)據(jù)從所述同步隊列的隊尾入 隊,再將所述發(fā)送端發(fā)送的聲音數(shù)據(jù)從所述同步隊列的隊尾入隊。
      11. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述回聲消除模塊具體用于: 根據(jù)所述第二聲音數(shù)據(jù),并通過回聲消除算法對所述第一聲音數(shù)據(jù)進行回聲消除處理 得到第三聲音數(shù)據(jù); 相應(yīng)的,所述裝置還包括:包括: 處理模塊,用于如果所述當前時間單位的殘余回聲系數(shù)大于預(yù)設(shè)閾值,等待在下一個 時間單位獲取接收端的聲音采集設(shè)備生成的下一個時間單位的第四聲音數(shù)據(jù),并從遠端音 頻幀相似度對齊計算循環(huán)隊列中獲取與所述第四聲音數(shù)據(jù)之間的相似度最大的一個時間 單位的聲音數(shù)據(jù),將所述獲取一個時間單位的聲音數(shù)據(jù)在所述遠端音頻幀相似度對齊計算 循環(huán)隊列中的位置作為所述回聲消除算法的遠端輸入位置。
      12. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 第二入隊模塊,用于將當前所述發(fā)送端發(fā)送一個時間單位的聲音數(shù)據(jù)從所述同步隊列 的隊尾入隊。
      【文檔編號】G10L21/02GK104219403SQ201310216306
      【公開日】2014年12月17日 申請日期:2013年6月3日 優(yōu)先權(quán)日:2013年6月3日
      【發(fā)明者】龍興平, 劉洪 , 曹木勇 申請人:騰訊科技(深圳)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1