回声抵消方法和装置的制作方法

文档序号:7638239阅读:380来源:国知局
专利名称:回声抵消方法和装置的制作方法
技术领域
本发明涉及语音通信系统中回声抵消的方法和装置。此外,本发明涉及存储用于回声抵消程序的记录介质。
在两个相对侧之间的典型语音通信系统中,每侧都有扩音器和话筒。如果扩音器产生的声音进入话筒并且被增强,则导致回声。
为语音通信系统配备声学回声抵消器是已知的。普通的声学回声抵消器由自适应滤波器构成。自适应滤波器可以使回声抵消器跟随影响回波生成的条件而变化。普通回波抵消器在回波生成条件下跟随变化的速度较低。
本发明的第一个目标是提供一种改进的回声抵消方法。
本发明的第二个目标是提供一种改进的回声抵消装置。
本发明的第三个目标是提供一种存储用于回声抵消的改进程序的记录介质。
本发明的第一方面是提供一种回声抵消方法。该方法包括以下步骤利用内部系数更新自适应滤波器的系数以响应远端信号和误差信号,自适应滤波器和内部系数具有抽头(tap)长度;提供自适应滤波器以响应远端信号产生第一伪回声信号;提供主滤波器以响应远端信号产生第二伪回声信号;判断更新步骤中的自适应滤波器系数和内部系数是否应该初始化;如果判断更新步骤中的自适应滤波器系数和内部系数应该初始化,则将自适应滤波器的抽头长度和更新步长设定为小于原始值的非原始值,并且在更新步骤内执行自适应滤波器系数和内部系数的初始化;判断自适应滤波器的系数是否应该传送至主滤波器;如果判断自适应滤波器的系数应该传送至主滤波器,则将自适应滤波器的系数传送至主滤波器;以及如果是在自适应滤波器的抽头长度和更新步长设定为非原始值之后执行自适应滤波器的系数至主滤波器的传送,则将自适应滤波器的抽头长度和更新步长设定为原始值,并且随后在更新步骤中执行自适应滤波器系数和内部系数的初始化。
本发明的第二方面基于第一方面,并且提供的方法进一步包括以下步骤将远端信号分割为子带信号;将回声信号分割为子带信号;响应远端信号的子带信号产生第二子带伪回声信号;产生对应回声信号的子带信号与第二子带伪回声信号之间差异的子带误差信号;以及将子带误差信号组合成全带误差信号;其中对每个子带信号施行回声抵消。
本发明的第三方面基于第一方面,并且提供的方法进一步包括以下步骤如果在将自适应滤波器的抽头长度和更新步长设定为非原始值之后预定时间内未执行自适应滤波器系数传送至主滤波器,则使自适应滤波器的抽头长度和更新步长返回原始值。
本发明的第四方面提供了一种初始化回声抵消器中系数的方法。该方法包括以下步骤对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率;计算当前样本与紧靠其前样本的ERLE比率之差;以及如果计算的差值大于预定阈值,则初始化更新自适应滤波器系数中所用的自适应滤波器系数和内部系数。
本发明的第五方面提供了一种初始化回声抵消器中系数的方法。该方法包括以下步骤对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率;以及如果计算的连续多个样本的ERLE比率继续跌落,则初始化更新自适应滤波器系数中所用的自适应滤波器系数和内部系数。
本发明的第六方面基于第一方面,并且提供一种方法,其中执行初始化的步骤包括以下步骤对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率;计算当前样本与紧靠其前样本的ERLE比率之差;以及如果计算的差值大于预定阈值,则初始化更新步骤中所用的自适应滤波器系数和内部系数。
本发明的第七方面基于第一方面,并且提供了一种方法,其中初始化步骤包括以下步骤对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率;以及如果计算的连续多个样本的ERLE比率继续跌落,则初始化更新步骤中所用的自适应滤波器系数和内部系数。
本发明的第八方面基于第一方面,并且提供一种方法,其中更新步骤采用最小平方法的系数更新算法。
本发明的第九方面是提供一种回声抵消装置。该装置包括利用内部系数更新自适应滤波器的系数以响应远端信号和误差信号的装置,自适应滤波器和内部系数具有抽头长度;提供自适应滤波器以响应远端信号产生第一伪回声信号的装置;提供主滤波器以响应远端信号产生第二伪回声信号的装置;判断更新方法中的自适应滤波器系数和内部系数是否应该初始化的装置;如果判断更新方法中的自适应滤波器系数和内部系数应该初始化,则将自适应滤波器的抽头长度和更新步长设定为小于原始值的非原始值,并且在更新方法内执行自适应滤波器系数和内部系数的初始化的装置;判断自适应滤波器的系数是否应该传送至主滤波器的装置;如果判断自适应滤波器的系数应该传送至主滤波器,则将自适应滤波器的系数传送至主滤波器的装置;以及如果是在自适应滤波器的抽头长度和更新步长设定为非原始值之后执行自适应滤波器的系数至主滤波器的传送,则将自适应滤波器的抽头长度和更新步长设定为原始值,并且随后在更新步骤中执行自适应滤波器系数和内部系数的初始化的装置。
本发明的第十方面基于第九方面,并且提供的装置进一步包括将远端信号分割为子带信号的装置;将回声信号分割为子带信号的装置;响应远端信号的子带信号产生第二子带伪回声信号的装置;产生对应回声信号的子带信号与第二子带伪回声信号之间差异的子带误差信号的装置;以及将子带误差信号组合成全带误差信号的装置;其中对每个子带信号施行回声抵消。
本发明的第十一方面基于第九方面,并且提供的装置进一步包括如果在将自适应滤波器的抽头长度和更新步长设定为非原始值之后预定时间内未执行自适应滤波器系数传送至主滤波器,则使自适应滤波器的抽头长度和更新步长返回原始值的装置。
本发明的第十二方面提供了一种初始化回声抵消器中系数的装置。该装置包括对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率的装置;计算当前样本与紧靠其前样本的ERLE比率之差的装置;以及如果计算的差值大于预定阈值,则初始化更新自适应滤波器系数中所用的自适应滤波器系数和内部系数的装置。
本发明的第十三方面提供了一种初始化回声抵消器中系数的装置。该装置包括对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率的装置;以及如果计算的连续多个样本的ERLE比率继续跌落,则初始化更新自适应滤波器系数中所用的自适应滤波器系数和内部系数的装置。
本发明的第十四方面基于第九方面,并且提供一种装置,其中执行初始化的装置包括对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率的装置;计算当前样本与紧靠其前样本的ERLE比率之差的装置;以及如果计算的差值大于预定阈值,则初始化更新方法中所用的自适应滤波器系数和内部系数的装置。
本发明的第十五方面基于第九方面,并且提供了一种装置,其中初始化装置包括对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率的装置;以及如果计算的连续多个样本的ERLE比率继续跌落,则初始化更新方法中所用的自适应滤波器系数和内部系数的装置。
本发明的第十六方面基于第九方面,并且提供一种装置,其中更新装置采用最小平方法的系数更新算法。
本发明的第十七方面提供一种记录介质,存储了实现本发明第一~第八方面的方法的程序。


图1为现有技术回声抵消器的示意图。
图2为按照本发明第一实施例的回声抵消器的框图。
图3为图2中回声抵消器的操作流程图。
图4为用于图2内DSP的控制程序段的流程图。
图5为按照本发明第二实施例的回声抵消器的框图。
图6为图5中回声抵消器的操作流程图。
图7为用于图5内DSP的控制程序段的流程图。
图8为图7内方框的流程图。
图9为按照本发明第三实施例的回声抵消器的框图。
图10为图9中回声抵消器的操作流程图。
图11为用于图9内DSP的控制程序段的流程图。
图12为按照本发明第四实施例的回声抵消器的框图。
图13为图12中回声抵消器的操作流程图。
图14为用于图12内DSP的控制程序段的流程图。
图15为按照本发明第五实施例的回声抵消器的框图。
图16为图15中回声抵消器的操作流程图。
图17为用于图15内DSP的控制程序段的流程图。
为了更好地理解本发明,以下描述现有技术的回声抵消器。
图1示出了语音通信系统中现有技术的回声抵消器。语音通信系统将近端侧与远端侧相连。近端侧有位于声学空间内的扩音器SS和话筒MM。扩音器SS接收远端信号x(n)。扩音器SS将远端信号x(n)转换为相应的声音。话筒MM产生近端信号。当扩音器SS产生的声音部分沿回声路径送至话筒MM并且被采集时,产生的近端信号包含回声信号d(n)。图1的现有技术回声抵消器是前台/后台型(FG/BG型)的。
图1内的现有技术回声抵消器包括更新部分1101、自适应滤波器1102、主滤波器1103和判断部分1104。自适应滤波器1102构成后台滤波器,其工作特性由系数(抽头系数)确定。部分1101更新自适应滤波器1102的系数以响应误差信号e1(n)和远端信号x(n)。更新部分1101和自适应滤波器1102协同识别或估计回声路径,并且产生第一伪回声信号y1(n)以响应远端信号x(n)和误差信号e1(n)。误差信号e1(n)是回声信号d(n)与第一伪回声信号y1(n)的差值。
主滤波器1103构成前台滤波器,其工作特性由系数(抽头系数)确定。主滤波器1103产生第二伪回声信号y2(n)以响应远端信号x(n)。第二伪回声信号y2(n)设计为抵消返回远端侧的回声信号d(n)。部分1104判断预定条件是否满足。预定条件是误差信号e1(n)是否小于回声信号d(n)某一水平以上和误差信号e1(n)是否小于误差信号e2(n),它是回声信号d(n)与第二伪回声信号y2(n)之差。如果部分1104判断预定条件满足,则部分1104将系数从自适应滤波器1102传送至主滤波器1103。因此,在这种情况下,主滤波器1103根据新传送的系数产生第二伪回声信号y2(n)。作为回声信号d(n)与第二伪回声信号y2(n)之差的误差信号e2(n)被送至远端侧。另一方面,如果部分1104判断不满足预定条件,则部分1104不执行系数从自适应滤波器1102至主滤波器1103的传送。
当移动话筒MM和扩音器SS中至少一个从而改变回声路径时,自动启动自适应滤波器1102内反复更新系数的过程。如果在反复更新过程中采用FRLS算法,则自适应滤波器1102内系数收敛至可接收值需要给定次数的重复系数更新步骤,它等于抽头长度(回声抵消时间)乘以3。例如,如果采样频率为16kHz并且抽头长度等于4000次抽头,因此回波取消时间较为250毫秒,需要花费750毫秒的时间使系数收敛至可接收的数值。
第一实施例图2示出了按照本发明第一实施例的语音通信系统内的回声抵消器。语音通信系统将近端侧与远端侧相连。近端侧有位于声学空间内的扩音器S和话筒M。具有样本序列的数字远端信号x(n)发送至数字信号处理器(DSP)20和数字-模拟(D/A)转换器22。这里“n”表示当前样本。D/A转换器22将数字远端信号x(n)转换为相应的模拟信号。D/A转换器22向扩音器S输出模拟信号。扩音器S将D/A转换器22的输出信号转换为相应的声音。话筒M产生模拟的近端信号。当扩音器S产生的声音部分沿回声路径送至话筒M并且被采集时,模拟的近端信号包含回声信号。话筒M向模拟一数字(A/D)转换器24输出模拟的近端信号。A/D转换器24将模拟的近端信号转换为相应的数字信号。A/D转换器24向DSP20输出数字信号。当扩音器S产生的声音部分沿回声路径送至话筒M并且被采集时,A/D转换器24的输出信号包含数字回声信号d(n)。数字回声信号d(n)包含样本序列。
DSP20包括输入/输出端口的组合、处理部分、ROM和RAM。DSP20按照存储在ROM内的控制程序工作。按照控制程序,DSP20构成将回声分量从A/D转换器24输出信号中去除的回声抵消器。DSP20产生数字无回声信号作为数字误差信号e2(n)。DSP20输出向远端侧发送的数字误差信号e2(n)。
图3示出的更象是DSP20的操作流程图而非DSP硬件细节。参见图3,DSP编程为构成更新部分101、数字自适应滤波器102、数字主滤波器103、判断部分104、控制部分105和减法器107和109。
自适应滤波器102构成后台滤波器,其工作特性由系数(抽头系数)确定。更新部分101根据预定算法(例如NLMS算法、FRLS算法或者基于另一最小平方法算法)更新自适应滤波器102的系数以响应误差信号e1(n)和远端信号x(n)。更新部分101具有作为产生自适应滤波器102系数的基础的内部系数(内部抽头系数)。更新部分101和自适应滤波器102协同识别或估计回声路径,并且产生第一伪回声信号y1(n)以响应远端信号x(n)和误差信号e1(n)。减法器107产生作为回声信号d(n)与第一伪回声信号y1(n)的差值的误差信号e1(n)。
主滤波器103构成前台滤波器,其工作特性由系数(抽头系数)确定。主滤波器103产生第二伪回声信号y2(n)以响应远端信号x(n)。第二伪回声信号y2(n)设计为抵消返回远端侧的回声信号d(n)。判断部分104周期性地判断系数是否应该从自适应滤波器102传送至主滤波器103,具体而言即是否满足预定条件。判断部分104作出判断的周期等于远端信号x(n)的一个样本。判断部分104作出判断的周期可以等于另一预定数值。判断部分104所用预定条件与误差信号e1(n)与误差信号e2(n)之比、误差信号e1(n)与误差信号e2(n)之差和第一伪回声信号y1(n)与回声信号d(n)之间的相关值有关。预定条件的典型例子是误差信号e1(n)小于回声信号d(n)某一水平以上和误差信号e1(n)是否小于误差信号e2(n)。如果判断部分104判断预定条件满足,则判断部分104将系数从自适应滤波器102传送至主滤波器103。因此,在这种情况下,主滤波器103根据新传送的系数产生第二伪回声信号y2(n)。减法器109产生作为回声信号d(n)与第二伪回声信号y2(n)之差的误差信号e2(n)。误差信号e2(n)作为无回声信号被送至远端侧。另一方面,如果判断部分104判断不满足预定条件,则判断部分104不执行系数从自适应滤波器102至主滤波器103的传送。判断部分104将判断结果通知控制部分。
控制部分105判断更新部分101内的内部系数(内部抽头系数)和自适应滤波器102内的系数是否应该初始化。当判断结果为正时,控制部分105将更新部分101和自适应滤波器102的抽头长度(抽头总数)从原始值M0改变为预定值M1,并且初始化更新部分101内的内部系数和自适应滤波器102内的系数。预定值M1小于原始值M0。预定值M1也称为较小的值M1。选定较小的值M1从而可以减弱直接的声音和初始反射声音。当判断结果为负时,控制部分105不执行初始化。如果当前抽头长度等于较小值M1并且控制部分105被告知判断部分104的判断结果为正时,控制部分105将更新部分101和自适应滤波器102的抽头长度返回至原始值M0,并且初始化更新部分101内的内部系数和自适应滤波器102内的系数。
控制部分105判断的第一实例如下。控制部分105计算回声信号d(n)与误差信号e2(n)之间功率的ERLE(回声返回损失增强)之比。控制部分105计算ERLE之比的当前样本值与ERLE之比紧随其后样本值之差D(n)。控制部分105将差值D(n)与预定阈值比较。当差值D(n)超过阈值时,控制部分105判定更新部分101内的内部系数和自适应滤波器102内的系数应该初始化。否则,控制部分105判断更新部分101内的内部系数和自适应滤波器102内的系数不应该初始化。
控制部分105判断的第二实例如下。控制部分105计算回声信号d(n)与误差信号e2(n)之间功率的ERLE(回声返回损失增强)之比。控制部分105判断ERLE之比是否在预定数量的连续样本内持续下跌。如果ERLE之比在预定数量的连续样本内持续跌落,则控制部分105判断更新部分101内的内部系数和自适应滤波器102内的系数应该初始化。否则,控制部分105判断更新部分101内的内部系数和自适应滤波器102内的系数不应该初始化。
图4为DSP20控制程序段的流程图。通常情况下,对于远端信号x(n)和回声信号d(n)的每个样本都执行程序段。如图4所示,程序段的第一步骤201是根据预定算法(例如NLMS算法、FRLS算法或基于最小平方法的算法)更新自适应滤波器内的系数(抽头系数)以响应误差信号e1(n)和远端信号x(n)。步骤201将内部系数(内部抽头系数)用作产生自适应滤波器内系数的基础。
步骤201后面的步骤202根据步骤201更新的系数执行自适应滤波过程,从而产生第一伪回声信号y1(n)以响应远端信号x(n)和误差信号e1(n)。此外,步骤202产生作为回声信号d(n)与第一伪回声信号y1(n)之差的误差信号e1(n)。
步骤202之后的步骤203根据系数(抽头系数)执行主滤波过程,并且产生第二伪回声信号y2(n)以响应远端信号x(n)。此外,步骤203产生作为回声信号d(n)与第二伪回声信号y2(n)之差的误差信号e2(n)。步骤203向远端侧输出误差信号e2(n)作为无回声信号。
第一系数控制块204包括步骤204-1、204-2和204-3。步骤204-1跟随步骤203之后。步骤204-1判断系数更新步骤201所用内部系数和自适应滤波步骤202所用系数是否应该初始化。当判断结果为正时,程序从步骤204-1进入步骤204-2。当判断结果为负时,程序从步骤204-1进入步骤205。
在第一系数控制块204中,步骤204-2将系数更新步骤201和自适应滤波步骤202内所用的抽头长度(抽头总数)从原始值M0改变为较小值M1。选择较小值M1使得可以减弱直接声音和初始反射声音。
在第一系数控制块204中,步骤204-3在步骤204-2之后。步骤204-3初始化系数更新步骤201所用的内部系数和自适应滤波步骤202所用的系数。在步骤204-3之后,程序进入步骤205。
步骤204-1判断的第一实例如下。步骤204-1计算回声信号d(n)与误差信号e2(n)之间功率的ERLE(回声返回损失增强)之比。步骤204-1计算ERLE之比的当前样本值与ERLE之比紧靠其前样本值之差D(n)。步骤204-1将差值D(n)与预定阈值比较。当差值D(n)超过阈值时,步骤204-1判断更新部分101内的内部系数和自适应滤波器102内的系数应该初始化。否则,步骤204-1判断更新部分101内的内部系数和自适应滤波器102内的系数不应该初始化。
步骤204-1判断的第二实例如下。步骤204-1计算回声信号d(n)与误差信号e2(n)之间功率的ERLE(回声返回损失增强)之比。步骤204-1判断ERLE之比是否在预定数量的连续样本内持续下跌。如果ERLE之比在预定数量的连续样本内持续跌落,则步骤204-1判断更新部分101内的内部系数和自适应滤波器102内的系数应该初始化。否则,步骤204-1判断更新部分101内的内部系数和自适应滤波器102内的系数不应该初始化。
步骤205周期性地判断系数是否应该从自适应滤波步骤202传送至主滤波过程203,具体而言即是否满足预定条件。步骤205作出判断的周期等于远端信号x(n)的一个样本。步骤205作出判断的周期可以等于另一预定数值。步骤205所用预定条件涉及误差信号e1(n)与误差信号e2(n)之比、误差信号e1(n)与误差信号e2(n)之差和第一伪回声信号y1(n)与回声信号d(n)之间的相关值中的至少一个。预定条件的典型例子是误差信号e1(n)小于回声信号d(n)某一水平以上和误差信号e1(n)是否小于误差信号e2(n)。当步骤205判断预定条件满足,则程序从步骤205进入步骤206。否则程序从步骤205返回步骤201。
步骤206将系数从自适应滤波步骤202传送至主滤波步骤203。因此,在这种情况下,主滤波步骤203在程序段下一执行周期内根据新传送的系数产生第二伪回声信号y2(n)。
第二系数控制块207包括步骤207-1、207-2和207-3。步骤207-1在步骤206之后。步骤207-1检查系数更新步骤201和自适应滤波步骤202中所用当前抽头长度是否等于较小值M1。当当前抽头长度等于较小值M1时,程序从步骤207-1进入步骤207-2。否则,程序从步骤207-1返回步骤201。
在第二系数控制块207内,步骤207-2将抽头长度(用于系数更新步骤201和自适应滤波步骤202)返回原始值M0。步骤207-3在步骤207-2之后。步骤207-3初始化系数更新步骤201所用的内部系数和自适应滤波步骤202所用的系数。在步骤207-3之后,程序返回步骤201。
如上所述,抽头长度可以在原始值M0与较小值M1之间改变。按照这种设计,回声抵消器可以快速跟随回声产生条件的变化。
第二实施例图5示出了按照本发明第二实施例,它除了下述设计变化以外与第一实施例类似。本发明第二实施例包括DSP20A代替DSP20(参见图2)。
DSP20A包括输入/输出端口的组合、处理部分、ROM和RAM。DSP20A按照存储在ROM内的控制程序工作。按照控制程序,DSP20A构成对数字远端信号x(n)响应并将回声分量从A/D转换器24输出信号中去除的回声抵消器。DSP20A产生数字无回声信号作为数字误差信号e(n)。数值远端信号x(n)包含样本序列。而且数值误差信号e(n)包含样本序列。这里“n”表示当前样本。DSP20A输出向远端侧发送的数字误差信号2(n)。
图6示出的更象是DSP20A的操作流程图而非DSP20A的硬件细节。参见图6,DSP20A编程为构成带分滤波器310、疏化部分3201、3202…和320k、带分滤波器330、疏化部分3401、3402…和340k、子带回声抵消块3501、3502…和350k、插值部分3601、3602…和360k、频带组合滤波器370和减法器3901、3902…和390k。这里“k”表示等于或大于2的预设自然数。
子带回声抵消块3501、3502…和350k在结构上相互相同。因此只详细描述子带回声抵消块3501的结构。子带回声抵消块3501包括更新部分3511、数字自适应滤波器3521、数字主滤波器3531、判断部分3541、控制部分3551和减法器3801。
带分滤波器310将远端信号x(n)的频带分割为“k”个子带。带分滤波器310将最终的子带信号分别送至疏化部分3201、3202…和320k。带分滤波器310例如包括多相滤波器。疏化部分3201、3202…和320k以1/L的速率疏化或抽选子带信号,从而分别产生疏化的最终子带远端信号x1(n)、x2(n)…和xk(n)。最终子带远端信号x1(n)、x2(n)…和xk(n)被分别送至子带回声抵消块3501、3502…和350k。
带分滤波器330将远端信号x(n)的频带分割为“k”个子带。带分滤波器330将最终的子带信号分别送至疏化部分3401、3402…和340k。带分滤波器330例如包括多相滤波器。疏化部分3401、3402…和340k以1/L的速率疏化或抽选子带信号,从而分别产生疏化的最终子带远端信号d1(n)、d2(n)…和dk(n)。最终子带远端信号d1(n)、d2(n)…和dk(n)被分别送至子带回声抵消块3501、3502…和350k。
子带回声抵消块3501、3502…和350k在操作上相互相似。因此只详细描述子带回声抵消块3501的操作。
在子带回声抵消块3501中,自适应滤波器3501构成后台滤波器,其工作特性由系数(抽头系数)确定。更新部分3511根据预定算法(例如NLMS算法、FRLS算法或者基于另一最小平方法算法)更新自适应滤波器3521的系数以响应子带误差信号e1(n)和子带远端信号x(n)。更新部分3511具有作为产生自适应滤波器3521内系数的基础的内部系数(内部抽头系数)。更新部分3511和自适应滤波器3521协同识别或估计回声路径,并且产生第一子带伪回声信号y11(n)以响应子带远端信号x1(n)和子带误差信号e11(n)。减法器3801产生作为子带回声信号d1(n)与第一子带伪回声信号y11(n)的差值的误差信号e11(n)。
在子带回声抵消块3501中,主滤波器3531构成前台滤波器,其工作特性由系数(抽头系数)确定。主滤波器3531产生第二子带伪回声信号y21(n)以响应子带远端信号x1(n)。第二子带伪回声信号y21(n)设计为抵消返回远端侧的子带回声信号d1(n)。判断部分3541周期性地判断系数是否应该从自适应滤波器3521传送至主滤波器3531,具体而言即是否满足预定条件。判断部分3541作出判断的周期等于子带远端信号x1(n)一个样本。判断部分3541作出判断的周期可以等于另一预定数值。判断部分3541所用预定条件涉及子带误差信号e11(n)与子带误差信号e21(n)之比、子带误差信号e11(n)与子带误差信号e21(n)之差和第一子带伪回声信号y11(n)与子带回声信号d1(n)之间的相关值中至少一个。预定条件的典型例子是子带误差信号e11(n)小于子带回声信号d1(n)某一水平以上和子带误差信号e11(n)是否小于子带误差信号e21(n)。如果判断部分3541判断预定条件满足,则判断部分3541将系数从自适应滤波器3521传送至主滤波器3531。因此,在这种情况下,主滤波器3531根据新传送的系数产生第二子带伪回声信号y21(n)。减法器3901产生作为子带回声信号d1(n)与第二子带伪回声信号y21(n)之差的误差信号e21(n)。误差信号e21(n)被发送至插值部分3601。另一方面,如果判断部分3541判断不满足预定条件,则判断部分3541不执行系数从自适应滤波器3521至主滤波器3531的传送。判断部分3541将判断结果通知控制部分3551。
在子带回声抵消块3501中,控制部分3551判断更新部分3511内的内部系数(内部抽头系数)和自适应滤波器3521内的系数是否应该初始化。当判断结果为正时,控制部分3551将更新部分3511和自适应滤波器3521的抽头长度(抽头总数)从原始值M0改变为预定值M1,并且初始化更新部分3511内的内部系数和自适应滤波器3521内的系数。预定值M1小于原始值M0。选定较小的值M1从而可以减弱直接的声音和初始反射声音。当判断结果为负时,控制部分3551不执行初始化。如果当前抽头长度等于较小值M1并且控制部分3551被告知判断部分3541的判断结果为正时,控制部分3551将更新部分3511和自适应滤波器3521的抽头长度返回至原始值M0,并且初始化更新部分3511内的内部系数和自适应滤波器3521内的系数。
控制部分3551判断的第一实例如下。控制部分3551计算子带回声信号d1(n)与子带误差信号e21(n)之间功率的子带ERLE(回声返回损失增强)之比。控制部分3551计算子带ERLE之比的当前样本值与子带ERLE之比的紧靠其前样本值之间的子带差值D1(n)。控制部分3551将子带差值D1(n)与预定子带阈值比较。当子带差值D1(n)超过子带阈值时,控制部分3551判断更新部分3511内的内部系数和自适应滤波器3521内的系数应该初始化。否则,控制部分3551判断更新部分3511内的内部系数和自适应滤波器3521内的系数不应该初始化。
控制部分3551判断的第二实例如下。控制部分3551计算子带回声信号d1(n)与子带误差信号e21(n)之间功率的子带ERLE(回声返回损失增强)之比。控制部分3551判断子带ERLE之比是否在预定数量的连续样本内持续下跌。如果子带ERLE之比在预定数量的连续样本内持续跌落,则控制部分3551判断更新部分3511内的内部系数和自适应滤波器3521内的系数应该初始化。否则,控制部分3551判断更新部分3511内的内部系数和自适应滤波器102内的系数不应该初始化。
子带回声抵消块3502…和350k的操作与子带回声抵消块3501类似。子带回声抵消块3502…和350k产生第二子带伪回声信号y22(n)…和y2k(n)以分别响应子带远端信号x2(n)…和xk(n)以及子带回声信号d2(n)…和dk(n)。减法器3902…和390k产生子带误差信号e22(n)…和e2k(n),它们是子带回声信号d2(n)…和dk(n)与第二子带伪回声信号y22(n)…和y2k(n)之差。子带误差信号e22(n)…和e2k(n)分别发送至插值部分3602…和360k。
插值部分3061,3602…和360k分别相对子带误差信号e22(n)…和e2k(n)执行插值。插值的因子为L。插值部分3602…和360k将插值后的最终子带误差信号送至带组合滤波器370。带组合滤波器370通过合适的加法过程将插值后的最终子带误差信号组合为全带误差信号,即数字误差信号e(n)。数字误差信号e(n)被发送至远端侧。
图7为DSP20A控制程序段的流程图。通常情况下,对于远端信号x(n)和回声信号d(n)的每个样本都执行程序段。如图7所示,程序段的第一块410包括步骤411和412。步骤411将远端信号x(n)的频带通过例如多相滤波处理分割为“k”个子带。
在块410中,步骤412在步骤411之后。步骤412以1/L的速率疏化或抽选子带信号,从而分别产生疏化的最终子带远端信号x1(n)、x2(n)…和xk(n)。
块420包括步骤421和422。步骤421在步骤412之后。步骤421通过例如多相滤波处理将回声信号d(n)的频带分割为“k”个子带。
在块420中,步骤422在步骤421之后。步骤422以1/L的速率疏化或抽选子带信号,从而分别产生疏化的最终子带远端信号d1(n)、d2(n)…和dk(n)。
块422之后的块430分别产生子带误差信号e21(n)、e22(n)…和e2k(n)以响应子带远端信号x1(n)、x2(n)…和xk(n)以及子带回声信号d1(n)、d2(n)…和dk(n)。
块440包括步骤441和442。步骤441在块430之后。步骤441分别对子带误差信号e21(n)、e22(n)…和e2k(n)执行插值。插值具有因子L。
在块440中,步骤442在步骤441之后。步骤442通过合适的加法过程将插值后的最终子带误差信号组合为全带误差信号,即数字误差信号e(n)。步骤442将作为无回声信号的数字误差信号e(n)发送至远端侧。在步骤442之后,程序返回步骤411。
块430包含分别分配至“k”个子带的步骤序列。步骤序列相互类似。图8示出了块430中步骤序列“j”的细节。
参见图8,步骤431根据预定算法(例如NLMS算法、FRLS算法或基于最小平方法的算法)更新自适应滤波器内的系数(抽头系数)以响应子带误差信号e1j(n)和子带远端信号xj(n)。步骤431将内部系数(内部抽头系数)用作产生自适应滤波器内系数的基础。
步骤431后面的步骤432根据步骤431更新的系数执行自适应滤波过程,从而产生第一子带伪回声信号y1j(n)以响应远端信号xj(n)和误差信号e1j(n)。此外,步骤432产生作为子带回声信号dj(n)与第一子带伪回声信号y1(n)之差的子带误差信号e1j(n)。
步骤432之后的步骤433根据系数(抽头系数)执行主滤波过程,并且产生第二子带伪回声信号y2(n)以响应子带远端信号xj(n)。此外,步骤433产生作为子带回声信号dj(n)与第二子带伪回声信号y2j(n)之差的误差信号e2j(n)。
第一系数控制块434包括步骤434-1、434-2和434-3。步骤434-1在步骤433之后。步骤434-1判断系数更新步骤431所用内部系数和自适应滤波步骤202所用系数是否应该初始化。当判断结果为正时,程序从步骤434-1进入步骤434-2。当判断结果为负时,程序从步骤434-1进入步骤435。
在第一系数控制块434中,步骤434-2将系数更新步骤431和自适应滤波步骤432内所用的抽头长度(抽头总数)从原始值M0改变我较小值M1。选择较小值M1使得可以减弱直接声音和初始反射声音。
在第一系数控制块434中,步骤434-3在步骤434-2之后。步骤434-3初始化系数更新步骤431所用的系数和自适应滤波步骤432所用的系数。在步骤434-3之后,程序进入步骤435。
步骤434-1判断的第一实例如下。步骤434-1计算子带回声信号dj(n)与子带误差信号e2j(n)之间功率的子带ERLE(回声返回损失增强)之比。步骤434-1计算子带ERLE之比的当前样本值与子带ERLE之比紧靠其前样本值的子带差值Dj(n)。步骤434-1将差值Dj(n)与预定阈值比较。当子带差值D(n)超过阈值时,步骤434-1判断更新部分431内的内部系数和自适应滤波器432内的系数应该初始化。否则,步骤434-1判断更新系数部分431使用的内部系数和自适应滤波器432使用的系数不应该初始化。
步骤434-1判断的第二实例如下。步骤434-1计算子带回声信号dj(n)与子带误差信号e2j(n)之间功率的子带ERLE(回声返回损失增强)之比。步骤434-1判断子带ERLE之比是否在预定数量的连续样本内持续下跌。如果子带ERLE之比在预定数量的连续样本内持续跌落,则步骤434-1判断更新部分431内的内部系数和自适应滤波器432内的系数应该初始化。否则,步骤434-1判断更新部分431内的内部系数和自适应滤波器432内的系数不应该初始化。
步骤435周期性地判断系数是否应该从自适应滤波步骤432传送至主滤波过程433,具体而言即是否满足预定条件。步骤435作出判断的周期等于子带远端信号xj(n)的一个样本。步骤435作出判断的周期可以等于另一预定数值。步骤435所用预定条件涉及子带误差信号e1j(n)与子带误差信号e2j(n)之比、子带误差信号e1j(n)与子带误差信号e2j(n)之差和第一子带伪回声信号y1j(n)与子带回声信号dj(n)之间的相关值中的至少一个。预定条件的典型例子是子带误差信号e1j(n)小于子带回声信号dj(n)某一水平以上和子带误差信号e1j(n)是否小于子带误差信号e2j(n)。当步骤435判断预定条件满足,则程序从步骤435进入步骤436。否则程序从步骤435进入开始退出本步骤序列。
步骤436将系数从自适应滤波步骤432传送至主滤波步骤433。因此,在这种情况下,主滤波步骤433在程序段下一执行周期内根据新传送的系数产生第二子带伪回声信号y2j(n)。
第二系数控制块437包括步骤437-1、437-2和437-3。步骤437-1在步骤436之后。步骤437-1检查系数更新步骤431和自适应滤波步骤432中所用当前抽头长度是否等于较小值M1。当当前抽头长度等于较小值M1时,程序从步骤437-1进入步骤437-2。否则,程序从步骤437-1返回步骤431。
在第二系数控制块437内,步骤437-2将抽头长度(用于系数更新步骤431和自适应滤波步骤432)返回原始值M0。步骤437-3在步骤437-2之后。步骤437-3初始化系数更新步骤431所用的内部系数和自适应滤波步骤432所用的系数。在步骤437-3之后,进入开始退出本步骤序列。
如上所述,抽头长度可以在原始值M0与较小值M1之间改变。按照这种设计,回声抵消器可以快速跟随回声产生条件的变化。
如上所述,每个远端信号x(n)和回声信号d(n)的频带被分割为子带。回声抵消过程逐个子带地实现。这种设计可以使回声抵消器快速跟随回声产生条件的变化。
第三实施例图9示出了按照本发明第三实施例,它除了下述设计变化以外与第一实施例类似。本发明第三实施例包括DSP20B代替DSP20(参见图2)。
DSP20B包括输入/输出端口的组合、处理部分、ROM和RAM。DSP20B按照存储在ROM内的控制程序工作。按照控制程序,DSP20B构成响应数字远端信号x(n)并将回声分量从A/D转换器24输出信号中去除的回声抵消器。DSP20B产生数字无回声信号作为数字误差信号e2(n)。数字远端信号x(n)包含样本序列。而且数字误差信号e2(n)具有样本序列。这里“n”表示当前样本。DSP20B输出向远端侧发送的数字误差信号e2(n)。
图10示出的更象是DSP20B的操作流程图而非DSP20B硬件细节。参见图10,DSP20B编程为构成更新部分501、数字自适应滤波器502、数字主滤波器503、判断部分504、控制部分505、计数器506和减法器507和509。
自适应滤波器502构成后台滤波器,其工作特性由系数(抽头系数)确定。更新部分501根据预定算法(例如NLMS算法、FRLS算法或者基于另一最小平方法算法)更新自适应滤波器502的系数以响应误差信号e1(n)和远端信号x(n)。更新部分501具有作为产生自适应滤波器502内系数的基础的内部系数(内部抽头系数)。更新部分501和自适应滤波器502协同识别或估计回声路径,并且产生第一伪回声信号y1(n)以响应远端信号x(n)和误差信号e1(n)。减法器507产生作为回声信号d(n)与第一伪回声信号y1(n)的差值的误差信号e1(n)。数字回声信号d(n)包含样本序列。
主滤波器503构成前台滤波器,其工作特性由系数(抽头系数)确定。主滤波器503产生第二伪回声信号y2(n)以响应远端信号x(n)。第二伪回声信号y2(n)设计为抵消返回远端侧的回声信号d(n)。判断部分504周期性地判断系数是否应该从自适应滤波器502传送至主滤波器503,具体而言即是否满足预定条件。判断部分504作出判断的周期等于远端信号x(n)的一个样本。判断部分504作出判断的周期可以等于另一预定数值。判断部分504所用预定条件涉及误差信号e1(n)与误差信号e2(n)之比、误差信号e1(n)与误差信号e2(n)之差和第一伪回声信号y1(n)与回声信号d(n)之间的相关值。预定条件的典型例子是误差信号e1(n)小于回声信号d(n)某一水平以上和误差信号e1(n)是否小于误差信号e2(n)。如果判断部分504判断预定条件满足,则判断部分504将系数从自适应滤波器502传送至主滤波器503。因此,在这种情况下,主滤波器503根据新传送的系数产生第二伪回声信号y2(n)。减法器509产生作为回声信号d(n)与第二伪回声信号y2(n)之差的误差信号e2(n)。误差信号e2(n)作为无回声信号被送至远端侧。另一方面,如果判断部分504判断不满足预定条件,则判断部分504不执行系数从自适应滤波器502至主滤波器503的传送。判断部分504将判断结果通知控制部分。
控制部分505判断更新部分501内的内部系数(内部抽头系数)和自适应滤波器502内的系数是否应该初始化。当判断结果为正时,控制部分505将更新部分501和自适应滤波器502的抽头长度(抽头总数)从原始值M0改变为预定值M1,并且初始化更新部分501内的内部系数和自适应滤波器502内的系数。此外,控制部分505馈送复位信号到计数器506。预定值M1小于原始值M0。选定较小的值M1从而可以减弱直接的声音和初始反射声音。当判断结果为负时,控制部分505不执行初始化。
控制部分505判断的第一实例如下。控制部分505计算回声信号d(n)与误差信号e2(n)之间功率的ERLE(回声返回损失增强)之比。控制部分505计算ERLE之比的当前样本值与ERLE之比紧靠其前样本值之差D(n)。控制部分505将差值D(n)与预定阈值比较。当差值D(n)超过阈值时,控制部分505更新部分501内的内部系数和自适应滤波器502内的系数应该初始化。否则,控制部分505判断更新部分501内的内部系数和自适应滤波器502内的系数不应该初始化。
控制部分505判断的第二实例如下。控制部分505计算回声信号d(n)与误差信号e2(n)之间功率的ERLE(回声返回损失增强)之比。控制部分505判断ERLE之比是否在预定数量的连续样本内持续下跌。如果ERLE之比在预定数量的连续样本内持续跌落,则控制部分505判断更新部分501内的内部系数和自适应滤波器502内的系数应该初始化。否则,控制部分505判断更新部分501内的内部系数和自适应滤波器502内的系数不应该初始化。
计数器506对远端信号x(n)的样本进行计数。计数器506将代表计数样本数的信号送至控制部分505。计数的样本数在计数器506从控制部分505接收到复位信号时复位。
如果当前抽头长度等于较小值M1并且控制部分505被通知判断部分504的判断结果为正,则控制部分505使更新部分501和自适应滤波器502的抽头长度返回原始值M0,并且初始化更新部分501内的内部系数和自适应滤波器502内的系数。
如果从计数器506输送的信号所代表的计数样本数超过预定阈值数但是控制部分505未被通知判断部分504的判断结果为正,即如果具有较小抽头长度M1的系数未在给定时间内从自适应滤波器502传送至主滤波器503,则控制部分505使更新部分501和自适应滤波器502的抽头长度返回原始值M0,并且初始化更新部分501内的内部系数和自适应滤波器502内的系数。当更新部分501采用FRLS算法时,阈值数设定为等于较小值M1乘以3。
图11为DSP20B控制程序段的流程图。通常情况下,对于远端信号x(n)和回声信号d(n)的每个样本都执行程序段。如图11所示,程序段的第一块包括步骤601-1和601-2。步骤601-1判断当前抽头长度是否等于较小值M1。当当前抽头长度等于较小值M1时,程序从步骤601-1进入步骤601-2。否则,程序从步骤601-1进入步骤602。
步骤601-2使计数样本数递增“1”。在步骤601-2之后,程序进入步骤602。
步骤602根据预定算法(例如NLMS算法、FRLS算法或基于最小平方法的算法)更新自适应滤波器内的系数(抽头系数)以响应误差信号e1(n)和远端信号x(n)。步骤602将内部系数(内部抽头系数)用作产生自适应滤波器内系数的基础。
步骤602后面的步骤603根据步骤602更新的系数执行自适应滤波过程,从而产生第一伪回声信号y1(n)以响应远端信号x(n)和误差信号e1(n)。此外,步骤603产生作为回声信号d(n)与第一伪回声信号y1(n)之差的误差信号e1(n)。
步骤603之后的步骤604根据系数(抽头系数)执行主滤波过程,并且产生第二伪回声信号y2(n)以响应远端信号x(n)。此外,步骤604产生作为回声信号d(n)与第二伪回声信号y2(n)之差的误差信号e2(n)。步骤604向远端侧输出误差信号e2(n)作为无回声信号。
第一系数控制块605包括步骤605-1、605-2、605-3和605-4。步骤605-1跟随步骤604之后。步骤605-1判断系数更新步骤602所用内部系数和自适应滤波步骤603所用系数是否应该初始化。当判断结果为正时,程序从步骤605-1进入步骤605-2。当判断结果为负时,程序从步骤605-1进入步骤606。
在第一系数控制块605中,步骤605-2将系数更新步骤602和自适应滤波步骤603内所用的抽头长度(抽头总数)从原始值M0改变为较小值M1。选择较小值M1使得可以减弱直接声音和初始反射声音。
在第一系数控制块605中,步骤605-3在步骤605-2之后。步骤605-3初始化系数更新步骤602所用的系数和自适应滤波步骤603所用的系数。步骤605-4在605-3之后。步骤605-4将计数的样本数复位至“0”,在步骤605-4之后程序进入步骤606。
步骤605-1判断的第一实例如下。步骤605-1计算回声信号d(n)与误差信号e2(n)之间功率的ERLE(回声返回损失增强)之比。步骤605-1计算ERLE之比的当前样本值与ERLE之比紧随其后样本值之差D(n)。步骤605-1将差值D(n)与预定阈值比较。当差值D(n)超过阈值时,步骤605-1判断系数更新步骤602所用内部系数和自适应滤波步骤603所用系数应该初始化。否则,步骤605-1判断系数更新步骤602内所用内部系数和自适应滤波步骤603所用系数不应该初始化。
步骤605-1判断的第二实例如下。步骤605-1计算回声信号d(n)与误差信号e2(n)之间功率的ERLE(回声返回损失增强)之比。步骤605-1判断ERLE之比是否在预定数量的连续样本内持续下跌。如果ERLE之比在预定数量的连续样本内持续跌落,则步骤605-1判断系数更新步骤602所用内部系数和自适应滤波步骤603所用系数应该初始化。否则,步骤605-1判断系数更新步骤602内所用内部系数和自适应滤波步骤603所用系数不应该初始化。
步骤606周期性地判断系数是否应该从自适应滤波步骤603传送至主滤波步骤604,具体而言即是否满足预定条件。步骤606作出判断的周期等于远端信号x(n)的一个样本。步骤606作出判断的周期可以等于另一预定数值。步骤606所用预定条件涉及误差信号e1(n)与误差信号e2(n)之比、误差信号e1(n)与误差信号e2(n)之差和第一伪回声信号y1(n)与回声信号d(n)之间的相关值中的至少一个。预定条件的典型例子是误差信号e1(n)小于回声信号d(n)某一水平以上和误差信号e1(n)是否小于误差信号e2(n)。当步骤606判断预定条件满足,则程序从步骤606进入步骤607。否则程序从步骤606进入第三系数控制块609。
步骤607将系数从自适应滤波步骤603传送至主滤波步骤604。因此,在这种情况下,主滤波步骤604在程序段下一执行周期内根据新传送的系数产生第二伪回声信号y2(n)。
第二系数控制块608包括步骤608-1、608-2和608-3。步骤608-1在步骤607之后。步骤608-1检查系数更新步骤602和自适应滤波步骤603中所用当前抽头长度是否等于较小值M1。当当前抽头长度等于较小值M1时,程序从步骤608-1进入步骤608-2。否则,程序从步骤608-1返回块601内的步骤601-1。
在第二系数控制块608内,步骤608-2将抽头长度(用于系数更新步骤602和自适应滤波步骤603)返回原始值M0。步骤608-3在步骤608-2之后。步骤608-3初始化系数更新步骤602所用的内部系数和自适应滤波步骤603所用的系数。在步骤608-3之后,程序返回块601内的步骤601-1。
第三系数控制块609包括步骤609-1、609-2和609-3。步骤609-1在步骤606之后。步骤609-1检查系数更新步骤602和自适应滤波步骤603中所用当前抽头长度是否等于较小值M1。当当前抽头长度等于较小值M1时,程序从步骤609-1进入步骤609-2。否则,程序从步骤609-1返回块601内的步骤601-1。
在第三系数控制块609内,步骤609-2判断计数样本数是否超过预定阈值数T1。当计数样本数超过阈值数T1时,程序从步骤609-2进入步骤609-3。否则,程序从步骤609-2返回块601内的步骤601-1。
在第三系数控制块609内,步骤609-3将抽头长度(用于系数更新步骤602和自适应滤波步骤603)返回原始值M0。步骤609-4在步骤609-3之后。步骤609-4初始化系数更新步骤602所用的内部系数和自适应滤波步骤603所用的系数。步骤609-5在步骤609-4之后,步骤609-5将计数样本数复位为零。在步骤609-5之后,程序返回块601内的步骤601-1。
如上所述,抽头长度可以在原始值M0与较小值M1之间改变。按照这种设计,回声抵消器可以快速跟随回声产生条件的变化。
第四实施例图12示出了按照本发明第四实施例,它除了下述设计变化以外与第一实施例类似。本发明第四实施例包括DSP20C代替DSP20(参见图2)。
DSP20C包括输入/输出端口的组合、处理部分、ROM和RAM。DSP20C按照存储在ROM内的控制程序工作。按照控制程序,DSP20C构成响应数字远端信号x(n)并将回声分量从A/D转换器24输出信号中去除的回声抵消器。DSP20C产生数字无回声信号作为数字误差信号e2(n)。数字远端信号x(n)包含样本序列。而且数字误差信号e2(n)具有样本序列。这里“n”表示当前样本。DSP20C输出向远端侧发送的数字误差信号e2(n)。
图13示出的更象是DSP20C的操作流程图而非DSP20C硬件细节。参见图13,DSP20C编程为构成更新部分701、数字自适应滤波器702、数字主滤波器703、判断部分704、控制部分705和减法器717和719。
自适应滤波器702构成后台滤波器,其工作特性由系数(抽头系数)确定。更新部分701根据预定算法(例如NLMS算法、FRLS算法或者基于另一最小平方法算法)更新自适应滤波器702的系数以响应误差信号e1(n)和远端信号x(n)。更新部分701具有作为产生自适应滤波器702系数的基础的内部系数(内部抽头系数)。更新部分701和自适应滤波器702协同识别或估计回声路径,并且产生第一伪回声信号y1(n)以响应远端信号x(n)和误差信号e1(n)。减法器717产生作为回声信号d(n)与第一伪回声信号y1(n)的差值的误差信号e1(n)。数字回声信号d(n)包含样本序列。
主滤波器703构成前台滤波器,其工作特性由系数(抽头系数)确定。主滤波器703产生第二伪回声信号y2(n)以响应远端信号x(n)。第二伪回声信号y2(n)设计为抵消返回远端侧的回声信号d(n)。判断部分704周期性地判断系数是否应该从自适应滤波器702传送至主滤波器703,具体而言即是否满足预定条件。判断部分704作出判断的周期等于远端信号x(n)的一个样本。判断部分704作出判断的周期可以等于另一预定数值。判断部分704所用预定条件涉及误差信号e1(n)与误差信号e2(n)之比、误差信号e1(n)与误差信号e2(n)之差和第一伪回声信号y1(n)与回声信号d(n)之间的相关值。预定条件的典型例子是误差信号e1(n)小于回声信号d(n)某一水平以上和误差信号e1(n)是否小于误差信号e2(n)。如果判断部分704判断预定条件满足,则判断部分704将系数从自适应滤波器702传送至主滤波器703。因此,在这种情况下,主滤波器703根据新传送的系数产生第二伪回声信号y2(n)。减法器719产生作为回声信号d(n)与第二伪回声信号y2(n)之差的误差信号e2(n)。误差信号e2(n)作为无回声信号被送至远端侧。另一方面,如果判断部分704判断不满足预定条件,则判断部分704不执行系数从自适应滤波器702至主滤波器703的传送。判断部分704将判断结果通知控制部分。
控制部分705根据回声信号d(n)和误差信号e2(n)判断更新部分701内的内部系数(内部抽头系数)和自适应滤波器702内的系数是否应该初始化。控制块705包括计算部分706、存储部分707、减法部分708和比较部分709。
在控制块705中,计算部分706按照下列方程从当前和前一回声信号d(n)和误差信号e2(n)的样本计算ERLE(回声返回损失增强)值ERLE(n)。
ERLE(n)=10*log10(Ad/Ae)…(1)Ad=Σi=0N{d(n-i)}2···(2)]]>Ae=Σi=0N{e2(n-i)}2···(3)]]>计算值ERLE(n)对应当前样本。计算部分706将当前计算值ERLE(n)通知给存储部分707和减法部分708。存储部分707暂时存储计算值ERLE(n)。存储部分707向减法部分708输送作为前一计算值ERLE(n-1)的存储值,它对应紧靠在当前样本的前一样本。减法器708将减法结果通知比较部分709。比较部分709将减法结果与预定正阈值“α”比较。当减法结果大于阈值“α”时,比较部分709判断更新部分701内的内部系数和自适应滤波器702内的系数应该初始化。在这种情况下,比较部分709执行更新部分701内内部系数和自适应滤波器702内系数的初始化。计算的ERLE值的剧烈下降导致减法结果超过阈值“α”。另一方面,当减法结果未超过阈值“α”时,比较部分709判断更新部分701内的内部系数和自适应滤波器702内的系数应该初始化。在这种情况下,比较部分709不执行初始化。
图14为DSP20C控制程序段的流程图。通常情况下,对于远端信号x(n)和回声信号d(n)的每个样本都执行程序段。如图14所示,程序段的第一步骤801根据预定算法(例如NLMS算法、FRLS算法或基于最小平方法的算法)更新自适应滤波器内的系数(抽头系数)以响应误差信号e1(n)和远端信号x(n)。步骤801将内部系数(内部抽头系数)用作产生自适应滤波器内系数的基础。
步骤801后面的步骤802根据步骤801更新的系数执行自适应滤波过程,从而产生第一伪回声信号y1(n)以响应远端信号x(n)和误差信号e1(n)。此外,步骤802产生作为回声信号d(n)与第一伪回声信号y1(n)之差的误差信号e1(n)。
步骤802之后的步骤803根据系数(抽头系数)执行主滤波过程,并且产生第二伪回声信号y2(n)以响应远端信号x(n)。此外,步骤803产生作为回声信号d(n)与第二伪回声信号y2(n)之差的误差信号e2(n)。步骤803向远端侧输出误差信号e2(n)作为无回声信号。
控制块804包括步骤804-1、804-2和804-3。步骤804-1跟随步骤803之后。步骤804-1按照上述方程(1)、(2)和(3)从当前和前一回声信号d(n)和误差信号e2(n)的样本计算ERLE(回声返回损失增强)值ERLE(n)。计算值ERLE(n)对应本样本。步骤804-1将计算值ERLE(n)存入DSP20C内的RAM中。
在控制块804内,步骤804-2在步骤804-1之后。步骤804-2从DSP20C内的RAM中读取前一计算值ERLE(n),它在程序段紧接在前面的执行周期内被存储下来。步骤804-2将当前计算值ERLE(n)从前一计算值ERLE(n-1)中减去。步骤804-2将减法结果与预定正阈值“α”比较。当减法结果大于阈值“α”时,步骤804-2判断更新部分801所用内部系数和自适应滤波器802所用系数应该初始化。在这种情况下,程序从步骤804-2进入步骤804-3。另一方面,当减法结果未超过阈值“α”时,步骤804-2判断更新部分801所用内部系数和自适应滤波器802所用系数不应该初始化。在这种情况下,程序从步骤804-2进入步骤805。
在控制块804内,步骤804-3初始化系数更新步骤801所用系数和自适应滤波步骤802所用系数。在步骤804-3之后,程序进入步骤805。
步骤805周期性地判断系数是否应该从自适应滤波步骤802传送至主滤波步骤803,具体而言即是否满足预定条件。步骤805作出判断的周期等于远端信号x(n)的一个样本。步骤805作出判断的周期可以等于另一预定数值。步骤805所用预定条件涉及误差信号e1(n)与误差信号e2(n)之比、误差信号e1(n)与误差信号e2(n)之差和第一伪回声信号y1(n)与回声信号d(n)之间的相关值中的至少一个。预定条件的典型例子是误差信号e1(n)小于回声信号d(n)某一水平以上和误差信号e1(n)是否小于误差信号e2(n)。当步骤805判断预定条件满足,则程序从步骤805进入步骤806。否则程序从步骤805返回步骤801。
步骤806将系数从自适应滤波步骤802传送至主滤波步骤803。因此,在这种情况下,主滤波步骤803在程序段下一执行周期内根据新传送的系数产生第二伪回声信号y2(n)。在步骤806之后,程序返回步骤801。
第五实施例图15示出了按照本发明第五实施例,它除了下述设计变化以外与第一实施例类似。本发明第五实施例包括DSP20D代替DSP20(参见图2)。
DSP20D包括输入/输出端口的组合、处理部分、ROM和RAM。DSP20D按照存储在ROM内的控制程序工作。按照控制程序,DSP20D构成响应数字远端信号x(n)并将回声分量从A/D转换器24输出信号中去除的回声抵消器。DSP20D产生数字无回声信号作为数字误差信号e2(n)。数字远端信号x(n)包含样本序列。而且数字误差信号e2(n)具有样本序列。这里“n”表示当前样本。DSP20D输出向远端侧发送的数字误差信号e2(n)。
图16示出的更象是DSP20D的操作流程图而非DSP20D硬件细节。参见图16,DSP20D编程为构成更新部分901、数字自适应滤波器902、数字主滤波器903、判断部分904、控制部分905和减法器917和919。
自适应滤波器902构成后台滤波器,其工作特性由系数(抽头系数)确定。更新部分901根据预定算法(例如NLMS算法、FRLS算法或者基于另一最小平方法算法)更新自适应滤波器902的系数以响应误差信号e1(n)和远端信号x(n)。更新部分901具有作为产生自适应滤波器902内系数的基础的内部系数(内部抽头系数)。更新部分901和自适应滤波器902协同识别或估计回声路径,并且产生第一伪回声信号y1(n)以响应远端信号x(n)和误差信号e1(n)。减法器917产生作为回声信号d(n)与第一伪回声信号y1(n)的差值的误差信号e1(n)。数字回声信号d(n)包含样本序列。
主滤波器903构成前台滤波器,其工作特性由系数(抽头系数)确定。主滤波器903产生第二伪回声信号y2(n)以响应远端信号x(n)。第二伪回声信号y2(n)设计为抵消返回远端侧的回声信号d(n)。判断部分904周期性地判断系数是否应该从自适应滤波器902传送至主滤波器903,具体而言即是否满足预定条件。判断部分904作出判断的周期等于远端信号x(n)的一个样本。判断部分904作出判断的周期可以等于另一预定数值。判断部分904所用预定条件涉及误差信号e1(n)与误差信号e2(n)之比、误差信号e1(n)与误差信号e2(n)之差和第一伪回声信号y1(n)与回声信号d(n)之间的相关值。预定条件的典型例子是误差信号e1(n)小于回声信号d(n)某一水平以上和误差信号e1(n)是否小于误差信号e2(n)。如果判断部分904判断预定条件满足,则判断部分904将系数从自适应滤波器902传送至主滤波器903。因此,在这种情况下,主滤波器903根据新传送的系数产生第二伪回声信号y2(n)。减法器919产生作为回声信号d(n)与第二伪回声信号y2(n)之差的误差信号e2(n)。误差信号e2(n)作为无回声信号被送至远端侧。另一方面,如果判断部分904判断不满足预定条件,则判断部分904不执行系数从自适应滤波器902至主滤波器903的传送。
控制部分905根据回声信号d(n)和误差信号e2(n)判断更新部分901内的内部系数(内部抽头系数)和自适应滤波器902内的系数是否应该初始化。控制块905包括计算部分906、存储部分907、比较部分908以及存储/判断部分909。
在控制块905中,计算部分906按照上述方程(1)、(2)和(3)从当前和前一回声信号d(n)和误差信号e2(n)的样本计算ERLE(回声返回损失增强)值ERLE(n)。计算值ERLE(n)对应当前样本。计算部分906将当前计算值ERLE(n)通知给存储部分907和减法部分908。存储部分907暂时存储计算值ERLE(n)。存储部分907向比较部分908输送作为前一计算值ERLE(n-1)的存储值,它对应紧靠在当前样本的前一样本。比较部分908将当前计算值ERLE(n)与前一计算值ERLE(n-1)进行比较。具体而言,比较部分908判断当前计算值ERLE(n)是否小于前一计算值ERLE(n-1),即是否ERLE(n)<ERLE(n-1)。比较部分908将判断结果(比较结果)通知存储/判断部分909。从当前样本开始的连续预定数量“m”个样本的比较结果存储在存储/判断部分909内。存储/判断部分909判断是否所有存储的比较结果(所有的存储判断结果)都为正,即是否满足下列关系。
ERLE(n)<ERLE(n-1)<ERLE(n-2)<…<ERLE(n-m+1)…(4)关系式(4)意味着计算的ERLE值持续预定数量“m”个连续样本减小。当满足关系式(4)时,存储/判断部分909判断更新部分901内的内部系数和自适应滤波器902内的系数应该初始化。在这种情况下,存储/判断部分909执行更新部分901内内部系数和自适应滤波器902内系数的初始化。另一方面,当不满足关系式(4)时,存储/判断部分909判断更新部分901内的内部系数和自适应滤波器902内的系数不应该初始化。在这种情况下,存储/判断部分909不执行初始化。
图17为DSP20D控制程序段的流程图。通常情况下,对于远端信号x(n)和回声信号d(n)的每个样本都执行程序段。如图17所示,程序段的第一步骤1001根据预定算法(例如NLMS算法、FRLS算法或基于最小平方法的算法)更新自适应滤波器内的系数(抽头系数)以响应误差信号e1(n)和远端信号x(n)。步骤1001将内部系数(内部抽头系数)用作产生自适应滤波器内系数的基础。
步骤1001后面的步骤1002根据步骤1001更新的系数执行自适应滤波过程,从而产生第一伪回声信号y1(n)以响应远端信号x(n)和误差信号e1(n)。此外,步骤1002产生作为回声信号d(n)与第一伪回声信号y1(n)之差的误差信号e1(n)。
步骤1002之后的步骤1003根据系数(抽头系数)执行主滤波过程,并且产生第二伪回声信号y2(n)以响应远端信号x(n)。此外,步骤1003产生作为回声信号d(n)与第二伪回声信号y2(n)之差的误差信号e2(n)。步骤1003向远端侧输出误差信号e2(n)作为无回声信号。
控制块1004包括步骤1004-1、1004-2(n)、1004-2(n-1)…和1004-2(n-m+2)和1004-3。步骤1004-1跟随步骤1003之后。步骤1004-1按照上述方程(1)、(2)和(3)从当前和前一回声信号d(n)和误差信号e2(n)的样本计算ERLE(回声返回损失增强)值ERLE(n)。计算值ERLE(n)对应本样本。步骤804-1将计算值ERLE(n)存入DSP20D内的RAM中。
在控制块1004内,步骤1004-2(n)在步骤1004-1之后。步骤1004-2(n)从DSP20D内的RAM中读取当前计算值ERLE(n)和前一计算值ERLE(n-1)。步骤1004-2(n)判断当前计算值ERLE(n)是否小于前一计算值ERLE(n-1),即是否ERLE(n)<ERLE(n-1)。当ERLE(n)<ERLE(n-1)。时,程序从步骤1004-2(n)进入步骤1004-2(n-1)。否则,程序从步骤1004-2(n)进入步骤1005。
在控制块1004内,步骤1004-2(n)后连续跟随步骤1004-2(n-1)、…、1004-2(n-m+2)。步骤1004-2(n-1)、…1004-2(n-m+2)的功能与步骤1004-2(n)基本相同。例如步骤1004-2(n-1)判断是否ERLE(n-1)<ERLE(n-2)。当ERLE(n-1)<ERLE(n-2)时,程序从步骤1004-2(n-1)进入步骤1004-2(n-2)。否则程序从步骤1004-2(n-1)进入步骤1005。例如步骤1004-2(n-m+2)判断是否ERLE(n-m+2)<ERLE(n-m+1)。当ERLE(n-m+2)<ERLE(n-m+1)时,程序从步骤1004-2(n-m+2)进入步骤1004-2(n-2)。否则程序从步骤1004-2(n-m+2)进入步骤1005。
在控制块1004内,步骤1004-3判断更新步骤1001所用系数和自适应滤波步骤1002所用系数是否应该初始化。步骤1004-3执行系数更新步骤1001所用的内部系数和自适应滤波步骤1002所用系数的初始化。在步骤1004-3之后,程序进入步骤1005。
步骤1005周期性地判断系数是否应该从自适应滤波步骤802传送至主滤波步骤1003,具体而言即是否满足预定条件。步骤1005作出判断的周期等于远端信号x(n)的一个样本。步骤1005作出判断的周期可以等于另一预定数值。步骤1005所用预定条件涉及误差信号e1(n)与误差信号e2(n)之比、误差信号e1(n)与误差信号e2(n)之差和第一伪回声信号y1(n)与回声信号d(n)之间的相关值中的至少一个。预定条件的典型例子是误差信号e1(n)小于回声信号d(n)某一水平以上和误差信号e1(n)是否小于误差信号e2(n)。当步骤1005判断预定条件满足,则程序从步骤1005进入步骤1006。否则程序从步骤1005返回步骤1001。
步骤1006将系数从自适应滤波步骤1002传送至主滤波步骤1003。因此,在这种情况下,主滤波步骤1003在程序段下一执行周期内根据新传送的系数产生第二伪回声信号y2(n)。在步骤1006之后,程序返回步骤1001。
权利要求
1.一种回声抵消方法,其特征在于包括以下步骤对远端信号和误差信号响应利用内部系数更新自适应滤波器的系数,自适应滤波器和内部系数具有抽头(tap)长度;提供自适应滤波器以响应远端信号产生第一伪回声信号;提供主滤波器以响应远端信号产生第二伪回声信号;判断更新步骤中的自适应滤波器系数和内部系数是否应该初始化;如果判断更新步骤中的自适应滤波器系数和内部系数应该初始化,则将自适应滤波器的抽头长度和更新步长设定为小于原始值的非原始值,并且在更新步骤内执行自适应滤波器系数和内部系数的初始化;判断自适应滤波器的系数是否应该传送至主滤波器;如果判断自适应滤波器的系数应该传送至主滤波器,则将自适应滤波器的系数传送至主滤波器;以及如果是在自适应滤波器的抽头长度和更新步长设定为非原始值之后执行自适应滤波器的系数至主滤波器的传送,则将自适应滤波器的抽头长度和更新步长设定为原始值,并且随后在更新步骤中执行自适应滤波器系数和内部系数的初始化。
2.如权利要求1所述的方法,其特征在于进一步包括以下步骤将远端信号分割为子带信号;将回声信号分割为子带信号;对于各子带信号,响应远端信号的子带信号分别产生第二子带伪回声信号;分别产生对应回声信号的子带信号与第二子带伪回声信号之间差异的子带误差信号;以及将各子带误差信号组合成全带误差信号;其中对每个子带信号施行回声抵消。
3.如权利要求1所述的方法,其特征在于进一步包括以下步骤如果在将自适应滤波器的抽头长度和更新步长设定为非原始值之后预定时间内未执行自适应滤波器系数传送至主滤波器,则使自适应滤波器的抽头长度和更新步长返回原始值。
4.一种初始化回声抵消器中系数的方法,其特征在于包括以下步骤对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率;计算当前样本与紧靠其前样本的ERLE比率之差;以及如果计算的差值大于预定阈值,则初始化更新自适应滤波器中所用的自适应滤波器系数和内部系数。
5.一种初始化回声抵消器中系数的方法,其特征在于包括以下步骤对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率;以及如果计算的连续多个样本的ERLE比率继续跌落,则初始化更新自适应滤波器中所用的自适应滤波器系数和内部系数。
6.如权利要求1所述的方法,其特征在于执行初始化的步骤包括以下步骤对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率;计算当前样本与紧靠其前样本的ERLE比率之差;以及如果计算的差值大于预定阈值,则初始化更新步骤中所用的自适应滤波器系数和内部系数。
7.如权利要求1所述的方法,其特征在于初始化步骤包括以下步骤对于每个样本计算回声信号与第二伪误差信号之间功率的ERLE(回声返回损失增强)比率;以及如果计算的连续多个样本的ERLE比率继续跌落,则初始化更新步骤中所用的自适应滤波器系数和内部系数。
8.如权利要求1所述的方法,其特征在于更新步骤采用最小平方法的系数更新算法。
9.一种回声抵消装置,其特征在于包括对远端信号和误差信号响应利用内部系数更新自适应滤波器的系数的装置,自适应滤波器和内部系数具有一抽头长度;提供自适应滤波器以响应远端信号产生第一伪回声信号的装置;提供主滤波器以响应远端信号产生第二伪回声信号的装置;判断更新方法中的自适应滤波器系数和内部系数是否应该初始化的装置;如果判断更新方法中的自适应滤波器系数和内部系数应该初始化,则将自适应滤波器的抽头长度和更新方法设定为小于原始值的非原始值,并且在更新方法内执行自适应滤波器系数和内部系数的初始化的装置;判断自适应滤波器的系数是否应该传送至主滤波器的装置;如果判断自适应滤波器的系数应该传送至主滤波器,则将自适应滤波器的系数传送至主滤波器的装置;以及如果是在自适应滤波器的抽头长度和更新方法设定为非原始值之后执行自适应滤波器的系数至主滤波器的传送,则将自适应滤波器的抽头长度和更新方法设定为原始值,并且随后在更新方法中执行自适应滤波器系数和内部系数的初始化的装置。
10.如权利要求9所述的装置,其特征在于进一步包括将远端信号分割为子带信号的装置;将回声信号分割为子带信号的装置;对各子带信号,响应远端信号的子带信号分别产生第二子带伪回声信号的装置;分别产生对应回声信号的子带信号与第二子带伪回声信号之间差异的子带误差信号的装置;以及将各子带误差信号组合成全带误差信号的装置;其中对每个子带信号施行回声抵消。
11.如权利要求9所述的装置,其特征在于进一步包括如果在将自适应滤波器的抽头长度和更新方法设定为非原始值之后预定时间内未执行自适应滤波器系数传送至主滤波器,则使自适应滤波器的抽头长度和更新方法返回原始值的装置。
12.一种初始化回声抵消器中系数的装置,其特征在于包括对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率的装置;计算当前样本与紧靠其前样本的ERLE比率之差的装置;以及如果计算的差值大于预定阈值,则初始化更新自适应滤波器中所用的自适应滤波器系数和内部系数的装置。
13.一种初始化回声抵消器中系数的装置,其特征在于包括对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率的装置;以及如果计算的连续多个样本的ERLE比率继续跌落,则初始化更新自适应滤波器中所用的自适应滤波器系数和内部系数的装置。
14.如权利要求9所述的装置,其特征在于执行初始化的装置包括对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率的装置;计算当前样本与紧靠其前样本的ERLE比率之差的装置;以及如果计算的差值大于预定阈值,则初始化更新方法中所用的自适应滤波器系数和内部系数的装置。
15.如权利要求9所述的装置,其特征在于执行初始化的装置包括对于每个样本计算回声信号与主滤波器产生的误差信号之间功率的ERLE(回声返回损失增强)比率的装置;以及如果计算的连续多个样本的ERLE比率继续跌落,则初始化更新方法中所用的自适应滤波器系数和内部系数的装置。
16.如权利要求9所述的装置,其特征在于更新装置采用最小平方法的系数更新算法。
17.一种记录介质,其特征在于存储了实现如权利要求1-8中任意一项所述方法的程序。
全文摘要
一种回声抵消方法,包括以下步骤:利用内部系数更新自适应滤波器的系数;提供自适应滤波器;提供主滤波器;判断更新步骤中的自适应滤波器系数和内部系数是否应初始化;如果应初始化,则将其抽头长度设定为小于原始值的非原始值,并且执行初始化;判断自适应滤波器的系数是否应该传送至主滤波器;如果判断应该传送,则执行传送;以及如果是在抽头长度设定为非原始值之后未执行传送,则将抽头长度设定为原始值,并且随后执行初始化。
文档编号H04M9/08GK1292617SQ0011999
公开日2001年4月25日 申请日期2000年6月30日 优先权日1999年7月1日
发明者寺田泰宏 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1