一种消除回声的方法及装置制造方法

文档序号:2826024阅读:421来源:国知局
一种消除回声的方法及装置制造方法
【专利摘要】本发明公开了一种消除回声的方法及装置,属于语音通信【技术领域】。所述方法包括:获取接收端的声音采集设备生成的当前时间单位的第一声音数据;获取所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数据;根据所述第二声音数据对所述第一声音数据进行回声消除处理得到第三声音数据。本发明通过当前时间单元之前的一个时间单元发送端发送的第二声音数据和接收端的声音采集设备生成的当前时间单位的第一声音数据,进行回声消除处理,将接收端声音采集设备采集并生成的数据和之前一个单位的声音数据在时间上进行对齐,减轻了各种因素造成的时延,提局了回声消除的效率。
【专利说明】一种消除回声的方法及装置

【技术领域】
[0001] 本发明涉及语音通信【技术领域】,特别涉及一种消除回声的方法及装置。

【背景技术】
[0002] 随着语音通信技术的发展,通过互联网进行语音通话已越来越普及。通信双方在 进行语音通信时,发送端的声音通过网络发送到接收端后通过声音播放设备播放出来,此 时声音还会通过空气传播至接收端的声音采集设备,并且和接收端产生的声音一起返回给 发送端,返回后发送端会听到自己的声音,这个声音就是在语音通信中产生的回声。因此为 了提高语音通信的质量,需要进行消除回声的处理。
[0003] 现有技术中对于消除回声的处理方法为:在当前时间接收端接收到发送端发送的 声音数据1,将其复制一份,以及通过声音播放设备对其进行播放得到的声音A1。在当前时 间接收端的声音采集设备采集声音,采集的声音包括用户说话的声音B和声音播放设备播 放的声音A2,根据采集的声音生成声音数据2,通过当前时间复制的声音数据1对当前时间 生成的声音数据2进行回声消除处理得到声音数据3。其中,需要说明的是:由于声音播放 设备播放的声音在空气中传播至声音采集设备时会有延迟,以及播放设备和采集设备等延 时因素的影响,会导致声音采集设备采集到的声音中包括的声音A2是声音播放设备在当 前时间之前播放的声音,即声音A2是声音播放设备在播放声音A1之前播放的声音。
[0004] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005] 由于声音A2是声音播放设备在播放声音A1之前播放的声音,所以通过当前时间 复制的一份声音数据1对当前时间生成的声音数据2进行回声消除处理得到的声音数据3 中可能仍包括回音,降低回声消除率。


【发明内容】

[0006] 为了解决现有技术的问题,本发明实施例提供了一种消除回声的方法及装置。所 述技术方案如下:
[0007] -方面,提供了一种消除回声的方法,所述方法包括:
[0008] 获取接收端的声音采集设备生成的当前时间单位的第一声音数据,所述第一声音 数据为所述声音采集设备根据采集到的第一声音和所述接收端的声音播放设备播放的第 二声音生成的声音数据,所述第二声音是所述接收端的声音播放设备根据发送端在所述当 前时间单元之前发送的声音数据进行播放得到的声音;
[0009] 获取所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数据;
[0010] 根据所述第二声音数据对所述第一声音数据进行回声消除处理得到第三声音数 据。
[0011] 另一方面,提供了一种消除回声的装置,所述装置包括:
[0012] 第一获取模块,用于获取接收端的声音采集设备生成的当前时间单位的第一声音 数据,所述第一声音数据为所述声音采集设备根据采集到的第一声音和所述接收端的声音 播放设备播放的第二声音生成的声音数据,所述第二声音是所述接收端的声音播放设备根 据发送端在所述当前时间单元之前发送的声音数据进行播放得到的声音;
[0013] 第二获取模块,用于获取所述当前时间单元之前的一个时间单元所述发送端发送 的第二声音数据;
[0014] 回声消除模块,用于根据所述第二声音数据对所述第一声音数据进行回声消除处 理得到第三声音数据。
[0015] 本发明实施例提供的技术方案带来的有益效果是:
[0016] 通过当前时间单元之前的一个时间单元发送端发送的第二声音数据和接收端的 声音采集设备生成的当前时间单位的第一声音数据,进行回声消除处理,将接收端声音采 集设备采集并生成的数据和之前一个单位的声音数据在时间上进行对齐,减轻了各种因素 造成的时延,提1? 了回声消除的效率。

【专利附图】

【附图说明】
[0017] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0018] 图1是本发明实施例一提供的消除回声的方法流程图;
[0019] 图2是本发明实施例一提供的消除回声的实施环境的结构示意图;
[0020] 图3是本发明实施例二提供的消除回声的方法中创建同步队列的方法的流程图;
[0021] 图4是本发明实施例二提供的消除回声的方法流程图;
[0022] 图5是本发明实施例三提供的消除回声的装置结构示意图;
[0023] 图6是本发明实施例四提供的消除回声的装置结构示意图。

【具体实施方式】
[0024] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。
[0025] 实施例一
[0026] 本发明实施例提供了一种消除回声的方法,参见图1,方法流程包括:
[0027] 101 :获取接收端的声音采集设备生成的当前时间单位的第一声音数据,所述第一 声音数据为所述声音采集设备根据采集到的第一声音和所述接收端的声音播放设备播放 的第二声音生成的声音数据,所述第二声音是所述接收端的声音播放设备根据发送端在所 述当前时间单元之前发送的声音数据进行播放得到的声音;
[0028] 102 :获取所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数 据;
[0029] 103:根据所述第二声音数据对所述第一声音数据进行回声消除处理得到第三声 音数据。
[0030] 其中,请参考图2,其示出了本发明实施例所涉及的实施环境的结构示意图,该实 施环境包括发送端201、接收端202。其中,接收端202包括声音播放设备2021,声音采集设 备2022以及回声消除模块2023。
[0031] 其中回声则是通过声音播放设备2021传至声音采集设备2022而产生的,回声消 除模块2023用于消除该产生的回声。
[0032] 本发明实施例通过当前时间单元之前的一个时间单元发送端发送的第二声音数 据和接收端的声音采集设备生成的当前时间单位的第一声音数据,进行回声消除处理,将 接收端声音采集设备采集并生成的数据和之前一个单位的声音数据在时间上进行对齐,减 轻了各种因素造成的时延,提高了回声消除的效率。
[0033] 实施例二
[0034] 本发明实施例提供了一种消除回声的方法,参见图3,方法流程包括:
[0035] 301:创建同步队列。
[0036] 具体的,采集队列中获取到的声音数据包含用户产生的声音数据以及前一时段播 放队列中播放的并经过空气传播至声音采集设备后采集到的远端声音数据,这两方面的声 音数据组成了采集队列中的近端声音数据。由于通过空气传播经过该段时间造成时间延 迟,此时采集队列中收录的近端声音数据和自适应滤波器中获取到的播放队列播放的远端 声音数据并不是同步的,即并不是属于同一时间点收录和播放的。因此创建同步队列是将 播放队列进行缓存,等待经过该段延迟时间,再将采集队列中的声音数据和同步队列中缓 存的声音数据进行回声消除算法计算,以消除采集队列中收录到的回声。
[0037] 302 :获取所述发送端发送的声音数据,以及所述声音采集设备生成的声音数据。
[0038] 其中,同步队列在创建并初始化时,需要获取当前的播放队列中的声音数据,即发 送端发送的声音数据,以及当前的采集队列中的声音数据即声音采集设备采集并生成的声 音数据。
[0039] 其中,声音采集设备为接收端的声音采集设备。
[0040] 303:将所述声音采集设备生成的声音数据从所述同步队列的队尾入队,再将所述 发送端发送的声音数据从所述同步队列的队尾入队。
[0041] 当同步队列在初始化后,由此时获取到的采集队列中的声音数据以及此时获取到 的播放队列中的声音数据构成,此时同步队列中的长度即为整个延迟对应的时间长度。
[0042] 从此开始,则根据同步队列和采集队列这两个队列中的声音数据,进行回声消除 算法。此时,开始进行回声消除算法的过程,先从采集队列和同步队列的头部分别获取相同 长度的声音数据,例如分别获取20毫秒的声音数据,由于同步队列中的头部,目前是由当 前的采集队列中获取的,因此此时获取的20毫秒的数据与采集队列中获取的20毫秒的数 据相同,在回声消除算法中无法消除这段声音数据中的回声。同理,对于同步队列中头部的 这一整段的采集队列中的声音数据都是无法消除回声的,优选的方式可以为将采集队列中 的声音数据和同步队列中头部与采集队列中的声音数据相同长度的声音数据进行丢弃处 理,并不对其进行回声消除算法的流程;另一个方式则按正常的流程开始对采集队列中的 声音数据以及同步队列中的声音数据进行回声消除算法的计算,并将计算后的声音数据发 送给对方,虽然无法消除回声,但是这一周期内的采集队列中的声音数据的数据量并不大, 可以忽略不计。
[0043] 从下一个周期再进行回声消除算法的流程时,获取下一个周期中播放队列中的声 音数据,并将其加入到同步队列中的尾部。并且获取下一个周期中的采集队列中的声音数 据,此时对应同步队列中的头部则为上一个周期获取的播放队列中的声音数据,这两段数 据则可以认为是采集队列中的回声是该上一个周期获取的播放队列中的声音数据,即将采 集队列中的近端声音数据和播放队列中的远端声音数据进行对齐,通过将这两段声音数据 进行回声消除算法,即可以根据在时间上对齐的两段数据,将采集队列中的回声尽可能的 消除。
[0044] 例如:在创建同步队列时,采集队列中的声音数据包括:前一个时间单位由声音 播放设备播放的声音&,以及当前一个时间单位中用户B说话的声音&,因此此时采集队列 的声音数据的内容为&+A。。播放队列中的声音数据包括:当前一个时间单位中获取到的声 音八 1,因此此时播放队列的声音数据的内容为Ai。此时将采集队列中的声音数据和播放队 列中的声音数据入队到同步队列后,同步队列的声音数据的结构为。此时,在采集 队列和同步队列分别获取预设时间长度20毫秒的声音数据,进行回声消除算法的计算。由 于此时同步队列的头部的声音数据和采集队列中的声音数据相同,那么此时采集队列中的 回声是无法消除的,周期性的从采集队列和同步队列中提取声音数据进行回声消除算法, 直至当前一个时间单位中的采集队列被处理完时,都无法消除其中的回声。进入到下一个 时间单位时,采集队列中的声音数据的内容为B 2+Ai,其中&为前一个时间单位声音播放设 备播放的声音,通过空气传播至声音采集设备采集得到,播放队列中的声音数据的内容为 A 2。此时从采集队列和同步队列的头部分别获取预设时间长度20毫秒的声音数据,进行回 声消除算法的计算,采集队列中的声音数据的内容为20毫秒的氏+Ai,同步队列中由于上一 个阶段已经将出队,此时的同步队列中的提取的内容为20毫秒的&。因此此时即可 通过回声消除算法在B 2+Ai将Ai去除。
[0045] 本发明实施例中提供了一种根据创建的同步队列进行回声消除的过程,方法流程 如图4所示,方法流程包括:
[0046] 401 :获取接收端的声音采集设备生成的当前时间单位的第一声音数据,所述第一 声音数据为所述声音采集设备根据采集到的第一声音和所述接收端的声音播放设备播放 的第二声音生成的声音数据,所述第二声音是所述接收端的声音播放设备根据发送端在所 述当前时间单元之前发送的声音数据进行播放得到的声音。
[0047] 其中,获取接收端的声音采集设备生成的当前时间单位的第一声音数据的具体过 程为:
[0048] 从采集队列的队头出队一个时间单位的声音数据,将所述出队的一个时间单位的 声音数据作为当前时间单位的第一声音数据;
[0049] 其中,所述采集队列用于存储在当前时间单位内所述声音采集设备根据用户说话 的第一声音和所述接收端的声音播放设备播放的第二声音生成的声音数据。
[0050] 402 :获取所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数 据。
[0051] 其中,获取所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数 据的具体过程为:
[0052] 从同步队列的队头出队一个时间单位的声音数据,将所述出队的一个时间单位的 声音数据作为所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数据;
[0053] 其中,所述同步队列用于存储发送端在连续的多个时间单位内发送的声音数据且 离同步队列的队尾最近的一个时间单位的同步数据为发送端在当前时间单位内发送的声 音数据。
[0054] 403:根据所述第二声音数据对所述第一声音数据进行回声消除处理得到第三声 音数据。
[0055] 其中,根据所述第二声音数据对所述第一声音数据进行回声消除处理得到第三声 音数据的具体过程为 :
[0056] 根据所述第二声音数据,并通过回声消除算法对所述第一声音数据进行回声消除 处理得到第三声音数据。
[0057] 其中,回声消除算法的具体操作步骤是在回声消除模块中进行的。
[0058] 404:将当前所述发送端发送一个时间单位的声音数据从所述同步队列的队尾入 队。
[0059] 在每个时间单位都需要将播放队列中的该时间单位中获取到的声音数据入队到 同步队列的尾部。
[0060] 405 :如果所述当前时间单位的残余回声系数大于预设阈值,等待在下一个时间单 位获取接收端的声音采集设备生成的下一个时间单位的第四声音数据,并从远端音频帧相 似度对齐计算循环队列中获取与所述第四声音数据之间的相似度最大的一个时间单位的 声音数据,将所述获取一个时间单位的声音数据在所述远端音频帧相似度对齐计算循环队 列中的位置作为所述回声消除算法的远端输入位置。
[0061] 由于时钟偏移或者初次误差导致远端声音数据和近端声音数据的时延过大,远超 过了同步队列的同步能力,因此需要调整回声消除模块中的远端音频帧相似度对齐计算循 环队列中的查询起始位置。对于调整远端音频帧相似度对齐计算循环队列中的远端输入的 位置的过程,可以为:
[0062] (1)计算所述第一声音数据和所述第二声音数据之间的第一互相关系数,以及计 算所述第一声音数据和所述第三声音数据之间的第二互相关系数。
[0063] 具体的,首先对回声消除算法输出的数据和采集队列中获取的数据进行互相关计 算,确定近端声音数据中是否存在近端讲话或其他近端声音输入。
[0064] 先计算第一声音数据和第二声音数据之间的第一互相关系数Rxd,再计算第一声 音数据和第三声音数据之间的第二互相关系数Rde。
[0065] (2)根据所述第一声音数据,计算所述第一声音数据的第一信号能量iEnergy,以 及根据所述第三声音数据,计算所述第三声音数据的第二信号能量oEnergy。
[0066] 通过预设算法分别计算第一声音数据和第三声音数据的信号能量。
[0067] (3)根据所述第一互相关系数和所述第二互相关系数,判断所述第一声音数据中 是否存在近端讲话或其他近端声音输入,以及判断所述第一声音数据中是否存在回声。 [0068] 对于判断第一声音数据中是否存在近端讲话或其他近端声音输入和判断第一声 音数据中是否存在回声的过程具体为:
[0069] 其中,如果所述第一互相关系数小于第二预设阈值,且所述第二互相关系数大于 第三预设阈值时,则确定所述第一声音数据中存在近端讲话或其他近端声音输入;否则确 定所述第一声音数据中不存在近端讲话或其他近端声音输入。
[0070] 具体的,对于如果第二预设阈值和第三预设阈值距离进行说明:当Rde>0. 98f并 且Rxd〈0. If时,表不第一声音数据中近端有人讲话或其他近端声音输入。其中第一声音数 据中存在近端讲话或其他近端声音输入可以表示为:NearTalk=l,如不存在近端讲话或其 他近端声音输入可以表示为NearTalk=0。
[0071] 其中,如果所述第一互相关系数为零,则确定所述第一声音数据不存在回声;如果 所述第一互相关系数不为零,且所述第一声音数据中存在近端讲话或其他近端声音输入, 则确定所述第一声音数据不存在回声;如果所述第一互相关系数不为零,且所述第一声音 数据中不存在近端的声音,则确定所述第一声音数据存在回声。
[0072] 其中,第一声音数据中存在回声则表不为Echo=l ;第一声音数据中不存在回声则 表示为Echo=0。
[0073] 具体的判断过程可以为:
[0074] 当Rxd为0,即第一声音数据和第二声音数据之间完全无关时,则表示第一声音数 据中不存在回声;当Rxd不为0,且NearTalk为1时,则表示第一声音数据中不存在回声; 当Rxd不为0,且NearTalk不为1时,则表示第一声音数据中存在回声。
[0075] (4)获取上一周期计算的残余回声系数,并根据所述第一信号能量iEnergy,所述 第二信号能量oEnergy,所述第一声音数据中存在近端的声音的情况,所述第二声音数据中 存在回声的情况以及所述残余回声系数,计算当前周期的残余回声系数。
[0076] 其中,残余回声系数通过EchoWorse表示,代表周期性记录的根据预设算法计算 得到的残余回声的累积值,并通过该残余回声系数最终确定是否进入二次同步的流程。
[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] 具体的,通过第一声音数据中是否存在近端讲话的声音、第一声音数据是否存在 回声,以及第一信号能量和第二信号能量确定EchoWorse的计算方式。
[0088] (5)如果所述当前时间单位的残余回声系数大于预设阈值,等待在下一个时间单 位获取接收端的声音采集设备生成的下一个时间单位的第四声音数据;
[0089] 在远端音频帧相似度对齐计算循环队列中从队列头部开始,依次选取预设时间长 度的声音数据,分别与所述第四声音数据进行互相关性计算得到互相关系数,在计算得到 的所有的互相关系数中选取最大互相关系数对应的声音数据,并将该声音数据所对应的数 据位置在所述远端音频帧相似度对齐计算循环队列中的位置作为所述回声消除算法的远 端输入位置。
[0090] 当前计算EchoWorse完毕后,对EchoWorse值与预设的回声阈值进行对比,假设预 设的回声阈值为50,如果EchoWorse值大于该值则触发二次同步的流程,以修改回音消除 模块中远端音频帧相似度对齐计算循环队列中数据的输入位置。
[0091] 其中,远端音频帧相似度对齐计算循环队列为回音消除算法模块中的一个缓存队 列,用于保存从同步队列中提取的数据,例如在获取同步队列中的20毫秒的数据时,将该 20毫秒的数据入队远端音频帧相似度对齐计算循环队列中,此时该队列保存有1秒钟的同 步队列中的数据。
[0092] 本发明实施例通过当前时间单元之前的一个时间单元发送端发送的第二声音数 据和接收端的声音采集设备生成的当前时间单位的第一声音数据,进行回声消除处理,将 接收端声音采集设备采集并生成的数据和之前一个单位的声音数据在时间上进行对齐,减 轻了各种因素造成的时延,提高了回声消除的效率。
[0093] 实施例三
[0094] 本发明实施例提供了一种消除回声的装置,参见图5,该装置包括:
[0095] 第一获取模块501,用于获取接收端的声音采集设备生成的当前时间单位的第一 声音数据,所述第一声音数据为所述声音采集设备根据采集到的第一声音和所述接收端的 声音播放设备播放的第二声音生成的声音数据,所述第二声音是所述接收端的声音播放设 备根据发送端在所述当前时间单元之前发送的声音数据进行播放得到的声音;
[0096] 第二获取模块502,用于获取所述当前时间单元之前的一个时间单元所述发送端 发送的第二声音数据;
[0097] 回声消除模块503,用于根据所述第二声音数据对所述第一声音数据进行回声消 除处理得到第三声音数据。
[0098] 本发明实施例通过当前时间单元之前的一个时间单元发送端发送的第二声音数 据和接收端的声音采集设备生成的当前时间单位的第一声音数据,进行回声消除处理,将 接收端声音采集设备采集并生成的数据和之前一个单位的声音数据在时间上进行对齐,减 轻了各种因素造成的时延,提高了回声消除的效率。
[0099] 实施例四
[0100] 本发明实施例提供了一种消除回声的装置,参见图6,该装置包括:
[0101] 第一获取模块601,用于获取接收端的声音采集设备生成的当前时间单位的第一 声音数据,所述第一声音数据为所述声音采集设备根据采集到的第一声音和所述接收端的 声音播放设备播放的第二声音生成的声音数据,所述第二声音是所述接收端的声音播放设 备根据发送端在所述当前时间单元之前发送的声音数据进行播放得到的声音;
[0102] 第二获取模块602,用于获取所述当前时间单元之前的一个时间单元所述发送端 发送的第二声音数据;
[0103] 回声消除模块603,用于根据所述第二声音数据对所述第一声音数据进行回声消 除处理得到第三声音数据。
[0104] 在具体是实施方式中,所述第一获取模块601具体用于:
[0105] 从采集队列的队头出队一个时间单位的声音数据,将所述出队的一个时间单位的 声音数据作为当前时间单位的第一声音数据;
[0106] 其中,所述采集队列用于存储在当前时间单位内所述声音采集设备根据用户说话 的第一声音和所述接收端的声音播放设备播放的第二声音生成的声音数据。
[0107] 其中,所述第二获取模块602具体用于:
[0108] 从同步队列的队头出队一个时间单位的声音数据,将所述出队的一个时间单位的 声音数据作为所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数据;
[0109] 其中,所述同步队列用于存储发送端在连续的多个时间单位内发送的声音数据且 离同步队列的队尾最近的一个时间单位的同步数据为发送端在当前时间单位内发送的声 音数据。
[0110] 其中,所述装置还包括:
[0111] 创建模块603,用于创建同步队列;
[0112] 第三获取模块604,用于获取所述发送端发送的声音数据,以及所述声音采集设备 生成的声音数据;
[0113] 第一入队模块605,用于将所述声音采集设备生成的声音数据从所述同步队列的 队尾入队,再将所述发送端发送的声音数据从所述同步队列的队尾入队。
[0114] 其中,所述回声消除模块603具体用于:
[0115] 根据所述第二声音数据,并通过回声消除算法对所述第一声音数据进行回声消除 处理得到第三声音数据;
[0116] 相应的,所述装置还包括:包括:
[0117] 处理模块606,用于如果所述当前时间单位的残余回声系数大于预设阈值,等待在 下一个时间单位获取接收端的声音采集设备生成的下一个时间单位的第四声音数据,并从 远端音频帧相似度对齐计算循环队列中获取与所述第四声音数据之间的相似度最大的一 个时间单位的声音数据,将所述获取一个时间单位的声音数据在所述远端音频帧相似度对 齐计算循环队列中的位置作为所述回声消除算法的远端输入位置。
[0118] 其中,所述装置还包括:
[0119] 第二入队模块607,用于将当前所述发送端发送一个时间单位的声音数据从所述 同步队列的队尾入队。
[0120] 本发明实施例通过当前时间单元之前的一个时间单元发送端发送的第二声音数 据和接收端的声音采集设备生成的当前时间单位的第一声音数据,进行回声消除处理,将 接收端声音采集设备采集并生成的数据和之前一个单位的声音数据在时间上进行对齐,减 轻了各种因素造成的时延,提高了回声消除的效率。
[0121] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0122] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件 来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读 存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0123] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1. 一种消除回声的方法,其特征在于,所述方法包括: 获取接收端的声音采集设备生成的当前时间单位的第一声音数据,所述第一声音数据 为所述声音采集设备根据采集到的第一声音和所述接收端的声音播放设备播放的第二声 音生成的声音数据,所述第二声音是所述接收端的声音播放设备根据发送端在所述当前时 间单元之前发送的声音数据进行播放得到的声音; 获取所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数据; 根据所述第二声音数据对所述第一声音数据进行回声消除处理得到第三声音数据。
2. 根据权利要求1所述的方法,其特征在于,所述获取接收端的声音采集设备生成的 当前时间单位的第一声音数据,包括: 从采集队列的队头出队一个时间单位的声音数据,将所述出队的一个时间单位的声音 数据作为当前时间单位的第一声音数据; 其中,所述采集队列用于存储在当前时间单位内所述声音采集设备根据用户说话的第 一声音和所述接收端的声音播放设备播放的第二声音生成的声音数据。
3. 根据权利要求1所述的方法,其特征在于,所述获取所述当前时间单元之前的一个 时间单元所述发送端发送的第二声音数据,包括: 从同步队列的队头出队一个时间单位的声音数据,将所述出队的一个时间单位的声音 数据作为所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数据; 其中,所述同步队列用于存储发送端在连续的多个时间单位内发送的声音数据且离同 步队列的队尾最近的一个时间单位的同步数据为发送端在当前时间单位内发送的声音数 据。
4. 根据权利要求3所述的方法,其特征在于,所述获取所述当前时间单元之前的一个 时间单元所述发送端发送的第二声音数据之前,包括: 创建同步队列; 获取所述发送端发送的声音数据,以及所述声音采集设备生成的声音数据; 将所述声音采集设备生成的声音数据从所述同步队列的队尾入队,再将所述发送端发 送的声音数据从所述同步队列的队尾入队。
5. 根据权利要求1所述的方法,其特征在于,所述根据所述第二声音数据对所述第一 声音数据进行回声消除处理得到第三声音数据,包括: 根据所述第二声音数据,并通过回声消除算法对所述第一声音数据进行回声消除处理 得到第三声音数据; 根据所述第二声音数据对所述第一声音数据进行回声消除处理得到第三声音数据之 后,还包括: 如果所述当前时间单位的残余回声系数大于预设阈值,等待在下一个时间单位获取接 收端的声音采集设备生成的下一个时间单位的第四声音数据,并从远端音频帧相似度对齐 计算循环队列中获取与所述第四声音数据之间的相似度最大的一个时间单位的声音数据, 将所述获取一个时间单位的声音数据在所述远端音频帧相似度对齐计算循环队列中的位 置作为所述回声消除算法的远端输入位置。
6. 根据权利要求1所述的方法,其特征在于,所述根据所述第二声音数据对所述第一 声音数据进行回声消除处理得到第三声音数据之后,所述方法还不: 将当前所述发送端发送一个时间单位的声音数据从所述同步队列的队尾入队。
7. -种消除回声的装置,其特征在于,所述装置包括: 第一获取模块,用于获取接收端的声音采集设备生成的当前时间单位的第一声音数 据,所述第一声音数据为所述声音采集设备根据采集到的第一声音和所述接收端的声音播 放设备播放的第二声音生成的声音数据,所述第二声音是所述接收端的声音播放设备根据 发送端在所述当前时间单元之前发送的声音数据进行播放得到的声音; 第二获取模块,用于获取所述当前时间单元之前的一个时间单元所述发送端发送的第 二声音数据; 回声消除模块,用于根据所述第二声音数据对所述第一声音数据进行回声消除处理得 到第三声音数据。
8. 根据权利要求7所述的装置,其特征在于,所述第一获取模块具体用于: 从采集队列的队头出队一个时间单位的声音数据,将所述出队的一个时间单位的声音 数据作为当前时间单位的第一声音数据; 其中,所述采集队列用于存储在当前时间单位内所述声音采集设备根据用户说话的第 一声音和所述接收端的声音播放设备播放的第二声音生成的声音数据。
9. 根据权利要求7所述的装置,其特征在于,所述第二获取模块具体用于: 从同步队列的队头出队一个时间单位的声音数据,将所述出队的一个时间单位的声音 数据作为所述当前时间单元之前的一个时间单元所述发送端发送的第二声音数据; 其中,所述同步队列用于存储发送端在连续的多个时间单位内发送的声音数据且离同 步队列的队尾最近的一个时间单位的同步数据为发送端在当前时间单位内发送的声音数 据。
10. 根据权利要求9所述的装置,其特征在于,所述装置还包括: 创建模块,用于创建同步队列; 第三获取模块,用于获取所述发送端发送的声音数据,以及所述声音采集设备生成的 声音数据; 第一入队模块,用于将所述声音采集设备生成的声音数据从所述同步队列的队尾入 队,再将所述发送端发送的声音数据从所述同步队列的队尾入队。
11. 根据权利要求7所述的装置,其特征在于,所述回声消除模块具体用于: 根据所述第二声音数据,并通过回声消除算法对所述第一声音数据进行回声消除处理 得到第三声音数据; 相应的,所述装置还包括:包括: 处理模块,用于如果所述当前时间单位的残余回声系数大于预设阈值,等待在下一个 时间单位获取接收端的声音采集设备生成的下一个时间单位的第四声音数据,并从远端音 频帧相似度对齐计算循环队列中获取与所述第四声音数据之间的相似度最大的一个时间 单位的声音数据,将所述获取一个时间单位的声音数据在所述远端音频帧相似度对齐计算 循环队列中的位置作为所述回声消除算法的远端输入位置。
12. 根据权利要求7所述的装置,其特征在于,所述装置还包括: 第二入队模块,用于将当前所述发送端发送一个时间单位的声音数据从所述同步队列 的队尾入队。
【文档编号】G10L21/02GK104219403SQ201310216306
【公开日】2014年12月17日 申请日期:2013年6月3日 优先权日:2013年6月3日
【发明者】龙兴平, 刘洪 , 曹木勇 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1