回声消除方法及其相关装置与流程

文档序号:20268289发布日期:2020-04-03 18:40阅读:348来源:国知局
回声消除方法及其相关装置与流程

本申请涉及声音处理技术领域,特别是涉及回声消除方法及其相关装置。



背景技术:

在语音通信中,终端可以通过终端内的播放器件将接收到的语音消息播放出来,然后播放的语音经过环境传播、反射,会被音频采集器件采集到,这样就形成了回声,或称为回音。回声会对说话者产生严重的干扰,必须想办法消除。目前,主要通过回声抑制(acousticechosuppression)方法和声学回声消除(acousticechocancellation)方法消除回声。但现有的声学回声消除方法无法处理不同的音频采集器件和不同的播放器件引起的时延抖动。



技术实现要素:

本申请提供回声消除方法及其相关装置,以解决现有技术中无法处理不同的音频采集器件和不同的播放器件引起的时延抖动。

为解决上述技术问题,本申请提供一种回声消除方法,该方法包括:获取允许回声消除采集和回声消除播放之间的抖动时间、播放器件时延和音频采集器件时延;

确定补偿时间量,所述补偿时间量小于允许回声消除采集和回声消除播放之间的抖动时间,大于播放器件时延和音频采集器件时延之和;

将补偿时间量作为时间差以将参考音频和采集音频分别输入回声消除电路,以对采集音频进行回声消除处理。

其中,播放器件时延是播放器件处理参考音频导致的时延;播放器件包括声卡、操作系统和声响器件;获取允许回声消除采集和回声消除播放之间的抖动时间、播放器件时延和音频采集器件时延,包括:

获取声卡中缓冲队列长度,通过声卡中缓冲队列长度计算出声卡和操作系统时延;

获取声响器件类型,确定声响器件类型对应的声响器件时延,播放器件时延为声卡和操作系统时延和声响器件时延的和;

获取音频采集器件类型,确定音频采集器件类型对应的音频采集器件时延。

其中,获取声响器件类型,包括:确定与声响器件连接的第一连接点,确定第一连接点对应的声响器件类型;

获取音频采集器件类型,包括:确定与音频采集器件连接的第二连接点,确定第二连接点对应的音频采集器件类型。

其中,获取允许回声消除采集和回声消除播放之间的抖动时间、播放器件时延和音频采集器件时延,之前包括:

开启至少两个线程,通过至少两个线程中的其中一者将参考音频输入到参考音频缓冲区,通过至少两个线程中的另一者将采集音频输入到采集音频缓冲区。

其中,通过负责参考音频的线程将参考音频同时发送给播放器件和参考音频缓冲区。

其中,负责参考音频的线程先于负责采集音频的线程开启。

其中,将补偿时间量作为时间差以将参考音频和采集音频输入回声消除电路,包括:

在参考音频缓冲队列的长度减去采集音频缓冲队列的长度等于补偿时间量所对应的音频数据长度时,从参考音频缓冲队列队首和采集音频缓冲队列队首取出首帧音频数据输入到回声消除电路;

在参考音频缓冲队列的长度减去采集音频缓冲队列的长度大于补偿时间量所对应的音频数据长度时,从参考音频缓冲队列队首移除多余的音频数据后,从参考音频缓冲队列队首和采集音频缓冲队列队首取出首帧音频数据输入到回声消除电路;其中,多余的音频数据的长度等于参考音频缓冲队列长度减去采集音频缓冲队列长度后,再减去补偿时间量对应的音频数据长度。

其中,获取允许回声消除采集和回声消除播放之间的抖动时间,包括:

获取回声消除电路的处理尾长;

将回声消除电路的处理尾长作为允许回声消除采集和回声消除播放之间的抖动时间;或,将回声消除电路的处理尾长与声音传播和混响引起的回声尾长的差值作为允许回声消除采集和回声消除播放之间的抖动时间。

为解决上述技术问题,本申请提供一种回声消除装置,包括处理器和存储器,存储器中存储有计算机程序,处理器用于执行计算机程序以实现上述回声消除方法的步骤。

为解决上述技术问题,本申请提供一种存储介质,其中存储有计算机程序,计算机程序被处理器执行时实现上述回声消除方法的步骤。

本申请回声消除方法通过获取的播放器件时延和音频采集器件时延确定出补偿时间量,然后根据补偿时间量选择参考音频和采集音频输入到回声消除电路中,对采集音频进行回声消除处理,这样即使播放器件和/或音频采集器件发生变化,也能及时地获取到变化后的播放器件时延和音频采集器件时延以对采集音频进行回声消除处理,可以处理不同的音频采集器件和不同的播放器件引起的时延抖动。

附图说明

为了更清楚地说明本申请实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施方式,对本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一实施方式中语音通信的部署示意图;

图2是本申请一实施方式的终端的结构示意图;

图3是本申请图2所示的终端中回声消除示意图;

图4是本申请一实施方式中回声消除方法的流程示意图;

图5是本申请另一实施方式中回声消除方法的流程示意图;

图6是本申请一实施方式中回声消除装置的结构示意图;

图7是本申请一实施方式中存储介质的结构示意图。

具体实施方式

为使本领域的技术人员更好地理解本申请的技术方案,下面结合附图和具体实施方式对本申请所提供的一种回声消除方法、设备和存储介质做进一步详细描述。

在一个实施方式中,可在网络会议中进行各终端的语音通信,网路视频会议的部署方式可如图1所示。其中,两方或多方终端可在同一个会议中开会,与会各方通过音频采集器件采集声音,同时通过播放器件播放声音。其中一个终端通过播放器件将其它各终端的声音播放后,音频采集器件能够将播放出来的声音再次采集到,因此该终端获得的采集声音中含有该终端播放出来的其它各终端的声音,即终端获得的采集声音中包含有回声,从而每方终端必须带有回声消除装置,否则传输给其他终端的声音中会含有回声。在其他实施方式中,也可以通过拨打电话的方式进行语音通信。当然除通过网络会议的方式和拨打电话的方式进行语音通信外,还可以使用其他方式。

在一个实施方式中,如图2所示的终端上设有参考音频缓冲区、采集音频缓冲区和回声消除电路。每个缓冲区可以用一个先进先出的队列实现。具体地,声音在终端上的流转过程也可如图2和如图3所示,终端接收到来自远端的参考音频后,将参考音频发送给播放器件和参考音频缓冲区。终端通过播放器件播放的参考音频可被音频采集器件采集并处理后送入到采集音频缓冲区,然后通过回声消除方法从参考音频缓冲区和采集音频缓冲区分别选取参考音频和采集音频后,消除采集音频中的回声,最终将回声消除后的采集音频经过编码后向远端输出,这样远端接收到的采集音频中就没有回声。

在本实施方式中,终端可以用其内部的播放器件播放参考音频,也可以用外部的播放器件播放参考音频,外部的播放器件会通过终端上的一些第一连接点与终端连接。同样地,终端可以用其内部的音频采集器件录制参考音频,也可以用外部的音频采集器件录制参考音频,外部的音频采集器件会通过终端上的一些第二连接点与终端连接。

其中,音频采集器件可为远场拾音麦克风。在声场环境为混响场时,音频采集器件可以采集到参考音频播放后的直达声和多次反射声。

关于本申请回声消除方法的更多步骤流程可以参照以下回声消除方法的具体实施方式。

如图4所示,图4是本申请回声消除方法一实施方式的流程示意图,本实施方式回声消除方法包括以下步骤。

s101:获取允许回声消除采集和回声消除播放之间的抖动时间、播放器件时延和音频采集器件时延。

在不考虑声场环境的混响情况下,可将回声消除电路的处理尾长作为允许回声消除采集和回声消除播放之间的抖动时间。若在考虑声场环境的混响情况下,此时回声消除电路的处理尾长与回声尾长的差值就可以作为允许回声消除采集和回声消除播放之间的抖动时间。其中,允许回声消除采集和回声消除播放之间的抖动时间可简称为k4。例如,回声消除电路为自适应滤波器,自适应滤波器的处理能力由cpu性能决定,回声消除电路的处理尾长为256ms,声音传播和混响引起的回声尾长约为56ms,在不考虑声场环境的混响情况下,k4可等于256ms;在考虑声场环境的混响情况下,k4大约为200ms。当然,可以理解的是,回声消除电路还可以为其他电路结构,回声消除电路的处理尾长也不限于256ms,可以为其他值。

在本实施方式中,播放器件时延可指参考音频从进入播放器件到被播放器件播放出来所花费的时间。相应地,音频采集器件时延可指音频采集器件从录制采集音频到将采集音频处理后并传输给采集音频缓冲区的时间。假如将参考音频在空气中传播至被音频采集器件的时间忽略不计的话,可以直接将播放器件时延和音频采集器件时延的和作为总时延,可以通过总时延获知终端从将参考音频发送给播放器件到将参考音频对应的采集音频处理完毕并传输给采集音频缓冲区所耗费的时间,即可以根据播放器件时延和音频采集器件时确定参考音频缓冲区中的参考音频和采集音频缓冲区中的与参考音频对应的采集音频之间的时间差,进而可以根据时间差确定回声消除时提取的参考音频和采集音频以对采集音频进行回声消除。当然,在其他实施方式中,如果需要考虑从参考音频被播放器件播放出来的时间点至参考音频被音频采集器件采集的时间点之间的时间量的话,需要将播放器件时延、音频采集器件时延和参考音频在空气中传播至被音频采集器件的时间的和作为总时延。其中,与参考音频对应的采集音频为包含有与参考音频相同或相似的回声的采集音频。

在本实施方式中,可以先获取到播放器件的类型和音频采集器件的类型,然后通过播放器件的类型获知播放器件时延,也可以根据音频采集器件的类型获知音频采集器件时延。其中,播放器件类型和播放器件时延的对应关系可存储在第一对应表中,从而可以在获知播放器件类型后在第一对应表中查询到播放器件类型对应的播放器件时延。相应地,音频采集器件类型和音频采集器件时延的对应关系可存储在第二对应表中,从而可以在获知音频采集器件类型后可以在第二对应表中查找到音频采集器件类型对应的音频采集器件时延。第一对应表和第二对应表可以是同一个对应表。

在其他实施方式中,在播放器件和音频采集器件未发生变化时,可以直接获知终端当前的播放器件时延和音频采集器件时延。另外,可以将当前播放器件的类型和音频采集器件的类型存储到缓冲区中,方便后续获取到播放器件类型和音频采集器件类型时判断播放器件类型和音频采集器件类型是否出现变化。若均未出现变化,可以直接用当前的播放器件时延和音频采集器件时延,并可以采用当前的补偿时间量。若至少一种器件的类型出现变化,通过变化后的器件的类型确认相应器件的时延,并用变化后的器件的类型替换缓冲区中变化前的器件的类型。

当然,还可以在将播放器件类型和音频采集器件类型存储到缓冲区时,将播放器件时延和音频采集器件时延也存储到缓冲区,并可将器件的类型与器件时延相对应,从而可以在未切换播放器件和音频采集器件时,即在判断播放器件类型和音频采集器件类型均未出现变化时直接从缓冲区内获取到播放器件时延和音频采集器件时延;并且在至少一种器件的类型出现变化时,可以用变化后的器件的类型及其时延替换缓冲区中变化前的器件的类型。

进一步地,还可将当前的总时延对应的补偿时间量一同存储到缓冲区中,从而在总时延未出现变化时可以直接从缓冲区读取当前的补偿时间量,从而可以做到相同的总时延对应着相同的补偿时间量,即在总时延未改变时可以避免因为补偿时间量的跳动将部分参考音频漏输入或错输入到回声消除电路中,从而确保回声消除的稳定性。在至少一种器件的类型出现变化时,可以用通过变化后的总时延确定的补偿时间量替换缓冲区中原先的补偿时间量。在本实施方式中,总时延为播放器件时延和音频采集器件时延之和。

在本实施方式中,在根据获取到的播放器件类型无法确定播放器件时延时,可先计算出总时延,然后通过总时延和音频采集器件时延的差值计算出时延结果。一般情况下,可以直接将计算出的时延结果作为获取到的播放器件类型对应的播放器件时延。但是为进一步保证播放器件时延的准确性,可通过两次以上的计算获得至少两个时延结果,然后计算至少两个时延结果的相似度,若相似度高于阈值时,则可以以至少两个时延结果的平均值或至少两个时延结果中的任一时延值作为获取到的播放器件类型对应的播放器件时延,若相似度低于阈值时,可以再进行多次计算,直至所有时延结果中的两个/三个/四个的时延结果之间的相似度高于阈值时,并将相似度高于阈值的多个时延结果的平均值或任一时延结果作为获取到的播放器件类型对应的播放器件时延。在计算出播放器件时延后,可以将获取到的播放器件类型与播放器件时延的对应关系记录到第一对应表中。在播放器件时延的多次计算过程中,可以保持播放器件类型不变,并更换音频采集器件,这样在计算播放器件时延的同时,还可以校准音频采集器件,若多个时延结果之间的相似度高于阈值的话可以变相证明参与播放器件时延计算过程中的音频采集器件时延正常;若多个时延结果之间的相似度低于阈值的话可以变相地证明参与播放器件时延计算过程中的音频采集器件时延可能不正常,并且参与得到与播放器件时延相差较大的时延结果计算过程中的音频采集器件时延异常的可能性极大。可以理解的是,在根据获取到的音频采集器件类型无法确定音频采集器件时延时,也可通过上述方法计算出音频采集器件类型对应的音频采集器件时延。当然,也可在音频采集器件时延的多次计算过程中验证播放器件时延是否异常。

其中,计算总时延的方法可以包括:播放提示音,将采集到提示音的时间减去该提示音的播放时间作为总时延。具体地,可以在启动时播放一段预先录制的提示音并记录播放时间,再记录通过音频采集器件采集到该提示音的时间,则采集到该提示音的时间减去播放时间得到的值为总时延。本实施方式中,通过播放和采集提示音可以较为准确地对总时延进行计算。

在其他实施方式中,计算总时延的方法或者可以包括:音频采集一般都通过回调方式使用,即采集到一帧音频数据,回调执行程序注册的函数,告知采集到了一帧音频数据。这样从启动音频采集线程到音频线程回调的这段时间就是音频采集线程的首次回调时延。经过验证,如果该回调时延稳定,且大于预设阈值时,该回调时延与总时延相同,因此可作为总时延。其中,预设阈值可取值为100~150ms。

s102:确定补偿时间量。

在本实施方式中,获取播放器件时延和音频采集器件时延后,可以将播放器件时延和音频采集器件时延的和作为总时延,并可以根据总时延确定补偿时间量。

在一实施方式中,可以先根据总时延确定补偿时间量的选值范围,然后可在选值范围内选取一个值作为补偿时间量。在本实施方式中,选值范围可为播放器件时延和音频采集器件时延之和和允许回声消除采集和回声消除播放之间的抖动时间之间的范围,即从该选值范围中选取的补偿时间量小于允许回声消除采集和回声消除播放之间的抖动时间,并大于或等于播放器件时延和音频采集器件时延之和。当然,在其他实施方式中,选值范围可为回声消除电路的处理能力时长阈值到总时延之间的范围,即从该选值范围中选取的补偿时间量大于回声消除电路的处理能力时长阈值,并小于或等于总时延。其中,回声消除电路的处理能力时长阈值可为总时延减去允许回声消除采集和回声消除播放之间的抖动时间得到的值。

当然,在另一实施方式中,每个总时延可以对应一个补偿时间量,这样计算出总时延后,就可以选择总时延对应的补偿时间量即可,从而在总时延不变时,根据补偿时间量选择的采集音频和参考音频之间的时间差可以维持在一定值,防止参考音频被错输入或被漏输入到回声消除电路中,可以保持回声消除的稳定性。其中,总时延和补偿时间量的对应关系可以存储在第三对应表中,以在系统计算出总时延后,可以很快地从第三对应表中查找到与总时延对应的补偿时间量。第三对应表可以和第一对应表可以是同一个对应表。

在又一实施方式中,总时延发生变化时,可以先判断变化前的总时延对应的补偿时间量是否处于变化后的总时延对应的补偿时间量的选值范围内,如果处于相应的选值范围内,可以直接以变化前的补偿时间量作为变化后的总时延对应的补偿时间量,即可以使用变化前的补偿时间量选择参考音频和采集音频,从而避免将部分参考音频漏输入或重复输入到回声消除电路中,从而可以避免被漏掉的部分参考音频对应的采集音频中的回声无法消除掉,可以保证回声消除的稳定性。

在再一实施方式中,可以直接将总时延作为补偿时间量,然后选择相应地采集音频和参考音频进行回声消除,从而根据补偿时间量选择的参考音频就是采集音频对应的参考音频,可以减少采集音频中回声和与回声对应的参考音频之间的时间差,从而可以降低回声消除电路消除采集音频中回声的难度,降低计算复杂度。

s103:将补偿时间量作为时间差以将参考音频和采集音频分别输入回声消除电路,以对采集音频进行回声消除处理。

其中,按照补偿时间量选择相应地参考音频和采集音频输入到回声消除电路中,对采集音频进行回声消除处理。

其中,被选取的参考音频进入参考音频缓冲区的时间点与被选取的采集音频进入采集音频缓冲区的时间点之间的时间差可以等于补偿时间量。即可以按照补偿时间量从参考音频缓冲区内的参考音频缓冲队列和采集音频缓冲区内的采集音频缓冲队列分别选取参考音频和采集音频,具体从参考音频缓冲队列和采集音频缓冲队列中选取参考音频和采集音频的方法可以如下所示。

在本实施方式中,在参考音频缓冲队列的长度减去采集音频缓冲队列的长度大于补偿时间量所对应的音频数据长度时,可以从参考音频缓冲队列队首移除多余的音频数据后,从参考音频缓冲队列队首和采集音频缓冲队列队首取出首帧音频数据以进行回声消除处理。多余的音频数据的长度等于参考音频缓冲队列长度减去采集音频缓冲队列长度后,再减去补偿时间量对应的音频数据长度。

在本实施方式中,在参考音频缓冲队列的长度减去采集音频缓冲队列的长度小于补偿时间量所对应的音频数据长度时,可以直接将采集音频缓冲队列队首多余的数据不经过回声消除处理直接编码传输给远端。其中采集音频缓冲队列队首多余的数据的长度可为采集音频缓冲队列的长度加上补偿时间量对应的音频数据的长度后,减去参考音频缓冲队列的长度得到的值。

在本实施方式中,在参考音频缓冲队列的长度减去采集音频缓冲队列的长度等于补偿时间量所对应的音频数据长度时,可以直接从参考音频缓冲队列队首和采集音频缓冲队列队首分别取出首帧参考音频和采集音频以进行回声消除处理。

当然,在另一实施方式中,在参考音频缓冲队列的长度减去采集音频缓冲队列的长度不等于补偿时间量所对应的音频数据长度时,也可以先判断参考音频缓冲队列的长度减去采集音频缓冲队列的长度所对应的时间量是否位于按照采集音频对应的总时延确定的补偿时间量选值范围内,如在选值范围内,可以直接从参考音频缓冲队列和采集音频缓冲队列队首分别取出首帧音频数据输入到回声消除电路,以进行回声消除处理。并可以将参考音频缓冲队列的长度减去采集音频缓冲队列的长度对应的时间量作为当前的补偿时间量。在本实施方式中,可以将当前的总时延作为采集音频对应的总时延。在其他实施方式中,每一采集音频可以对应有一总时延,可以直接将采集音频自身的总时延作为采集音频对应的总时延。

其中,补偿时间量所对应的音频数据的长度等于补偿时间量除以音频帧长均值得到的值。这里的音频帧长均值一般为所有音频帧的音频帧长的均值,在本实施方式中,音频帧长均值可为10ms。

在本实施方式中,通过获取的播放器件时延和音频采集器件时延、允许回声消除采集和回声消除播放之间的抖动时间确定出补偿时间量,然后根据补偿时间量选择参考音频和采集音频输入到回声消除电路中,对采集音频进行回声消除处理,这样即使允许播放器件和/或音频采集器件发生变化,也能及时地获取到变化后的播放器件时延和/或音频采集器件时延以对采集音频进行回声消除处理,可以处理不同的音频采集器件和不同的播放器件引起的时延抖动。

如图5所示,图5是本申请回声消除方法一实施方式的流程示意图,本实施方式回声消除方法包括以下步骤。

s201:开启至少两个线程,通过至少两个线程中的其中一者将参考音频输入参考音频缓冲区,通过至少两个线程中的另一者将采集音频输入采集音频缓冲区。

在本实施方式中,可将“将参考音频输入到参考音频缓冲区的线程”称为“负责参考音频的线程”;可将“将采集音频输入到采集音频缓冲区的线程”称为“负责采集音频的线程”。其中负责参考音频的线程主要负责在接收到解压后的参考音频后将参考音频发送给播放器件和参考音频缓冲区。负责采集音频的线程主要负责采集音频的录制和处理、将处理后的采集音频发送给采集音频缓冲区。通过将参考音频的处理和采集音频的处理分别置于不同的线程中,这样就不必要同步发送参考音频和采集音频给相应的缓冲区,这样可以按照参考音频和采集音频各自的节奏分别将参考音频和采集音频发送给相应的缓冲区,即参考音频和采集音频可以不需要严格的时钟同步。

在本实施方式中,可以先开启负责参考音频的线程,然后再将负责采集音频的线程开启,这样可以保证可以参考音频缓冲区存储的音频帧数比采集音频缓冲区内多,这样可以确保回声消除处理时能从参考音频缓冲区和采集音频缓冲区中提取到相应的参考音频和采集音频,保证回声消除的稳定性,提高系统的处理能力。

需要知晓的是,负责参考音频的线程可以在将参考音频发送给播放器件的同时,将参考音频发送给参考音频缓冲区,这样可以保证总时延作为参考音频输入到参考音频缓冲区的时间点和与参考音频对应的采集音频输入到采集音频缓冲区的时间点之间的时间差,从而可以确保通过总时延确定的补偿时间量可以从参考音频缓冲区和采集音频缓冲区内分别提取到恰当的参考音频和采集音频,确保能够利用输入到回声消除电路内的参考音频消除掉采集音频中的回声,提高回声消除的准确性。

在其他实施中,终端可以设置有放置参考音频的备用缓冲区。负责参考音频的线程可以在将参考音频发送给播放器件的同时,将参考音频发送给参考音频缓冲区和备用缓冲区。系统可以将备用缓冲区内存储的超时的参考音频清理掉,从而可以节约备用缓冲区的空间。超时的参考音频为在备用缓冲区中存储时间大于第二阈值的参考音频。第二阈值可以大于参考音频缓冲队列长度对应的时间量。

s202:获取允许回声消除采集和回声消除播放之间的抖动时间、播放器件类型和音频采集器件类型。

播放器件可以包括声卡、操作系统和声响器件。

在本实施方式中,一般终端的声卡的类型和操作系统的类型是固定不变的。例如操作系统可以是android系统的媒体层缓存,声卡可以是alsa驱动层缓存。在声卡类型确定后,只需要根据声卡中缓冲队列长度就可以估算出声卡和操作系统时延k3。声卡和操作系统时延k3=a+kl,其中,a为按照声卡类型和操作系统类型确定的时延常量;l为声卡中缓冲队列长度;k为声卡和操作系统对缓冲队列单位长度的音频进行处理所耗费的时间。其中,声卡和操作系统时延约为80ms~100ms。

本申请发明人发现,各个类型的声响器件时延不太一致,例如电视输出尤其是智能电视输出的时延通常比音响输出时延大20ms~50ms可以通过终端中操作系统与声响器件的连接点确定声响器件的类型:比如操作系统与声响器件是通过hdmi(highdefinitionmultimediainterface,高清多媒体接口)连接的,可以判断声响器件为电视;又例如操作系统是通过codec(coder-decoder,编译码器)控制声响器件的,可以判断声响器件为音响;又例如操作系统是通过usbuac(usbaudioclass,usb音频类)控制声响器件的,可以判断声响器件为数字音响。其中,声响器件时延可以简称为k2。

其中,由codec控制的声响器件的时延大体一致。usbuac控制控制的声响器件的时延也几乎一致。为了保证播放器件时延的准确性,可以通过声响器件和操作系统的连接直接从声响器件内部读取到声响器件的详细类型,例如,可以通过hdmi接口从电视内部的存储区域读取到电视的出厂方、型号等类型信息。并且因为电视类型多种多样,可以将电视类型、音响等声响器件的类型与声响器件时延的对应关系存储到第一对应表中,从而可以在知晓电视类型的情况下,就可以很快地从第一对应表中查找到电视类型对应的声响器件时延,无需进行测试校准等操作,提高回声消除的效率,并且可以适用于不同的声响器件,提高回声消除方法的兼容度。

当然,相应地,各个类型的音频采集器件时延也不太一致,如usbuac协议数字麦克风比模拟麦克风时延大20ms~30ms,因此需要确定当前音频采集器件时延以对采集音频进行回声消除处理,进而需要确定音频采集器件类型以确定音频采集器件时延。其中,音频采集器件时延可以简称为k2。具体地,可以通过终端中操作系统与音频采集器件的连接点确定音频采集器件的类型:例如操作系统是通过codec控制音频采集器件的,可以判断音频采集器件为模拟麦克风;又例如操作系统是通过usbuac控制音频采集器件的,可以判断音频采集器件为数字麦克风。从而可以在知晓音频采集器件类型的情况下,就可以很快地知晓音频采集器件时延,无需进行测试校准等操作,提高回声消除的效率,并且可以适用于不同的音频采集器件,提高回声消除方法的兼容度。

在本实施方式中,可以分步获取声卡和操作系统、声响器件和音频采集器件的类型。具体地,可以在系统将参考音频发送给播放器件中的操作系统和声卡时,获取操作系统和声卡的类型,并可以获取声卡中缓冲队列长度。可以在系统将参考音频从声卡发送给声响器件时,获取声响器件的类型。并可以在系统接收到音频采集器件录制的采集音频时,获取音频采集器件的类型,这样将获取声卡和操作系统、声响器件和音频采集器件的类型的步骤融入到参考音频和采集音频的流转过程中,获得的声卡和操作系统、声响器件和音频采集器件的类型更加准确,从而计算出的声卡和操作器件时延、声响器件时延和音频采集器件时延也更加准确,从而能够更精确地消除采集音频中回声。另外,可以将分步获取的声卡和操作系统、声响器件和音频采集器件的类型记录起来,以在系统接收到音频采集器件发送的采集音频后根据获取到的声卡和操作系统、声响器件和音频采集器件的类型确定声卡和操作器件时延、声响器件时延和音频采集器件时延。当然,还可以在边获取声卡和操作系统、声响器件的类型的同时边确认声卡和操作器件时延和声响器件时延,然后将声卡和操作器件时延和声响器件时延依次记录下来,以在确定音频采集器件时延后结合声卡和操作器件时延和声响器件时延确定补偿时间量。

当然,在其他实施方式中,也可以同时获取声卡和操作系统、声响器件和音频采集器件的类型。可以在终端接收到音频采集器件录制的采集音频时,获取终端当前的声卡和操作系统、声响器件和音频采集器件的类型和声卡中缓存队列长度,这样可以一次性快速地获取到声卡和操作系统、声响器件和音频采集器件的类型和声卡中缓存队列长度,然后根据一次性获取到的声卡和操作系统、声响器件和音频采集器件的类型和声卡中缓存队列长度及时地确定播放器件时延和音频采集器件时延。

s203:根据播放器件类型和音频采集器件类型确定播放器件时延和音频采集器件时延。

在本实施方式中,通过步骤s202获得的声卡类型、操作系统类型、声响器件类型和音频采集器件类型可以确定相应地的声卡和操作系统时延、声响器件时延和音频采集器件时延。播放器件时延是播放器件处理参考音频导致的时延。播放器件时延为声响器件时延和声卡和操作系统时延的和。

其中,参考音频缓冲区内的音频帧数为ref_rec_count,采集音频缓冲区内的音频帧数为src_rec_count。通过ref_rec_count-src_rec_count得到的值与回声消除电路的回声尾长和总时延比较,可以判断出参考音频缓冲区内是否存储有与采集音频缓冲队列队首的采集音频对应的参考音频,即判断能否对采集音频缓冲队列队首的采集音频进行回声消除处理。具体的判断公式可体现为:k4>ref_rec_count-src_rec_count-k3-k2-k1>0。

s204:确定补偿时间量,补偿时间量小于允许回声消除采集和回声消除播放之间的抖动时间,同时大于播放器件时延和音频采集器件时延之和。

在声响器件和音频采集器件切换时,采集音频缓冲队列中有对应于设备切换前的采集音频,也有对应于设备切换后的采集音频,假如直接根据设备切换后的补偿时间量消除采集音频缓冲队列中的采集音频中回声,那可能是不准确的,因此,在本实施方式中,确定补偿时间量后,可以将采集音频对应的补偿时间量记录下来,这样可以在选择参考音频和采集音频时调用与采集音频对应的补偿时间量,防止因为总时延变化导致无法消除采集音频中回声,保证回声消除的稳定性。进一步地,可以按照时间顺序排列记录的补偿时间量,具体地,可以体现为从头至尾补偿时间量的记录时间依次增加,或可以体现为从头至尾补偿时间量的记录时间依次减小,而在后续回声消除时,按照记录规则读取记录区域中与采集音频对应的时延数据,读取一个删除一个,从而可以保证读取到采集音频相应的时延数据,保证回声消除的准确性。

s205:将补偿时间量作为时间差以将参考音频和采集音频分别输入回声消除电路,以对采集音频进行回声消除处理。

其中,按照补偿时间量选择相应地参考音频和采集音频输入到回声消除电路中,对采集音频进行回声消除处理。

其中,被选取的参考音频进入参考音频缓冲区的时间与被选取的采集音频进入采集音频缓冲区的时间差可以等于补偿时间量。即可以按照补偿时间量从参考音频缓冲区内的参考音频缓冲队列和采集音频缓冲区内的采集音频缓冲队列分别选取参考音频和采集音频。

在其他实施方式中,终端设置有存储有参考音频的备用缓冲区时,并且参考音频缓冲区内未存储有与采集音频对应的参考音频按照补偿时间量时,可以从备用缓冲区提取到与采集音频对应的参考音频。

本申请还提出一种回声消除装置。该回声消除装置包括时延获取模块、补偿时间量确定模块和音频输入模块。

时延获取模块用于获取允许回声消除采集和回声消除播放之间的抖动时间、播放器件时延和音频采集器件时延。

补偿时间量确定模块用于确定补偿时间量;

音频输入模块用于将补偿时间量作为时间差以将参考音频和采集音频分别输入回声消除电路,以对采集音频进行回声消除处理。

进一步地,时延获取模块包括类型获取模块和时延确定模块。

类型获取模块用于获取声卡中缓冲队列长度、声响器件类型和音频采集器件类型。

时延确定模块用于通过声卡中缓冲队列长度计算出声卡和操作系统时延;确定声响器件类型对应的声响器件时延;确定音频采集器件类型对应的音频采集器件时延。

进一步地,类型获取模块包括连接点确定模块和类型确定模块。

连接点确定模块用于确定与声响器件连接的第一连接点;确定与音频采集器件连接的第二连接点。

类型确定模块用于确定第一连接点对应的声响器件时延;确定第二连接点对应的音频采集器件时延。

进一步地,处理能力时长阈值为总时延减去回声消除电路的处理帧长的差值。

进一步地,回声消除装置还包括线程启动模块.

线程启动模块用于开启至少两个线程,通过至少两个线程中的其中一个线程将参考音频输入到参考音频缓冲区,通过至少两个线程中的另一个线程将采集音频输入到采集音频缓冲区。

进一步地,通过负责参考音频的线程将参考音频同时发送给播放器件和参考音频缓冲区。

进一步地,负责参考音频的线程先于负责采集音频的线程开启。

本申请还提出另一种回声消除装置。如图6所示,本实施方式回声消除装置10包括处理器12和存储器11;存储器11中存储有计算机程序,处理器12用于执行计算机程序以实现如上述回声消除方法中的步骤。其中,回声消除装置10可集成于终端的应用层,这样时延抖动较小,可以稳定地消除采集音频中的回声。

上述回声消除方法的逻辑过程以计算机程序呈现,在计算机程序方面,若其作为独立的软件产品销售或使用时,其可存储在存储介质中,因而本申请提出一种存储介质。请参阅图7,图7是本申请存储介质一实施方式的结构示意图,本实施方式存储介质20中存储有计算机程序21,计算机程序21被处理器执行时实现上述回声消除方法。

该存储介质20具体可以为u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等可以存储计算机程序的介质,或者也可以为存储有该计算机程序的服务器,该服务器可将存储的计算机程序发送给其他设备运行,或者也可以自运行该存储的计算机程序。该存储介质20从物理实体上来看,可以为多个实体的组合,例如多个服务器、服务器加存储器、或存储器加移动硬盘等多种组合方式。

以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1