一种实时去除录音回声的方法及装置与流程

文档序号:15519726发布日期:2018-09-25 19:08阅读:688来源:国知局

本发明涉及音频处理技术领域,尤其涉及一种实时去除录音回声的方法及装置。



背景技术:

在带有喇叭与麦克风的产品中,当喇叭放音的同时使用麦克风录音,录音数据中,往往会录进去一些喇叭的声音。而这部分喇叭的声音会影响到录音效果,需要去掉,这就是去回声。很多场景都需要该功能,比如:电话会议,带语音识别的智能音箱等。去回声的原理如图1所示,麦克(microphone)录下语音(speech)之后,产生上行信号(uplinksignal),同时,喇叭(speaker)接收下行信号(downlinksignal)产生外放声音,外放声音在麦克处产生回声(echo);通过语音端子(voiceterminal)将喇叭声音输入回声消除器(acousticechochancellor,aec),从而消除回声。

去回声算法对喇叭声音与麦克声音的同步性要求很高,只有两种声音都准确同步,去回声算法才能将回声去除干净。当前,很多带有去回声功能的产品,往往使用多声道录音接口,来实现去回声的时间同步。图2是一个使用多声道内置音频集成电路(inter-icsound,i2s)接口去除录音回声的示意图:片上系统(systemonchip,soc)的多声道i2s控制器(multichanneli2scontroller)外接模数转换(analog-to-digitalconverter,adc)与数模转换(digital-to-analogconverter,dac)芯片,再由这些芯片,外接麦克(microphonearray)与喇叭。多声道i2s接口各个声道使用相同的采样率,同时获取麦克风录音与喇叭参考音,作为去回声算法的源数据。这样,可以较方便实现去回声的时间同步。因为多声道i2s各声道由同一控制器控制,同时启动录音,保证了起点同步,并且多声道i2s的时钟相同,保证了速度同步。

由于控制器支持多声道录音的芯片价格较贵,且可供选择的型号较少,导致芯片选型上,存在一定的局限性。如何在控制器不支持多声道录音的芯片上实现去回声,现有技术尚未给出解决方案。



技术实现要素:

本发明实施例提供了一种实时去除录音回声的方法及装置,用以在控制器不支持多声道录音的芯片上实现去回声功能。

本发明实施例提供的具体方案如下:

第一方面,一种实时去除录音回声的方法,包括:

向第一控制器及第二控制器发送指令,指示所述第一控制器和所述第二控制器根据同一晶振提供的时钟采集信号,其中,所述第一控制器采集麦克信号,所述第二控制器采集喇叭信号;

将所述麦克信号和所述喇叭信号调整至同一起始时间;

根据所述喇叭信号,去除所述麦克信号当中的回声。

结合第一方面,在第一种可能的实现方式中,还包括:

预先禁用处理器cpu的中断调度。

结合第一方面,在第二种可能的实现方式中,所述指令,包括:

所述第一控制器采集麦克信号所使用的倍频、分频参数,以及,所述第二控制器采集喇叭信号所使用的倍频、分频参数;其中,所述倍频、分频参数用于确定采样频率。

结合第一方面或第一方面的第一种可能的实现方式,在第三种可能的实现方式中,将所述麦克信号和所述喇叭信号调整至同一起始时间,包括:

当仅采集到所述麦克信号和所述喇叭信号二者当中的一种时,丢弃所采集的数据,直至同时采集到所述麦克信号和喇叭信号。

结合第一方面或第一方面的第一种可能的实现方式,在第四种可能的实现方式中,根据所述喇叭信号,去除所述麦克信号当中的回声,包括:

当所述喇叭信号与所述麦克信号的采样频率不一致时,根据重采样算法将所述喇叭信号和麦克信号调整为相同采样频率;

根据所述喇叭信号以及去回声算法,去除所述麦克信号当中的回声。

结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:

预先设置所述喇叭信号的采样频率为所述麦克信号的采样频率的整数倍。

结合第一方面,在第六种可能的实现方式中,所述第一控制器为脉冲编码调制pcm控制器或脉冲密度调制pdm控制器;所述第二控制器为内置音频集成电路i2s控制器。

结合第一方面或第一方面的第一种可能的实现方式,在第七种可能的实现方式中,还包括:

预先准备直接内存存取缓存dmabuffer空间;所述直接内存存取缓存用于存取麦克信号和喇叭信号。

第二方面,一种实时去除录音回声的装置,其特征在于,包括:

第一控制器,与麦克连接;

第二控制器,与喇叭连接;

处理器,分别与所述第一控制器和所述第二控制器连接;用于向第一控制器及第二控制器发送指令,指示所述第一控制器和所述第二控制器根据同一晶振提供的时钟采集信号,其中,所述第一控制器采集麦克信号,所述第二控制器采集喇叭信号,将所述麦克信号和所述喇叭信号调整至同一起始时间,根据所述喇叭信号,去除所述麦克信号当中的回声。

结合第二方面,在第一种可能的实现方式中,所述第一控制器为脉冲编码调制pcm控制器或脉冲密度调制pdm控制器;所述第二控制器为内置音频集成电路i2s控制器。

结合第二方面,在第二种可能的实现方式中,所述处理器用于将所述麦克信号和所述喇叭信号调整至同一起始时间时,具体用于:

当仅采集到所述麦克信号和所述喇叭信号二者当中的一种时,丢弃所采集的数据,直至同时采集到所述麦克信号和喇叭信号。

结合第二方面,在第三种可能的实现方式中,所述处理器用于根据所述喇叭信号,去除所述麦克信号当中的回声时,具体用于:

当所述喇叭信号与所述麦克信号的采样频率不一致时,根据重采样算法将所述喇叭信号和麦克信号调整为相同采样频率;

根据所述喇叭信号以及去回声算法,去除所述麦克信号当中的回声。

结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:

预先设置所述喇叭信号的采样频率为所述麦克信号的采样频率的整数倍。

本发明实施例,向第一控制器及第二控制器发送指令,指示所述第一控制器和所述第二控制器根据同一晶振提供的时钟采集信号,其中,所述第一控制器采集麦克信号,所述第二控制器采集喇叭信号,将所述麦克信号和所述喇叭信号调整至同一起始时间,根据所述喇叭信号,去除所述麦克信号当中的回声;由于采用两个控制器分别采集麦克信号和喇叭信号,并控制两个控制器信号的起始时间和时钟相同,实现麦克信号和喇叭信号的同步,满足了去回声算法的要求,保证了准确的去回声效果,相比于现有技术中采用多声道的单一控制器同时采集麦克信号和喇叭信号以实现去回声功能,具有更广泛的应用场景。

附图说明

图1是现有技术中去回声算法的原理示意图;

图2是现有技术中采用多声道i2s接口去回声的原理示意图;

图3是本发明实施例提供的去回声装置的工作原理示意图;

图4是本发明实施例提供的实时去除录音回声的方法的流程示意图;

图5是本发明实施例提供的分频原理示意图;

图6是本发明实施例提供的实现信号起点同步的原理示意图;

图7是本发明实施例提供的实时去除录音回声的装置的结构示意图。

具体实施方式

本发明实施例提供了一种实时去除录音回声的方法及装置,用以在控制器不支持多声道录音的芯片上实现去回声,相比于现有技术中采用多声道的单一控制器实现去回声功能,降低了去回声技术的应用成本,提升了去回声技术的应用范围。

为实现以上技术效果,考虑到大多数音频芯片没有多个i2s声道,一般最多有两个i2s录音声道,比如:北京君正的x1000芯片,但除了i2s接口外,一般还会有脉冲编码调制(pulsecodemodulation,pcm)接口或脉冲密度调制(pulsedensitymodulated,pdm)接口等。这些接口可对接模拟麦克风或数字麦克风。因此,对于此类芯片,可用i2s录音接口通过编解码器(codingdecoding,codec)获取喇叭参考音(speakerrefsound),pcm接口或pdm接口获取麦克录音(micrecordingsound)。以i2s接口获取喇叭参考音,pdm接口获取麦克录音为例,工作原理如图3所示。

需要说明的是,以i2s控制器采集喇叭信号,以pcm或pdm控制器采集麦克信号只是为方便说明给出的示例。本发明实施例也包含其它任意接口连接方式,只要是采用第一控制器、第二控制器两个不同的音频控制器接口,第一控制器能够采集麦克信号,第二控制器能够采集喇叭信号,均能够实现去回声的技术效果。通过两个控制器协作的方式,解决目前去回声算法仅能够在具有支持多声道录音的硬件上实现这一问题。

去回声算法对于喇叭参考音与麦克风录音的时间同步性要求很高。时间同步包括两方面:起点同步与速度同步,只有两方面都准确同步,去回声算法才能将回声去除干净。而如何实现两个控制器的信号同步,是保证去回声算法效果的关键。特别地,考虑到不同的晶振会有微弱的频率偏差,如果两个控制器使用不同晶振提供时钟,由于各自晶振偏差的影响,即使两个控制器设置相同的采样频率,也不可能实现速度同步。基于以上分析,本发明实施例提供了一种实时去除录音回声的方法,如图4所示,该方法包括:

s401、向第一控制器及第二控制器发送指令,指示所述第一控制器和所述第二控制器根据同一晶振提供的时钟采集信号,其中,所述第一控制器采集麦克信号,所述第二控制器采集喇叭信号;

s402、将所述麦克信号和所述喇叭信号调整至同一起始时间;

s403、根据所述喇叭信号,去除所述麦克信号当中的回声。

步骤s401中,指示第一控制器及第二控制器两个控制器根据同一晶振提供的时钟采集信号,只要时钟相同,满足去回声算法对速度同步的要求就有了可能性。如果麦克信号和喇叭信号是同频且同时钟的,那么二者是速度同步的,如果麦克信号和喇叭信号是不同频但同时钟的,在去回声时通过重采样手段使得频率一致即可实现速度同步的要求。

具体地,所述指令,包括:所述第一控制器采集麦克信号所使用的倍频、分频参数,以及,所述第二控制器采集喇叭信号所使用的倍频、分频参数;其中,所述倍频、分频参数用于确定采样频率。两个控制器的采样频率,由同一个晶振(oscillator),经过芯片内的锁相环(phase-lockedloop,pll)倍频,而后经过各自的时钟分频器(divider)得到。通过pll倍频与div分频的配合设置,得到所需采样频率。采用图3所示工作原理的芯片时,频率控制原理如图5所示。此外,区别于图5所示各控制器采用同一倍频的情况,第一控制器和第二控制器也可采用不同的倍频,只需准确设置倍频、分频参数,最终计算出的采样频率满足预期即可。

下面是北京君正的x1000芯片,在倍频pll,分频i2scdr_m、i2scdr_n等各参数不同设置下分别对应的采样频率:

当pll=1008mhz时,

实际采样速率=(pll*i2scdr_m)/(i2scdr_n*256)。

误差=(实际频率-理论频率)/理论频率×100%。

相关参数意义,可查看x1000开发者手册《11clockresetandpowercontroller》一章。

此外,也可以使用codec晶振产生i2s时钟,则同样需要pll倍频与div分频设置准确。

步骤s402中,麦克信号和喇叭信号调整至同一起始时间,用以满足去回声算法对起点同步的要求。

本发明实施例,采用第一控制器、第二控制器两个不同的控制器分别录音,而二者无法同时使能录音。因为二者的使能,由各自的寄存器控制,无法同时操作,导致启动录音必然一先一后,有一个时间差t0存在。但是,只要保证时间差t0固定即可,每次启动录音之后,只需将时间差t0的录音数据丢弃,即可实现起点同步,如图6所示。

为了实现时间差t0固定,使用了linux内核spin_lock_irqsave机制。

在启动录音前,禁止了cpu中断调度。这样,可保证录音使能的顺序,不会被其他程序打断。

相关实现代码,如下所示:

经过多次测试,得到t0的准确值。将t0的数据丢弃后,二者的起点时间偏差,保持在1毫秒内,可以满足去回声算法的要求。

此外,在执行步骤s401启动录音前,需要先将直接存取内存(directmemoryaccess,dma)控制器等准备好。这样一旦启动,可以保证采集的先进先出队列(firstinputfirstoutput,fifo)中的数据尽快搬移到dmabuffer中,不至于发生fifo溢出(overrun)。否则,一旦发生overrun,时间又会不同步。

步骤s403中,需使用去回声算法,具体处理过程如下:

s4031、当所述喇叭信号与所述麦克信号的采样频率不一致时,根据重采样算法将所述喇叭信号和麦克信号调整为相同采样频率;

s4032、根据所述喇叭信号以及去回声算法,去除所述麦克信号当中的回声。

具体地,预先设置所述喇叭信号的采样频率为所述麦克信号的采样频率的整数倍,以避免重采样对同步产生影响,下面结合示例进行详细说明。

在图3所示的例子中,为了保证放音音质,i2s的放音采样率,一般至少在44100hz以上。而i2s传输协议中,录放音共用采样时钟,因此录音采样率也为44100hz以上。而通常麦克采样率为16000hz,因此,去回声需要16000hz采样率的喇叭参考音。这里需要将采集到的高采样率喇叭参考音,重采样为16000hz采样率。但如果将44100hz采样率,重采样为16000hz采样率,需要较复杂的重采样算法,会引入微弱的时间偏差,导致麦克信号和喇叭信号的不同步。因此,选取16000的整倍数,作为喇叭信号的采样率,比如:48000。将48000hz重采样为16000hz,只需要每三个采样点,丢两个即可,可以很好的保证去回声时的速度同步。

参见图7,本发明实施例提供的一种实时去除录音回声的装置包括:

第一控制器701,用于与麦克连接;

第二控制器702,用于与喇叭连接;

处理器703,分别与所述第一控制器和所述第二控制器连接;用于向第一控制器及第二控制器发送指令,指示所述第一控制器和所述第二控制器根据同一晶振提供的时钟采集信号,其中,所述第一控制器采集麦克信号,所述第二控制器采集喇叭信号;将所述麦克信号和所述喇叭信号调整至同一起始时间;根据所述喇叭信号,去除所述麦克信号当中的回声。

综上所述,本发明实施例提供了一种实时去除录音回声的方法及装置,通过解决两个控制器协作的同步问题,实现实时去回声的功能。相比于现有技术中采用多声道的单一控制器实现去回声功能,具有更广泛的应用场景。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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