回声消除方法、装置、设备和介质
文献发布时间:2023-06-19 11:02:01
技术领域
本发明实施例涉及音频通信技术领域,尤其涉及一种回声消除方法、装置、设备和介质。
背景技术
随着移动互联网技术的成熟和发展,实时音频通信的应用越来越广泛。在实时通话中,A方的语音会通过网络传到通话B方的扬声器进行播放,播放的语音又会被B方的麦克风采集到并且通过网络传回给A方,此时A方就听到了自己的回声,回声的产生会严重影响双方的通话质量。
目前,有一种回声消除方法是采用自适应滤波算法来实现回声消除,在该算法中,以输出到扬声器的音频数据为依据,根据现场的回声路径特征,模拟出回声信号,然后以模拟的回声信号为依据,在麦克风采集到的音频数据中滤除掉模拟的回声信号,以实现回声消除。然而,在电子设备的操作系统非实时操作系统时,会造成麦克风的音频采集以及扬声器的音频播放之间存在一定的延时,而且在不同的电子设备中延时的时长都可能不一样。如果音频播放和音频采集之间的时间差过大,采用自适应滤波算法来实现回声消除时参照的音频播放数据和音频采集数据之间会有过大的错误,进而使得自适应滤波过程中出现权值不收敛的问题,无法正确地消除音频的回声。
发明内容
本发明实施例提供一种回声消除方法、装置、设备和介质,以解决音频播放和音频采集之间的时间差过大的问题,提高音频回声消除的准确性。
第一方面,本发明实施例提供了一种回声消除方法,包括:
在实时通信过程中,通过采集线程在获取音频采集数据时,向播放线程发送同步指示信息,并将所述音频采集数据发送至回声消除线程;
通过所述播放线程在接收到所述同步指示信息之后,获取音频播放数据进行播放,并将所述音频播放数据发送至所述回声消除线程;
通过所述回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理。
第二方面,本发明实施例还提供了一种回声消除装置,包括:
线程同步指示发送模块,用于在实时通信过程中,通过采集线程在获取音频采集数据时,向播放线程发送同步指示信息,并将所述音频采集数据发送至回声消除线程;
线程同步指示接收模块,用于通过所述播放线程在接收到所述同步指示信息之后,获取音频播放数据进行播放,并将所述音频播放数据发送至所述回声消除线程;
回声消除模块,用于通过所述回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理。
第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任意实施例所述的回声消除方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任意实施例所述的回声消除方法。
本发明实施例中,在进行实时通信时,采集线程在获取音频采集数据时,向播放线程发送同步指示信息,并将所述音频采集数据发送至回声消除线程,播放线程在接收到所述同步指示信息之后,获取音频播放数据进行播放,并将所述音频播放数据发送至所述回声消除线程,然后回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理,以此保证了采集线程与播放线程之间的数据同步,解决了音频播放和音频采集之间的时间差过大的问题,提高了音频回声消除的准确性。
附图说明
图1是本发明实施例一中的一种回声消除方法的流程图;
图2是本发明实施例二中的一种回声消除方法的流程图;
图3是本发明实施例二中的回声消除算法实现原理的示意图;
图4是本发明实施例二中的回声消除处理流程中采集线程与播放线程之间的关联示意图;
图5是本发明实施例三提供的一种回声消除装置的模块结构示意图;
图6是本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一提供的一种回声消除方法的流程图,本实施例可适用于解决在实时音视频通信过程中音频播放和音频采集之间的时间差过大的问题的情况,该方法可以由本发明任意实施例提供的回声消除装置来执行,该装置可由硬件和/或软件组成,并一般可集成在电子设备中。
如图1所述,本实施例提供的回声消除方法,可以包括:
S110、在实时通信过程中,通过采集线程在获取音频采集数据时,向播放线程发送同步指示信息,并将所述音频采集数据发送至回声消除线程。
其中,实时通信,可以是实时音频通信,也可以是实时音视频通信。
采集线程,指的是用于进行音频数据采集的线程;播放线程指的是用于进行音频数据播放的线程;回声消除线程,指的是对音频采集数据进行回声消除的线程。在本实施例中,采集线程、播放线程和回声消除线程三者之间均是相互独立的线程。
同步指示信息,是由采集线程向播放线程发送的一个信号量,用于指示播放线程执行获取音频数据进行播放的操作,以实现采集线程与播放线程之间的同步。
音频采集数据,指的是通过声卡采集到的音频数据。
在进行实时通信时,采集线程从声卡中读取到音频采集数据,随即向播放线程发送同步指示信息,并将读取到的音频采集数据发送至回声消除线程。
S120、通过播放线程在接收到所述同步指示信息之后,获取音频播放数据进行播放,并将所述音频播放数据发送至回声消除线程。
音频播放数据,指的是通过网络接收到的音频数据。
播放线程在接收到所述同步指示信息之后,随即从其相应的缓存队列中读取音频播放数据进行播放,同时将读取到的音频播放数据发送至回声消除线程。
在一种可选的实施方式中,所述同步开始指示信息是通过阻塞队列进行发送的。
采集线程在获取音频采集数据时,将同步指示信息写入阻塞队列,播放线程在阻塞线程中读取同步指示信息,以此实现采集线程将同步指示信息发送至播放线程。
S130、通过回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理。
音频采集数据和音频播放数据一并被送入回声消除线程,回声消除线程根据音频播放数据对音频采数据进行滤波处理,以使音频采集数据中不包括与音频播放数据对应的音频分量,进而实现对音频采集数据的回声消除处理。
进一步的,在通过回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理之后,还可以包括:
通过回声消除线程将回声消除处理后的目标音频数据发送至网络数据发送线程;通过网络数据发送线程发送目标音频数据。
目标音频数据,指的是经过回声消除处理后的音频采集数据。
回声消除线程将音频采集数据进行回声消除处理后,得到目标音频数据,并将目标音频数据发送至网络数据发送线程,网络数据发送线程将接收到的目标音频数据通过网络向对端发送。
本发明实施例中,在进行实时通信时,采集线程在获取音频采集数据时,向播放线程发送同步指示信息,并将所述音频采集数据发送至回声消除线程,播放线程在接收到所述同步指示信息之后,获取音频播放数据进行播放,并将所述音频播放数据发送至所述回声消除线程,然后回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理,以此保证了采集线程与播放线程之间的数据同步,解决了音频播放和音频采集之间的时间差过大的问题,提高了音频回声消除的准确性。进而,在将进行回声消除处理后的音频采集数据通过网络数据发送线程发送至对端之后,能够提高通话质量。
实施例二
图2是本发明实施例二提供的一种回声消除方法的流程图。本实施例在前述实施例的基础上进行具体化,其中,可以将通过采集线程在获取音频采集数据时,向播放线程发送同步指示信息,具体为:通过采集线程在按预设周期获取音频采集数据时,向播放线程发送同步指示信息。
如图2所述,本实施例提供的回声消除方法,可以包括:
S210、在实时通信过程中,通过采集线程在按预设周期获取音频采集数据时,向播放线程发送同步指示信息,并将所述音频采集数据发送至回声消除线程。
预设周期,指的是预设的采集线程读取音频采集数据的周期,一般以毫秒为周期,例如可以是20毫秒。
采集线程在按预设周期每次获取音频采集数据时,都向播放线程发送同步指示信息,并将读取到的所述音频采集数据发送至回声消除线程。
可选的,在通过采集线程在按预设周期获取音频采集数据时,向播放线程发送同步指示信息之前,还包括:
通过采集线程在获取音频采集数据时,向播放线程发送同步开始指示信息;通过播放线程在接收到所述同步开始指示信息之后,进行初始化操作。
同步开始指示信息,指的是由采集线程向播放线程发送的一个信号量,用于指示播放线程进行初始化操作,以便于后续采集线程与播放线程之间实现同步。
其中,初始化操作可以是播放线程在获取音频播放数据之前的准备操作,本实施例对此不作具体限定。
播放线程在接收到所述同步开始指示信息之后,则即刻进行初始化操作。
可选的,采集线程在首次获取音频采集数据时向播放线程发送同步开始指示信息,或者,采集线程在已经获取几次(例如两三次)音频采集数据后向播放线程发送同步开始指示信息。
采集线程在向播放线程发送同步开始指示信息之后,再按预设周期每次获取音频采集数据时,都向播放线程发送同步指示信息。
在一种可选的实施方式中,所述同步开始指示信息与所述同步指示信息通过阻塞队列进行发送。其中,所述同步开始指示信息与所述同步指示信息是两个不同的值,例如可以是两个不同的整型值,比如整型值“1”标识所述同步指示信息,整型值“0”标识所述同步开始指示信息。
S220、通过播放线程在接收到所述同步指示信息之后,获取音频播放数据进行播放,并将所述音频播放数据发送至回声消除线程。
S230、通过回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理。
S240、通过回声消除线程将回声消除处理后的目标音频数据发送至网络数据发送线程。
S250、通过网络数据发送线程发送目标音频数据。
本实施例未尽详细解释之处参见前述实施例,在此不再赘述。
在一种具体的实施方式中,实时通信为基于安卓(Android)系统的实时通信,例如可以是基于安卓系统的实时音频通信,或者是基于安卓系统的实时音视频通信。
目前,Android终端实时通信软件的回声消除问题基本都采用了Speex和WebRTC(Web Real-Time Communication,网页实时通信)这两种的回声消除模块。相比较而言,WebRTC的回声消除模块比Speex具有更好的回声消除效果。
WebRTC,是基于web浏览器应用的实时音视频通信技术,功能强大,主要包含语音引擎模块(voice engine)、视频引擎模块(video engine)、传输层模块(Transport)、会话管理模块(session management),而在其语音引擎模块(voice engine)使用了AEC(Acoustic Echo Cancellation,声学回声消除),这为Android终端实时通信中回声消除的解决提供了很好的基础。
其中,WebRTC的AEC模块采用自适应滤波算法实现回声消除,自适应滤波算法的原理如图3所示,若y(n)代表远端麦克风21采集到的语音数据,y(n)在交给近端扬声器12播放的同时,还要送到自适应滤波器30,产生回声估计值d^(n)。若x(n)代表近端有用语音,近端麦克风11采集的数据是x(n)和y(n)产生的回声d(n)的叠加,即x(n)+d(n)。经滤波处理,最终近端语音数据为:u(n)=x(n)+d(n)-d^(n),发送至远端扬声器22,其中,e(n)=d(n)-d^(n),称为回声消除误差,发送至自适应滤波器30。在理想状态下,e(n)应为0,但现实中e(n)不可能为0,自适应滤波器30会根据e(n)的值自动调整滤波器系数。
由于Android不是实时操作系统,会造成麦克风的采集和扬声器的播放之间都有一定的时延,而且这个时延每个Android设备可能都不一样。WebRTC回声消除AEC的基本原理就是以扬声器播放的数据为参照,消除麦克风采集到的音频中已经播放的内容。如果音频播放和音频采集之间的时间差过大,在做回声消除时参照的音频播放数据和音频采集数据之间会有过大的错位,而使得自适应滤波的过程中出现权值不收敛的问题,那么必然无法正确地消除回声。
在Android实时通信的应用开发中,通常使用采集线程(ReadThread)进行音频采集,使用播放线程(WriteThread)进行远端音频播放,使用接收线程(InThread)和发送线程(OutThread)来完成网络数据的接收和发送,使用回声消除线程(AecThread)完成回声消除操作。
由于采集线程和播放线程是两个相互独立的线程,不能保证采集线程和播放线程之间的数据同步,从而会出现如果某一时刻音频播放和音频采集之间的时间差过大,在做回声消除时参照的音频播放数据和音频采集数据之间有过大的错位,而使得自适应滤波的过程中滤波器权值发散,导致回声消除不干净甚至彻底发散的问题。
鉴于此,在本实施例中,通过同步指示信息实现采集线程和播放线程之间的数据同步,也即通过同步指示信息建立采集线程和播放线程之间的关联关系,从而保证用于回声消除的远端数据和近端数据之间的时间一致性,有效地提高回声消除的效果。参考图4,回声消除方法的处理流程具体为:接收线程接收网络音频数据,其中,网络音频数据的数据包可以被收包缓存及重排,采集线程在读取音频采集数据时向播放线程发送同步指示信息,播放线程接收同步指示信息后读取缓存的音频播放数据,采集线程读取的音频采集数据和播放线程读取的音频播放数据一并被送入回声消除线程,回声消除线程根据音频播放数据对音频采集数据进行回声消除后送入发送线程,发送线程将接收到的回声消除后的音频数据经网络发送出去。
例如,以采集线程每隔20ms采集一次音频数据为例,采集线程每次从声卡读取到20ms的音频数据,随即给播放线程发送一个同步指示信息,通知播放线程从其相对应的缓存队列中取出20ms的音频数据播放,将采集线程从声卡获取的20ms数据和播放线程从其缓存队列中取出的20ms数据,一并送给回声消除线程进行回声消除的处理,以此保证了音频采集数据和音频播放数据的时间一致性,避免了因数据之间的时间错位造成自适应滤波器发散,进而出现回声消除不掉的现象。
上述技术方案中,提出了一种采集线程和播放线程通过同步指示信息进行同步的机制,解决了Android终端实时通信中出现的由于送给WebRTC中AEC回声消除模块的音频采集数据和音频播放数据的时间不一致,而造成的自适应滤波器发散导致回声消除不掉的问题,提高了Android终端上的声学回声抑制效果,进而在实际运用中能够较好地满足Android终端对于语音的要求,提高了Android终端的通话质量。
实施例三
图5是本发明实施例三提供的一种回声消除装置的模块结构示意图,本实施例可适用于解决在实时音视频通信过程中音频播放和音频采集之间的时间差过大的问题的情况,该装置可以采用软件和/或硬件的方式实现,并一般可集成在电子设备中。如图5所示,该装置包括:线程同步指示发送模块310、线程同步指示接收模块320和回声消除模块330。其中,
线程同步指示发送模块310,用于在实时通信过程中,通过采集线程在获取音频采集数据时,向播放线程发送同步指示信息,并将所述音频采集数据发送至回声消除线程;
线程同步指示接收模块320,用于通过所述播放线程在接收到所述同步指示信息之后,获取音频播放数据进行播放,并将所述音频播放数据发送至所述回声消除线程;
回声消除模块330,用于通过所述回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理。
本发明实施例中,在进行实时通信时,采集线程在获取音频采集数据时,向播放线程发送同步指示信息,并将所述音频采集数据发送至回声消除线程,播放线程在接收到所述同步指示信息之后,获取音频播放数据进行播放,并将所述音频播放数据发送至所述回声消除线程,然后回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理,以此保证了采集线程与播放线程之间的数据同步,解决了音频播放和音频采集之间的时间差过大的问题,提高了音频回声消除的准确性。
可选的,线程同步指示发送模块310,具体用于在实时通信过程中,通过采集线程在按预设周期获取音频采集数据时,向播放线程发送同步指示信息。
进一步的,上述装置还包括:同步开始指示信息发送模块,用于在通过采集线程在按预设周期获取音频采集数据时,向播放线程发送同步指示信息之前,通过所述采集线程在获取音频采集数据时,向所述播放线程发送同步开始指示信息;通过所述播放线程在接收到所述同步开始指示信息之后,进行初始化操作。
可选的,所述同步开始指示信息与所述同步指示信息通过阻塞队列进行发送。
进一步的,上述装置还包括:回声消除音频数据发送模块,用于在通过所述回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理之后,通过所述回声消除线程将回声消除处理后的目标音频数据发送至网络数据发送线程;通过所述网络数据发送线程发送所述目标音频数据。
可选的,所述实时通信为基于安卓系统的实时通信。
可选的,所述实时通信包括实时音频通信或者实时音视频通信。
本发明实施例所提供的回声消除装置可执行本发明任意实施例所提供的回声消除方法,具备执行方法相应的功能模块和有益效果。
实施例四
图6是本发明实施例四提供的一种电子设备的结构示意图,如图6所示,该电子设备包括处理器410、存储器420、输入装置430和输出装置440;电子设备中处理器410的数量可以是一个或多个,图6中以一个处理器410为例;电子设备中的处理器410、存储器420、输入装置430和输出装置440可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的回声消除方法对应的程序指令/模块(例如,如图5所示的回声消除装置中的线程同步指示发送模块310、线程同步指示接收模块320和回声消除模块330)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的回声消除方法。
存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种存储有计算机程序的计算机可读存储介质,计算机程序在由计算机处理器执行时用于执行一种回声消除方法,该方法包括:
在实时通信过程中,通过采集线程在获取音频采集数据时,向播放线程发送同步指示信息,并将所述音频采集数据发送至回声消除线程;
通过所述播放线程在接收到所述同步指示信息之后,获取音频播放数据进行播放,并将所述音频播放数据发送至所述回声消除线程;
通过所述回声消除线程根据所述音频播放数据对所述音频采集数据进行回声消除处理。
当然,本发明实施例所提供的存储有计算机程序的计算机可读存储介质,其计算机程序不限于如上的方法操作,还可以执行本发明任意实施例所提供的回声消除方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本发明各个实施例的方法。
值得注意的是,上述回声消除装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
- 回声消除方法、回声消除装置、电子设备和可读介质
- 回声消除方法、回声消除装置及计算机可读存储介质