CN1286863A - 通信系统中用于改进回波抑制的方法和装置 - Google Patents
通信系统中用于改进回波抑制的方法和装置 Download PDFInfo
- Publication number
- CN1286863A CN1286863A CN98813863A CN98813863A CN1286863A CN 1286863 A CN1286863 A CN 1286863A CN 98813863 A CN98813863 A CN 98813863A CN 98813863 A CN98813863 A CN 98813863A CN 1286863 A CN1286863 A CN 1286863A
- Authority
- CN
- China
- Prior art keywords
- echo
- signal
- trap
- value
- measured value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M9/00—Arrangements for interconnection not involving centralised switching
- H04M9/08—Two-way loud-speaking telephone systems with means for conditioning the signal, e.g. for suppressing echoes for one or both directions of traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B3/00—Line transmission systems
- H04B3/02—Details
- H04B3/20—Reducing echo effects or singing; Opening or closing transmitting path; Conditioning for transmission in one direction or the other
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M9/00—Arrangements for interconnection not involving centralised switching
- H04M9/08—Two-way loud-speaking telephone systems with means for conditioning the signal, e.g. for suppressing echoes for one or both directions of traffic
- H04M9/082—Two-way loud-speaking telephone systems with means for conditioning the signal, e.g. for suppressing echoes for one or both directions of traffic using echo cancellers
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)
- Telephone Function (AREA)
- Interconnected Communication Systems, Intercoms, And Interphones (AREA)
Abstract
用于在通信系统中实现回波抑制的方法和装置包括回波抑制器,这里称作AC中心衰减器,其通过使一部分通信信号乘以适当的标度因数来衰减信号的回波成分。特别是,AC中心衰减器定标滑动衰减窗口内的这部分通信信号。衰减窗口跟踪通信信号,因此AC中心衰减器抑制回波成分同时通过其它的信号成分(例如,近端语音和噪声)。动态调整衰减窗口内的标度因数和衰减窗口的大小,以使AC中心衰减器引入最小的信号失真和少量听得到的人工产物。实现动态调整以便在实现AC中心衰减器的系统中提供期望的往返回波增益。为此,通过计算第一和第二值的比率得到回波抑制器实现的回波衰减测量值,其中第一和第二值分别表示回波抑制器输出和输入信号的能量电平。或者通过计算第一和第二值的比率得出按组更新的回波消除器实现的回波衰减,其中第一值表示回波消除器的一组更新系数的能量电平,第二值表示回波消除器输入信号的能量电平。在每种情况下,计算的比率可用于调整由剩余回波衰减器提供的衰减程度。
Description
本发明涉及通信系统,特别是涉及双向通信链路的回波抑制。
在例如陆线和无线电话系统的许多通信系统中,话音信号常常经双向通信链路在两个系统用户之间进行传输。在这些系统中,近端用户的语音典型地由在通信链路一端的近端麦克风检测,然后通过该链路传送到用于向远端用户再现的远端扬声器。相反,远端用户的语音由远端麦克风检测,然后经该通信链路传送到用于向近端用户再现的近端扬声器。在通信链路的任何一端,由最近的麦克风检测的扬声器输出可能通过该通信链路不经意地向后传输,从用户的角度来看,将引起不可接受的破坏性反馈,或回波。
因此,为了避免传输这些不受欢迎的回波信号,麦克风的声音输入应当尽可能多地孤立于扬声器的输出。在传统的电话机中,话机的麦克风位于用户嘴的旁边同时话机的扬声器基本上覆盖了用户的耳朵,所以很容易获得必要的隔离。然而,随着便携式电话机物理大小的减小,和免提扬声器电话机的更受欢迎,生产商已经改为设计从扬声器到麦克风的声音路径不受用户头部或身体的阻碍。结果,在现代系统中,需要更复杂的回波抑制技术变得尤为重要。
在免提汽车电话情况下该需要尤其明显,其中封闭的车辆环境使得扬声器信号的多次反射耦合回高增益的免提麦克风。用户在车辆中的移动和回波信号在相对方向和强度的改变,例如当窗户打开和关闭时或当用户在驾驶时移动头部时,会使汽车环境下的回波抑制任务更加复杂。另外,最近发展的数字电话机通过话音编码器来处理语言信号,该话音编码器引入显著的信号延迟并产生非线性信号失真。从用户的角度来说这种延长的延迟倾向扩大信号回波的问题,并且附加的非线性失真使得网络设备的回波抑制更加困难。
响应于上述的挑战,电话机生产商已经开发了多种多样的回波抑制机理。在图1A中描述了一种示范性的回波抑制系统100。如图所示,该示范性系统100包括麦克风110、扬声器120和回波抑制器130。麦克风110的音频输出115耦合到回波抑制器130的音频输入,回波抑制器130的音频输出135充当电话机(未示出)的近端音频输入。另外,该电话机的远端音频输出125耦合到扬声器120的音频输入和回波抑制器130的基准输入。
操作中,回波抑制器130处理麦克风信号115以便向远端电话用户提供音频输出信号135。特别是,回波抑制器130根据远端音频信号125衰减麦克风信号115,以使从扬声器120到麦克风110的声音回波不回到远端电话机用户。
典型地,回波抑制器130或者是一种非线性消波型抑制器或者是一种线性定标型抑制器。消波型抑制器通常通过除去一部分落在特定范围值内(即,在特定消波窗口内)的信号来衰减麦克风输出信号115。另一方面,定标型抑制器通过使麦克风输出信号115乘以适当的标度因数来衰减该信号。在两种情况下,通常或者直接或者间接地根据远端音频信号125的幅度来调整衰减程度,以使麦克风输出115只衰减到远端用户正讲话的程度。
例如在名称为″利用回波估计以改变误差信号的回波消除系统和方法″并于1995年12月12日授予Rasmusson等人的美国专利5.475,731中描述了一种本领域称作中心削波器的传统消波型抑制器,这里并入其全文作为参考。在名称为″通信系统中用于噪声和回波抑制的AC中心削波器″并于1996年12月31日提交的专利申请08/775,797中描述另一种称作AC中心削波器的消波型抑制器。在名称为″回波消除器处理技术和处理″并于1994年2月1日授予Genter的美国专利5,283,784中描述了一种示范性的定标型抑制器,这里也并入其全文作为参考。
图1A的回波抑制器130还可以结合线性回波消除器以提供更复杂的回波抑制系统。图1B描述了一种包括图1A的麦克风110、扬声器120和回波抑制器130以及声音回波消除器140的示范性系统101。如图所示,麦克风110的音频输出115耦合到声音回波消除器140的音频输入,声音回波消除器140的控制和音频输出144、145分别耦合到回波抑制器130的控制和音频输入。回波抑制器130的音频输出135充当电话机(未示出)的近端音频输入,并且电话机的远端音频输出125耦合到扬声器120的音频输入和声音回波消除器140和回波抑制器130的基准输入。
操作中,声音回波消除器140动态地模拟从扬声器120到麦克风110的声音路径并试图从麦克风输出信号115中消除由麦克风110选择的任何扬声器的声音。通常用于模拟声音回波路径的算法包括熟知的最小均方(LMS)算法和诸如标准化最小均方(NLMS)的变型。在上面参考的Rasmusson等人的美国专利的5,475,731中描述了一种示范性的基于消除器的最小均方。在名称为“一种用于通信系统的改进的回波消除器”并于1997年5月7日提交的专利申请08/852,729中描述了一种基于消除器的高级标准化最小均方。
控制输出或控制量度144例如表示声音回波消除器140实现的瞬时消除,并例如由回波抑制器130用于确定附加的衰减,需要该衰减将任何残余的回波成分抑制到特定的目标程度。在图1A的系统100中,回波抑制器130可以是消波抑制器或定标抑制器。在回波消除器140之后,回波抑制器130也可以是在适当时间(例如,在近端话音活动检测器表示麦克风信号115不包含近端语音期间)迭择性地静音音频输出135的简单开关。正如例如在上面引用的专利和专利申请中所描述的,因此根据所使用的回波抑制器130的类型调整控制量度144。通常在名称为“通信系统中用于控制回波抑制的方法和装置”并于本申请同一日期提交的待审查的美国专利申请09/005,144中描述了先进的用于控制回波抑制器的技术,这里并入其全文作为参考。
注意在图1A和1B的两个示范性的系统100、101中,回波抑制器130衰减整个音频信号。因此,除了衰减回波,回波抑制器130还衰减各种背景噪声和/或可能存在的近端语言。事实上,背景噪声可能抑制到远端用户可能错误地相信在回波抑制器130工作时呼叫已经被断开的程度。因此,为了改进远端用户的通信质量,现在的系统常常在回波抑制器130工作时向电话机音频信号135中加入舒适噪声。例如在名称为“用于向通信系统提供舒适噪声的方法和装置”并于本申请同一日期提交的待审查的美国专利申请09/005.145中描述了生成和利用舒适噪声的先进方法,这里并入其全文作为参考。
尽管上述的系统提供复杂的回波抑制,但是它们也存在若干显著的缺点。例如,已知的消波和定标回波抑制器可能向近端电话机信号引入讨厌的人工产物。另外,已知用于控制回波抑制器(即,用于提供适当的控制量度)的方法可能导致不适当的近端信号失真和/或特定情况下不充分的回波抑制。因此,需要一种用于提供回波抑制和回波抑制控制的改进的方法和装置。
本发明通过提供一种这里称作AC中心衰减器的改进的回波抑制器来实现上述和其它的需求,该抑制器通过使一部分通信信号乘以适当的标度因数来衰减通信信号的回波成分。特别是,该AC中心衰减器定标位于滑动衰减窗口内的这部分通信信号。有利的是,该衰减窗口跟踪通信信号的一个值(例如,信号幅度)以使AC中心衰减器可以抑制回波成分同时通过其它的信号成分(例如,近端语音和噪声)。可以动态调整衰减窗口内的标度因数和衰减窗口本身的大小以使AC中心衰减器引入最小的信号失真和少量听得到的人工产物。
因为AC中心衰减器包括定标和消波两个方面,所以可以适当考虑回波抑制器的混合形式。换句话说,该AC中心衰减器关于位于衰减窗口内的这部分通信信号象定标抑制器一样工作(即,使这部分信号乘以衰减因数),并且关于位于衰减窗口外的这部分通信信号象消波抑制器一样工作(即,使这部分信号通过)。结果,该AC中心衰减器提供具有最小信号失真的非常好的回波抑制。
除了该AC中心衰减器,本发明还提供用于通常控制回波抑制器的改进的方法和装置。例如,本发明提供动态地测量环路回波增益的技术,该技术可用于正确调整任何类型的回波抑制器提供的衰减。有利的是,该测量的环路回波增益表示由双向通信系统的各个方面衰减(例如,通过音量调整和/或通过经过从扬声器到麦克风的声音路径的自然衰落)引起回波的信号的程度,并因此表示需要将该引起回波的信号减少到特定目标程度的附加回波抑制。结果,测量的环路增益可用于调整由定标、消波或混合抑制器提供的衰减。
有利的是,该测量的环路回波增益可以包括由前端线性回波消除器提供的回波抑制。相应地,本发明提供用于动态测量由线性回波消除器实现的抑制的各种技术。例如,在任何回波消除器的输入和输出比较信号能量可用于提供动态回波消除的适当表示。另外,对于按组更新的回波消除器,比较更新能量和消除器输入能量可用于提供适当的动态指示符。在每种情况下,本发明提供用于获得和利用测量值的实用技术。
在第一个示范性的实施例中,一种根据本发明的回波抑制装置包括处理第一通信信号的回波抑制器,以便抑制由于第二通信信号的反射引起的回波成分。根据该实施例,该回波抑制器定标第一通信信号的第一部分并使第一通信信号的第二部分通过以提供抑制回波的输出信号。利用回波抑制器的衰减窗口选择第一通信信号的第一部分,并根据第一通信信号的一个值调整衰减窗口的中心。例如,可以根据第一通信信号的信号幅度调整该衰减窗口的中心。另外,可以循环调整衰减窗口的中心,结果,在每个瞬时,该中心等于回波抑制输出信号的前一计算值。
有利的是,该回波抑制器可以利用可调整的衰减因数定标第一通信信号的第一部分,并且可以调整该衰减因数以使该回波抑制装置根据实现回波抑制装置的通信系统中的其它装置的性能提供回波衰减。例如,可以根据用于调整通信系统音频输出音量的音量控制信号来调整该衰减因数。另外,可以根据第二通信信号和/或由通信系统内其它装置提供的回波衰减来调整衰减窗口的大小。
根据另一个实施例,一种根据本发明的回波抑制装置包括处理包含回波的输入信号和引起回波的基准信号以提供抑制回波的输出信号的回波抑制器。该回波抑制装置还包括估计回波抑制器回波增益的增益控制处理器。根据第一和第二测量值的比率计算该估计值,其中第一测量值表示抑制回波的输出信号的能量,第二测量值表示包含回波的输入信号或引起回波的基准信号的能量。
例如,第一测量值可以从抑制回波的输出信号的样值平方和的平方根得出,第二测量值可以从或者包含回波的输入信号或者引起回波的基准信号的样值平方和的平方根得出。或者,第一测量值可以从抑制回波的输出信号的样值的均方根得出,第二测量值可以从或者包含回波的输入信号或者引起回波的基准信号样值的均方根得出。另外,以第一和第二测量值比率的平方根计算该估计值,其中第一测量值从抑制回波的输出信号样值的平方和得出,第二测量值从或者包含回波的输入信号或者引起回波的基准信号样值的平方和得出。
根据另一个示范性的实施例,根据本发明的回波抑制装置包括前端回波抑制器、剩余回波抑制器和增益控制处理器。前端回波抑制器处理包含回波的信号和引起回波的信号以便提供中间信号,剩余回波抑制器迭择性地衰减中间信号以便提供抑制回波的输出信号。增益控制处理器根据第一和第二测量值的比率估算前端回波抑制器的回波增益,该回波增益估计值用于调整剩余回波抑制器提供的回波衰减。
根据本发明的另一个回波抑制装置包括回波消除器,包括一个或多个自适应滤波器系数,该回波消除器处理包含回波的输入信号和引起回波的基准信号以便提供消除回波的输出信号。该回波抑制装置还包括根据第一和第二测量值的比率估计回波消除器回波增益的增益控制处理器,其中第一测量值表示时间间隔内回波消除器的至少一个自适应滤波器系数的改变,其中第二测量值是基于该时间间隔内或者包含回波的输入信号或者引起回波的基准信号。
例如,第一测量值可以从该时间间隔内测量滤波器系数改变的峰值或该时间间隔内测量滤波器系数改变的平方和的平方根得出。另外,第二测量值可以从或者包含回波的输入信号或者引起回波的基准信号样值平方和的平方根,或者包含回波的输入信号或者引起回波的基准信号样值的均方根得出。
在另一个示范性的实施例中,根据本发明的回波抑制装置包括回波消除器、剩余回波消除器和增益控制处理器。该回波抑制器包括一个或多个自适应滤波器系数,该回波抑制器处理包含回波的信号和引起回波的信号以便提供回波消除信号。该剩余回波抑制器选择性地衰减回波消除信号以提供回波抑制信号,增益控制处理器根据第一和第二测量值的比率估计回波消除器的回波增益。第一测量值表示一个时间间隔内至少一个自适应滤波器系数的改变,该回波增益估计值用于调整由剩余回波抑制器提供的回波衰减。
第一测量值例如可以从一个时间间隔内测量滤波器系数改变的峰值或该时间间隔内测量滤波器系数改变的平方和的平方根得出。另外,第二测量值例如可以从或者包含回波的输入信号或者引起回波的基准信号样值的平方和的平方根或从包含回波的输入信号或者引起回波的基准信号样值的均方根得出。另外,该比例可以是计算第一和第二测量值的平方根,其中第一测量值从一个时间间隔内测量的过滤器系数改变的平方和得出,其中第二测量值是该时间间隔内从或者包含回波的输入信号或者引起回波的基准信号样值的平方和得出。
下面参照附图所示的说明性例子详细解释本发明的上述和其它特点。本领域普通技术人员可以理解为了说明和理解来提供所描述的实施例,并且这里可以想到很多等同的实施例。
图1A描述了可以实现本发明教义的示范性的回波抑制系统。
图1B描述可以实现本发明教义的另一个示范性的回波抑制系统。
图2描述根据本发明改进的回波抑制器,称作AC中心削波器。
图3描述了根据本发明另一个改进的回波抑制器,这里称作AC中心衰减器。
图4描述了包括图3AC中心衰减器的示范性的回波抑制系统。
图5描述包括图3AC中心衰减器的另一个示范性的回波抑制系统。
图6描述了可用于实现图5回波抑制系统的示范性的回波消除器。
图7描述了说明图5回波抑制系统操作的示范性的音频信号。
图8提供图7示范性的音频信号的另一种表示方式。
正如上面本发明背景技术中所描述的,专利申请08/775,797公开了一种称作AC中心削波器的改进的回波抑制器。与完全衰减或者消波落入固定消波窗口(典型地以零为中心)内的输入信号的传统中心削波器相比较,该AC中心削波器提供一种可变的消波窗口,其中心大致跟踪输入信号的包络。结果,AC中心削波器提供比传统中心削波器更好的性能,尤其是在输入信号的回波成分叠加到期望的输入信号的语音或噪声成分上时。
但是,最近的实验研究表明当在语音和/或噪声期间消波回波时该AC中心削波器仍然会引入讨厌的失真。本发明认为这种失真来自于AC中心削波器引入的信号增益的不连续性。换句话说,该失真是由于落入AC中心削波器可调窗口内的输入信号被完全消波,同时落在可调窗口外的输入信号完全没有衰减的事实。
参照图2可以更好地理解AC中心削波器的这个方面,其中AC中心削波器在特定时刻的输出描述为AC中心消波器输入的函数。正如在专利申请08/775.797中所描述的,AC中心削波器包括由可调消波门限Δ定义的可调消波窗口和基于AC中心削波器的最近输出设置的可调窗口中心。那么,如图2所示,对于主要的消波窗口,消波落入窗口内的输入信号的任何部分,同时允许落在窗口外的输入信号的任何部分未衰减的通过。结果,AC中心削波器可以如上所述地使语音和噪声信号失真。
为了补救这个问题,本发明提供另一种改进的回波抑制器,这里称作AC中心衰减器。与AC中心削波器相似,该AC中心衰减器包括滑动窗口,该窗口由可调门限Δ定义并移动以大致跟踪输入信号的包络。但是,与AC中心削波器不同,该AC中心衰减器不全部消除落入滑动窗口内的这部分输入信号。而是,AC中心衰减器利用合适的衰减因数α来定标这部分输入信号。
结果,在衰减窗口边界信号增益的不连续性可以不那么严重,并且可以调整该AC中心衰减器以引入与AC中心削波器相比更少可听到的人工产物。而且,该AC中心衰减器在减少信号失真方面保持了AC中心削波器的优点。换句话说,因为该AC中心衰减器的衰减窗口移动以大致跟踪输入信号包络,该AC中心衰减器可以抑制回波同时通过其它信号成分。正如下面所详细描述的,可以动态地调整AC中心衰减器的衰减因数α和窗口大小Δ以使AC中心衰减器可以连续提供最大回波抑制和最小信号失真的适当平衡。
在图3中描述了AC中心衰减器的上述操作。其中该AC中心衰减器在特定时刻的输出描述为AC中心衰减器输入的函数。注意图2和图3,AC中心削波器实际上是一种特殊情况的AC中心衰减器。换句话说,AC中心削波器实际上是衰减因数α设置为零情况下的AC中心衰减器。还要注意图3,该AC中心衰减器可以通过将衰减因数α设置为1和/或将窗口大小Δ设置为零进入通过模式(即,输出总是等于输入的模式)。
例如,可以利用下列的伪码实现该AC中心衰减器:
%如果输入信号在窗口的下面,
if Input<=(LastOutput-Delta),
%使用所有窗口外的信号并衰减窗口内的信号,
Output=Input+Delta-ScaleFactor*Delta;
%另外如果输入信号在窗口的上面
elseif Input>=(LastOutput+Delta),
%使用所有窗口外的信号并衰减窗口内的信号,
Output=Input-Delta+ScaleFactor*Delta;
%另外输入在窗口内部,
else,
%则衰减信号
Output=ScaleFactor*(Input-Lastoutput)+LastOutput;
end
%为下一个循环保存输出
LastOutput=Output
在图3和上面的伪码中,通过动态地移动衰减窗口的中心使得AC中心衰减器的中心密切跟踪输入信号的包络以便不断匹配AC中心衰减器的输出。但是,该AC中心衰减器窗口还可以更宽松地跟踪输入信号的包络。例如,当输入信号落在主要窗口之外并不动,或者否则衰减到零时,可以移动窗口中心以匹配AC中心衰减器的输出。或者,可以限制窗口中心以使窗口的边界不会超过输入信号的整个范围(例如,当窗口大小覆盖输入信号的整个范围时,窗口中心只能为零)。当输入信号主要由回波组成(和没有必要试图跟踪输入包络以通过其它信号成分)时,做其中一件或两件事可以防止AC中心衰减器引入不必要的信号失真(由于连续移动衰减窗口)。
有利的是,该AC中心衰减器可以在诸如上述图1A的系统中用作独立的的回波抑制器。相应地,图4描述了一种图lA的回波抑制器130实现为AC中心衰减器的示范性系统400。如图所示,该示范性系统400包括麦克风110、扬声器120和AC中心衰减器130,以及增益控制处理器410、乘法器420、包络检波器430和音量增益部件440。
在图4中,麦克风输出115耦合到增益控制处理器410的第一基准输入和AC中心衰减器130的音频输入。AC中心衰减器130的音频输出135充当电话机(未示出)的音频输入,电话机的音频输出445耦合到音量增益部件440的音频输入。音量增益部件440的音频输出125充当扬声器120的音频输入并耦合到包络检波器430和增益控制处理器410的第二基准输入。
音量控制信号444耦合到音量增益部件440的控制输入和增益控制处理器410的第三基准输入。增益控制处理器410的第一控制输出414a耦合到AC中心衰减器130的第一控制输入,增益控制处理器410的第二控制输出414b耦合到乘法器420的第一输入。包络检波器430的基准输出435耦合到乘法器420的第二输入,乘法器420的输出425耦合到AC中心衰减器130的第二控制输入。
通常,图4中系统400的操作类似于图1A中系统100的操作。换句话说,AC中心衰减器130根据扬声器信号125处理麦克风信号115,所以从扬声器120到麦克风110的声音回波不会回传到远端电话用户。但是,在图4的系统400中,增益控制处理器410经控制信号414a、414b调整由AC中心衰减器130提供的衰减。
图4的系统400中包含音量增益部件440是为了更好的说明增益控制处理器410的操作。通常,音量增益部件440根据音量控制信号444衰减电话音频信号445,并将衰减的音频信号125传送到扬声器120。例如,可以由近端用户调整音量控制信号444。
增益控制处理器410利用音量控制信号444、麦克风信号111和/或扬声器信号125来调整AC中心衰减器130提供的衰减。更特别是,增益控制处理器410利用基准信号115、444、125动态地估计环路或往返路径,回波增益反过来用于计算控制信号414a、414b。估计的环路增益表示电话机音频信号445的远端语音在其经过音量控制部件440和从扬声器120到麦克风110的声音路径时正被衰减的程度。所估计的环路增益因此能用于计算AC中心衰减器130应该提供的附加衰减量。
例如,AC中心衰减器130的窗口大小Δ可以设置为刚好足以捕获输入音频信号115的估计的回波成分(但是没有必要更大,因为增加窗口大小将导致信号失真增加),可以设置AC中心衰减器的衰减因数α以使输出音频信号135的任何剩余回波成分衰减到特定的目标程度。例如在上面参考的待审查的名称为“通信系统中用于控制回波抑制的方法和装置”并于本申请同一日期提交的专利申请09/005,144中描述了用于基于所估计的环路增益设置窗口大小Δ和衰减因数α的先进方法。下面也通过伪码描述特定的示范性技术。
为了估计整个的环路回波增益,控制处理器410计算由音量增益部件440和从扬声器120到麦克风110的声音路径提供的回波衰减。音量增益部件440提供的衰减为音量控制信号444所固有。但是,由声音路径提供的衰减(这里称作信道增益)要基于麦克风和扬声器信号115、125。下面用伪码描述估计信道增益的先进方法。还要注意,不是动态地估计操作期间的信道增益,而是事先根据系统400所希望的工作环境设置固定的最差情况的信道增益估计值。
如图4所示,增益控制处理器410计算经第一控制信号414a直接到达AC中心衰减器的适当衰减因数α。增益控制处理器410还计算由第二控制信号414b传送的适当窗口大小(例如,窗口大小刚好大到足以捕获音频信号115所估计的回波成分)。但是,第二控制信号414b不直接用作AC中心衰减器130的窗口大小Δ。而是,第二控制信号414b乘以包络检波器430的输出435,包络检波器430的输出425用作AC中心衰减器130的窗口大小Δ。只有必要时才使估计的窗口大小乘以检波器输出435以确保AC中心衰减器130正在工作。
例如,当远端用户沉默时,扬声器信号125的幅度和包络检波器430的输出435大致为零。因此,乘法器420的输出425为零,AC中心衰减器130充当通过的功能,对近端信号不起作用。或者,当远端用户说话时,扬声器信号125的幅度和包络检波器430的输出435不为零。因此,乘法器420的输出425为非零,该AC中心衰减器130按上述工作。
因为只有当远端用户说话时,AC中心衰减器130才工作,所以不会使近端单方通话情况下的近端话音和噪声失真。但是,在远端单方通话和双方通话期间,AC中心衰减器130工作并除了抑制回波之外还使近端话音和/或噪声失真。但是,因为由该AC中心衰减器130引入的失真比传统抑制器引入的失真少,所以AC中心衰减器130从不需要完全不工作,甚至在双方通话期间。结果,AC中心衰减器130可以充当有效的全时回波抑制器,甚至不需要前端回波消除器。
例如,图4的包络检波器430可以构造为指数衰减的峰值检波器。在这种情况下,设置检波器430的时间常数以使检波器输出435的衰减速率不比与扬声器120和麦克风110之间的声音路径相关的衰减速率快。换句话说,检波器输出435的峰值(扬声器信号125的峰值引起的)应该不比麦克风110选择的相应回波信号(包括混响)衰减快。但是,检波器430的衰减速率不应该慢到使近端传输显著失真。还要注意,可以从包络检波器430的输入中删除任何DC偏移(例如,通过AC耦合或高通滤波器),所以AC中心衰减器130的窗口大小不会人为地设置和不必要的变高,DC偏移可以存在于扬声器信号125中或在扬声器信号125的模数转换期间引入DC偏移。
有利的是,本发明的AC中心衰减器还可以结合诸如上述图1B的前端回波消除器。相应地,图5描述了图1B的回波抑制器130实现为AC中心衰减器的示范性系统500。如图所述,示范性的系统500包括麦克风110、扬声器120、AC中心衰减器130、回波消除器140、乘法器420、包络检波器430和音量增益部件440。
在图5中,麦克风输出115耦合到回波消除器的音频输入,回波消除器140的音频输出145耦合到AC中心衰减器130的音频输入。AC中心衰减器130的音频输出135充当电话机(未示出)的音频输入,电话机的音频输出445耦合到音量增益部件440的音频输入。音量增益部件440的音频输出125耦合到扬声器120的音频输入、包络检波器40的基准输入和回波消除器140的第一基准输入。
音量控制信号444耦合到音量增益部件440的控制输入和回波消除器140的第二基准输入。回波消除器140的第一控制输出144a耦合到AC中心衰减器130的第一控制输入,回波消除器140的第二控制输出144b耦合到乘法器420的第一输入。包络检波器430的基准输出435耦合到乘法器420的第二输入,第二乘法器420的输出425耦合到AC中心衰减器130的第二控制输入。
通常,图5的系统500的操作类似于图1B的系统101的操作。换句话说,声音回波消除器140动态地模拟从扬声器120到麦克风110的声音路径并试图消除由麦克风110选择的任何扬声器声音。那么AC中心衰减器130提供必要的附加回波衰减,并选择性地在输出信号135中加入舒适噪声以补偿由AC中心衰减器130衰减的近端噪声。但是,在图5的系统500中,回波消除器140包括类似于图4的增益控制处理器410提供的增益控制处理。
特别的,图5的回波消除器140估计从远端输入445,通过音量增益部件440,通过从扬声器120到麦克风110的声音路径和通过回波消除器140自身的环路回波增益。根据麦克风、扬声器和消除器输出信号115、125、145估计环路回波增益,该环路回波增益用于为AC中心衰减器130计算第一和第二控制信号144a、144b。类似于图4的第一控制信号414a,图5的第一控制信号144a不直接用作AC中心衰减器130的衰减因数α,类似于图4第二控制信号414b,图5的第二控制信号144b乘以包络检波器430的输出以提供AC中心衰减器130的窗口大小Δ。
为了估计该环路回波增益,图5的回波消除器140计算由音量增益部件440、声音路径和回波消除器140自身提供的衰减。如同图4的系统400,音量增益部件440提供的衰减为音量控制信号444所固有,由声音路径提供的衰减或者动态地根据麦克风和扬声器信号115、125估计或者设置为固定的最差情况下的值。有利的是,可以根据本发明提供的多项技术的任一个计算由回波消除器140提供衰减。
在第一个示范性的实施例中,回波消除器140估计根据麦克风信号115和消除器输出信号145提供的瞬时回波衰减。更特别是,回波消除器140以第一和第二值的比率计算衰减估计,其中第一和第二值分别表示消除器输出和输入信号145、115的能量。
例如,第一值(即该比率的分子)可以计算为幅度平方和的平方根,每个幅度平方相应于消除器输出信号145的一个样值。在这种情况下,第二值(该比率的分母)类似地计算为消除器输入信号115的样值平方和的平方根。或者,该比率的分子和分母可以分别计算为消除器输出和输入信号115的均方根(RMS)值。
有利的是,该比率精确表示了回波消除器140在远端单方通话期间实现的消波。换句话说,当只有远端用户讲话时,麦克风和消除器输出信号115、145的能量主要来自于回波(虽然背景噪声也会贡献),根据相对能量的比率直接表示回波消除器140正删除多少回波。
本领域技术人员可以理解用于检测远端单方通话时间的方法(即,为了确保只有在适当的的时候才计算能量比)为人们所熟知。另外,下面用示范性的伪码描述用于检测远端单方通话的先进方法。然而,因为远端单方通话检测的具体细节对理解本发明来说并不关键,所以这里省略这些细节。
有利的是,还可以根据扬声器信号125代替麦克风信号115来计算该比率的分母(如上所述)。在这种情况下,该比率表示从扬声器120的输入,通过从扬声器120到麦克风110的声音路径和通过回波消除器140的瞬时回波衰减(即,该比率包含信道增益和消除器增益)。
在任何情况下,估计麦克风、扬声器和/或消除器输出信号115、125、140中的噪声可以在执行计算之前从这些信号中减去以便改进作为结果的比率的准确度。本领域技术人员可以理解用于估计音频信号中噪声电平的方法为人们所熟知。另外,下面用示范性的伪码描述用于获得噪声电平估计值的先进方法。但是,再一次因为关于噪声电平估计的具体细节对于理解目前要求的发明来说并不关键,因此这里省略这些细节。
注意无论使用了什么类型的回波消除器140,上述的比率都很有价值地表示了回波消除。换句话说,输入和输出能量的比率反映了回波消除程度(在远端单方通话期间),不论回波消除器140处理音频信号115以抑制回波的准确方式。因此,用于估计回波消除器所提供回波衰减的上述技术适用于各种类型的回波消除器。的确,本技术通常适用于任何类型的线性和非线性回波抑制器,包括上述消波、定标和混合抑制器。
有利的是,本发明还提供用于估计特定类型的回波消除器所提供回波抑制的专门技术。例如,本发明提供用于估计按组更新的回波消除器所提供的回波抑制技术(即,自适应滤波器系数按组更新的回波消除器)。在1995年12月27日提交的名称为“自适应滤波器的测量会聚”的待审查的美国专利申请08/578,944中描述了示范性的按组更新的回波消除器,这里并入其全文作为参考。另外,在专利申请08/852,729中描述了先进的按组更新的回波消除器。
为了说明本发明的技术,在图6描述了专利申请08/852.729的按组更新的回波消除器的改进版本。如图所示,图6示范性的消除器140包括系数寄存器610、更新寄存器620、样值寄存器630、增益控制处理器640、平方最大值部件650、最大值部件652、第一到第四求和装置660、662、664、666,第一到第四乘法器670、672、674、676,和第一到第六平方和累加器680、682、684、686、688、690。
图6中,麦克风输出115耦合到第一平方和累加器680的一个输入和第一求和装置660的加法输入。第一求和装置660的输出145充当回波消除器140的音频输出并耦合到第二平方和累加器682的一个输入和第一乘法器670的定标输入。第一、第二和第三平方和累加器680、682、684的输出681、683、685分别耦合到增益控制处理器640的第一、第二和第三基准输入。增益控制处理器640的第一控制输出645耦合到第四乘法器676的定标输入,增益控制处理器640的第二和第三控制输出144a、144b充当回波消除器140的第一和第二控制输出。
音量增益部件440的音频输出125耦合到样值寄存器630的队列输入和扬声器120的音频输入,音量控制信号444耦合到增益控制处理器640的第四基准输入。样值寄存器630的矢量输出耦合到第一和第二乘法器670、672的矢量输入。样值寄存器输出635的第一和第二抽头637、639分别耦合到第四和第五平方和累加器686、688的输入。第四和第五平方和累加器686、688的输出687、689分别耦合到最大值部件652的第一和第二输入,最大值部件652的输出653耦合到增益控制处理器640的第五基准输入。
第一乘法器670的矢量输出671耦合到第三求和装置664的第一矢量输入,第一求和装置664的矢量输出665耦合到更新寄存器620的矢量输入。更新寄存器620的矢量输出625耦合到第三求和装置664的第二矢量输入和第四乘法器676、第六平方和累加器690和平方最大值部件650的矢量输入。第六平方和累加器690和平方最大值部件650的输出691、651分别耦合到增益控制处理器640的第六和第七基准输入。
第四乘法器676的矢量输出677耦合到第四求和装置666的矢量输入,第四求和装置666的矢量输出667耦合到系数寄存器610的矢量输入。系数寄存器610的矢量输出615耦合到第四求和装置666的矢量输入和第三乘法器674的矢量输入。轮廊矢量耦合到第三乘法器674的第二矢量输入,第三乘法器674的矢量输出675耦合到第二乘法器672的第二矢量输入。第三乘法器672的矢量输出673耦合到第二乘法器662的矢量输入,第二求和装置662的定标输出663耦合到第一求和装置660的减法输入和第三平方和累加器684的输入。
例如在专利申请08/852,729中描述了图6回波消除器140的详细操作。一般而言,回波消除器140用作自适应滤波器,其中根据最小均方(LMS)或标准化LMS(NLMS)算法最小化消除器输出信号145或误差信号,因此自适应滤波器的传递函数(由系数寄存器610的一组滤波器系数定义)会聚到扬声器120和麦克风110之间的回波路径。如图所示,对样值寄存器630和系数寄存器610的内容卷积以提供麦克风信号115回波成分的估计值663,回波估计值663减去麦克风信号115以提供消除器输出信号145。根据消除器输出信号145和样值寄存器630的内容以样值为基础修改一组更新系数(存储在更新寄存器620中),更新系数用于以分组的方式匹配系数寄存器610中的系数(例如,TDMA电话应用中每160个音频样值一次)。增益控制处理器640选择性地利用基准信号444、651、653、681、683、685计算可变更新增益645,并因此控制系数寄存器610中系数的匹配速率。
有利的是,本发明教导更新系数(即,更新寄存器620的内容)可用于表示回波消除器140实现的瞬时回波抑制。为此,正如专利申请08/852,729所描述的,首先认识到,分组最后的更新系数值粗略表示了回波消除器140做得有多好。例如,当回波消除器140会聚时(即,例如在打开电源或声音路径出现突变之后,当自适应滤波器的传递函数接近声音路径的传递函数时),每个分组最后的更新系数值降低。换句话说,当回波消除器140的自适应滤波器开始匹配真正的声音回波路径时,系数寄存器610的滤波器系数稳定。
因此,根据本发明的实施例,通过标准化一个或多个每个分组最后的更新系数得到回波消除器140提供的瞬时回波衰减或增益的测量值。更特别是,在每个分组的最后计算第一和第二值的比率作为衰减估计值,其中第一值是基于一个或多个更新系数,第二值表示消除器输入信号115的能量。
例如,可以计算每个分组最后更新系数平方和的平方根(例如平方和累加器691输出的平方根)作为第一值(即该比率的分子)。或者,该比率的分子可以等于每个分组最后的更新系数峰值(例如等于平方最大值部件651输出的平方根)。在两种情况下,如上所述可以计算消除器输入信号115的样值平方和的平方根作为该比率的分母。
有利的是,该比率提供了回波消除器140提供的回波衰减测量值,并且如上所述可用于计算系统环路增益。或者,根据扬声器信号125计算该比率的分母以表示声音路径和回波消除器140的组合提供的回波衰减(即,信道增益和消除器增益的组合)。尽管本发明的实施例是参照专利申请08/852,729描述的特定按组更新的回波消除器描述的,但本实施例同样适用于任何保持更新系数的回波消除器。
举个例子,在下面提供的伪码中更详细地描述本发明的各个方面。写伪码以模拟利用32位数字信号处理器实现的示范性回波抑制系统。本领域技术人员可以理解该码实际上是示范性的,可以利用多种多样的硬件配置实现等同物。该示范性的回波抑制系统包括专利申请08/852,729描述的改进回波消除器的改进版结合上述AC中心衰减器。
%MATLAB的AEC和ANLP模拟脚本。 %在运行此脚本之前,设置下列变量: %inFile=输入文件名,left=远端,right=近端。 %outFile=输出文件名,left=ANLP输出,right=AEC输 出。 %所有文件使用DAT-Link的原始格式。 %estnoise.m包含估计噪声的函数。 <dp n="d16"/> %词汇: %EC=回波消除器=线性回波抑制器 %AEC=声音回波消除器=扬声器回波消除器 %NLP=非线性处理=剩余回波抑制器=AC中心衰减器 %ANLP=声音非线性处理 %VAD=话音活动检测器 %分数表示法的最大正值。 ONE=32767/32768; %读取包含远端和近端信号的文件 fidIn=f open(inFile,′r′); if fidIn==-1 error({′Error opening file′inFile}) end [LRmatrix,wordCount}=fread(fidIn,[2,inf],′intl6′}; fclose(fidIn); %更新积分期间的样值数。 FRAME_SIZE=160; %较大的帧长为积分趋于零的双向通话和近端噪声提供更 大的强壮性。 %较大的帧长还改进检测会聚的能力,因为相关更新与帧长 成正比,而非相关(噪声)与帧长的平方根成正比。 %较小的帧长改进改变(回波路径、单方->双向通话)的反 应时间并加速会聚。 %较小的帧长还改进拒绝元音的能力。 %160用于方便引入每帧160个样值的TDMA电话。 %作为结果结构的20ms帧对于将语音分成静态信号段几乎 是最佳的。 <dp n="d17"/> NFRAMES=floor((wordCount/2)/FRAME_SIZE);%要处 理的帧数 clear wordCount NSAMPLES=NFRAMES*FRAME_SIZE;%用于消除错误 的基于样值的矢量长度。 % %从单独的文件下载麦克风(上行链路)和扬声器(下行链 路)VAD输出。如果一个文件也没找到,运行可在近端和远端声音 文件执行的C,将VAD输出保存到具有相同前缀的文件。 % fidIn=fopen((inFile′_up_vad′],′r′); if fidIn==-1 disp([File=′inFile′_up_vad not found--creating…′]) fidOut=fopen(′vad_in.raw′,′w′); fwrite(fidOut,LRmatrix(2,:),′int16′);%上行链路音频 fclose(fidOut); !nrsim-s=f vad-in.raw junk vad-out.bit !rm vad-in.raw !rm junk.flt fidIn=fopen(′vad-out.bit′,′r′); if fidIn==-1 error(′Error opening file=vad-out.bit′) end micVad=fread(fidln,NFRAME S,′int8′); !rm vad-out.bit fclose(fidIn); fidOut=fopen([inFile′_up_vad′],′w′) fwrite(fidOut,micVad,′int8′); fclose(fidOut) <dp n="d18"/> else micVad=fread(fidIn,NFRAMES,′int8′); fclose(fidIn); end fidIn=fopen([inFile′-down-vad′],′r′); if fidIn==-1 disp([′File=′inFile′_down_vad not found--creating…′]) fidOut=fopen(′vad_in.raw′,′w′); fwrite(fidOut,LRmatrix(l,:),′int16′);%下行链路音频 fclose(fidOut); !nrsim-s=f vad_in.raw junk vad_out.bit !rm vad_in.raw !rm junk.flt fidIn=fopen(′vad_out.bit′,′r′); if fidIn==-1 error(′Error opening file=vad_out.bit′) end speakerVad=fread(fidIn,NFRAMES,′int8′); !rm vad_out.bit fclose(fidIn); fidOut=fopen([inFile′_down__vad′],′W′); fwrite(fidOut,speakerVad,′int8′); fclose(fidOut); else speakerVad=fread(fidIn,NFRAMES,′int8′); fclose(fidIn); end <dp n="d19"/> %定标输入使用-1到ONE的范围。 LRmatrix=LRmatrix/32768; %一帧样值合计值的右移位数。 FRAME_BITS=ceil(log2(FRAME_SIZE)); %将能量量化为32位的标度因数(Z8.23格式 w/FRAME_SIZE=160) ENERGY_SCALE=2A(31_FRAME_BITS); %基准延时线的抽头数。 %基准延时线必须足够长,高延时抽头几乎与远端信号无 关,只具有近端能量。 AEC_REF_TAPS=512; %FIR回波估计滤波器的抽头数。 AEC_COEF_TAPS=256; %用于测量近端能量的更新矢量的高延时部分的抽头数。 AEC_NEAR_TAPS=128; %捕获汽车噪声样值的矢量长度。 COMFORT_NOISE_SIZE=128; %计算更新矢量峰值与基线比率的门限用于确定最大更新 增益。噪声在[-1 1]的范围内均匀,更新幅度的期望峰值是 g*FRAME_SIZE/3,不相关抽头更新矢量的RMS期望值是 g*sqrt(FRAME_SIZE)/3,其中g是回波路径增益。因此,最大更 新矢量峰值与基线比是sqrt(FRAME_SIZE)。 然而,话音并不像噪声具有恒定的包络。因为FRAME_SIZE 比更新矢量长度小得多,语音脉冲串有时在测量峰值的但不在测 量基线的更新矢量的区域内。因此,实际的峰值与基线比可以很 高(>300)。由于在噪声或双向通话条件下高增益甚至更新低能量 的远端信号,所以设置门限太低将引起不稳定性。由于在大的回 <dp n="d20"/> 波路径改变之后高增益只更新高能量反对远端信号,所以设置门 限太高将引起慢适应性。以经验折衷确定门限。 AEC_MAX_GAIN_THRESH=16; %峰值与噪声的RMS与帧长无关。以经验得出用于拒绝近端 话音/噪声和远端周期信号(音调和元音)的门限。 AEC_BASELINE_THRESH=5.5; %预先计算用作状态测量乘法器的常数。 AEC_STATUS_GAUGE_SCALER=floor(32768/… (AEC_MAX_GAIN_TRRESH -AEC_BASELINE_THRESH))/32768; %产生FIR系数的增益轮廊。该轮廊粗略地匹配汽车中系数 的期望范围。这样以来,包含周期成分(元音)的更新强制遵循适 当的指数衰减特性并最小化发散。较高延时抽头的较低增益还减 少更新对系数的噪声贡献。轮廊的整个影响允许更高的更新增益 没有不稳定性。因为所有的系数都具有16位的动态范围,由于轮 廊的结果更高的延时抽头还具有更好的量化。通过计算FIR 64 个抽头右移一次来实现该轮廊。 profile=ones(AEC_COEF_TAPS,l); for k=2:(AEC_COEF_TAPS/64), profile((k*64-63):(k*64))=ones(64,1)*2^(l-k); end %分配消除错误的矢量以加速执行。 aecUpdateFactor=zeros(1,NFRAMES); aecChanGainHist=zeros(1,NFRAMES); aecSpeedHist=zeros(l,NFRAMES); aecVoiceGainHist=zeros(l,NFRAMES); aecVoiceGainBaseHist=zeros(l,NFRAMES); aecNearRatioHist=zeros(l,NFRAMES); <dp n="d21"/> aecNearGainHist=zeros(l,NFRAMES); aecEchoGainHist=zeros(l,NFRAMES); aecInNoiseHist=zeros(l,NFRAMES); aeCInEchoNoiseHist=zeros(l,NFRAMES); aecInVoiceHist=zeros(l,NFRAMES); aeCInEchoVoiceHist=zeros(l,NFRAMES); anlpInVoiceHist=zeros(l,NFRAMES); anlpInNoiseHist=zeros(l,NFRAMES); anlpDeltaHist=zeros(1,NSAMPLES); anlpGainHist=zeros(l,NFRAMES); %初始化变量 aecRef=zeros(1,AEC_REF_TAPS); %使用最后的值: aecCoef=zeros(AEC_COEF_TAPS,l); %注释 aecInNoise=FRAME_SIZE; %注释 aecInEchoNoise=aecInNoise; %注释 anlpInNoise=aecInNoise; %注释 aecChanGain=ONE; %注释 aecVoiceGain=ONE; %注释 aecVoiceGainBase=aecVoiceGain; %注释 aecNearGain=aecVoieeGain; %注释 aecEchoGain=aecVoiceGain; %注释 anlpComfortNoiselnOld=0; %注释 anlpComfortNoiseOutOld=0; %注释 anlpComfortNoise=zeros(l,COMFORT_NOISE_SIZE};%注 释 anlpArCoef=0.75 %注释 aecNearRatio=0; %只为历史初始化 aecInNoiseStateVars =[aecInNoise 0 0]; aecInEchoNoisestateVars=[aeeInEchoNoise 0 0); anlpInNoiseStatevars =(anlpInNoise 0 0); anlpSeed=1; <dp n="d22"/> anlpArGain=1-anlpArCoef; anlpRefEnvelope=0; anlpOutLast=0; anlpNearspeechCount=0; anlpNearspeechFlag=0; %disp([′aecCoef(l)=′dec2hex(aecCoef(1)*32768+ (aecCoef(1)<0)*65536)]) %disp([′aecCoef(2}=′dec2hex(aeeCoef(2)*32768+ (aeeCoef(1)<0)*65536)]) %disp([′aeCInNoise=′deC2hex(aecInNoise*2^31)]} %disp([′anlpInNoise=′deC2hex(anlpInNoise*2^31)]} %disp([′aecChanGain=′deC2hex(aecChanGain*32768)]} %disp([′aecVoiceGain=′deC2hex(aecVoieeGain*3276′8}]) %disp([′aecVoiceGainBase=′ deC2hex(aecVoiceGainBase*32768}]) %disp([′aecEchoGain=′dec2hex(aecEChoGain*32768)]) %disp([′anlpComfortNoiseInOld=′ deC2hex(anlpComfortNoiseInOld*32768)]) t disp([′ anlpComfortNoiseoutOld=′ dec2hex(anlpComfortNoiseOutold*32768)]) %disp([′anlpArCoef=′dec2hex(anlpArCoef*2^31)]) %disp([′anlpArGain=′dec2hex(anlpArGain*32768)]) fidOut=fopen(outFile,′w′); for frame=l:NFRAMES, frame %显示帧数以表示进程。 % %AEC前帧部分 % <dp n="d23"/> %因为在用于更新FIR系数的基准矢量的抽头和用于相关近 端能量的抽头之间存在差距,所以不需要为基准矢量的每个抽头 计算更新矢量。因此,特别为两个目的用子矢量表示更新矢量。 %清除一帧中累加的更新子矢量。 aecUpdate=zeros(AEC-COEF-TAPS,l);%用于FIR系数更 新。 aecUpdateNear=zeros(AEC-NEAR-TAPS,l);%用于近端测 量值 %清除其它的帧累加器。 aecEchoEstEnergy=0; %复位block_floating_point变量。 aeoShiftPending=0; aecErrorShift=0; %将上行链路和下行链路的PCM音频样值放入缓冲器。 downlinkAudio=LRmatrix(l,(frame-l)*FRAME_sIZE+l: frame*FRAME_SIZE); uplinkAudio=LRmatrix(2,(frame-l)*FRAME_sIZE+1: frame*FRAME_SIZE); %累加一帧中的AEC近端输入能量。 aecInEnergy=sum(uplinkAudio.^2).; %将能量量化为32位。 aeclnEnergy=floor(aecInEnergy*ENERGY_SCALE)/ ENERGY_SCALE; % %AEC样值部分 % for k=1:FRAME SIZE, <dp n="d24"/> %将远端(扬声器)样值移入基准延迟线并计算FIR输出。在 DSP中,一个指令包含两个操作。 aecRef=[downlinkAudio(k)aecRef(l:AEC_REF_TAPS-l)]; %测试码开始 %下面的代码很接近注释、精确到比特的代码。 aecEchoEst=aecRef(l:AEC_REF_TAPS)*(aecCoef* profile); aecEchoEst=max(min(round(aecEchoEst*32768)/32768, ONE),-1); %试验码结束。 %aecEchoEst=0; %for m=(AEC_COEF_TAPS/64):-1∶2, %aecEchoEst=aecEchoEst+aecRef(m*64-63:m*64)* aecCoef(m*64-63:m*64); %aecEchoEst=max(min{aecEchoEst,ONE),-l)/2; %%量化为S.31格式 %aecEchoEst=floor(aecEchoEst*2^31)/2^31; %end %aecEchoEst=aecEchoEst+aecRef(1∶64)*aecCoef(1∶64); %aecEchoEst=max(min(aecEchoEst,ONE),-1); %%量化为S.15格式 %%当用0.5的分数将负数舍入成整数时,加2^(-17)以使l的求 补运算浮点与2的求补运算相同。 aecEchoEst=round(aecEchoEst*32768+2^(-17))/32768; aecEchoEst=max(min(aecEchoEst,ONE),-1); %累加一帧中的回波估计值能量。 %改进小信号的性能并以其它能量累加相同的方式产生该 测量值,在环路过程中保存全部的40位累加器。 aecEchoEstEnergy=aecEchoEstEnergy+aecEchoEst^2; %计算AEC输出=近端(麦克风)输入-回波估计。 <dp n="d25"/> uplinkAudio(k)=max(min(uplinkAudio(k)-aecEchoEst,ONE), -l); %累加系数更新=误差(uplinkAudio(k))和基准的相关。使 用组浮点表示法,其中aecErrorShift是指数, aecUpdate/aecUpdateNear()是尾数。 T=uplinkAudio(k)*2^aecErrorShift; %量化为S.15格式 T=floor(T*32768)/32768; if aecShiftPending, ASM=-1; aecErrorShift=aecErrorShift-1; aecShiftPending=0; else ASM=0; end %计算用于更新FIR系数的区域。 aecUpdate=aecUpdate+T*aecRef(l:AEC_COEF_TAPS)′; %计算用于测量近端能量的区域。 aecUpdateNear=aecUpdateNear+… T*aecRef (AEC_REF_TAP5_AEC_NEAR_TAP5+1:AEC_REF_TAPS)’; %量化为S.15格式 %当用0.5的分数将负数舍入成整数时,加2^(-17)以使l的求 补运算浮点与2的求补运算相同。 aecUpdate=round(aecUpdate*32768+2^(-17))/32768; aecUpdateNear=round(aecUpdateNear*32768+2^(-17))/ 32768; aecUpdate=max(min(aecUpdate,ONE),-l); aecUpdateNear=max(min(aecUpdateNear,ONE),-l); aecUpdate=aecUpdate*2^ASM; aecUpdateNear aecUpdateNear*2^ASH; %在可能的右移之后量化为S.15格式。 <dp n="d26"/> aecUpdate=floor(aecUpdate*32768)/32768; aecUpdateNear=floor(aecUpdateNear*32768)/32768; %发现更新矢量的平方峰值(假定前128个抽头)。目的是得到 峰值绝对值,但是平方峰值在DSP中只循环较少次,即使是该帧 最后的sqrt。 aecUpdatePeak2=max(aecupdate(1∶128).^2); %标记表示更新在下一环路中是否需要除以2。 aecShiftPending=aecUpdatePeak2>0.25;%0.25=0.5^2 end %量化为32位的能量。 aecEchoEstEnergy=floor(aecEchoEstEnergy* ENERGY_SCALE)/ENERGY_SCALE; % %AEC后帧部分, % aecOut=uplinkAudio; %将输出保存为用于消除错 误的文件。 %累加一帧中的AEC输出能量。 aecOutEnergy=sum(uplinkAudio.^2); %量化为32位的能量。 aecOutEnergy=floor(aecOutEnergy*ENERGY_SCALE)/ ENERGY_SCALE; %实际的基准能量不同于更新矢量的每个成分。aecUpdate(1) 将使用来自aecRef(1)的能量,aecUpdate(2)将使用来自aecRef(2) 的能量等等。为了减少复杂性,用一个数表示基准能量。当基准 能量用于测量信道回波增益以便确定适应速度或标准化该更新 (NLMS)时,用太小的值可能引起不稳定性。这里实现该危害的解 决方案是使用端点的最大值,其中轮廊=1。 <dp n="d27"/> aecRefEnergy=max(sum(aecRef(l:FRAME-SIZE).^2),… sum(aecRef(64:FRAME- SIZE+63).^2); %量化为Z8.7格式 aecRefEnergy=floor(aecRefEnergy*128)/128; %测量更新基准线作为高延迟元件的RMS,其中期望误码和 远端信号间的相关性是0。结果加1 LSB以确保在量化后 aecUpdateBase更大aecPeakToBase更小。这避免了更高回波相关 的虚假印象。在floor操作之后加1 LSB产生和ceiling操作相同的结 果除了所有缩短的比特等于零的罕有情况。 aecUpdateBase=sum(aecUpdateNear,^2)/AEC_NEAR_TAPS; %将平方的中间结果量化为Z.31格式 aecUpdateBase=floor(aecUpdateBase*2^31)/2^31; aecUpdateBase=sqrt(aecUpdateBase); %量化为为Z.15格式 aecUpdateBase=floor(aecUpdateBase*32768+1)/32768; %找到更新矢量的峰值幅度。 aecUpdatePeak=sqrt(aecUpdatePeak2); %计算更新的峰值-基线比。 aecPeakToBase=aecUpdatePeak/aecUpdateBase; %因为4个零碎的比特足够量化为Z11.4格式 aecPeakToBase=floor(aecPeakToBase*16)/16; %由更新峰值-基线比计算状态测量(范围=[O,ONE])。即使 峰值-基准线比随帧长而改变和基准线门限可以改变,但是用于下 行链路处理的测量保持不变。对于近端话音/噪声或远端周期信号 (元音),测量<0.1。例如,发现具有941Hz和1209Hz DTMF双音频 的第一帧以产生aecPeakToBase=3.5,因此,aecStatusGauge=0。 %对于双向通话,测量<0.3。 <dp n="d28"/> %对于远端单方通话: %当消除器非常分散时,测量=ONE,不考虑噪声。如果近 端很安静,测量=ONE直到接近完全会聚。当消除器会聚时,只 有剩余的回波能量高于近端噪声电平引起测量=ONE。因此,近 端噪声引起较少的更新,但不减少更新增益。 aecStatusGauge=(aecPeakToBase- AEC_BASELINE_THRESH)*... AEC_STATUS_GAUGE_SCALER; aecStatusGauge=max(min(aecstatusGauge,ONE),o); %量化为Z.15格式 aecStatusGauge=floor(aecStatusGauge*32768)/32768 %在AEC输入估计噪声帧能量。 [confirmedNoVoiceFlag,aeeInNoiseStateVars]= estnoise(aecInEnergy,… (micVad(frame)==0)&(aecStatusGauge==o), aeeInNoisestateVars); aecInNoise=aecInNoiseStateVars(l); aecInNoise%显示状态 aecInNoiseHist(frame)-aecInNoise;%保存用于消除错误 %在AEC输入(信道增益)估计回波增益。只在远端单方通 话期间更新估计,(speakerVad(frame)==1)&(aecStatusGauge> 0.3),当该比率是精确的,虽然基准测量值包括话音和噪声同时 AEC输入测量值只包括话音(aecInVoice>aecInNoise*8),和当基 准能量不再受到量化(aecRefEnergy>=10/128)的显著影响时。 因为时间未对准和频谱变化,瞬时的增益测量值不非常精确。因 此,使用平均处理。回波消除器滤波器系数的规范是信道增益的 长期精确估计。但是,它不能足够快地跟踪变化地回波路径。另 外,因为信道增益估计控制线性回波抑制器的适应速度,如果估 计尽可能多的与线性回波抑制器无关,则改进了稳定性。因此, 使用下面的方案:如果瞬时的测量值(aecChanGainTrial)小于估计 (aecChanGain),该估计值指数下降。为了速度适配,如果误码大 于50%,该估计值直接设置为瞬时测量值,估计值成正比地的下 <dp n="d29"/> 降,如果误码大于12.5%,即(aecChanGain-aeCChanGainTrial)/4 >aecChanGain/32的aecChanGain-aecChanGainTrial> aecChanGain/8=aecChanGain*0.125。如果瞬时测量值大于估计 值,只要测量值不受近端话音(aecChanGainTrial<2)的完全支 配,估计值指数上扬。因为当实际的信道增益很快跳跃时,没有 更新发生,所以不使用相对比较诸如(aecChanGainTrial< 2*aecChanGain)。利用上抽时间常数为下抽时间常数的1/8帮助瞬 时测量值容纳近端话音。当信道回波增益变差时,难以说出近端 语音间的区别。这里的上抽时间常数确定跟踪速率,以经验确定 该时间常数。 aecInVoice=max{o,aecInEnergy-aeCInNoise); aecInVoiceHist(frame)=aecInVoice; if(speakerVad(frame)==1)&(aecStatusGauge>0.3)&... (aecInVoice>aeclnNoise*8)&(aecRefEnergy>=10/128), %将aecInVoice量化为4Z8.20格式以被除用于得到期望的商 值。 aecChanGainTrial=floor(aecInVoice*2^20)/2^20/ aecRefEnergy; %将商量化和限制为Z2.13格式 aecChanGainTrial=min(4*ONE,floor(aecChanGainTrial *2^13)/2^13); %计算商的平方根。 aecChanGainTrial=sqrt(aecChanGainTrial); %将根量化为Zl.14格式 aecChanGainTrial=floor(aecChanGainTrial*2^14)/2^14; if(aecChanGainTrial<aecChanGain/2), aecChanGain=aecChanGainTrial; elseif(aecChanGain>aecChanGainTrial), aecChanGain=aecChanGain-... max((aecChanGain-aecChanGainTrial)/4,aecChanGain/32); elseif(aecChanGainTrial<2*ONE), aecChanGain=min(ONE,aecChanGain+ <dp n="d30"/> max(aecChanGain/256,2^(-11)); end %量化为Z.15格式 aecChanGain=floor(aecChanGain*3276B)/32768; %保存用于消除错误 aecChanGainHist(frame)=aecChanGainTrial; else aecChanGainHist(frame)=ONE; end aecChanGain %显示状态 aecSpeedHist(frame)=aecChanGain;%保存用于消除错 误 %确定更新增益。只要增益小于等于1则使用使用NLMS以 使适配速度恒定的(与远端信号振幅无关)。最大函数比分母加1导 致更快地会聚,因为作为结果的增益更高。当存在近端噪声和/ 或话音时,利用AEC基准和近端输入能量限制了标准化增益。不 用AEC输出能量代替AEC近端输入能量因为在会聚之后不期望 更高的增益,因为不基于AEC的输出使用另一个参数控制AEC更 新增益来改进稳定性,所以aecInEnergy应该小于没有近端话音或 噪声的aecRefEnergy以避免麦克风过载(因为根据最大的近端语 音电平设置麦克风增益)。如果我们确信存在具有低近端噪声的远 端单方通话(aecInEnergy/16>=aecOutEnergy)则能量乘法器设 置为8。否则,设置为16。因此,当汽车安静时,匹配更快。太小 的能量乘法器导致较小的稳定性,引起匹配过冲和抑制回波消除 器的输出。过冲还阻碍具有变化回波路径的远端单方通话和近端 语音间的微分。在干扰后不久,太大的乘法器增加回波增益。在 分子中,使用测量根据情况改变增益。另外,将信道回波增益用 作乘数以优化到信道的适配速度。没有此乘数,适配或者慢于高 信道增益所必须的速度,或者对于低信道增益不稳定,使用规范 的自适应滤波器系数代替基于能量的信道增益导致长期的更精 确的一致估计,在回波路径改变后的短期内速度和稳定性将折 <dp n="d31"/> 衷。 if(aecInEnergy/16>=aecOutEnergy), aecDenom=max(1,8*max(aecRefEnergy,aecInEnergy); %用于消除错误,设置因数等于负的测量值。 aecUpdateFactor(frame)=-aecStatusGauge; else aecDenom=max(l,16*max(aecRefEnergy,aecInEnergy); %用于消除错误,设置因数等于测量值。 aecUpdateFactor(frame)=aecStatusGauge; end %量化为Z12.3格式 aecDenom=floor(8*aecDenom)/8; aecNumer=aecChanGain*aecStatusGauge; %量化为22Z.18格式 aecNumer=floor(aecNumer*2^18)/2^18; aecUpdateGain=min(aecNumer/aecDenom,ONE); %量化为Z.15格式 aecUpdateGain=floor(aecUpdateGain*32768)/32768; %利用自适应增益更新矢量加上系数矢量,aecCoef在用作 FIR系数之前乘以轮廊。 aecCoef=aecCoef+(aecUpdate*2^(-aecErrorShift)* aecUpdateGain); %量化为S.15格式 %当用0.5的分数将负数舍入成整数时,加2^(-17)以使l的求 补运算浮点与2的求补运算相同。 aecCoef=round(aecCoef*32768+2^(-17))/32768; aecCoef=max(min(aecCoef,ONE),-l); %噪声抑制器将在这里处理上行链路音频。通过只在子程序 内使用aecUpdate和aecUpdateNear,可以在临时存储器中,可用 <dp n="d32"/> 于重叠。 % %ANLP前帧部分 % %在ANLP输入累加能量,ANLP输入经由噪声抑制器连接 到AEC输出。 anlpInEnergy=sum(uplinkAudio.^2); %将能量量化为32位。 anlpInEnergy=floor(anlpInEnergy*ENERGY_SCALE)/ ENERGY_SCALE; %在ANLP输入估计噪声帧能量。使用speakerVad因为回波 估计值来自扬声器信号。 [confirmedNoVoiceFlag,anlpInNoiseStateVars]= estnoise(anlpInEnergy,… (micVad(frame)==0)&(aecStatusGauge==o), anlpInNoiseStateVars); anlpInNoise=anlpInNoiseStateVars(l); anlpInNoiseHist(frame)=anlpInNoise;%保存用于消除错误 %当确定没有话音时,计算舒适噪声 if confirmedNoVoiceflag, anlpComfortNoise = uplinkAudio(l:COMFORT_NOISE_SIZE); %以第一顺序ARMA噪声模型形式使用NLMS算法估计 anlpArCoef: %(1-anlpArCoef)*(l+0.8125*Z^-1)/(1-anlpArCoef*Z^-1). %.ARMA模型将过滤白噪声以得到听起来像汽车的噪声。 NLMB算法将最小化下列的表示式: %error=uplinkAudio*(1-anlpArCoef+Z^-1)/(1+ <dp n="d33"/> 0.8125*Z^.-l) %误码和uplinkAudio*Z^-l间的相关更新为系数估计值。 %anlplnEnergy用于标准化更新增益以提供独立于电平的适 配比率。计算环路外的非零分母以保存MIPS。 anlpDenom=4*max(1/128,floor(anlplnEnergy*128)/128); error=0; for i=2:FRAME_SIZE, error=-0.8125*error; %量化为5S4.31格式(10*uplinkAudio的最大值) error=floor(error*2^31)/2^31; error=error+uplinkAudio(i-1.i)*[-anlpArCoef;1]; quotient=uplinkAudio(i-1:i-1)*floor(error*2^12)/2^12/ anlpDenom; quotient=max(min(quotient,ONE),-1); %量化为S.15格式 quotient=floor(quotient*32768)/32768; anlpArCoef=anlpArCoef+quotient; anlpArCoef=max(min(anlpArCoef,ONE),-l); end anlpArGain=1-anlpArCoef; %用于消除错误的舒适噪声的频率响应曲线 plot((0:8191)/8192*4000,… 20*log10(abs(freqz(anlpArGain*[1 0.8125],[1-anlpArCoef], 8192)))) axis([0 4000-4010]) pause(l) end %在AEC输入估计回波的噪声帧能量。使用speakerVad因 为回波估计值来自扬声器信号。 [confirmedNoVoiceFlag,aeclnEchoNoiseStateVars]=est <dp n="d34"/> noise(… aecEchoEstEnergy,(speakerVad(frame)==0)& (aecStatusGauge==O)’… aecInEchoNoiseStatevars); aecInEchoNoise.aecInEchoNoiseStateVars(l); aecInEchoNoiseHist(frame)=aecInEchoNoise; %保 存用于消除错误 test1Hist(frame)=aecInEchoNoiseStateVars(2); %保存 用于消除错误 test2Hist(frame)=aecInEchoNoiseStateVars(3); %保存 用于消除错误 aecInEchoNoiseStateVars %显示状态 %估计话音能量估计值。不要使它们低于零。 aecInEchoVoice=max(O,aecEchoEstEnergy- aeclnEchoNoise); aecInEchoVoiceHist(frame)=aecInEchoVoice; aecNearVoice=max(O,aecInVoice-aecInEchoVoice); anlpInVoice=max(O,anlpInEnergy-anlpInNoise); anlpInVoiceHist(frame)=anlpInVoice; %向上漏泻到线性回波消除器基准线回波增益估计值。用于 比较瞬时回波增益以检测近端语音和用于近端语音期间的ANLP 增益。当瞬时回波增益更差时,它足够快地向上漏泄以跟踪。在 快速跟踪以避免错误检测远端单方通话期间的近端语音和最小 化远端话音/噪声期间近端话音/噪声的失真之间的折衷来以经验 确定漏泄。在回波路径改变之后当远端单方通话时开始, aecNearGain可以下去、有点上去、然后下去。如果aecNearGain 充分高于aecVoiceGainBase,则检测近端语音。如果这发生了, aecVoiceGainBase的漏泄增加以防止它发生。以经验发现5/4096 漏泄常数以提供足够的跟踪速度。但是,增加的漏泄减少检测双 方通话期间的近端语音。 <dp n="d35"/> aecVoiceGainBase=min(aecVoiceGainBase+1/8192,ONE); %测量除了信道之外的线性回波消除器话音增益。包括信道 增益将使近端语音检测不可靠。在线性回波消除器的输出和输入 计算话音能量比率的根。原始的测量值不与话音是否来自近端、 远端、或两者有关。在ANLP输入采取线性回波消除器的输出因 为信号已经经过噪声抑制器,使测量值更精确。凭借能量的测量 值包括回波的扬声器失真,交互相关不包括。另外,比较在回波 消除器输入和输出的能量避免比较回波消除器输出和基准时(由 于信道延时)出现的时间对准问题。只有当不被量化恶化时、当话 音存在(aecInVoice>aeclnNoise*8)时、和当剩余回波可测量 (anlpInVoice>anlpInNoise/2)时测量增益。由远端信号的周期成 分不会减少测量值的准确度。 if(aecInVoice>max(8/2^7,aecInNoise*8))&... (anlplnVoice>anlpInNoise/2), aecvoiceGain=min(ONE,sqrt(anlpInVoice/ (flOor(aecInVoice*2^7)/2^7))); %量化为Z.l5格式 aecVoiceGain=floor(aecVoiceGain*32768)/32768; %测量近端话音和总话音的比率。这由于远端单方通话期间 改变回波路径产生近端话音较少错误的表示,因为它只依赖回波 估计的能量,而不依赖在输出如何好地取消回波。但是,类似于 aecVoiceGain,当消除器非常不熟练时近端话音的错误表示也是 可能的。 通常该比率包括平方根因为话音测量值以能量为单位。但 是,通过直接利用能量比可以获得近端话音和差劲的消除器训练 之间更大的差别。这还保存MIPS。 aecNearRatio=min(ONE,aecNearVoice/ (floor(aecInVoice*2^7)/2^7)); %量化为Z.15格式 aecNearRatio=floor(aecNearRatio*3276S)/32768; <dp n="d36"/> %在远端语音期间测量线性回波消除器基准线回波增益估 计值。测量远端单方通话何时可以存在(aecStatusGauge>0.1)以 确保参数跟踪实际的回波增益(不是)。否则,可以听到回波。当 话音增益小于基准线估计值时,更新基准线回波增益估计值,因 为这表示远端单方通话的高概率。通过在话音增益高于基准线 时,使用漏泄电阻和不让基准线跟踪话音增益,基准线非常强地 反对噪声和近端语音。 if(aecStatusGauge>0.1), aecVoiceGainBase=min(aecVoiceGainBase,aecVoiceGain); end %在近端语音期间测量线性回波消除器话音并在远端单方 通话期间(采用话音增益的最小值)复位。这被用于对话音增益的 比较以检测双方通话。可能出现近端语音的唯一可用指示符是回 波消除器测量很低(aecStatusGauge<0.3)和回波消除器输出包含 话音不可能只是剩余回波的足够能量(anlpInVoice> anlpInNoise*8)。记住由于远端语音的周期成分测量可能很低。因 此,当由于改变回波路径或扬声器失真话音增益突然变坏时和当 存在近端语音时,有必要区分额外的装置。当在远端单方通话期 间话音增益突然地变坏,持续时间趋向相当短。因此,滤除参 数的增加,通常拒绝远端单方通话事件。滤波器的时间常数是远 端单方通话拒绝和双向通话识别速度的折衷,以经验确定该常 数。 aecNearGainLast=aecNearGain; aecNearGain=min(aecNearGain,aecVoiceGain); if(aecStatusGauge<0.3)&(anlpInVoice>anlpInNoise*8), aecNearGain=aecNearGain+(aecVoiceGain- aecNearGain)/8; %量化为Z.15格式 aecNearGain=floor(aecNearGain*32768)/32768; end <dp n="d37"/> %使用三种检测近端语音方法的任何一种。每个方法在特定 的情况下对近端语音更敏感。只有总话音比绝对电平或噪声充分 大以拒绝只存在噪声的情形时,才出现所有的检测。 % %方法1。 %(aecInEchoVoice<aecInVoice/4)等于(aecNearRatio>= 0.75),但是前者对量化不敏感。抑制aecNearRatio对于低电平的 远端单方通话很通常。因此,门限必须很高以避免错误的检测。 此检测方法只需的限定是状态测量=0和话音增益基准线低于 0.4625=15155/32768。后者的门限是当消除器非常不熟练时避免 错误检测和在消除器启动训练之后尽快检测双向通话之间的经 验折衷。 % %方法2 %(aecInVoice>32/2^7&anlpInVoice>anlpInNoise*8)拒绝 低电平话音。通过这样做,检测可以更敏感于近端话音和总话音 较低的比率。而且只有当状态测量=0的可接受情形有助于拒绝远 端单方通话。通过改变具有aecVoiceGainBase的门限优化近端语 音的灵敏。标度因数和偏移是当消除器非常不熟练时避免错误检 测和在消除器启动训练之后尽快检测双向通话之间的经验折 衷。 % %方法3。 %当回波抑制突然和一致变坏时,比较aecNearGain和 aecVoiceGainBase检测近端语音。这是因为aecVoiceGainBase对 激变没有反应,和aecNearGain使用滤波器以检测的一致性。因为 用于计算aecNearGain滤波器的情形更轻松,该情形允许对近端语 音更高的灵敏度。这些情形包括状态测量<0.3而不是=0,并且不 增加话音的最小绝对电平。当回波路径改变之后远端单方通话启 动时,aecNearGain短时间内将下降并仍然位于aecVoiceG&inBase 之上。为避免这种情况下可以听到的回波,当aecNearGain大于最 后的值时,只检测近端语音。 <dp n="d38"/> if((aecStatusGauge==0)&(aecInEchoVoice<aecInVoice/4) &… (aecVoiceGainBase<15155/32768))|… ((aecstatusGauge==0)&(aeclnVoice>32/2^7)&… (anlpInVoice>anlpInNoise*8)&… (aecNearRatio-aecVoiceGainBase*1.5>=9830/32768)) |… ((aecNearGain-aecVoiceGainBase>=6554/32768)&… (aecNearGain>aecNearGainLast), %已经检测了近端语音。如果此帧开始一新周期的近端语音 (空闲时间已经到期和包含话音的最后一帧只是回波),然后将线 性回波消除器回波增益设置为等于基准线回波增益估计值。只在 近端语音周期开始时才这样做以使剩余回波抑制器在近端语音 期间具有一致的衰减,而不是在基准线向上漏泄时增加失真同时 没有得到更新。 if(anlpNearSpeechCount==0)&(anlpNearSpeeehFlag==0), aecEchoGain=aecVoiceGainBase; end %设置表示包含近端语音的最后一帧的标记,在没有检测到 话音期间保持该设置。 anlpNearspeecnFlag=1; %重新启动近端语音空闲时间计数器。当非零时,它将超过 anlpNearSpeeehFlag以最小化双方通话期间近端语音剩余回波抑 制器的失真,或当话音能量太低以致于无法检测时。如果只有当 检测到远端单方通话时开动此计数器,将在双方通话期间较少中 断近端语音。但是,每次在近端的人讲话之后远端人才听到他/ 她开始讲话,甚至是很长时间的中止之后。当从近端语音快速转 换到远端单方通话(诸如当近端的人在远端的人语音中间讲话 时),空闲时间将引起远端的人听到回波(在25dB)的较短周期。此 人工产物是值得做的,因为空闲时间显著地降低了双向通话期间 的中断。 anlpNearSpeechCount=25;%25*20ms=500ms的空闲时 <dp n="d39"/> 间。 end end %如果回波估计值话音能量至少是15/16的近端话音能量, 则假定此帧只包含远端回波语音,并清零近端语音标记。如果近 端语音空闲计时器已经到期,则剩余回波抑制器将立即进入远端 单方通话模式。否则,当近端语音空闲计时器到期时,剩余回波 抑制器将进入远端单方通话模式。注意当计数器工作时可能再次 检测近端语音,然后一旦计数器期满剩余回波抑制器将待在近端 语音模式。此检测方案比较32位数并不使用基于能量级、状态测 量或来自以前帧的测量值的限定。因此,该方案相当敏感而且强 壮。 if(aecInEchoVoice>(aecInVoice-aecInVoice/16)), anlpNearSpeechFlag=O; end %如果近端语音空闲计时器已经到期,和包含话音的最后一 帧只有回波,则设置线性回波消除器回波增益等于最后测量的线 性回波消除器话音增益。假定不存在近端语音,所以剩余回波抑 制器试图抑制所有的的话音。此检验是在清零 anlpNearSpeechFlag之后以使aecEchoGain立即反映判决。 if(anlpNearSpeechCount==0)&(anlpNearSpeechFlag=0), aecEchoGain=aecVoiceGain; end aecVoiceGainHist(frame)=aecVoiceGain; %保存 用于消除错误 aecVoiceGainBase %状态的回波 aecVoiceGainBaseHist(frame)=aecVoiceGainBase; %保存 用于消除错误 aecEchoGain %状态的回波 <dp n="d40"/> aecEchoGainHist(frame)=aeCEchoGain; %保 存用于消除错误 aecNearRatioHist(frame)=aecNearRatio; %保存 用于消除错误 aecNearGainHist(frame)=aecNearGain; %保 存用于消除错误 anlpNearSpeechCount %状态的回波 anlpNearSpeechFlag %状态的回波 %计算环路回波增益直到ANLP。ANLP按照需要衰减以 符合该系统地总环路回波抑制目的。?是通过音量控制。 aecChanGain从扬声器到麦克风--信道。aecEchoGain从线性回波 消除器的输入到输出。 aecLoopEchoGain=aecChanGain*aecEchoGain;%这里 插入音量增益。 %量化为Z.15格式 aecLoopEchoGain=floor(aecLoopEchoGain*32768)/32768 %设置ANLP窗口大小以捕获预期的剩余回波,但是不多。 这最小化近端话音和噪声。当AEC改进其回波增益时,ANLP窗 口大小收缩,因此利用aecChanGain和aecEchoGain控制窗口大 小。不使用音量控制增益因为音量控制之后是随之而来的是 ANLP的包络检测器输入。以RMS测量回波增益估计值,但是 ANLP需要抑制包括峰值在内的整个剩余回波。因此,利用峰值- -RMS因数乘法器(=3)。anlpWindowGain的动态范围是2因为当线 性回波消除器非常不熟练时,anlpWindowGain至少需要是2以捕 获窗口内的回波。 anlpWindowGain=min{2*ONE,3*aecChanGain* aecEchoGain): %量化为Zl.14格式 anlpWindowGain=floor(anlpWindowGain*16384)/16384; <dp n="d41"/> %如果VAD表示扬声器上只有噪声,则使ANLP处于通过模 式(增益=ONE)。VAD允许高质量的近端单方通话,VAD经常认为 当只有噪声时存在话音,因此需要其它的装置来最小化这种情况 下的近端语音或噪声。另外,VAD很少认为当存在低电平话音是 只有噪声。问题有点与扬声器的噪声电平相称。但是,在这些情 况下,在环路中具有线性回波消除器提供足够的回波抑制以使回 波听不见。 if speakerVad(frame)==0,,Near-end single-talk condition. anlpEchoGain=ONE; %因为speakerVad=l,扬声器最有可能具有语音,但是没有 必要。如果检测到近端语音,假定双向通话。在这种情况下,设 置总环路回波抑制目的为-25dB(1843/32768),并设置ANLP增益为 不提供剩余环路所需的回波抑制。ANLP增益更高(抑制更低),当 顾客大幅度减低音量时减少失真。当线性回波消除器训练时, 这种模式下ANLP增益典型地高于-10dB,噪声屏蔽不改进声音质 量。在双方通话期间远端用户将听到某些回波,但是人工产物中 断或近端话音的高度失真。 elseif(anlpNearSpeechCpunt>0)|{anlpNearSpeechFlag== 1), anlpEchoGain=1843/32768/aecLoopEchoGain; %因为speakerVad=l,和不检测近端语音,假定存在远端单 方通话。总环路回波抑制目的是-56dB(52/32768),以使当两端具 有安静背景时回波几乎听不见。当在双向通话模式,ANLP增益 设置为不提供剩余环路所需的回波抑制,当顾客大幅度减低音量 和线性回波消除器训练时ANLP增益更高,失真减少。但是,将 回波衰减到在噪声下听不见所需的增益可以更高,因此两个增益 更高者用于ANLP以最小化失真。没有舒适噪声,用相同的因数 衰减回波和噪声不改变信噪比,因此不进行噪声屏蔽。舒适噪 声使得在ANLP输入和输出的噪声是相同的电平。因此,ANLP可 以衰减回波到噪声下的可闻阈,只有必要的失真。对噪声话音比 取平方根因为变量以能量为单位。将期望的回波噪声比乘以实 际的噪声回波比将算出噪声。剩下的是期望实际回波比,它需要 <dp n="d42"/> 屏蔽该回波的增益。 Else %远端单方通话条件。 ECHO_TO_NOISE_GOAL=1/8;%-18 dB if(anlpInVoice>anlpInNoise), anlpEchoGain=max(52/32768 I aecLoopEchoGain,… ECHO_TO_NOISE_GOAL*sqrt(anlpInNoise/anlpInVoice)); else %在吵杂的环境下,增益不超过 ECHO_TO_NOISE_GOAL,即使理论上它可用于低能量话音, 因为当噪声电平很快下降时(汽车减速)噪声估计值太大。当ANLP 回波增益太高时能听到回波。 anlpEchoGain=max(52/32768/aecLoopEchoGain, ECHO_TO_NOISE_GOAL); end end anlpEchoGain=min(ONE,anlpEchoGain); %量化为Z.15格式 anlpEchoGain=floor(anlpEChoGain*32768)/32768 anlpGainHist(frame)=anlpEchoGain;%为了消除错误保存 %如果需要,近端语音空闲计数器减一,以使它独立于扬声 器VAD工作。 anlpNearSpeechCount=max(O,anlpNearSpeechCount-1); % %ANLP样值部分 % %如果ANLP回波增益是1,ANLP不工作,跳到保存MIPS。 if(anlpEchoGain==ONE), %保持包络检波器工作。 for k=l:FRAME_SIZE, anlpRef=aecRef(FRAME_SIZE-k+l); anlpRefFnvelope=max(abs(anlpRef),255/256* <dp n="d43"/> anlpRefEnvelope); anlpRefEnvelope=floor(anlpRefEnvelope*2^31)/2^31; end %更新AC中心衰减器使用的变量以便和处理整个帧的结 果相同。 anlpOutLast=uplinkAudio(FRAME_SIZE); else for k=l:FRAME_SIZE, %ANLP远端ref=AEC ref。用aecEchoEstinstead替代或者另 外不会给出更好的结果因为aecEchoEst与剩余回波非常不相 关。AEC ref同样工作得很好,因为它在包含anlpIn的最早回波之 前。峰值检波器中的长时间常数是ANLP的关键,它使anlpRe与 不必要的剩余回波的接近延时匹配。AEC ref延迟线的偏移可以 改变以补偿由于未抽样、下抽样、缓冲、和/或最小信道延时的回 波路径中的固定延迟。 anlpRef-aecRef(FRAME_SIZE-k+l); %包络检测(峰值检测)anlpRef信号。峰值检波器的指数型衰 减建立了汽车中混响的衰减。时间常数设置为处理期望的大多数 缓慢衰减的混响情形。不足255/256的极点导致回波通过。大于 255/256的极点导致近端的过度失真。 anlpRefEnvelope=max(abs(anlpRef),255/256* anlpRefEnvelope); %anlpRefEnvelope应该是用于存储的32位。16位附近的 aMoRefEnvelope不会衰减低于512/2^15。缩短为16位的 anlpRefEnvelope在低于256/2A.15之后每个样值衰减1比特,这太 快了(导致回波通过)。 %量化为Z.31格式 anlpRefEnvelope=floor(anlpRefEnvelope*2^31)/2^31; %ANLP的Delta值是AEC控制的增益并限制W为ONE。 anlpDelta=min(ONE,… anlpWindowGain*floor(anlpRefEnvelope*32768)/32768); %量化为Z.15格式 <dp n="d44"/> anlpDelta=floor(anlpDelta*3276B)!32768; anlpDeltaHist《frame-1)*FRAME_SIZE+k)=anlpDelta;%为 了消除错误保存 % %执行AC中心衰减器。 % %ANLP输入经噪声抑制器连接到AEC输出。 anlpIn=uplinkAudio(k); %如果输入低于窗口,》 if(anlpOutLast-anlpIn)>=anlpDelta, %使用所有窗口外的信号并衰减窗口内的信号, anlpOutLast=anlpIn+anlpDelta-… anlpEchoGain*anlpDelta; %另外如果输入信号在窗口的上面 else if(anlpIn-anlpOutLast)>=anlpDelta, %使用所有窗口外的信号并衰减窗口内的信号, anlpOutLast=anlpIn-anlpDelta+… anlpEchoGain*anlpDelta; %另外输入在窗口内部, else, %衰减信号。 anlpOutLast=anlpEchoGain*(anlpIn-anlpOutLast)+ anlpOutLast; end %量化为S.15格式 anlpOutLast=floor(anlpOutLast*32768)/32768;%为了下次 保存。 % %加入舒适噪声以使ANLP输出噪声具有相同的电平,类似 于汽车噪声的频谱输入到ANLP。 % <dp n="d45"/> %利用从汽车捕获噪声的帧的随机样值。这产生与汽车噪声 相同的白噪声,即使汽车捕获的声音偶尔包含话音。 anlpSeed=rem(48271*anlpSeed,2147483647); anlpComfortNoiseIn=anlpComfortNoise(l+… rem(anlpSeed,COMFORT-NOISE-SIZE)); %利用上面讨论的ARMA模型滤除白噪声,下面是等价 物,假设anlpArGain=1-anlpArCoef. %anlpComfortNoiseOut=anlpArCoef* anlpComfortNoiseOutOld+… %anlpArGain*(anlpComfortNoiseIn+ O.8125*anlpComfortNoiseInOld); ma=anlpComfortNoiseIn+0.8125*anlpComfortNoiselnOld; %移动平均值 maDiff=anlpComfortNoiseOutOld-ma; %量化为S1.15格式,舍入是必需的以避免舒适噪声的偏 置。当用0.5的分数将负数舍入成整数时,加2^(-17)以使1的求补 运算浮点与2的求补运算相同。 maDiff=round(maDiff*32768+2^(-17))/32768; anlpComfortNoiseOut=ma+anlpArCoef*maDiff; %量化为S.15格式,舍入是必需的以避免舒适噪声的偏置。 anlpComfortNoiseOut=round(anlpComfortNoiseout*32768+ 2A(-17》/32768; anlpComfortNoiseOut=max(-l,min(ONE, anlpComfortNoiseOut)); %为下一环路延时变量。 anlpComfortNoiseInOld=anlpComfortNoiseIn; anlpComfortNoiseOutOld=anlpComfortNoiseOut; %将舒适噪声限制为窗口大小; anlpComfortNoiseout=min(anlpDelta,… max(-anlpDelta,anlpComfortNoiseoOut)); %定标舒适噪声以使ANLP输出噪声在电平上等于ANLP <dp n="d46"/> 输入噪声。 anlpComfortNoiseOut=anlpComfortNoiseOut*(ONE- anlpEchoGain); %量化为S.15格式 anlpComfortNoiseout=floor(anlpcomfortNoiseout*32768)/ 32768; %在ANLP输出信号加上舒适噪声。 uplinkAudio(k)=max(-l,min(ONE,anlpOutLast+ anlpCOmfortNoiseOut)); end end %以整数格式保存通过一帧收集的文件输出。 fwrite(fidOut,[uplinkAudio;aecOut]*32768,′int16′); %disp(raecInEnergy=′dec2hex(aecInEnergy* ENERGY_SCALE)]) %disp([′aecErrorShift= ′dec2chex(aecErrorshift+(aecErrorshift<O)*65536)]) %disp([′aecUpdate(l)= ′dec2hex(aecUpdate(1)*32768+(aecUpdate(1)<0)*65536)]) %disp([′aecUpdate(2)= ′dec2hex(aecUdate(2)*32768+(aecUpdate(2)<0)*6S536)]) %disp([′aecUpdateNear(l)=′… % dec2hex(aecUpdateNear(1)*32768+(aecUPdateNear{1)<0)*65536)]) %disp([′aecUpdateNear(2)=′… % dec2hex(aecUpdateNear(2)*32768+(aecUpdateNear(2)<0)*65536)]) %disp(raecupdatePeak2=′dec2hex(aecUPdatePeak2*2^31)]) %disp([′aecOutEnergy=′dec2hex(aecOutEnergy* ENERGY_SCALE)]) %disp([′aecRefEnergy=′dec2hex(aecRefEnergy*128)]) <dp n="d47"/> %disp([′anlpInEnergy=′dec2hex(anlplnEnergy* ENERGY_SCALE)]) %disp([′aecUPdateBase=′dec2hex(aecUpdateBase*32768)]) %disp([′aecupdatePeak=′dec2hex(aecupdatepeak*32768)]) %disp([′aecPeakToBase=′dec2hex(aecpeakToBase*16)]) %disp([′aecStatusGauge=′ dec2hex(aecStatusGauge*32768)]) %disp([′aecInNoise=′dec2hex(aeCInNoise*2^31)]) %disp([′anlpInNoise=′dec2hex(anlpInNoise*2^31)]) %disp([′anlpComfortNoise(l)=,… % dec2hex(anlpComfortNoise(1)*32768+(anlpComfortNoise(1)<0)*65 536)]) %disp([′anlpComfortNoise(2)=′… % dec2hex(anlpComfortNoise.(2)*32768+(anlpComfortNoise(2)<o)*6S S36)]) %disp([′anlpArCoef=′dec2hex(anlpArCoef*2^31)]) %disp([′anlpArGain=′dec2hex(anlpArGain*32768)]) %disp([′aecChanGainTrial=′dec2hex(aecChanGainTrial)]) %disp([′aecChanGain=′dec2hex(aecChanGain*32768)]) %disp([′aecVoiceGainBase=′ dec2hex(aecVoiceGainBase*32768)]) %disp([′aecVoic:eGain=′dec2hex(aecVoiceGain*32768)]) %disp([′aecEchoGain=′dec2hex(aecEChoGain*32768)]) %disp([′aecDenom=′dec2hex(aecDenom*8)]) %disp([′aecNumer=′dec2hex(aecNumer*2^18)]) %disp([′aecupdateGain=′dec2hex(aecuPdateGain*32768)]) %disp([′aecCoef(1)=′ dec2heX(aecCoef(1)*32768+(aecCoef(1)<0)*65536)]) %disp([′aecCoef(2)=′dec2hex(aecCoef{2)*32768+(aecCoef(2) <0)*65536)]) <dp n="d48"/> %diSp([lanlpWindowGain=′ dec2hex(anlpWindowGain*16384)]) %disp([′anlpEChoGain=′dec2hex(anlpEchoGain*32768)]) %disp([′anlpEChoGain=′]);20*loglO(anlpEchoGain) %disp([′anlpcomfortNoiseInOld=′ dec2hex(anlpComfortNoiseInold*′32768)]) %disp([′anlpComfortNoiseOutOld=′ dec2hex(anlpComfortNoiseOutold*32768)]) %disp([′uplinkAudio(1)=′… %dec2hex(uplinkAudio{1)*32768+(uplinkAudio(1)<0) *65536)]) %disp([′uplinkAudio(2)=,… %dec2hex(′uplinkAudio(2)*32768+(uplinkAudio(2)<0) *65536)]) %pause %plot([abs(aecUPdate)/aecUpdateBase;… %zeros(AEC_REF_TAPS-AEC_REF_TAPS- AEC_NEAR_TAPS,1);… %abs(aecuPdateNear)/aeeuPdateBase]) %axis([0 AEC_REF_TAPS O aecPeakToBase+O.l]) %xlabel(′Update elementl),ylabel(′Normalized update magnitude′),pause %plot(20*log1O(abs(aecCoef*profile))),axis(1O AEC_COEF_TAPS-1OO l]); %xlabel([Coefficient numberl),ylabel(′Magnitude in dB′), pause end fclose(fidOut); clear_AEC_MAX_GAIN_THRESH <dp n="d49"/> AEC_BASELINE_THRESH AEC_STATUS_GAUGE_SCALER ONE clear AEC_COEF_TAPS AEC_NEAR_TAPS AEC_REF_TAPS clear FRAME_SIZE FRAME_BITS ENERGY_SCALE COMFORT_NOISE_SIZE clear eonfirmedNoVoiceFlag clear LRmatrix downlinkAudio uplinkAudio aecRef aecUpdate aecUpdateNear aecOut clear frame m ki anlpSeed aecEchoEst aecShiftPending aecErrorShift ASM T clear aecRefEnergy aecInEnergy aecOutEnergy anlplnEnergy aecEchoEstEnergy clear anlpIn anlpRef anlpRefEnvelope anlpDelta alpOutLast clear aecUpdatePeak2 aecUpdatePeak aecUpdateBase aecPeakToBase clear aecStatusGauge aecDenom aecNumer aecUpdateGain aecLoopEChoGain clear aecInNoiseStateVars aeclnEchoNOiseStateVars anlpInNoiseStateVars clear aecInVoice anlpInVoice aecInEchoVoice aecNearVoice clear aecNearRatio aecNearGainLast anlpEchoGain clear aecChanGainTrial anlpComfortNoiseIn anlpComfortNoiseOut clear aecPeakGain anlpWindowGain anlpDenom anlpArGain error quotient ma clear fidIn fidOut anlpNearspeechCount anlpNearspeechFlag ECHO_TO_NOISE_GOAL %基于信号的帧能量估计噪声帧能量。基于规范的噪声估计 值提供32位变量的更宽的动态范围,因此即使在非常低的噪声电 平下(诸如远端test_65.raw)保持一致。但是,基于规范的algo还需 <dp n="d50"/> 要平方根和32位的平方操作(更多的MIPS)。为了量化低噪声电平 已经优化基于algo的能量,尤其考虑到噪声电平估计值对于非常 低噪声电平不是决定性的(话音总是远远大于噪声)它是一件可接 受的工作。对于基于规范和基于能量的algo适应速度可以相同。 这里所有的抽取操作只是对于基于规范的algo多移动一位。 %目的是当信号中没有语音时很快地更新估计值否则很 慢。当汽车噪声迅速改变时,需要常数适配以跟踪汽车噪声。话 音活动检测器(VAD)输出是用于确定何时快速更新的好开始,但 当实际存在比噪声高得多的低电平话音时有时它表示没有话 音。noVoiceFlag是线性回波消除器状态测量合格的VAD输出以增 加可靠性。但是,状态测量没有区分噪声和近端语音、双向通话、 或双音频。因此,在快速更新周期中算法必须容忍某些话音。在 远端单方通话期间状态测量做得很好,即它对于噪声估计值的精 确性最重要以避免听得到回波。这里减少错误偏差(主要在近端语 音期间出现)使用的技巧是基于比较结果以固定速率上下抽动估 计值而不是线性滤波能量信号。使用上抽时间常数是下抽时间常 数的1/4,使估计值不管话音偏向噪声。以固定增量代替固定时间 常数上下抽动将导致时间常数随噪声电平而改变。 %难以说出上升的噪声和语音间的区别。这里上抽时间常数 确定跟踪速率。但是上抽必须很慢以便在实现语音状态机器期间 最小化错误增长以允许特定情形下更快地增加噪声估计值。如果 状态机器看到在没有话音至少900ms期间,信号能量大于噪声估 计值8倍,假设噪声已经增加,噪声设置为等于检验周期的检验 噪声估计值。当输入端噪声由远端噪声支配时,由于AMPS在频 带控制信道或由于差的RF情形的消退将引起噪声临时下降。状态 机器试图恢复消退后的噪声估计值。首先证实能量下降是在5到25 帧长。然后确定能量返回到原始的电平。如果能量保持在窗口附 近,原始的噪声电平,需要相对较短的证实周期。如果能量跳得 远远高于原始电平,则可以发生话音,需要较长得证实周期以保 证噪声没有下落。 <dp n="d51"/> %定义noiseStatevars数组: %(1)=噪声估计值 %(2)=在消隐之前的噪声估计或检验噪声估计值 %(3)=状态变量/计数器 function[confirmedNoVoiceFlag,noiseStateVars]=… estnoise(inEnergy,noVoiceFlag,noiseStateVars) %以源常规定义所需的常数。 %更新积分期间的样值数。 FRAME_SIZE=l60; %一帧样值累加的右移位数值。 FRAME_BITS=ceil(log2(FRAME-SIZE)); %标度因数将能量量化为32位(Z8.23格式 w/FRAME_SIZE=160) ENERGE_SCALE=2^(31-FRAME_BITS); %如果源常规初始化噪声估计值。 if noiseStateVars(l)==FRAME_SIZE, % %采取措施加速适应呼叫的开始。 % %设置标记,舒适噪声将初始化到该电平。 confirmedNoVoiceFlag=1; %噪声估计值开始等于能量。 noiseStateVars(l)=inEnergy; else % %更新噪声估计值。 <dp n="d52"/> % %作为默认,清零标记以指示没有舒适噪声训练。 confirmedNoVoiceFlag=0; % %在Matlab上对白噪声执行下列偏置试验: %>>n=160*3000;noise=zeros(1,m); %>>seed-l;for i=l:n,[noise(i)seed]=noisegen(seed);end %>>m=3000;for i=l:m,noiseEnergy(i)=sum(noise(160*(i- l)+1:160*i).^2);end %>>ne=lOO;for i=l:m,if ne>noiseEnergy(i), %>>ne=ne-ne/16;else,ne=ne+nef64;end,neh(i)-ne;end %>>plot(neh)%neh is the noise estimate history. %>>axis([0 20 0 1 001)%Notice that neh settles after 10 frames. %>>1/(sum(neh(11:m)/(m-10)/(sum(noiseEnergy)/m)-1) %ans=-14.2082 %这表示噪声估计值具有1/14的偏置因数。为了简化计算, 从噪声估计值减去1/16因数用于比较以恢复偏置。总之,为了位 正确在减法前右移。 noiseBiased=noiseStateVars(l)-noiseStateVars(1)/16; %量化为32位 noiseBiased=ceil(noiseBiased*ENERGY-SCALE)/ENERGY- SCALE; % %如果VAD和状态测量表示没有话音。 if noVoiceFlag, % %快速取出噪声估计值。 % %如果噪声估计值太高, if noiseBiased>inEnergy, % <dp n="d53"/> %向下抽取噪声估计值。 % %为了加速跟踪减少的噪声,如果噪声估计值高于8倍,试 图立即设置噪声估计值等于信号能量。但是,这使得当激活时非 常偏向负数,并且产生错误检测的问题。时间常数很短以致于向 下抽取噪声估计值非常好。为了最小化偏置,当噪声估计值等于信 号能量时,不要向下抽取。量化引起l/ENERGY_SCALE的最小改 变,除了0之外。总之,在右移为了位正确之前是负数。 noisestatevars(l)=noisestateVars(l)-noisestateVars(1)/16; %设置用于舒适噪声训练的标记。输入能量低于噪声估计 值的要求改进了话音期间舒适噪声没有更新的概率。 confirmedNovoiceFlag=1; else % %向上取出噪声估计值。 % %利用最小增量以避免stuck接近零。不用加上 min(noisestatevars(1)/64,l/ENERGY_SCALE)因为它导致对激 增噪声更慢地适配。 noisestateVars(l)=noisestateVars(l)+noiseStatevarS(1)/64 +… l/ENERGY_SCALE; end else % %慢慢地抽取噪声估计值。 % %因为正确跟踪降低噪声的重要性在话音期间适配不能停 止。高估噪声引起低估话音能量。由于较低的远端话音能量这对 NLP输入的影响多于线性回波消除器输入。因此,该结果不足以 抑制回波。因此低估好于高估。 %如果噪声估计值太高, <dp n="d54"/> if noiseBiased>inEnergy, % %向下抽取噪声估计值。 % %量化引起l/ENERGY_SCALE的最小改变,除了0。总之, 在右移为了位正确之前是负数。 noiseStateVars(l)=noiseStateVars(l)-noisestateVars(1)/64; else % %向上取出噪声估计值。 % %乍看之下,似乎话音期间只能向下抽取才能正确跟踪减少 的噪声。但是,这将引起偏置太负。以经验确定上抽速率最可 能快同时不允许话音期间太多的错误改变。这非常慢因为话音能 持续中止之间若干秒。不使用最小增量或者对于话音期间低噪声 电平来说上抽太大。 noiseStateVars(l)=noisestateVars(l)+noisestatevars(1)/1024; end end %量化为32位 noiseStateVars(l) = floor(noiseStateVars(l)*ENERGY_SCALE)/ENERGY_SCALE; % %状态机用于AMPS消隐和噪声跳跃跟踪。不在初始化时执 行。 % %如果状态机器在空闲状态, if noiseStateVars(3)==0, %如果信号能量显著下降到噪声估计,如果inEnergy的量化 不给出错误的结果。 if noiseStateVars(1)>max(8*inEnergy, 8/ENERGY_BCALE), <dp n="d55"/> %为状态机器存储噪声估计值。 noiseStatevars(2)=noisestateVars(l); %启动状态机器以寻找消隐。 noiseStateVars(3)=l; %如果VAD和状态测量表示没有话音,并且信号能量显著高 于噪声估计值,并且如果量化噪声估计值不给出错误的结果。 elseif noVoiceFlag&… (inEnergy>max(8*noiseStateVars(1),8/ENERGY- BCALE)), %初始化检验噪声估计值。 noiseStateVars(2)=inEnergy; %启动状态机器以寻找噪声跳跃。 noiseStateVars(3)=-1; end %另外如果状态机器正寻找噪声跳跃, elseif noiseStateVars(3)<0, %如果VAD和状态测量继续表示没有话音,和如果信号能量 保持显著高于噪声估计值, if noVoiceFlag,(inEnergy>8*noiseStateVars(1), %偏置检验噪声估计值像规则的估计值。总之,在减法之前 右移用于位正确。 noiseBiased=noiseStateVars(2)-noiseStatevars(2)/16; %量化为32位 noiseBiased=ceil(noiseBiased*ENERGY_SCALE) /ENERGY_SCALE; %如果该检验噪声估计值太高, if noiseBiased>inergy, %向下抽取检验噪声估计值。量化引起l/ENERGY_BCALE 的最小改变。总之,在为了位正确右移之前为负数。 noisestateVars(2)=noiseStateVars(2)-noiseStateVars(2)/16; else %向上取出检验噪声估计值。 <dp n="d56"/> noiseStateVars(2)=noiseStateVars(2)+noiseStateVars(2)/64; end %量化为32位 noiseStateVars(2)=floor(noiseStateVars(2) *ENERGY_SCALE)/ENERGY_SCALE; %对还充当计数器的状态变量减一。 noiseStateVars(3)=noiseStateVars(3)-1; %如果信号能量保持显著高于噪声估计值足够的周期(对于 检验跟踪回波s_toplO_1.raw需要45帧) if noiseStateVars(3)==-45, %跳跃噪声估计值以检验噪声估计值。 noiseStateVars(1)=noiseStateVars(2); %复位状态机器回到空闲状态。 noiseStateVars(3)=0; end else, %复位状态机器回到空闲状态。 noiseStateVars(3)=0; end %另外状态机器寻找消隐。 else, %状态变量加一 noiseStateVars(3)=noiseStateVars(3)+1; %状态1-100计数所谓消隐时期的帧数。 if noiseStateVars(3)<101, %如果能量回到很高, if8*inBnergy>noiseStateVars(2), %如果消隐不足5帧, if noiseStateVars(3)-1<5, %或者检测错误或者不值得恢复噪声估计值。使状态机器回 到空闲状态。 noiseStateVars(3)=0; <dp n="d57"/> else %消隐之后话音发生或者噪声返回。 %设置状态变量为101以开始下一阶段。 noiseStateVars(3)=101; end %如果低能量帧的计数太长, elseif noiseStateVars(3)-1==25, %消隐不出现--相反噪声下降。使状态机器回到空闲状态。 noiseStateVars(3)=0; end %状态机器已经检测到所谓消隐周期的检测。无论状态机器 是在计数话音帧还是在计数噪声帧,首先检测能量是否变低。 elseif 8*inEnergy<noiseStateVars(2), %消隐不出现-相反噪声下降。使状态机器回到空闲状态。 noiseStateVars(3)=0; %状态101-200计数所谓消隐周期之后的话音帧数或噪声帧 数。 elseif noiseStateVars(3)<201, %如果能量非常高, if inEnergy>noiseStateVars(2)*8, %假定这是话音。设置状态变量为201以启动下一阶段。 noiseStateVars(3)=201; %如果存在足够的帧计数,其中最大和最小能量接近于保存 的噪声估计值, elseif noiseStateVars(3)-101==10, %确定消隐。将噪声估计值恢复到消隐前。 noiseStateVars(1)=noisestateVars(2); %使状态机器回到空闲状态。 noiseStateVars(3)=0; end %状态201-300计数所谓消隐周期之后话音的帧数,如果存 在足够的计数帧,其中最小能量接近于保存的噪声估计值, <dp n="d58"/> elseif noiseStateVars(3)-201==50, %确定消隐。将噪声估计值恢复到消隐前。 noiseStateVars(1)=noiseStateVars(2); %使状态机器回到空闲状态。 noiseStateVars(3)=0; end end end.
图7和图8描述经上述伪码生成的样值音频信号并意欲说明本发明AC中心衰减器的操作。特别是,图7描述AC中心衰减器的音频输入的一个例子(例如图5的信号145)和相应的AC中心衰减器130的音频输出的例子(例如,图5的信号135)。在图7中,示范性的AC中心衰减器输入信号表示为实线145,相应的AC中心衰减器输出信号表示为虚线135。图8描述了作为实线135、145的图7的两个音频信号,因此可以看出去掉了图7衰减器输出信号135虚线的细节。如图所示,示范性的音频输入信号145包括相对高频低幅度回波成分叠加在相对低频高幅度的噪声成分。实际上经常遇到这种信号(例如,在具有嘈杂近端背景的远端单方通话期间)并且利用传统的回波抑制器难以处理该信号。但是,如图所示,AC中心衰减器提供音频输出135,其中极大抑制了回波成分同时期望剩下噪声部分。
本领域技术人员可以理解,本发明并不局限于这里为了说明的目的描述的专门的示范性实施例。例如,实质上本公开实施例的各种操作单元是概念的。可以利用各种技术完成实际的这种单元的功能。此外,例如,利用多个标准化数字信号处理芯片、单个应用程序专门集成电路或适当配置的计算机实现每个示范性的系统。
还要注意,虽然已经声回波消除的上下文描述了示范性的实施例,本发明的教义同样适用于网络回波消除(例如,近端用户是陆上通信线用户和远端用户是移动用户)。而且,本发明的某些方面通常适用于通信系统,并不局限于回波抑制系统。因此,由这里所附的权利要求书定义本发明的范围,而不是前面的描述,所有与权利要求书一致的等同物也包含在其中。
Claims (47)
1.一种信号处理装置,包含:
输入节点,接收输入信号;和
信号处理器,耦合到所述输入节点并处理所述输入信号以提供输出信号,
其中所述信号处理器定标所述输入信号的第一部分并传送所述输入信号的第二部分以提供所述输出信号,
其中利用所述信号处理器的衰减窗口选择所述输入信号的所述第一部分,和
其中根据所述输入信号值调整所述衰减窗口的中心。
2.根据权利要求1的信号处理装置,其中根据所述输入信号的信号幅度调整所述衰减窗口的所述中心。
3.根据权利要求1的信号处理装置,其中递归调整所述衰减窗口的所述中心,以便在每个瞬时所述中心等于所述输出信号的前一个计算值。
4.根据权利要求1的信号处理装置,其中当所述输入信号在所述衰减窗口内时,所述衰减窗口的所述中心衰减到零。
5.根据权利要求1的信号处理装置,其中限制所述衰减窗口的所述中心以使所述衰减窗口不超过所述输入信号的整个范围。
6.根据权利要求1的信号处理装置,其中所述信号处理器利用可调整的衰减因数定标所述输入信号的所述第一部分。
7.根据权利要求1的信号处理装置,其中可以调整所述衰减窗口的尺寸。
8.一种回波抑制装置,包含:
回波抑制器,处理第一通信信号以抑制其回波成分,所述回波成分由于第二通信信号的反射引起,
其中所述回波抑制器定标所述第一通信信号的第一部分并传送所述第一通信信号的第二部分以提供抑制回波的输出信号,
其中利用所述回波抑制器的衰减窗口选择所述第一通信信号的所述第一部分,和
其中根据所述第一通信信号值调整所述衰减窗口的中心。
9.根据权利要求8的回波抑制装置,其中根据所述第一通信信号的信号幅度调整所述衰减窗口的所述中心。
10.根据权利要求8的回波抑制装置,其中递归调整所述衰减窗口的所述中心,以便在每个瞬时,所述中心等于所述抑制回波的输出信号的前一个计算值。
11.根据权利要求8的回波抑制装置,其中当所述第一通信信号在所述衰减窗口内时,所述衰减窗口的所述中心衰减到零。
12.根据权利要求8的回波抑制装置,其中限制所述衰减窗口的所述中心以使所述衰减窗口不超过所述第一通信信号的整个范围。
13.根据权利要求8的回波抑制装置,其中所述信号处理器利用可调整的衰减因数定标所述第一通信信号的所述第一部分。
14.根据权利要求13的回波抑制装置,其中调整所述衰减因数以使回波抑制装置基于其它装置提供的回波衰减提供回波衰减,其它装置在实现所述回波抑制装置的通信系统内。
15.根据权利要求14的回波抑制装置,其中基于音量控制信号调整所述衰减因数,该音量控制信号用于调整所述通信系统的音频输出量。
16.根据权利要求8的回波抑制装置,其中可以调整所述衰减窗口的尺寸。
17.根据权利要求16的回波抑制装置,其中基于所述第二控制信号调整所述衰减窗口的所述大小。
18.根据权利要求16的回波抑制装置,其中基于其它装置提供的回波衰减调整所述衰减窗口的所述大小,其它装置在实现所述回波抑制装置的通信系统内。
19.根据权利要求18的回波抑制装置,其中基于音量控制信号调整所述衰减窗口的所述大小,该音量控制信号用于调整所述通信系统的音频输出量。
20.一种回波抑制装置,包括
回波抑制器,处理包含回波的输入信号和引起回波的基准信号以便提供抑制回波的输出信号;和
增益控制处理器,估计所述回波抑制器的回波增益,
其中基于第一和第二测量值的比率计算所述估计值,
其中所述第一测量值表示所述抑制回波的输出信号中的能量,和
其中所述第二测量值表示包含回波的输入信号和引起回波的基准信号其中之一的能量。
21.根据权利要求20的回波抑制装置,其中从所述抑制回波的输出信号的样值平方和的平方根得出所述第一测量值。
22.根据权利要求20的回波抑制装置,其中从所述抑制回波的输出信号的样值均方根得出所述第一测量值。
23.根据权利要求20的回波抑制装置,其中从所述包含回波的输入信号和所述引起回波的基准信号其中之一的样值平方和的平方根得出所述第二测量值。
24.根据权利要求20的回波抑制装置,其中从所述包含回波的输入信号和所述引起回波的基准信号其中之一的样值均方根得出所述第二测量值。
25.根据权利要求20的回波抑制装置,其中以所述第一和第二测量值的所述比率的平方根计算所述估计值,其中从所述抑制回波的输出信号的样值平方和得出所述第一测量值,其中从所述包含回波的输入信号和所述引起回波的基准信号其中之一的样值平方和得出所述第二测量值。
26.根据权利要求20的回波抑制装置,其中所述回波抑制器是一种自适应回波消除器。
27.根据权利要求26的回波抑制装置,其中所述回波抑制装置包括剩余回波抑制器,其中所述自适应回波消除器回波增益的所述估计值用于调整所述剩余回波抑制器提供的回波衰减。
28.根据权利要求26的回波抑制装置,其中所述回波抑制装置包括剩余回波抑制器,其中所述自适应回波消除器回波增益的所述估计值用于调整所述剩余回波抑制器的衰减窗口的大小。
29.一种回波抑制装置,包括
前端回波抑制器,处理包含回波的信号和引起回波的信号以便提供中间信号;
剩余回波抑制器,选择性的衰减所述中间信号以提供抑制回波的输出信号;和
增益控制信号,估计所述前端回波抑制器的回波增益,其中基于第一和第二测量值的比率计算所述估计值,其中所述估计值用于调整所述剩余回波抑制器提供的回波衰减。
30.根据权利要求29的回波抑制装置,其中从所述中间信号的样值平方和的平方根得出所述第一测量值。
31.根据权利要求29的回波抑制装置,其中从所述中间信号的样值均方根得出所述第一测量值。
32.根据权利要求29的回波抑制装置,其中从所述包含回波的信号和所述引起回波的信号其中之一的样值平方和的平方根得出所述第二测量值。
33.根据权利要求29的回波抑制装置,其中从所述包含回波的信号和所述引起回波的信号之一的样值均方根得出所述第二测量值。
34.根据权利要求29的回波抑制装置,其中以所述第一和第二测量值的所述比率的平方根计算所述估计值,其中从所述中间信号的样值平方和得出所述第一测量值,其中从所述包含回波的信号和所述引起回波的信号其中之一的样值平方和得出所述第二测量值。
35.一种回波抑制装置,包括
回波抑制器,处理包含回波的输入信号和引起回波的基准信号以便提供抑制回波的输出信号其中所述回波消除器包括一个或多个自适应滤波器系数;和
增益控制处理器,估计所述回波抑制器的回波增益,
其中基于第一和第二测量值的比率计算所述估计值,
其中所述第一测量值表示时间间隔内至少一个所述自适应滤波器系数的改变,和
其中所述第二测量值是基于所述时间间隔内的所述包含回波的输入信号和所述引起回波的基准信号。
36.根据权利要求35的回波抑制装置,其中从所述时间间隔内测量所述滤波器系数改变的峰值得出所述第一测量值。
37.根据权利要求35的回波抑制装置,其中从所述时间间隔内测量所述滤波器系数改变的平方和的平方根得出所述第一测量值。
38.根据权利要求35的回波抑制装置,其中从所述包含回波的输入信号和所述引起回波的基准信号其中之一的样值平方和的平方根得出所述第二测量值。
39.根据权利要求35的回波抑制装置,其中从所述包含回波的输入信号和所述引起回波的基准信号其中之一的样值均方根得出所述第二测量值。
40.根据权利要求35的回波抑制装置,其中所述回波抑制装置包括剩余回波抑制器,其中所述自适应回波消除器回波增益的所述估计值用于调整所述剩余回波抑制器提供的回波衰减。
41.根据权利要求35的回波抑制装置,其中所述回波抑制装置包括剩余回波抑制器,其中所述自适应回波消除器回波增益的所述估计值用于调整所述剩余回波抑制器的衰减窗口的大小。
42.一种回波抑制装置,包括
回波抑制器,处理包含回波的信号和引起回波的信号以便提供消除回波的信号,所述回波消除器包括一个或多个自适应滤波器系数;
剩余回波抑制器,选择性地衰减所述消除回波的信号以提供抑制回波的信号;和
增益控制处理器,估计所述回波抑制器的回波增益,其中基于第一和第二测量值的比率计算所述估计值,其中所述第一测量值表示时间间隔内至少一个所述自适应滤波器系数的改变,和其中估计值用于调整所述剩余回波抑制器提供的回波衰减。
43.根据权利要求42的回波抑制装置,其中从所述时间间隔内测量所述滤波器系数改变的峰值得出所述第一测量值。
44.根据权利要求42的回波抑制装置,其中从所述时间间隔内测量所述滤波器系数改变的平方和的平方根得出所述第一测量值。
45.根据权利要求42的回波抑制装置,其中从所述包含回波的输入信号和所述引起回波的基准信号其中之一的样值平方和的平方根得出所述第二测量值。
46.根据权利要求42的回波抑制装置,其中从所述包含回波的输入信号和所述引起回波的基准信号其中之一的样值均方根得出所述第二测量值。
47.根据权利要求42的回波抑制装置,其中以所述第一和第二测量值的平方根计算所述比率,其中从所述时间间隔内测量所述滤波器系数改变的平方和得出所述第一测量值,其中从所述包含回波的输入信号和所述引起回波的基准信号其中之一的样值平方和得出所述第二测量值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/005,149 | 1998-01-09 | ||
US09/005,149 US6160886A (en) | 1996-12-31 | 1998-01-09 | Methods and apparatus for improved echo suppression in communications systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1286863A true CN1286863A (zh) | 2001-03-07 |
Family
ID=21714436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN98813863A Pending CN1286863A (zh) | 1998-01-09 | 1998-12-30 | 通信系统中用于改进回波抑制的方法和装置 |
Country Status (10)
Country | Link |
---|---|
US (1) | US6160886A (zh) |
EP (1) | EP1046272B1 (zh) |
JP (1) | JP4463981B2 (zh) |
KR (1) | KR100519002B1 (zh) |
CN (1) | CN1286863A (zh) |
AU (1) | AU754246B2 (zh) |
BR (1) | BR9813788A (zh) |
EE (1) | EE200000397A (zh) |
MY (1) | MY133057A (zh) |
WO (1) | WO1999035814A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286763B (zh) * | 2006-12-26 | 2012-12-12 | 高扬 | 一种有效的回波抑制器 |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301357B1 (en) * | 1996-12-31 | 2001-10-09 | Ericsson Inc. | AC-center clipper for noise and echo suppression in a communications system |
US6259680B1 (en) * | 1997-10-01 | 2001-07-10 | Adtran, Inc. | Method and apparatus for echo cancellation |
FI981091A (fi) * | 1998-05-15 | 1999-11-16 | Nokia Networks Oy | Menetelmä ja laitteisto kaiun poistamiseksi digitaalisessa matkaviestinjärjestelmässä |
US6351731B1 (en) | 1998-08-21 | 2002-02-26 | Polycom, Inc. | Adaptive filter featuring spectral gain smoothing and variable noise multiplier for noise reduction, and method therefor |
US6453285B1 (en) * | 1998-08-21 | 2002-09-17 | Polycom, Inc. | Speech activity detector for use in noise reduction system, and methods therefor |
US6658107B1 (en) * | 1998-10-23 | 2003-12-02 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and apparatus for providing echo suppression using frequency domain nonlinear processing |
JP3385221B2 (ja) * | 1998-11-16 | 2003-03-10 | 沖電気工業株式会社 | エコーキャンセラ |
US6263078B1 (en) | 1999-01-07 | 2001-07-17 | Signalworks, Inc. | Acoustic echo canceller with fast volume control compensation |
US6678254B1 (en) * | 1999-05-03 | 2004-01-13 | Nortel Networks Limited | Method and communication device for optimizing echo cancellation |
US6708024B1 (en) * | 1999-09-22 | 2004-03-16 | Legerity, Inc. | Method and apparatus for generating comfort noise |
US6526139B1 (en) | 1999-11-03 | 2003-02-25 | Tellabs Operations, Inc. | Consolidated noise injection in a voice processing system |
US6683859B1 (en) * | 1999-11-12 | 2004-01-27 | Motorola, Inc. | Method and apparatus for echo cancellation updates in a multicarrier transceiver system |
AU2005242180B2 (en) * | 2000-01-27 | 2007-08-09 | Qualcomm Incorporated | Improved system and method for implementation of an echo canceller |
US6606382B2 (en) * | 2000-01-27 | 2003-08-12 | Qualcomm Incorporated | System and method for implementation of an echo canceller |
US6760435B1 (en) * | 2000-02-08 | 2004-07-06 | Lucent Technologies Inc. | Method and apparatus for network speech enhancement |
US7050575B1 (en) | 2000-06-16 | 2006-05-23 | Ericsson Inc. | Echo canceler coefficient update apparatus and method |
US6622030B1 (en) * | 2000-06-29 | 2003-09-16 | Ericsson Inc. | Echo suppression using adaptive gain based on residual echo energy |
US6650912B2 (en) * | 2000-09-18 | 2003-11-18 | Qualcomm, Incorporated | Selecting paging channel mode |
US7124076B2 (en) * | 2000-12-14 | 2006-10-17 | Sony Corporation | Encoding apparatus and decoding apparatus |
KR20020058116A (ko) * | 2000-12-29 | 2002-07-12 | 조미화 | 음성 제어 텔레비젼 수상기 및 음성 제어 방법 |
US7154867B1 (en) * | 2001-12-06 | 2006-12-26 | At&T Corporation | Echo reduction |
US7251213B2 (en) * | 2002-09-17 | 2007-07-31 | At&T Corp. | Method for remote measurement of echo path delay |
US7027591B2 (en) * | 2002-10-16 | 2006-04-11 | Ericsson Inc. | Integrated noise cancellation and residual echo suppression |
US7003099B1 (en) * | 2002-11-15 | 2006-02-21 | Fortmedia, Inc. | Small array microphone for acoustic echo cancellation and noise suppression |
US7054437B2 (en) * | 2003-06-27 | 2006-05-30 | Nokia Corporation | Statistical adaptive-filter controller |
US7065207B2 (en) * | 2003-09-11 | 2006-06-20 | Freescale Semiconductor, Inc. | Controlling attenuation during echo suppression |
US8457614B2 (en) | 2005-04-07 | 2013-06-04 | Clearone Communications, Inc. | Wireless multi-unit conference phone |
US7844453B2 (en) | 2006-05-12 | 2010-11-30 | Qnx Software Systems Co. | Robust noise estimation |
US8949120B1 (en) * | 2006-05-25 | 2015-02-03 | Audience, Inc. | Adaptive noise cancelation |
JP4727542B2 (ja) * | 2006-09-26 | 2011-07-20 | 富士通株式会社 | 電子機器、そのエコーキャンセル方法、そのエコーキャンセルプログラム、記録媒体及び回路基板 |
US8335685B2 (en) * | 2006-12-22 | 2012-12-18 | Qnx Software Systems Limited | Ambient noise compensation system robust to high excitation noise |
US7809129B2 (en) * | 2007-08-31 | 2010-10-05 | Motorola, Inc. | Acoustic echo cancellation based on noise environment |
US8199927B1 (en) | 2007-10-31 | 2012-06-12 | ClearOnce Communications, Inc. | Conferencing system implementing echo cancellation and push-to-talk microphone detection using two-stage frequency filter |
US8050398B1 (en) | 2007-10-31 | 2011-11-01 | Clearone Communications, Inc. | Adaptive conferencing pod sidetone compensator connecting to a telephonic device having intermittent sidetone |
EP2380339B1 (en) | 2008-12-22 | 2018-08-15 | Koninklijke Philips N.V. | Determining an acoustic coupling between a far-end talker signal and a combined signal |
JP5923705B2 (ja) * | 2012-03-09 | 2016-05-25 | パナソニックIpマネジメント株式会社 | 通話信号処理装置 |
US9203527B2 (en) * | 2013-03-15 | 2015-12-01 | 2236008 Ontario Inc. | Sharing a designated audio signal |
JP6295722B2 (ja) * | 2014-02-28 | 2018-03-20 | 沖電気工業株式会社 | エコー抑圧装置、プログラム及び方法 |
GB2527865B (en) * | 2014-10-30 | 2016-12-14 | Imagination Tech Ltd | Controlling operational characteristics of an acoustic echo canceller |
GB2532041B (en) | 2014-11-06 | 2019-05-29 | Imagination Tech Ltd | Comfort noise generation |
US9672821B2 (en) * | 2015-06-05 | 2017-06-06 | Apple Inc. | Robust speech recognition in the presence of echo and noise using multiple signals for discrimination |
US11303758B2 (en) * | 2019-05-29 | 2022-04-12 | Knowles Electronics, Llc | System and method for generating an improved reference signal for acoustic echo cancellation |
JP7183119B2 (ja) * | 2019-06-13 | 2022-12-05 | 株式会社デンソーテン | 音声信号処理装置 |
CN111583087B (zh) * | 2020-05-06 | 2023-09-05 | 杭州小影创新科技股份有限公司 | 一种图像去水印方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0106640B1 (en) * | 1982-10-15 | 1986-07-16 | British Telecommunications | Noise control circuit |
US5157653A (en) * | 1990-08-03 | 1992-10-20 | Coherent Communications Systems Corp. | Residual echo elimination with proportionate noise injection |
US5274705A (en) * | 1991-09-24 | 1993-12-28 | Tellabs Inc. | Nonlinear processor for an echo canceller and method |
US5307405A (en) * | 1992-09-25 | 1994-04-26 | Qualcomm Incorporated | Network echo canceller |
JP2626437B2 (ja) * | 1992-12-28 | 1997-07-02 | 日本電気株式会社 | 残留エコー制御装置 |
JPH06232957A (ja) * | 1993-01-29 | 1994-08-19 | Toshiba Corp | 音声通信装置 |
JPH06338829A (ja) * | 1993-05-28 | 1994-12-06 | American Teleph & Telegr Co <Att> | 通信システム内の反響除去方法と装置 |
US5475731A (en) * | 1994-01-07 | 1995-12-12 | Ericsson Inc. | Echo-canceling system and method using echo estimate to modify error signal |
DE4430189A1 (de) * | 1994-08-25 | 1996-02-29 | Sel Alcatel Ag | Verfahren zur adaptiven Echokompensation |
US5587998A (en) * | 1995-03-03 | 1996-12-24 | At&T | Method and apparatus for reducing residual far-end echo in voice communication networks |
JP2928130B2 (ja) * | 1995-04-19 | 1999-08-03 | 埼玉日本電気株式会社 | ハンズフリー通信装置 |
US5606550A (en) * | 1995-05-22 | 1997-02-25 | Hughes Electronics | Echo canceller and method for a voice network using low rate coding and digital speech interpolation transmission |
US5561668A (en) * | 1995-07-06 | 1996-10-01 | Coherent Communications Systems Corp. | Echo canceler with subband attenuation and noise injection control |
US5812537A (en) * | 1995-09-29 | 1998-09-22 | Paradyne Corporation | Echo canceling method and apparatus for data over cellular |
US5825753A (en) * | 1995-09-29 | 1998-10-20 | Paradyne Corporation | Echo canceler gain tracker for cellular modems |
SE505692C2 (sv) * | 1995-12-18 | 1997-09-29 | Ericsson Telefon Ab L M | Förfarande och anordning för ekosläckning genom skattning av effekt hos residualsignal |
DE19611548A1 (de) * | 1996-03-23 | 1997-09-25 | Sel Alcatel Ag | Verfahren und Schaltungsanordnung zur Verbesserung der Übertragungseigenschaften einer echobehafteten Übertragungsstrecke in einem Telekommunikationsnetz |
-
1998
- 1998-01-09 US US09/005,149 patent/US6160886A/en not_active Expired - Lifetime
- 1998-12-30 BR BR9813788-3A patent/BR9813788A/pt not_active IP Right Cessation
- 1998-12-30 CN CN98813863A patent/CN1286863A/zh active Pending
- 1998-12-30 AU AU19468/99A patent/AU754246B2/en not_active Ceased
- 1998-12-30 JP JP2000528070A patent/JP4463981B2/ja not_active Expired - Fee Related
- 1998-12-30 EE EEP200000397A patent/EE200000397A/xx unknown
- 1998-12-30 EP EP98964300A patent/EP1046272B1/en not_active Expired - Lifetime
- 1998-12-30 WO PCT/US1998/027533 patent/WO1999035814A2/en active IP Right Grant
- 1998-12-30 KR KR10-2000-7007586A patent/KR100519002B1/ko not_active IP Right Cessation
-
1999
- 1999-01-08 MY MYPI99000080A patent/MY133057A/en unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286763B (zh) * | 2006-12-26 | 2012-12-12 | 高扬 | 一种有效的回波抑制器 |
Also Published As
Publication number | Publication date |
---|---|
JP2002501338A (ja) | 2002-01-15 |
EP1046272A2 (en) | 2000-10-25 |
US6160886A (en) | 2000-12-12 |
BR9813788A (pt) | 2000-10-03 |
WO1999035814A2 (en) | 1999-07-15 |
EP1046272B1 (en) | 2003-10-08 |
WO1999035814A3 (en) | 1999-09-10 |
AU1946899A (en) | 1999-07-26 |
AU754246B2 (en) | 2002-11-07 |
KR100519002B1 (ko) | 2005-10-06 |
KR20010033993A (ko) | 2001-04-25 |
EE200000397A (et) | 2002-02-15 |
JP4463981B2 (ja) | 2010-05-19 |
MY133057A (en) | 2007-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1286863A (zh) | 通信系统中用于改进回波抑制的方法和装置 | |
US6301357B1 (en) | AC-center clipper for noise and echo suppression in a communications system | |
US7764783B1 (en) | Acoustic echo cancellation with oversampling | |
CN1166160C (zh) | 抑制输入信号中干扰成分的设备 | |
US8335311B2 (en) | Communication apparatus capable of echo cancellation | |
KR101520123B1 (ko) | 잡음 환경에 기초하는 음향 에코 제거 | |
CN101878637B (zh) | 用于对语音信号进行回声消除的方法和配置 | |
JP2009065699A (ja) | 音響エコーの相殺および抑制を実行する利得制御方法 | |
CN1176034A (zh) | 消除在扬声器电话中包括非线性失真的声学回声的装置和方法 | |
WO2000016497A1 (en) | Echo canceler adaptive filter optimization | |
CN1198620A (zh) | 具有延迟补偿的回声/噪声消除器 | |
RU2180984C2 (ru) | Измерение сходимости адаптивных фильтров | |
WO2015086229A9 (en) | Echo cancellation | |
US6707912B2 (en) | Method and apparatus for setting a step size for an adaptive filter coefficient of an echo canceller | |
AU2002367002B2 (en) | System and method for controlling a filter to enhance speakerphone performance | |
CN1914819A (zh) | 利用干扰电平控制步长的回声消除器 | |
JP2003500936A (ja) | エコー抑止システムにおけるニアエンド音声信号の改善 | |
WO2000051262A1 (fr) | Dispositif de detection de superposition de signaux vocaux, dispositif de detection de superposition de signaux vocaux utilisant un annuleur d'echo et annuleur d'echo utilisant ce dispositif | |
KR20060130067A (ko) | 개별 갱신 제어 전략을 갖는 직렬 배치의 적응 필터들을구비한 에코 제거기 | |
WO2000041330A1 (en) | Acoustic echo canceller with fast volume control compensation | |
US6560332B1 (en) | Methods and apparatus for improving echo suppression in bi-directional communications systems | |
US7177416B1 (en) | Channel control and post filter for acoustic echo cancellation | |
JP2002503924A (ja) | ハンズフリー装置の音響的側音減衰を改善する方法 | |
US6850783B1 (en) | Methods and apparatus for mitigating the effects of microphone overload in echo cancelation systems | |
CN101765982A (zh) | 回声消除器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1035623 Country of ref document: HK |