用于时钟漂移补偿的方法和系统的制作方法

文档序号:7941217阅读:337来源:国知局
专利名称:用于时钟漂移补偿的方法和系统的制作方法
技术领域
本发明涉及时钟漂移补偿。具体地,本发明涉及一种用于补偿播放单元和捕获单 元之间不同的采样率的方法,以及一种用于补偿播放单元和捕获单元之间不同的采样率的 时钟漂移补偿单元。本发明还涉及时钟漂移补偿单元的使用。
背景技术
在传统的会议系统或任何免提系统中,一个或多个麦克风捕获位置A的声波,并 且把所述声波变换为第一音频信号。第一音频信号被发送到位置B,在位置B处,电视机或 放大器和扬声器通过把在位置A产生的第一音频信号转换为声波来再现原始的声波。图1图示了在免提通信系统中典型的回声问题。来自远端(位置A)的数字音频 信号1101由数模转换器(DAC) 1301转换到模拟域,在扬声器放大器1302中被放大并且进 一步被扬声器1303转换为声信号。直接信号1304和由墙/天花板等1305反射的反射信 号1306都不希望被麦克风1308拾取。麦克风还拾取所想要的(例如谈话人员的)近端信 号1307。麦克风信号在麦克风放大器1309中被放大,并且在模数转换器1310中被数字化, 模数转换器1310输出未消回声的麦克风信号1202。如果未消回声的麦克风信号被发送到 远端,那么在远端站点的参与者可能会听到他们自己的回声,并且如果在远端存在类似的 系统,那么甚至可能出现吼鸣/反馈。为了解决这种问题,已经建议向数字麦克风信号路径增加听觉回声消除器1203。 这种消除器使用数字扬声器信号1101作为信号基准1201,并且对所有扬声器至麦克风路 径1304/1306进行估计,并且从未消回声的麦克风信号1202中减去这些估计,产生已消回 声的麦克风信号1204,其作为信号1102而被发送到远端。目前广泛使用两种主要方法来用于听觉回声消除器(canceller):全带消除器和 子带消除器。这两种消除器通常使用自适应FIR(有限脉冲响应)滤波器来用于回声路径 估计,然而分别在全带域和子带域中应用。在产品中所使用的听觉回声消除器一般包括未在此文档的图中示出的几个另外 的子块双向通话算法字块、非线性处理单元字块、缓和(comfort)的噪声产生字块等。为 简单明了起见,省略了这些子块,这是因为认为详细公开这些块对实现本发明的原理来说 并不是必要的。这些块可以发生变化,并且在论文、专利和文献中也有详细地记录。对于本 领域的技术人员来说,集成这些块是简单明了的。图2示出了基本的全带听觉回声消除器。来自远端2101的数字信号被作为信号2102传递到扬声器,并且还被用为扬声器 基准信号2103。通过自适应FIR滤波器2104过滤扬声器基准信号2103。此自适应滤波器将房间 的脉冲响应会聚到一起,并且对其进行跟踪。自适应FIR滤波器2104必须适应于初始会聚 和房间中的任何声音变化(门的打开,人的移动等)。为此,可以使用许多不同的自适应算 法,从廉价的(低处理能力的)LMS (最小均方),到诸如APA (仿射投影算法)和RLS (递归最小二乘方)等更高级且要求更多资源的算法。然而,所有这些算法共同使用FIR滤波器 更新回路2108来进行自适应。自适应FIR滤波器输出反转的回声估计2105,所述回声估计2105被添加到未消回 声的麦克风信号2106,从而计算已消回声的麦克风信号2107。其它方法使用子带处理。图3图示了此方法。来自远端3101的数字信号被作为信号3102传递到扬声器。还使用分析滤波器 3301将其划分为所选择数目的子带。使用另一(但是是同样的)分析滤波器3302来把未 消回声的麦克风信号3106划分为子带。对于每个子带来说,扬声器分析滤波器输出子带基准信号3203,其通过子带FIR 滤波器3204而被过滤,从而计算反转的子带回声估计3205。麦克风分析滤波器输出子带 未消回声的信号3206,其被添加到反转的回声估计,从而输出子带已消回声的麦克风信号 3207。已消回声的麦克风信号用于FIR滤波器的自适应,其被示为子带FIR滤波器更新回 路 3208。通过合成滤波器3303,来自所有子带的已消回声的麦克风信号还被一起会聚到全 带已消回声的麦克风信号3107。全带和子带回声消除器对从输出数字采样(2102/3102)到输入数字采样 (2106/3106)的响应进行估计。此响应受到信号所通过的任何软件或硬件的影响,所述软件 和硬件包括但不局限于采样率转换器、混频器、D/A转换器、扬声器、声耦合器、麦克风和A/ D转换器。在设计中,输入信号2106/3106中的采样率固有地等于在输出信号2102/3102中 的采样率。对于最佳性能来说,可控制的部分的响应(包括延迟)应当保持恒定。在良好设计的系统中,通过对D/A和A/D转换器使用相同的时钟源来确保同样的 采样率,而通过适当的硬件和软件设计来维持恒定的(或至少可预测的)延迟。然而,在一些设计中,对A/D和D/A转换器使用不同的时钟源。例如发生在下面的 情形中,在个人计算机(PC)中,A/D转换器和D/A转换器可能位于不同的卡上,分别在每个 卡上本地地产生转换时钟。典型而广泛使用的情形是,当由网络照相机对音频进行捕获(A/ D转换)的同时,由PC内置的声卡对音频进行播放(D/A转换)。在A/D转换器和D/A转换器之间的任何速率差异可能导致几个问题1.频移在从2102/3102信号到2106/3106信号的信号之间可能存在频移。线性 回声消除器并未被设计用于这种漂移,并且从而使得最大可获得的瞬间性能受到损害。2.时间漂移在扬声器信号2102/3102和麦克风信号2106/3106中的相同采样之 间的时间可能缓慢地改变,这要求回声消除器不断地重新自适应。回声消除器值只可以在 扬声器信号2102/3102具有足够高的功率时才重新自适应。因此,尽管时间延迟慢慢地改 变,不过在沉默期(低2102/3102功率)之后的作为响应的有效时间漂移可能足够大而产 生相当大的残余回声。 3.采样过量/不足由于为A/D转换器产生的采样与D/A转换器的消耗不相等, 所以在系统中的一个或多个地方可能采样过剩或不足。在A/D转换速率和D/A转换速率之间可能存在两种类型的漂移。这两种类型可以 同时存在。由于时钟源(晶体,振荡器等)与其标称值的偏差,会发生漂移。晶体具有改变的性能级。对于晶体而言,可以指定的一些参数是频率、稳定度、准确度(百万分之几或ppm), 以及在以上参数中由于温度变化所导致的变化极限。通常,没有两个晶体是完全相同的。 它们将以略微不同的频率振动,并且它们的其它特性也同样不同。这意味着如果A/D和D/ A转换器由根据不同晶体导出的时钟信号驱动,那么即使当所述晶体以相同的标称频率运 行,并且用于A/D和D/A的除法器相匹配时,在这些转换器运行的速率上仍然存在轻微的差 异。在这种情况下,A/D随时间推移产生的采样数与由D/A在相同时段内消耗的采样数并 不匹配。在其中,由A/D所产生的采样数与D/A消耗的采样数相比较的时段越长,则由A/D 和D/A所处理的采样数中的差异越大。由于不相容的采样率也可能出现漂移。当捕获/播放设备不支持音频流的采样率时,借助操作系统插入软件采样率转换器。然而,此采样率转换器可能只有有限的分辨率, 从而标称采样频率将改变。该差异随时间推移是恒定的,但是可能相当大。常常遇到的典 型值是0. 625%,即百万分之6250。图4图示了在PC中的播放和捕获系统(分别是4100和4200)的典型设置。应当 注意,精确的设置随着所选择的API和音频播放/捕获设备驱动器而发生改变。常常,为了 使系统工作,使用双重缓冲或类似方法。这在图中并未示出。如从软件应用的角度来看,附 图只是用来解释播放和捕获系统的主要属性。在播放系统4100中,DAC (数模转换器)4101由DACCLK 4102来计时,即DAC 4101 按照由DACCLK 4102给出的速率来消耗采样。DACCLK 4102通常由高出很多的晶振频率来 导出。DAC 4101—次消耗一个来自DAC FIFO 4103的采样。DAC FIFO可以用硬件或软件 来实现。当DAC FIFO 4103为空时,它消耗来自播放SRC(采样率转换器)4104的Nplay。utf 采样,播放SRC 4104又从播放环形缓冲器4112中消耗了必要数目的采样,所述播放环形缓 冲器4112是播放FIFO 4110的一部分。Nplaywt可以低至一,但是多个(采样组)也是常见 的(已经观察到Nplay。ut = 128)。利用与从播放FIFO消耗的采样相同数目的采样来更新播 放读取指针4113。软件应用的任务是用来根据播放写入指针4111确保在播放FIFO中填入 了正确数目的采样。类似地,在捕获系统4200中,ADC 4201由ADCCLK 4202计时,即以ADCCLK 4202的 速率来生成采样。ADCCLK 4202通常由更高的晶振频率来导出,但是如先前所描述,其不必 与ADCCLK相同。ADC—次向ADC FIFO 4203递送一个采样。ADC FIFO可以用硬件或软件 来实现。当ADC FIFO被充满,它向捕获SRC (采样率转换器)4204递送Neaptee个采样,捕获 SRC4204又向捕获环形缓冲器4212递送所计算数目的采样,所述捕获环形缓冲器4212是捕 获FIFO 4210的一部分。Neaptee可以低至一,但是更高的数目也是常见的。利用与被递送 到捕获FIFO的采样相同数目的采样来更新捕获读取指针4213。软件应用的任务是用于读 取捕获读取指针4211,以确保从捕获FIFO中消耗了正确数目的采样。软件应用4400分别向/从播放和捕获FIFO发送和接收采样。对于向文件或其它非计时的(imclocked)源读取/写入音频数据的应用来说,向/从播放/捕获FIFO生产/消耗正确数目的采样通常是简单的。即便对于从/向另一计时 的源/汇点(sink)获取/递送音频数据的单工应用来说,通过插入或移除一个或多个采样 来对向/从播放/捕获FIFO递送/消耗的采样数进行校正通常也是相当简明的。可以在 听觉未劣化的情况下执行这种插入或移除,并且这种技术是公知的。因为这种技术要插入或移除采样,所以会存在时间延迟的变化,但是对于大部分应用而言这是可接受的。然而,对于其中在由软件应用程序递送的采样和消耗的采样之间的精确关系是关 键的应用来说,必须寻找另一解决方案。以上是对于回声消除的情况而言的。但是应当指 出的是,还存在具有此要求的其它应用,例如测量应用等。

发明内容
本发明的目的是提供如在本说明书开头部分中所提及的一种方法、时钟漂移补偿 单元和所述时钟漂移补偿单元的使用,用于解决现有技术中的上述问题的至少一个。在所附独立权利要求中定义的特征表征了这种方法、时钟漂移补偿单元及其使用。


为了使本发明更易于被理解,下面的论述将参照附图,其中图1图示了在免提通信系统中典型的回声问题,图2是基本的全带听觉回声消除器的示意图,图3是基本的子带听觉回声消除器的示意图,图4图示了在PC中的播放和捕获系统的典型设置,图5图示了依照本发明的一个实施例的时钟漂移补偿器,图6图示了依照本发明的替换实施例的时钟漂移补偿器,图7和8描绘了用于补偿播放系统和捕获系统之间不同的采样率的流程图,图9图示了典型的指针更新方案。
具体实施例方式在下文中,将通过描述优选实施例并且参照附图来讨论本发明。然而,本领域技术 人员会认识到独立权利要求所定义的本发明范围内的其它应用和改型。本发明某些方面的基本思想是提供一种用于诸如PC之类的计算单元的时钟漂移 补偿器,从而对模拟-数字(A/D)和数字-模拟(D/A)转换器中的采样频率的差异进行补 偿,例如,在被连接到计算单元或在计算单元中所包括的音频I/O设备中的采样频率中的 差异。如上所述,图4图示了在PC中的播放系统4100和捕获系统4200的典型设置。在 图5中,依照本发明的某些原理,利用时钟漂移补偿器5300来扩展图4中的设置。时钟漂移 补偿器5300被配置来补偿播放和捕获信号中不同的采样频率。时钟漂移补偿器5300包括 公共高频率(HF)时钟5301、播放时间设备或播放时间估计器5311、播放时间校正器5312、 捕获时间设备或捕获时间估计器5321、和捕获时间校正器5322。漂移补偿器5300被配置 用来把数据写入到播放缓冲器5110中,所述播放缓冲器5110可以是队列缓冲器,尤其是诸 如循环缓冲器或环形缓冲器之类的FIFO缓冲器,并且从捕获缓冲器5210中读取数据,所述 捕获缓冲器5210也可以是队列缓冲器,尤其是诸如循环缓冲器或环形缓冲器之类的FIFO 缓冲器。此外,漂移补偿器5300被配置为向软件应用5400发送数据和从软件应用5400接 收数据。尽管为简单起见,对元件5400使用术语“软件应用”,不过应当理解,此元件实际上可以包括硬件和软件。元件5400在本说明书也被认为是计算单元,例如可以是音频回声消 除单元。时钟漂移补偿单元5300向软件应用5400提供来自公共HF时钟5301的高频率时 钟信号,使得软件应用与公共HF时钟5301同步。在本文中,相对于由捕获单元捕获的模拟信号和由播放单元输出的模拟信号的特 性而言,应将公共时钟的频率理解为是高的。例如可以使用在大约IMHz到IGHz范围内的 时钟频率。时钟漂移补偿器5300从播放FIFO 5110读取指针和公共HF时钟5301请求位置 信息,以及从捕获FIFO 5210写入指针和公共HF时钟5301请求位置信息。时钟漂移补偿 器5300使用位置和时钟信息来计算在公共HF时钟5301和播放采样数或播放读取指针之 间的第一关系,以及同样计算在公共HF时钟5301和捕获采样数或捕获写入指针之间的第 二关系。根据这些计算的关系,对于公共时钟域中的每个采样,可以在捕获FIFO中找到对 应采样,从而以公共时钟采样频率为软件应用5400创建输入信号。同样,对于播放域中的 每个采样,在来自软件应用的采样中查找对应采样,从而确保正确数目的采样被发送到播 放 FIFO。在下文中,更详细地举例描述了时钟漂移补偿器。如果环形缓冲器被用作缓冲器 (队列缓冲器,FIFO缓冲器),那么指针将回返(wrap)。当在下文中提及指针时,指的是未 回返的指针。未回返的指针是简明的,并且应当为本领域技术人员所公知。播放时间设备或播放时间估计器5311读取多个数据集,其中,每个数据集是公共 高频率时钟5301和播放读取指针5113的采样/读出。根据该多个数据集,估计在播放读 取指针和高频率时钟之间的关系。播放读取指针5111被用于表示DAC转换时钟5102。对 于DAC时间域中的每个采样时间,可以计算应用5400的相应时间(由应用基准时钟测量 的,公共HF时钟5301)。从而,可以由播放时间校正块5312通过使用最近的应用域采样和 子采样延迟滤波器来计算在播放(DAC)域中每个采样的正确采样值。最后,此采样被写入 到播放环形缓冲器5112中。应当注意,在相比于应用(公共)时钟5301,DAC转换时钟漂 移的情况下,基于时间校正器5312的输出产生的采样数与由所述时间校正器5312消耗的 采样数稍微(marginally)不同,即,它将作为采样率转换器来工作。同样,捕获时间设备或捕获时间估计器5321读取多个数据集,其中每个集是公共 高频率时钟5301和捕获写入指针5213的采样/读出。根据多个数据集,对在捕获写入指 针和高频率时钟之间的关系进行估计。捕获写入指针被用于表示ADC转换时钟5202。对于 应用5400的时间域中的每个采样时间(由应用基准时钟测量的,公共HF时钟5301),可以 计算ADC相应的时间。从而可以通过使用最接近的ADC域采样和已知的内插法,由捕获时 间校正块来计算应用的正确采样值。应当注意,在相比于ADC时钟5202,应用(公共)时 钟5301漂移的情况下,基于捕获时间校正器5321的输出产生的采样数与在捕获时间校正 器5321的输入处消耗的采样数稍微不同,即,它将作为采样率转换器工作。
仅对于在ADC和DAC之间的补偿来说,可以依照两种方式简化如图5所示的漂移 补偿器5300。依照本发明一个示例性实施例,应用(application)与DACCLK5102同步。在这种 情况下,播放读取指针5113充当公共时钟,并且捕获时间设备和时钟校正器使用此时钟作 为公共时钟5301,如图6中所图示。由于播放系统5100和软件应用5400是同步的,所以播放时间设备和时间校正器可以依照简化的甚至平常的方式进行操作,但是它们仍符合本发 明的原理。在此特定的实施例中,可以对第一关系进行设置而不是计算,而对第二关系进行计算。依照本发明的第二示例性实施例,应用与ADCCLK 5202同步。在此实施例中,捕获 写入指针5213充当公共时钟,并且播放时间估计器5311和播放时钟校正器5312使用此时 钟作为公共时钟5301。由于ADC和应用是同步的,所以捕获时间设备和时间校正器可以依 照简化的甚至平常的方式来进行操作,但是它们仍符合本发明的原理。在此特定的实施例 中,可以对第二关系进行设置而不是计算,而对第一关系进行计算。然而多数情况下,同步到一个信任的时钟源是有益的。第一,公共时钟应当具有高 分辨力(如后面所解释,播放或捕获指针不必是高分辨力的)。第二,软件应用5400应当使 用尽可能与现实世界时钟同步的时钟。当通信系统与另一系统通信时,或当测量系统指的 是现实世界时间的量度时,后一点是重要的。因此依照本发明一个实施例,稳定且信任的时钟源(不是DACCLK或ADCCLK)被选 择为公共HF时钟5301。此公共时钟还充当软件应用5400的基准时钟。例如,公共HF时钟 5301可以是PC的系统时钟。在此实施例中,第一和第二关系两者都要进行计算。图7和8依照本发明一个实施例示出了时钟漂移补偿器的操作概述的流程图表示 (在下面论述中将参考图5)。图7和8中的每个块表示在下面论述中进一步定义的过程。操作在步骤600处开始,其中软件应用5400开始和启动分别向播放/捕获系统 5100/5200发送5402数据和从播放/捕获系统5100/5200请求5401数据。依照一个本发 明示例性实施例,5400是音频回声消除器(AEC),用来经由通信网络从远端(未示出)接收 数字音频信号并且经由播放系统5100在扬声器上播放。来自近端的声音被捕获系统5200 捕获和数字化。如在背景技术部分中所描述的,AEC计算无回声音频信号,并且经由通信网 络把它发送回到远端(未示出)。存在使上述补偿方案复杂化的一些因素。当播放/捕获时间估计器5311/5321读取数据集(步骤601)时,无法同时完全获 取公共HF时钟5301和播放/捕获FIFO指针5113/5213。它们中的一个必须始终被首先 读取,并且另一个随后被读取。当然,当对数据集中的第一时钟进行读取时,第二时钟继续 运行。只要在读取之间的时间是恒定的,这就不会产生任何问题。然而,计算机硬件和应用 常常要求各种中断等,其随后可能会在读取之间产生可变的时间。在一些情况下,通过禁 用中断,时间估计器5311/5321可以确保在每个集中的两次读取之间的时间差异是可忽略 的,或者至少足够小使得可以通过过滤来去除时间不确定性(情况la)。然而,一些应用没 有禁用中断的权力,导致在读取之间存在显著的时间差异。由于一些应用没有禁用中断的权力,依照本发明的某些方面的方法和设备依照确 定的准则检查每个数据集,并且去除不符合所述准则的数据集。如在步骤602中所图示,对 于每个数据集来说,检查读出的HF时钟5301是否是可接受的。这可以通过如下步骤来进 行,首先读取公共HF时钟5301,然后读取FIFO指针5113/5213,接着读取另一个读取公共 HF时钟5301。现在,每个数据集包含三个数据点(三元组)而不是两个。通过分析多个数 据集,可以计算在两个公共HF时钟5301读出之间的时间分布。如果在数据集(三元组) 中的两次公共HF时钟5301读出之间的时间是异常的(依照分布而言过长),那么假定已经出现了一些不平常的情况(例如中断),这使数据集是不确定的。这种不确定的数据集必须 被取消资格(步骤605),只留下具有低不确定性的数据集来用于进一步计算(步骤603)。如上所述,另一问题是可能在相当大的步骤范围内更新FIFO指针。换句话说, FIFO缓冲器5110/5210可能并不总是一次写入/读取一个采样,而是定期地读取/写 入大量数据,例如一次128个采样或一次16个采样。因此,连续地读出播放/捕获指针 5113/5213可能给出相同的结果,或者两次连续的读取也可能相差很大的值。这借助图9中 的例子来图示。在此例子中,读取的数据集可能是(0;0)、(1 ;0)、(2;0)、(3;0)、(4;0)、 (5 ;2)、(6 ;2)、(7 ;2)、(8 ;2)、(9 ;4)、(10 ;4)等。这用作实际转换时钟的量化,并且如果没 有正确处理则可能会产生问题。可以直接看出,此量化引入了量化噪声,但是与“常规”量 化噪声不同,这种噪声不能被假定为白/随机过程;它是非常规则的并且与时钟相关。所述 噪声作为三角形信号类型而出现,这可能会带来混叠(alias)问题,并且当在采样时也会 有类似问题(由于CPU复杂性,所以数据集不应当被频繁读取)。依照本发明的某些方面,此问题可以通过当指针更新时读取FIFO指针5113/5213 来解决。由于更新之间的间隔期间CPU可以是空闲的,这节省了宝贵的CPU资源。典型情 况下,软件应用5400必须刚好在预计的指针更新之前确保/请求运行时间(例如使用时间 中断)。可以通过在初始阶段中分析FIFO的更新过程来查找预计的更新时间。例如,如果 FIFO—般以128个采样的块来更新,并且转换时钟5102/5202具有48kHz的频率,那么漂 移补偿器5300可以在更新之后在其恢复读取新的数据集之前,停止读取FIFO指针(5113 和/或5213)达大约N*128/48000秒(其中N是任何正整数,其根据在CPU复杂性和准确 度之间的折中来选择)。刚好在预计的更新之前,漂移补偿器5300读取三元组,直到指针 在两次连续的公共HF时钟读取之间更新。在实践中,这通过如下的步骤来实现,即,读取公 共HF时钟5301,然后读取FIFO指针5113/5213、HF时钟、FIFO指针等,直到指针已经被更 新,例如,C-l、P-l、C-2、P-2、C-3、P-3、C-4等,其中,C-标示时钟的读取并且P标示指针的 读取。如果FIFO指针5113/5213从P-I更新到P_2,那么正被登记的公共HF时钟5301是 C-2,或者是C-l、C-2和C-3的某个平均值(或加权)。正被登记的指针一般是P-I和P-2 的平均值(但是其它变量也是适用的)。为了符合先前的准则,在C-I和C-3之间的时间必 须不能高得异常,否则可能会丢弃数据集(步骤605)。从CPU负载的观点来看,最好在读取 指针时测试指针的转变。然而,为了减少时间的不确定性,即,(在这种情况下)确保从C-I 到C-3的时间尽可能低,以给定的时间来记录序列(直到预计的指针转变+余量),并且然 后确定该转变可能是有益的。
为了确保进一步的计算不会受到不正确或不确定的数据集的影响,需要解决又一 问题。由于个人计算机的缺陷,会遇到奇怪的和非预期的FIFO指针行为;非预期的更新步 骤,指针回退等。这种行为可能由试图补偿漂移、排队问题(无序执行请求)等的声卡驱动 程序引起。因此如步骤604中所图示,对于在步骤602未丢弃的每个数据集来说,执行另一 检查。如上所述,随时间推移来分析数据,并且还随着正常指针增加来保持统计数值。如果 按照异常值来更新指针,则将该数据集丢弃(步骤605)。例如,如果在一段时间内利用128 个采样来接连更新指针,与128个采样显著偏离的更新则被认为是不确定的数据集,由此 被丢弃。然而,由于采样率转换器5104/5204,一个采样的偏差(即以127或129个采样进 行的更新)必须被认为是有效的更新。
随时间推移,多对C和P数据在步骤602和步骤604中被批准,然后被登记(步骤 606)。此数据必须利用对所有不合格对取消资格的算法来处理,这意味着不必须是均勻采 样。此外,从对的噪声集合(来自情况Ia的噪声)中,必须以适当的准确度来估计在(由 C标示的)公共HF时钟5301和(由P标示的)指针5113/5213之间的关系。因此依照本 发明一个实施例,根据统计模型计算在公共时钟和捕获指针之间,以及在公共时钟和播放 指针之间的关系。在下文中,引入一些适当的线性回归方法。然而,在本发明的范围内可以 使用其它统计模型。可以借助下式计算一个采样的实际时钟(由公共HF时钟5301测量)
Cfiltered = α ^Psample+ β[1]因子α是在公共HF时钟5301和指针5113/5213之间的比率关系,并且具有标称 HF时钟频率值除以指针更新速率加上/减去用于定义时钟漂移常数的较小值的值。因子 β只是个偏移,从而剔除其中C和P并未同时以零开始的正常情况。因此,在步骤607,计算因子α和β。依照本发明一个示例性实施例,最小均方算 法被用为过滤算法Sp = Σ Pi[2]Sc = Σ Ci[3]Spp = Σ Pi2[4]Spc = Σ Pi^Ci [5]M =计算中的数据集的数目,i表示要计算总和的数据集中的集合α = (M*SPC-SP*SC) / (M*SPP-SP2)[6]β = (SC*SPP-SP*SC) / (M*SPP-SP2)[7]Cfiltered的准确性随着数据对数量(M)的增大而得到改善。然而随时间推移,漂移 偏移可能会改变,使在Psample和Cfiltered之间的线性关系无效(α改变)。因此,在计算中的 第一数据集和最后数据集之间的时间的选择必须在准确度(要求长时间)和跟踪变化的漂 移因子的能力(要求线性关系是良好近似的,因此时间受到限制)之间做折中。可以使用更 高阶的模型,从而简化这种折中,但是在实践中,漂移因子足够缓慢地改变,从而使用线性/ 一阶模型来进行适当的折中。需要对变化的漂移因子进行跟踪意味着当得到新的数据集时必须从计算中省去 最老的时钟/指针数据集,即,上述求和要按滑动窗口来计算。不必直接为每个新的数据对 计算总和。为了节省CPU周期,对新的和最老的数据集进行更新就是足够的Sp, ffl = Sp, ^+Pffl-Pri[8]Sc,ffl = Sc, ^+Cffl-Cri[9]SPP,m = SppM+Pj-Pj[10]SPC,m = SpcJPi^CdiKm[11]M =计算中的数据集的数目,m表示最近对的下标α = (M*SPC,m-SP,m*Sc,m)/(M*SPP,m-SP,m2)[12]β = (Sc,m*SPP,m-SP,m*Sc,m)/(M*SPP,m-SP,m2)[13]
尽管上面的方程式在理论上是正确的,不过由于有限的精度/舍入所累积的误差可能会导致问题。因此依照本发明的另一示例性实施例,把损耗因子(S)添加到计算中SP,ffl= δ *SP, ^!+Pffl- δ[14]Sc, m= δ *SC, ^!+Cffl- δ[15]SPP,ffl= δ ^Spp^^+P^- δ Μ*Ρω_Μ2[16]SPC, m= δ ^Spc.^^P^C^ δ[17]Sm = Σ δ \ i = 0. . (M-I)[18]α = (SM*SPC,m-SP,m*Sc,m)/(SM*SPP,m-SP,m2)[19]β = (Sc,m*SPP,m-SP,m*Sc,m)/(SM*SPP,m-SP,m2) [20]Sm是恒定的从而只需要被计算一次。损耗因子δ —般被选择为略小于单位一。此因子会减小较老数据的影响(这不 是有意的/必要的,但是也不会产生任何问题),并且还会引入舍入误差的遗忘因子。增加损耗因子δ可以实现进一步的简化。通过把M选择为无穷大,δ Μ接近于0, 因此可以省略在滑动求和[14]-[17]中的减法,并且出于求和的目的,不必把任何数据存 储在延迟线中。缺点是需要在适当的过滤和用于跟踪变化的漂移因子的能力之间做更加困 难的折中。所有数据对都将“永存”,但是由于较老的数据对(通过适当地选择损耗因子δ ) 在计算上可能具有可忽略的权重,所以在多数情况下是可以跟踪漂移因子的。在步骤701,可以根据估计的α、β和方程式[1],Cfiltered = α ^Psample+ β,来计算 任何采样/指针的正确时间Cfiltoed(相对于公共时钟5301)。播放时间校正器5312和捕获时间校正器5321的任务是在已知在不同域之间的时 间偏移/斜率的情况下,根据在另一时间域中的已知的采样来计算一个时间域中的正确采 样值。在下文中,我们依照本发明一个实施例描述了如何可以把捕获域采样转换为公共域 (commondomain)采样。然而,从公共域到播放域的转换是类似的。根据所计算的时钟关系(步骤701),对于公共域中的每个采样而言,捕获采样时 间校正器5321在捕获域中查找对应采样。术语“对应采样”将被解释为,对公共域中的每 个采样时间在捕获域中为该时间找到的采样值,要么通过直接复制采样值(如果在该时间 存在采样),要么通过使用一些内插技术在计算在该时间的采样值。因此对于公共域中的每 个采样而言,捕获采样时间校正器5321查找捕获域中的采样(下标j),该采样在时间上最 接近于在所述公共域中的采样(步骤702)。如果在域之间的偏移(时间偏差)是整数,那 么采样j可以被复制并且被直接使用(步骤706)。然而,偏移(时间偏差)通常不是整数。 因此,计算小数值τ,在下文中,被称为剩余因子τ (步骤703)。剩余因子τ是在减去整 数偏移/偏差值之后的剩余,并且其定义了子采样延迟,并且应当近似在-0. 5和0. 5之间。 应当注意,由于采样频率的漂移,所以可能出现稍微在[_0.5,0. 5]范围之外的值。可以使用具有恒定时间延迟的全通滤波器,从而利用子采样延迟来执行信号的延 迟。具有偏移的正弦脉冲具有这些属性。然而,根据定义,正弦脉冲在长度上是无穷大的, 并且在实际的实现方式中,必须应用窗口。必须对窗口的特性和长度进行选择,使得确保频 率响应(幅度和延迟)在所有感兴趣的频率中具有足够的准确度。例如,如果回声消除器 以16kHz的采样率工作,则通常存在高达7kHz的音频信号。在这种情况下,频率响应的幅 度和延迟直到7kHz必须是平的,而幅度和相位在7kHz以上可以偏离理想的响应,这是因为在此频带上不存在任何信号。为此所发现的具有良好特性的一个窗口类型是布兰克曼窗口 (Blackman window)0从而,计算长度L+1的子采样时间延迟滤波器0ιτ)= sine ((-L/2. . L/2)-τ )*window(length L+1) [21]当选择L = 48、布兰克曼窗口、16kHz的采样频率和高达7kHz的感兴趣频率时,此 滤波器的时间延迟误差小于0. 005采样,并且幅度误差小于0. 005dB ;这种小误差不会导致 回声消除器性能的显著劣化。最后在步骤705,公共时钟域中的采样y (换句话说在j 士 τ的采样值)被计算为 时间延迟滤波器0ιτ)和来自捕获域的一系列采样的卷积y = hTx[j-L/2. . j+L/2][22]这里χ是来自捕获时间域的采样的时间序列。在计算中所使用的采样向量以由j 定义的在时间上最接近的采样为中心,而其余子采样延迟由全通滤波器1^来定义。在漂移的情况下,剩余因子τ对每个采样来说都会改变,由此对每个采样来说, 新的滤波器是必要的。为每个采样计算新的滤波器,计算量可能是太大。尽管适当地选 择数据集和适当的过滤是安全的,不过在时间延迟上始终存在一些残留噪声。因此,在没有 显著降级的情况下,可以定义(例如均勻分布的)离散的延迟集和相应的预先计算的滤波 器集。在处理期间,选择与实际延迟相比较具有最小误差的预先计算的滤波器。这种效果 与τ的量化相同。应当注意,由于子采样延迟可能会超过[_0.5,0. 5]的范围,所以还应当 存在用于处理这些“超出”延迟的一些预先计算的滤波器。这种时间校正算法对连续的公共时钟域采样充当从捕获域到公共域的重新采样 器。如果在频率中存在任何漂移,则所估计的时间会相应地漂移,由此如预期的一样,从捕 获域到公共时钟域,采样率(和采样数)会略微发生变化。应当指出,依照本发明一个实施 例使用全通滤波器作为采样率转换算法中的滤波器存在某些理论上的“顾忌”,例如正弦宽 度应理想地适合于采样转换率。然而,出于实际目的,这些理论方面是可忽略的,这是由于 转换率始终非常接近于单位一。在播放端上执行如上所述的相同类型的校正。从而,软件应用(例如在计算单元 中实现的回声消除器算法)在所有发送和接收的信号上观察到相同的采样频率(时基)。 因此,不要求修改例如标准的回声消除算法来使其以异步的ADC和DAC转换速率在系统上工作。在PC中,在音频捕获或播放中常常存在失灵信号(glitch)。由于完全丢失音频数据帧或丢失单个采样可能会导致大量失灵信号。其原因可能是CPU过载或类似情况。定义 用于检测和调整这种失灵信号的方法在本发明的范围之外。然而,使用所描述的方法,在小 数采样准确(和最终失灵信号)的情况下可以进行时序计算,从而简化了这种检测和校正。依照本发明的方法和漂移补偿器具有几个优点。以高准确度有效地检测了时序上 的任何漂移或其它差异,使例如回声消除器或其它计算单元之类的软件应用5400正常工 作。由于高准确度,可以容易地检测并补偿像失灵信号的其它缺点。由于不存在复位算法,所以按照所述算法自动地检测和补偿任何情况变化。不存 在逐步增大的误差或偏移;通过播放和捕获系统和软件层,从应用5400输出(例如,回声消 除器扬声器信号2102/3102)到应用输入(例如,回声消除器麦克风输入2106/3106)的路径始终是不变的。整个系统被计时/同步到信任和公知的时钟源,并且不依赖于任何ADC或DAC子 系统的提供商。时钟漂移补偿器5300是完全独立的模块,这意味着在不需要调整这些应用的情 况下,它可被用于标准的应用。例如,在没有进一步改变的情况下,可以在存在所论述的漂 移问题的PC中使用为具有同步ADC和DAC的嵌入式产品所开发的回声消除器。依照本发明的时钟漂移补偿器5300适用于需要在DAC和ADC之间的已知/固定 关系的任何类型的应用。时钟漂移补偿器可以用于电信会议系统中的听觉回声消除,所述系统诸如电话会 议系统或视频会议系统。特别,时钟漂移补偿器可以被合并到诸如电话会议终端或视频会议终端之类的 电 信会议终端中,用于在电信会议系统中实现听觉回声消除,其中这种电信会议终端经由通 信网络互相通信。这种电信会议终端可以进一步包括计算单元,诸如用于执行操作系统和软件应用 的常规个人计算机;D/A转换器,其被配置为从在时钟漂移补偿器中包括的播放单元所包 括的播放FIFO缓冲器中读取数字数据;音频放大器,其被配置为放大由D/A转换器所提供 的模拟信号;音频扬声器,其被连接到音频放大器、麦克风、连接到所述麦克风的麦克风放 大器的输出;A/D转换器,其被配置成把所述麦克风放大器输出信号转换为数字形式,并且 把所述数字信号提供到由在所述时钟漂移补偿器中包括的捕获单元所包括的捕获FIFO缓 冲器。计算单元可操作地连接到诸如局域网和/或因特网之类的通信网络,从而经由网络 实现电信会议系统。电信会议终端可以另外包括照相机、显示器和用于实现视频会议的进 一步的结构和功能部件。
权利要求
一种用于补偿播放单元和捕获单元之间不同的采样率的方法,所述播放单元被配置用于从计算单元接收采样,所述捕获单元被配置用于向所述计算单元发送采样,所述播放单元包括播放缓冲器,在播放时间域中操作,并且所述捕获单元包括捕获缓冲器,在捕获时间域中操作,所述方法的特征在于把所述计算单元同步到在公共时钟时间域中操作的公共时钟,设置或计算所述公共时钟和关联于所述播放缓冲器的播放读取指针之间的第一关系,设置或计算所述公共时钟和关联于所述捕获缓冲器的捕获写入指针之间的第二关系,并且对于所述播放时间域中的每个采样,根据所述第一关系在来自所述计算单元的各采样中查找对应采样,并且向所述播放缓冲器发送该对应采样,并且对于在所述公共时钟时间域中的每个采样,根据所述第二关系在所述捕获时间域中查找对应采样,并且向所述计算单元发送该对应采样。
2.如权利要求1所述的方法,其中,设置所述第一关系并且计算所述第二关系。
3.如权利要求1所述的方法,其中,计算所述第一关系并且设置所述第二关系。
4.如权利要求1所述的方法,其中,计算所述第一关系和第二关系。
5.如权利要求1-4中任何一个所述的方法,其中,所述计算单元是音频回声消除器。
6.如权利要求1-4中任何一个所述的方法,其中,使用统计模型来计算所述第一关系 或第二关系。
7.如权利要求6所述的方法,其中,所述统计模型包括从由以下算法构成的组中选择的线性回归方法 最小均方算法,和具有用于减少舍入误差的损耗因子的最小均方算法。
8.如先前权利要求中任何一个所述的方法,其中,从由下述构成的组中选择所述公共 时钟与所述读取指针相关联的时钟信号,和与所述捕获指针相关联的时钟信号,以及与所述计算单元的中央处理器(CPU)相关联的时钟信号。
9.如先前权利要求中任何一个所述的方法,其中,在所述捕获时间域中查找对应采样 的所述步骤包括步骤在所述捕获时间域中识别在时间上最接近于所述公共时钟时间域中 的采样的采样,并且如果在所述公共时钟时间域和所述捕获时间域之间的偏移是整数,则提供所识别的采 样作为查找的采样,并且如果所述偏移不是整数,则计算子采样,并且提供所述子采样作为查找的采样。
10.如权利要求9所述的方法,其中,所述的计算子采样的步骤包括步骤计算剩余因子T,所述因子是减去所述公共时钟时间域和所述捕获时间域之间的整数 偏移之后的余项,并且把长度L+1的时间延迟滤波器(hT)与来自所述捕获时间域的一系列采样相卷积; y = hTx[j-L/2. . j+L/2],其中,χ是来自所述捕获时间域的、以在时间上最接近的采样为中心的采样的时间序列。
11.如权利要求10所述的方法,其中,所述的计算子采样的步骤进一步包括步骤 为离散数目的剩余因子(τ)预先计算一组时间延迟滤波器1^,并且 选择所述预先计算的滤波器0ιτ)之一,其中,所选择的滤波器表示最接近所计算的剩 余因子τ的滤波器。
12.如权利要求10所述的方法,其中,所述的计算子采样的步骤包括步骤 为每个采样计算所述时间延迟滤波器0ιτ)。
13.如先前权利要求中任何一个所述的方法,其中,所述第一关系和第二关系基于公共 时钟、播放读取指针和捕获写入指针数据的读出,并且其中,所述的计算所述第一关系和第 二关系的步骤包括较之老数据,对新数据进行更强的加权。
14.如先前权利要求中任何一个所述的方法,其中,计算所述第一关系进一步包括读取第一数据集,其中,所述第一数据集包括至少是所述公共时钟和所述播放读取指 针基本上同时的读出,并且如果符合一组预定义的准则,则登记所述第一数据集。
15.如先前权利要求中任何一个所述的方法,其中,计算所述第二关系的步骤进一步包括读取第二数据集,其中,所述第二数据集包括至少是所述公共时钟和所述捕获写入指 针基本上同时的读出,并且如果符合一组预定义的准则,则登记所述第一和第二数据集。
16.如权利要求14或15所述的方法,其中,如果在数据集的时间周围相继的公共时钟读出之间的时间不超过预定义的阈值 或者指针递增不是异常的,则符合所定义的准则。
17.—种时钟漂移补偿单元,用于补偿播放单元和捕获单元之间不同的采样率, 所述播放单元从计算单元接收采样,所述捕获单元向所述计算单元发送采样,其中,所述播放单元在播放时间域中操作并且至少包括播放缓冲器,并且其中,所述捕 获单元在捕获时间域中操作并且包括捕获缓冲器, 所述时钟漂移补偿单元的特征在于包括公共时钟,所述公共时钟在公共时钟时间域中操作,并向所述计算单元提供时钟信号, 播放时间设备,所述播放时间设备被配置用于设置或计算在所述公共时钟和关联于所 述播放缓冲器的播放读取指针之间的第一关系,捕获时间设备,所述捕获时间设备被配置用于设置或计算在所述公共时钟和关联于所 述播放缓冲器的捕获写入指针之间的第二关系,播放时间校正器,所述播放时间校正器被配置用于为所述播放时间域中的每个采样,根据所述第一关系,在来自所述计算单元的各采样中查找对应采样,并且向所述播放缓冲 器发送该对应采样,和捕获时间校正器,所述捕获时间校正器被配置用于为所述公共时钟时间域中的每个 采样,根据所述第二关系,在所述捕获时间域中查找对应采样,并且向所述计算单元发送该 对应采样。
18.如权利要求17所述的时钟漂移补偿单元,其中,设置所述第一关系并且计算所述第二关系。
19.如权利要求17所述的时钟漂移补偿单元,其中,计算所述第一关系并且设置所述第二关系。
20.如权利要求17所述的时钟漂移补偿单元,其中,计算所述第一关系和第二关系。
21.如权利要求17-20中任何一个所述的时钟漂移补偿单元,其中,所述计算单元是音 频回声消除器。
22.如权利要求17-21中任何一个所述的时钟漂移补偿单元, 其中,使用统计模型来计算所述第一关系或第二关系。
23.如权利要求22所述的时钟漂移补偿单元,其中,所述统计模型包括从由下面算法 组成的组中所选择的线性回归方法最小均方算法,和具有用于减少舍入误差的损耗因子的最小均方算法。
24.如先前权利要求17-23中任何一个所述的时钟漂移补偿单元, 其中,从包括下述的组中选择所述公共时钟与所述读取指针相关联的时钟信号,和与所述捕获指针相关联的时钟信号,以及与所述计算单元的中央处理器(CPU)相关联的时钟信号。
25.如权利要求17-25中任何一个所述的时钟漂移补偿单元,其中,所述捕获时间校正 器被进一步配置用于在所述捕获时间域中识别在时间上最接近于所述公共时钟时间域中的采样的采样,并且如果在所述公共时钟时间域和所述捕获时间域之间的偏移是整数,则提供所识别的采 样作为查找的采样,并且如果所述偏移不是整数,则计算子采样并且提供所述子采样作为查找的采样。
26.如权利要求17-25中任何一个所述的时钟漂移补偿单元,其中,所述捕获时间校正 器被进一步配置为计算剩余因子T,所述因子是在减去所述公共时钟时间域和所述捕获时间域之间整数 偏移之后的余项,并且把长度L+1的时间延迟滤波器(hT)与来自所述捕获时间域的一系列采样相卷积; y = hTx[j-L/2. . j+L/2],其中,x[j-L/2. . j+L/2]是来自所述捕获时间域的、以所述的在时间上最接近的采样为 中心的采样的时间序列。
27.如权利要求26所述的时钟漂移补偿单元,其中,所述捕获时间校正器被进一步配置用于为离散数目的剩余因子(τ)预先计算一组时间延迟滤波器1^,并且 选择所述预先计算的滤波器Οιτ)之一,其中,所选择的滤波器表示最接近所计算的剩 余因子τ的滤波器。
28.如权利要求17-27中任何一个所述的时钟漂移补偿单元,其中,所述第一和第二关 系基于公共时钟、播放读取指针和捕获写入指针数据的读出,并且其中,所述播放时间设备 或所述捕获时间设备被配置为当分别计算所述第一或第二关系时,较之老数据,对新数据 进行更强的加权。
29.如权利要求17-28中任何一个所述的时钟漂移补偿单元,其中,所述播放时间校正 器被进一步配置用于在来自所述计算单元的采样中识别在时间上最接近于所述播放时间域中的采样的采 样,并且如果在所述播放时间域和所述公共时钟时间域之间的偏移是整数,则提供所识别的采 样作为所查找的采样,并且如果所述偏移不是整数,则计算子采样(y)并且提供所述子采样作为所查找的采样。
30.如权利要求21所述的时钟漂移补偿单元,其中,所述播放时间校正器进一步被配置用于计算剩余因子τ,所述因子是在减去所述播放时间域和所述公共时钟时间域之间整数 偏移之后的余项,并且把长度L+1的时间延迟滤波器(hT)与来自所述计算单元的一系列采样相卷积; y = hTx[j-L/2. . j+L/2],其中,x[j-L/2. . j+L/2]是来自所述计算单元的、以在时间上最接近的采样为中心的采 样的时间序列。
31.如权利要求30所述的时钟漂移补偿单元,其中,所述捕获时间校正器和所述播放 时间校正器被进一步配置用于为离散数目的剩余因子(τ)预先计算一组时间延迟滤波器1^,并且 选择所述预先计算的滤波器0ιτ)之一,其中所选择的滤波器表示最接近所计算的剩 余因子τ的滤波器。
32.如权利要求30所述的时钟漂移补偿单元,其中,所述捕获时间校正器被进一步配 置用于计算每个采样的时间延迟滤波器0ιτ)。
33.如权利要求17所述的时钟漂移补偿单元,其中,所述播放时间设备被进一步配置 用于读取第一数据集,其中,所述第一数据集包括至少是所述公共时钟和所述播放读取指 针基本上同时的读出,并且如果符合一组预定义的准则,则登记所述第一数据集。
34.如权利要求17所述的时钟漂移补偿单元,其中,所述捕获时间设备被进一步配置 用于读取第二数据集,其中,所述第二数据集包括至少是所述公共时钟和所述捕获写入指 针基本上同时的读出,并且如果符合一组预定义的准则,则登记所述第一和第二数据集。
35.如权利要求33或34所述的时钟漂移补偿单元, 其中,如果满足以下条件,则符合所述预定义的准则在数据集时间周围的相继公共时钟读出之间的时间不超过预定义的阈值,或者 指针递增不是异常的。
36.一种电信会议终端,其特征在于包括如在权利要求17-35中任何一个所述的时钟 漂移补偿单元。
37.如权利要求17-35中任何一个所述的时钟漂移补偿单元的使用,用于在电信会议 系统中消除回声。
全文摘要
对播放单元和捕获单元之间不同的采样率进行补偿。播放单元从计算单元接收采样,并且捕获单元把采样发送到所述计算单元。播放fifo缓冲器在播放时间域内操作,并且捕获fifo缓冲器在捕获时间域内操作。计算单元被同步到公共时钟。在公共时钟和播放fifo缓冲器读取指针之间计算第一关系,并且在公共时钟和捕获fifo缓冲器写入指针之间计算第二关系。对于播放时间域内的每个采样,从所述计算单元的采样中查找对应采样,并将其发送到播放fifo缓冲器。对于公共时钟时间域内的每个采样,在捕获时间域内查找对应采样,并将其发送到计算单元。
文档编号H04M9/08GK101843082SQ200880114273
公开日2010年9月22日 申请日期2008年12月16日 优先权日2007年12月18日
发明者托格尔·格罗思·利安, 特吕格弗·弗雷德里克·马顿 申请人:坦德伯格电信公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1