发明内容
包含语音的音频信号的时标修改多年来已经被用于改善可识度,减小收听时间,或增强信号的质量,该信号通过益于发生损耗和延迟的数据包网络如因特网传输,并且在客户计算机或接收机上重构该信号。例如,在许多应用中,希望扩展或压缩包含语音的音频信号的一个或多个帧。一般地,扩展用于增强快速讲话者的可识度,扩展信号中语音段的持续时间以便替换丢失的、过度延迟的、或噪音帧,或当等候延迟的语音数据包时,以去抖动算法来提供附加时间。类似地,音频信号的缩短或压缩一般用于减小收听时间、用于减小信号的传输比特率、用于加速信号帧以减小整个传输时间、和用于减小传输延迟,以便在信号帧经过一些类型的处理之后,信号被近似实时地传输。由于这些用途,显然需要一种系统和方法,用于扩展和压缩语音,以提供高质量输出,同时在重构的信号中最小化任何可感知的人工产物。
为了提出需要高质量音频扩展和压缩,提供一种自适应“瞬时音频定标器”,用于自动扩展和压缩音频信号帧(或段)。在此描述的瞬时音频定标器提供用于音频信号的时间定标的系统和方法,包括扩展和压缩。在下面的段落中描述该瞬时音频定标器。
通常,该瞬时音频定标器提供扩展和压缩信号帧或段。而且,该瞬时音频定标器能够提供特定帧或段的可变扩展和压缩,而不需要参考相邻帧。另外,瞬时音频定标器提供的扩展和压缩的可变性允许来自将被补偿的理想比率的压缩比在下一帧上有较小变化,同时通过使用“接续”技术来保持整体平均理想压缩(或扩展)比。
例如,如果用于特定信号的目标压缩比是2:1,并且每个输入语音帧具有300个采样,则每个目标输出帧名义上具有150个采样。然而,如果例如特定帧被压缩到180个采样而不是150个采样,通过设置它的目标压缩到120个采样而将额外的30采样补偿在下一帧。因此,根据180和120的块大小,平均块大小仍是150,并具有2:1的平均压缩比。注意基于下一帧的内容,压缩到120个采样不会提供最佳结果。因此,120个采样样本只是目标,通过实际压缩、或扩展,其用于设置后续帧的目标压缩或扩展,来确保理想的平均值。
因此,可扩展或压缩一个以上的后续帧以保持理想的平均值。例如,使用上述实例,如果在压缩到180个采样的帧后面的帧被压缩到130个采样,那么用于下一帧的目标压缩具有140个采样的目标压缩,以提供在三个帧上的150个采样的平均值。通过使用该接续技术可保持任何理想的压缩(或扩展)比,同时只在任何特定输出帧的长度上保持宽松的要求。
该接续技术的结果是,对经过压缩或扩展而丢失或延迟的数据包的补偿非常灵活,因为如所需要的,每个单独的帧被最优地压缩或扩展,用于最小化重构信号中的任何可感知的人工产物。该瞬时音频定标器能够补充诸如去抖动的多个应用,例如,其通常为最小化人工产物而需要减小延迟。
根据前述段落,应当清楚,通过首先接收信号帧,通过扩展或压缩帧的片段来修改帧的时间特性,确定当前帧的扩展或压缩是否等于目标扩展或压缩比,然后可能的话,将实际和目标扩展或压缩比之间的差值添加到用于下一帧的扩展或压缩,瞬时音频定标器提供特定帧的扩展和压缩。
而且,在扩展或压缩当前帧的片段之前,瞬时音频定标器首先确定片段的类型。例如,在包括语音的音频信号中,帧的每个片段将是包括语音或一些其他有声言语的“有声”片段、不包括任何语音或其他言语的“无声”片段、或包括有声和无声成分的“混合”片段。为了达到最佳结果,该瞬时音频定标器提供可变的扩展和压缩,其明确用于正被扩展和压缩的特定片段。因此,个性化扩展和压缩方法用于每个片段类型,即声音、无声或混合。注意,为每个片段类型使用每个个性化方法,尽可能小地、或者一点也不修改靠近帧边界的音频采样,以便确保更好传输仍然未知的后续语音帧。
在产生片段类型的确定时,人类话音的自然周期性是有用的指导。通常,作为接近信号匹配的潜在周期部分的程度的函数,作出关于片段类型的确定。例如,在扩展或压缩还没有被播放的音频信号的特定采样或帧中,第一步是从扩展或压缩的帧中选择较小的片段或子帧。因为下一步是发现信号中类似的或近似匹配的片段,所以该子帧称作“模板”。注意,该匹配片段可以处于被扩展或压缩的帧中,或—如果可行—可以处于以前播放的帧中。因此,在一个实施例中,在临时缓冲器中保存保存一个或多个最近播放的帧用于定位匹配的片段。通过使用传统信号匹配技术,例如标准的互相关方法或类似技术,来查询与模板匹配的片段。而且,在一个实施例中,查询范围限于与信号的“音调”兼容的范围。
如本领域技术人员公知的,通过振动声带将气流调节为拟周期脉冲来产生话音声音比如语音,该脉冲激发声道中的共振。该脉冲率通常称为基频或“音调”。通常,有声音频信号的周期性、或“音调周期”表示在有声音频信号的时间域表示中的最大正峰值幅度和最大负峰值幅度之间的时间。尽管实际上语音信号不具有完美周期,估计的音调频率和它的倒数即音调周期对模拟语音信号非常有用。注意该讨论均参考音调和音调周期。存在更详细的方法用于确定音调;然而,这些原理对领域技术人员来说是公知的,在此描述的音调和音调周期的确定只是发现互相关峰值的一个基础。然而,应当清楚,根据在此提供的讨论,任何用于确定音调和音调周期的方法可用于瞬时音频定标器。
例如,由于人类话音或发言的音调或周期性,信号的有声部分将自然具有较高的周期性。因此,标准化的互相关的峰值强度提供了对帧的特定片段是否是有声的、无声的或混合的了解。例如,由于片段包含更多的语音,标准化的互相关峰值将增加,并且由于片段包含少量语音,一般在信号中存在更少的周期性,导致较小的标准化互相关峰值。该标准化互相关峰值与预定阈值进行比较用于确定特定片段是否是有声片段、无声片段或有声和无声成分的混合物,即混合片段。在测试的实施例中,在.4和.95之间的峰值被用于识别混合的片段,大于.95的峰值被用于识别有声片段,和小于.4的峰值被用于识别无声片段。
一旦识别片段的具体类型,片段类型的专用扩展或压缩处理被施加给该片段,用于扩展或压缩希望的当前帧。例如,当扩展有声帧时,开窗重叠相加(SOLA)方法被用于校准和合并帧的匹配段。然而,不同于用于扩展有声片段的传统系统,该瞬时音频定标器还通过交替片段的位置用作参考或模板,来减小在重构信号中可感知周期的人工产物,以便该模板不总是取自片段的末端。具体地,该模板可取自帧的末端、帧的开头,或帧的内部。
而且,在一个实施例中,为了进一步减小在重构信号中可感知的人工产物,在实施标准的互相关中,瞬时音频定标器也使用可变的窗口尺寸,其尺寸类似于为当前帧计算的平均音调尺寸。最后,定位该模板,以便过渡窗口的中点位于波形的低能点。该模板的定位用来进一步减小重构信号中可感知的人工产物。注意有必要将该扩展处理重复多次以获得用于当前帧的理想的扩展等级。
无声帧,即寂静、非周期性噪音等的扩展以基本上不同的方式来处理。具体地,不同于用于扩展有声帧的处理,其中重复与模板匹配的一个或多个片段被用于增加帧的长度,这对避免引入周期性是重要的。原因是听者可以容易地区分在这种帧中的音频周期性。因此,这种周期性将表现为重构信号中的信号人工产物。因此,修改当前帧不是添加与模板匹配的片段,而是通过自动产生理想长度的不同信号并具有类似于当前帧的功率谱。然后利用开窗函数将产生的信号插入到当前帧的中部,以平滑原始帧与生成的片段之间的过渡点。而且,在有关的实施例中,为了进一步减小在重构信号中的任何音频人工产物,进一步减小预定百分比大约为30%左右的生成的片段的能量。
如上所述,混合片段表示有声和无声成分的组合。因此,既不扩展有声片段,也不扩展无声片段的方法单独适用于扩展混合片段。例如,使用用于处理有声片段的方法将显著的人工产物引入无声帧部分中,同时使用用于处理无声片段的方法将破坏帧中任何存在的周期性。因此,在一个实施例中,两种方法都被使用。具体地,利用有声和无声方法,从自当前混合片段中产生信号。然后组合这些信号以产生理想长度的合成信号段,其包括利用有声和无声方法产生信号。
而且,在有关的实施例中,作为标准化互相关峰值的函数,如上述产生的有声和无声信号被加权。例如,如上所述,由于片段变得更加周期性,即在片段中存在更多的话音,标准化互相关峰值增加。因此,在标准化互相关峰值较高的情况下,较多加权该有声信号将以一些周期性为代价改善在扩展片段中语音的感知质量,并因此潜在改善在扩展片段的无声部分中的一些可感知的人工产物。相反,由于标准化互相关峰值减小,在片段中存在较小的周期性。因此,较多加权无声信号,以减小周期性为代价,从而改善帧的无声部分的感知质量,并潜在改善帧的任何有声部分的可识度。
在测试的实施例中,通过利用上述有声片段方法产生理想长度的信号,对应于.45到.95的标准化互相关峰值的从0到1的线性加权,被分别用于产生用于合成信号的有声部分。同样,通过利用上述无声片段方法产生相同的理想长度的信号,对应于.45到.95的标准化互相关峰值的从0到1的线性加权,被分别用于产生用于合成信号的无声部分。这两个加权信号部分简单相加以产生合成信号。
给出各种帧类型和上述扩展方法,仍旧存在在当前帧中的哪个点是扩展该帧的最佳点的问题。例如,甚至在一个相对短的帧中,诸如信号的20毫秒部分,经常存在一个或多个过渡点或者甚至是几毫秒的寂静。在该情况下,选择帧被扩展的特殊点是有利的。因此,在一个实施例中,采用扩展“质量”的方法,其中基于帧中片段能量的组合(低能量更好)来确定帧中扩展的位置,并且发现标准化相关系数用于与其匹配的片段(越高越好)。
例如,在一般情况下,20毫秒帧可以分为4个子帧或每个5毫秒片段,或可测试地,潜在地分为重叠子帧或片段,该片段近似具有估计的音调周期。如果特定片段的计算能量足够低,那么就认为过度存在于该片段中。然后选择最低能量片段用于扩展。然而,如果能量不是足够低,那么过渡未必存在于帧中,并且每个片段匹配的标准化自相关被用来选择最佳匹配以便扩展。
通常,以与上述扩展帧类似的方法处理帧的压缩。例如,当压缩帧时,从帧中选择模板,并且执行搜索匹配,如上所述。一旦识别该匹配,片段被开窗、重叠和相加。然而,如果标准化互相关太小,如上所述,该片段可能时无声片段。在该情况下,使用随机或预定移动与诸如恒定平方和窗口的开窗函数一起,将帧压缩到理想数量。
而且,要重点考虑在每个帧中选择要压缩的特定片段。例如,不是均等地压缩帧的所有片段,而是一般通过首先确定片段的类型,如上所述,然后有选择地压缩帧的特定片段,来完成更好的结果。例如,压缩表示语音、寂静或简单噪音的片段,同时避免无声片段或瞬态压缩,将产生具有较少可感知的人工产物的重构信号。如果通过压缩表示语音、寂静或简单噪音的片段不能实现充分压缩,则以上述方式压缩非过渡无声片段。最后,如果通过有声片段和非过渡无声片段的压缩不能实现充分压缩,则压缩包括过渡的片段。对压缩的分级方法用来限制在重构信号中可感知的人工产物。而且,如上所述,该“接续”处理也大量用于压缩后续帧,在此由于当前帧的内容类型,当前帧不被压缩到目标压缩比。
根据上面的概述,很清楚瞬时音频定标器提供一种唯一的系统和方法,用于扩展和压缩接收的音频信号的帧,同时最小化在重构信号中可感知的人工产物。除了刚才描述的益处,用于扩展和压缩音频信号段的系统和方法的其他优点将在下面结合附图的细节描述中变得更加清楚。
具体实施方式
在本发明优选实施例的下列描述中,附图具有参考标记,该参考标记形成了附图的一部分,其中通过描述实施本发明的特定实施例来显示该参考标记。应当理解,可以使用其他实施例,并且在不脱离本发明范围的情况下,结构可以变化。
1.0 示例性操作环境
图1描述了合适的计算系统环境100的范例,本发明可以在该环境中实施。该计算系统环境100只是一个合适的计算环境,并且不意图限制本发明的功能或使用范围。计算环境100不应当解释为依赖或需要任何一个在示例性操作系统100中描述的部件或部件组合。
本发明通过大量的其他通用或专用计算系统环境或配置来运行。适用于本发明使用的公知的计算系统、环境、和/或配置的范例包括,但不限于个人计算机、服务器计算机、手持式、膝上型电脑或便携计算机或诸如蜂窝电话和PDA的通信设备、数字电话、多处理器系统、微处理器系统、机顶盒、可编程消费类电子设备、网络PC、小型计算机、大型计算机、包括任何上述系统或设备的分布式计算环境,等等。
可以在计算机可执行指令的普通背景下,诸如计算机执行的程序模块中描述该发明。通常,程序模块包括例程、程序、目标、部件、数据结构等,其执行特定任务或实现特定抽象数据类型。本发明也可在分布式计算环境中实施,在该分布式计算环境中,任务波通过通信网络连接的远程处理设备执行。在分布式计算环境中,程序模块可位于包括记忆存储器设备的本地和远程计算机存储介质中。通过参考图1,用于实施本发明的示例性系统包括计算机110形式的通用计算设备。
计算机110的部件可包括,但不限于,处理单元120、系统存储器130、和将各种系统部件与处理单元120相连的系统总线121,这些部件包括系统存储器。系统总线121可以是多个类型的总线结构中的任何一个,这些结构包括存储器总线或存储控制器、外围总线、和使用各种总线结构的本地总线。通过范例,并不限定,该结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线,扩展ISA(EISA)总线、视频电子标准协会(VESA)本地总线、和公知的作为中层(Mezzanine)总线的外设部件互连(PCI)总线。
计算机110一般包括各种计算机可读介质。计算机可读介质可以是任何能被计算机110访问的有效介质,包括易失和非易失介质,移动或非移动介质。通过范例,并不限定,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法和技术实现的用于存储信息,比如计算机可读指令、数据结构、程序模块、或其他数据的易失和非易失移动和非移动介质。
计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存、或其他存储技术;CD-ROM、数字万能磁盘(DVD)、或其他光盘存储器;磁带盒、磁带、磁盘存储器、或其他磁存储设备;或任何其他可用于存储期望信息并能被计算机110访问的媒质。通信介质一般体现为计算机可读指令、数据结构、程序模块或在已调制的数据信号中的其他数据,该信号比如是载波、或其他传送机构并包括任何信息传输介质。术语“已调制数据信号”意味着具有一个或多个特征集或以信号中的信息进行编码的方式变化的信号。通过范例,并不限定,通信介质包括有线介质,如有线网络或直达线连接,和无线介质,如声、射频、红外线、和其他无线介质。上述任何组合也应当包括在计算机可读介质的范围内。
该系统存储器130包括易失和/或非易失存储器形式的计算机存储介质,比如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)一般存储在ROM131中,包含在计算机110内的部件之间帮助传输信息的基本例程,比如在启动期间。RAM132典型包含数据和/或程序模块,该程序模块被处理单元120直接访问和/或操作。通过范例,并不限定,图1描述了操作系统134、应用程序135、其他程序模块136、和程序数据137。
计算机110可包括其他移动/非移动、易失/非易失计算机存储介质。只通过范例,图1描述了读取写入非移动、非易失磁介质的硬盘驱动器141,读取或写入移动、非易失磁盘152的磁盘驱动器151,和光盘驱动器155,光盘驱动器155读取或写入移动、非易失光盘156,如CDROM或其他光介质。其他可用于典型操作环境的移动/非移动、易失/非易失计算机机存储介质包括,但不限于,盒式磁带、闪存卡、数字万能磁盘、固态RAM、固态ROM等。该硬盘驱动器141一般通过诸如接口140的非移动存储器接口连接系统总线121,并且磁盘驱动器151和光盘驱动器155通过诸如接口150的移动存储器接口连接系统总线121。
上述讨论的并在图1中描述的驱动器以及与他们相关的计算机存储介质,提供存储计算机可读指令、数据结构、程序模块和用于计算机110的其他数据。在图1中,例如,硬盘驱动器141被描述为存储操作系统144、应用程序145、其他程序模块146、和程序数据147。注意,这些部件可以相同于或不同于操作系统134、应用程序135、其他程序模块136、和程序数据137。给予操作系统144、应用程序145、其他程序模块146、和程序数据147不同的编号,以最低限度说明他们是不同的副本。用户可以通过输入设备,比如键盘162和通常称为鼠标、轨迹球、或触摸板的指示设备161,将命令和信息输入到计算机110中。
另外,计算机110还可以包括语音输入设备,比如麦克风198或麦克风组、以及扬声器197或通过音频接口199连接的其他声音输入设备。其他输入设备(未示出)可以包括游戏杆、游戏板、卫星反射器、扫描器、无线接收机、和电视或广播视频接收机等。这些和其他输入设备通常通过连接系统总线121的用户输入接口160连接到处理单元120,不过可以通过其他接口和总线结构,例如并行端口、游戏端口、或通用串行总线架构(USB)进行连接。监视器191或其他类型的显示设备也通过诸如视频接口190的接口连接到系统总线121。除了监视器,计算机也可以包括其他外围输出设备,如打印机196,其可以通过输出外围接口195进行连接。
计算机110可利用逻辑连接到一个或多个远程计算机,比如远程计算机180而工作在网络环境中。远程计算机180可以是个人计算机、服务器、路由器、网络PC、同等设备、或其他公共网络节点,并一般包括许多或所有上述与计算机110有关的部件,尽管在图1只描述了记忆存储设备181。在图1中描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其他网络。这种网络环境通常存在于办公室、企业广域计算机网络、企业内部互联网、和因特网。
当用在LAN网络环境中时,计算机110通过网络接口或适配器170连接到LAN 171。当用在WAN网络环境中时,计算机110一般包括调制解调器172或其他用于通过诸如因特网的WAN 173建立通信的装置。调制解调器172,可以在内部或外部,可以通过用户输入接口160,或其他合适的机构连接到系统总线121。在网络环境中,所述与计算机110或部分有关的程序模块,可以存储在远程记忆存储设备中。通过范例,并不限定,图1描述了驻留在存储设备181中的远程应用程序185。应当清楚,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他装置。
目前已经讨论了示例性操作环境,说明书的剩余部分将致力于讨论体现“瞬时音频定标器”的程序模块和过程,该“瞬时音频定标器”用于自动扩展和压缩在数字音频信号中的信号帧。
2.0 介绍
音频信号的时标更改的更多传统应用是多次减速或加速信号的整体时标,以便减小收听时间,或改善可识度。除了该应用,在最近几年,包含语音的音频信号的时标更改已用于改善信号质量,该信号通过易于发生损耗和延迟的数据包网络如因特网传输,并在客户计算机或接收机上重构该信号。例如,在许多应用中,理想的是扩展或压缩一个或多个包含语音的音频信号帧。
一般地,扩展用于增强信号中语音的可识度,替换丢失、过渡延迟、或噪音帧、或当等候延迟的语音数据包时,在去抖动算法中提供附加时间。同样,音频信号的缩短或压缩一般用于减小收听时间,减小信号传输比特率,加速信号帧以减小整体传输时间,并减小传输延迟,以便在进行一些类型的信号帧处理后可近似实时地传输信号。根据这些用途,显然需要一种系统和方法,用于扩展和压缩语音,以提供高质量输出,同时最小化在重构信号中的任何可感知的人工产物。
为了说明需要高质量音频扩展和压缩,提供自适应“瞬时音频定标器”用于自动扩展和压缩通过数据包网络接收的音频信号。在此描述的瞬时音频定标器提供用于音频信号瞬时标定的系统和方法,全都包括扩展和压缩。该瞬时音频定标器在下面的段落进行描述。
通常,瞬时音频定标器提供音频帧的局部时标更改,例如在音频信号中的部分语音。在此描述的方法用于扩展和压缩信号帧。而且,瞬时音频定标器能够为特定帧提供可变的扩展和压缩,而不需要参考相邻帧,这在相邻段无效(或丢失)时很重要。而且,如在章节3.1描述的,由瞬时音频定标器提供的扩展和压缩的可变性允许来自将被补偿的理想比率的压缩比在下一帧上有较小变化,同时通过使用“接续”技术保持整个平均理想压缩(或扩展)比,其可变地扩展或压缩一个或多个后续帧,以补偿当前帧的平均扩展或压缩的任何偏离。
2.1 系统概述
如上所述,通过首先从音频信号中接收或提取该帧,通过扩展或压缩该帧来修改帧的时间特性,确定当前帧的扩展或压缩是否等于目标扩展或压缩比,然后可能的话将实际和目标扩展或压缩比之间的差值添加到应用于下一帧的扩展或压缩中,瞬时音频定标器来提供特定帧(或片段)的扩展和压缩。
而且,在扩展或压缩每个帧之前,瞬时音频定标器首先确定当前片段的类型,然后对识别的片段类型施加专用的扩展或压缩处理。例如,在包括语音的音频信号中,任何特定帧的每个片段将是包括语音或一些其他有声言语的“有声”片段、不包括任何语音或其他言语的“无声”片段、或包括有声和无声成分的“混合“片段。
为了达到最佳结果,瞬时音频定标器提供可变的扩展和压缩,其专门用于正被扩展和压缩的特定片段类型。因此,一旦识别片段的具体类型,即,有声的、无声的、或混合的,专门用于特定片段类型的扩展或压缩过程被施加给片段帧,用于扩展或压缩当前帧。注意,为每个帧类型使用每个个性化方法,尽可能小地更改每个帧的末端,或者一点也不改动,以便确保更好地过渡到仍然未知的语音片段。
另外,指定各种片段类型和上述扩展方法,仍然存在在当前帧中的哪个点是扩展该帧的最好点。例如,甚至在相对短的帧中,比如信号的20毫秒部分,经常存在一个或多个过渡点或甚至几毫秒的寂静。在该情况下,选择帧被扩展的特定点是有利的。因此,在一个实施例中,采用扩展“质量”的方法,其中基于每个片段能量(低能量更好)的组合来确定扩展的位置,并且发现标准化相关系数用于与其相匹配的片段(越高越好)。
例如,在一般情况下,20毫秒帧可分为4个子帧或每个5毫秒片段,或可测试地,潜在地分为重叠子帧,该子帧近似具有估计的音调周期。如果特定子帧的计算能量足够低,那么就认为过渡存在于该帧中。然后选择最低能量子帧用于扩展。然而,如果能量不是足够低,那么过渡未必存在于该帧中,并且每个子帧的匹配的标准化自相关被用来选择最佳匹配以便扩展。
通常,以与上述扩展片段类似的方式处理帧中片段的压缩于上述。例如,当压缩该片段时,从片段中选择模板,并且执行匹配搜寻。一旦识别该匹配,片段被开窗、重叠和增加。然而,如果标准化互相关太小,如上所述,该片段很可能是无声片段。在该情况中,使用随机或预定的移动与诸如恒定平方和窗口的开窗函数一起,将片段压缩到理想数量。
而且,也要重点考虑选择要压缩的特定片段。例如,不是在帧中等同压缩所有的片段,而是一般通过首先确定片段的类型,如上所述,然后基于它们的类型有选择地压缩特定片段可,来获得更好的结果。例如,压缩表示语音、寂静或简单噪音的片段,同时避免无声片段或瞬态压缩,将产生具有较少可感知的人工产物的重构信号。接着,如果通过压缩表示语音、寂静或简单噪音的片段不能实现充分压缩,则以上述的方式压缩无过渡无声片段。最后,如果通过压缩有声片段或无过渡无声片段不能达到充分压缩,压缩包括过渡的片段。当然,如果不能提前计算在每个类型中的压缩机会,则在每步中可以计算压缩的最佳片段。对于压缩的分级方法用来限制在重构信号中可感知的人工产物。
2.2 系统结构:
通过图2的普通系统框图来描述上面概述的过程。具体地,图2的系统框图描述了用于实现瞬时音频定标器的程序模块之间的相互关系,该瞬时音频定标器用于扩展和压缩音频信号的帧。应当注意,通过图2中折线或虚线表示的方框和方框之间的相互连接表示在此描述的瞬时音频定标器的替换实施例,并且任何或所有这些替换实施例,如下所述,可用于结合整个文献中描述的其他替换实施例。
如图2所示,用于实时扩展和压缩音频信号帧的系统和方法开始通过信号输入模块200接收输入信号。该信号输入模块200接收音频信号,该信号刚好已经被产生、或被存储在计算机中,或者从通过数据包网络传送的打包的音频信号中被解码,该数据包网络如因特网、或其他包括传统话音通信网络的数据包网络。由于信号输入模块200接收或解码该数据包,他们被提供给帧提取模块205。帧提取模块205从输入信号中提取当前帧。
在一个实施例中,帧提取模块205给音调估计模块210提供当前帧,音调估计模块210估计帧中的片段或整个帧的音调周期。在该实施例中,选择的片段近似于帧的平均音调周期的长度。然而,也可以为计算效率选择实际片段长度,例如,使用较小片段较容易产生快速傅里叶变换FFT计算。而且,如章节3.2中进一步详细描述的,这些基于音调周期的片段可以重叠。包括当前帧的片段被提供给片段类型检测模块215。
可替换地,帧提取模块205直接将当前帧提供给片段类型检测模块215,其简单地将帧分为多个相等长度的片段。
在其他情况下,片段类型检测模块215通后确定在当前帧中的片段的类型,并将当前帧分别提供给合适的扩展模块220、225,230或压缩模块240。具体地,该片段类型检测模块215首先确定当前帧是否包括有声片段,无声片段,或混合片段。在帧即将被扩展的情况下,该片段类型检测模块然后将当前帧提供给有声片段扩展模块220、无声片段扩展模块225、或混合片段扩展模块230。在当前帧即将被压缩的情况下,该片段类型检测模块将当前帧提供给片段压缩模块240。
有声片段扩展模块220如章节3.2.1中详细描述的那样,通过使用开窗重叠相加(SOLA)方法用于校准和合并与具有帧的模板相匹配的信号部分。然而,与用于扩展有声片段的传统系统不同,该瞬时音频定标器的有声片段扩展模块220还通过交替片段的位置用作参考或模板的,来减小重构信号中可感知周期的人工产物,以便该模板不总是根据传统语音扩展算法而取自片段的末端。具体地,该模板可取自帧的末端、帧的开头、或取自帧中的各种位置。
相反,无声片段扩展模块225如章节3.2.2详细描述的那样工作,用于通过产生一个或多个合成信号片段来扩展帧的当前片段,该合成信号片段然后插入到帧的当前片段。总之,通过合成非周期性信号以任意理想长度产生合成片段,该非周期性信号具有与当前帧类似的频谱。而且,理想的是合成的信号与原始帧无关,以避免将周期性引入到合成信号中。
例如,在一个实施例中,通过计算所有或部分当前帧的傅立叶变化,依靠是否插入单个或多个片段,将相位的随机旋转引入到FFT系数中,然后为每个片段简单地计算反向FFT可实现上述内容。由此产生的信号片段具有类似的频谱,但与原始片段无关。另外,在计算FFT之前通过零填充该信号可获得较长的信号。使用开窗函数来平滑在原始片段和产生的片段之间的过渡点,使得这些合成信号被插入到帧的当前片段的中部。
混合片段扩展模块230通过使用上述的有声和无声方法,如章节3.3详细描述那样工作。具体地,使用有声和无声方法从当前混合帧中产生信号。这些信号然后被组合以产生包括有声和无声信号的合成信号。在一个实施例中,相对于有声或无声数据的成比例内容,通过加权模块235,形成合成信号的部分被加权,该内容通过上述标准化互相关峰值确定。
片段压缩模块240,如章节3.4所述那样工作。通常,以类似于上述用于扩展片段的方式来处理片段压缩。具体地,在帧或片段类型的基础上处理片段压缩,类似于上述帧或片段的扩展。注意在图2种为了清楚起见,片段压缩被显示为称为“片段压缩模块240”的单个程序模块,而不是利用三个程序模块以表示各种片段类型的压缩。然而,应当理解,基本片段类型,即有声片段、无声片段和混合片段的扩展,这些相同片段类型的压缩仍将利用对于每个片段类型是专用的不同方法来处理。
具体地,当压缩有声片段时,从片段中选择模板,并且执行用于匹配的搜索。一旦识别匹配,该片段被开窗、重叠和相加,截断在模板和匹配之间的信号。结果,该片段被缩短、或压缩。相反,当压缩无声片段时,使用随机或预定转移与诸如恒定平方和窗口的开窗函数一起,将片段压缩到理想数量。最后,利用有声和无声方法加权组合压缩混合信号。然而,如在章节3.4中进一步详细讨论的,存在清楚的优先顺序(有声第一、无声次之、混合片段最后)用于压缩各种片段类型,在一个或多个帧上达到理想或目标压缩比。注意经过帧的扩展,在片段压缩期间要小心避免片段端点的修改,以免在帧或片段之间引入瞬态或音频人工产物。
在所有情况下,有声的、无声的、或混合的,分别对应扩展模块220、225、230或压缩模块240,然后将扩展或压缩的帧提供给扩展和压缩帧的缓冲器245。注意,在一个实施例中使用瞬时帧缓冲器250,以允许最近的过去的信号中搜寻用于匹配当前模板的片段。一旦扩展或压缩的片段已经提供给扩展和压缩帧的缓冲器245,确定255是否已经达到理想或目标扩展或压缩。如果没有,通过将实际和目标值之间的差值简单地添加到下一帧260,将目标扩展或压缩之间的差值化为用于下一帧的目标压缩的因子。在其他情况下,就这一点,从输入信号中提取205下一帧,并且重复如上所述的过程,直到输入信号的末端到达,或该过程终止。在一些应用中,如果在输入上没有信号可容易地获得,从信号中选择的帧仍旧存在于缓冲器245中。
注意,理想的,扩展或压缩帧的缓冲器245对于重放或进一步处理是有用的。因此,在一个实施例中,信号输出模块270提供应用接口,用于输出扩展和压缩的帧。例如,这种帧可以为作为基于语音的通信系统一部分的收听者播放。
3.0 操作概述
上述程序模块用于瞬时音频定标器,该定标器用于提供音频文件片段的自动瞬时定标。通常,如上总结的,该瞬时定标提供在片段上可执行的扩展和压缩,该片段如同单个信号帧那样小。由瞬时音频定标器提供的扩展和压缩的可变性允许来自将被补偿的理想比率的压缩比在下一帧上有较小变化,同时使用“接续”技术保持整体平均理想压缩(或扩展)比。下面的章节提供示例性方法的详细操作讨论,该方法用于实现在章节2中描述的程序模块。
3.1 用于保持目标压缩/扩展比的接续
如上所述,该瞬时音频定标器使用“接续”过程用于帧的可变压缩或扩展,同时为整个信号保持理想压缩/扩展比。例如,如果用于特定信号的目标压缩比是2∶1,并且每个输入帧具有300个采样,则每个目标输出帧将名义上具有150个采样。然而,例如,如果特定帧被压缩到180个采样而不是150个采样,通过设置它的目标压缩比为120个采样,在下一帧中补偿额外的30个采样。因此,根据180和120的块大小,平均块大小仍然是150,具有2∶1的平均压缩比。注意,基于下一帧的该内容(即,片段类型),压缩到120个采样不会提供最佳结果。因此,120个采样范例只是目标,根据实际压缩、或扩展,用于设置后续帧的目标压缩或扩展,以便确保理想的平均值。
因此,一个以上的后续帧可以被扩展或压缩,以保持理想的平均值。例如,使用上述范例,如果在被压缩到180个采样的帧后面的帧被压缩到130个采样,那么用于下一帧的目标压缩是140个采样的目标压缩,以便在三个帧上提供150个采样的平均值。通过使用该接续技术,可保持任何理想的压缩(或扩展)比,同时对任何特定输出帧的长度保持宽松的要求。
该接续技术的结果是对通过扩展或压缩而丢失或延迟的数据包的补偿非常灵活,因为如所需要的,每个单独的帧被最优地扩展或压缩,用于最小化在重构信号中任何可感知的人工产物。瞬时音频定标器能实现许多诸如去抖动的应用,在实时通信系统中数据包丢失隐藏。
3.2 基于内容的片段扩展
如上所述,在扩展或压缩每个帧之前,瞬时音频定标器首先确定当前帧的类型,然后对当前帧施加帧类型专用的扩展或压缩处理。例如,在包括语音的音频信号中,每个帧将是包括语音或一些其他言语的“有声”帧、不包括任何语音或其他言语的“无声”帧、或包括有声和无声成分的“混合”帧。为了达到最佳结果,该瞬时音频定标器提供专用于被扩展和压缩的特定帧类型的变化的扩展和压缩。因此,独一无二的扩展和压缩方法被施加给每个类型的帧,即有声的、无声的、或混合的。
因此,在扩展或压缩当前帧之前应确定该帧是否是有声的、无声的或混合的。在进行确定时,人类语音的自然周期性时有用的指导。通常,作为与信号匹配的潜在周期部分近似程度的函数,做出关于片段类型的确定。例如,在扩展或压缩仍没有被播放的音频信号的特定采样中,第一步是从被扩展或压缩的采样中选择较小片段或子帧。因为下一步是发现信号中类似或近似匹配的片段,所以该子帧被称作“模板”。注意,该匹配片段可以处于被压缩的采样中,或者处于以前播放的片段中。因此,只要有效,最近播放的片段被保存在临时缓冲中用于定位匹配片段。通过使用传统信号匹配技术,如标准化互相关方法或类似技术,来搜寻与模板匹配的片段。而且,该搜寻范围最好限制在与信号的“音调”兼容的范围内。
如本领域技术人员所公知的,通过声带的振动产生有声声音,如语音,该声带将气流调制到拟周期脉冲,激励声道中的共鸣。这些脉冲的重复率通常称为基本频率或“音调”。通常,该有声音频片段的周期性,或“音调周期”表示在表示有声声音片段的时域中最大幅度正峰值或负峰值之间的时间。尽管实际上语音信号不具有完美的周期性,估计的音调频率和它的倒数即音调周期在模拟语音信号中仍非常有用。注意该讨论均参考音调和音调周期。存在非常详细的方法用于确定音调。然而,由于这些概念对本领域技术人员来说是公知的,在此描述的音调和音调周期的确定将是简单基于发现互相关峰值的一个基础。
因此,由于音调或人类语音的周期性或言语,具有有声片段的部分信号将自然具有高的周期性。因此,标准化互相关的峰值强度提供认识特定片段是否是有声的、无声的,或混合的,而峰值的位置提供音调周期实际值的估计。例如,由于包含较多语音的片段,标准化互相关峰值将增加,并且由于包含较少语音的片段,在信号中一般将存在较小的周期性,导致较小的标准互相关峰值。
标准化互相关的峰值与预定阈值进行比较,用于确定特定片段是否是有声片段、无声片段、或有声和无声片段的混合,即混合片段。在测试的实施例中,在约.4到约.95之间的峰值被用于识别混合片段,大于约.95的峰值被用于识别有声片段,并且小于约4的峰值被用于识别无声片段。一旦识别片段的具体类型,片段类型专用扩展或压缩处理被施加给当前帧,用于理想地扩展或压缩该帧。在其他测试的实施例中,没有帧被归类为混合帧,并且在有声和无声帧之间的阈值被设置在.65。
3.2.1 扩展有声片段
当扩展帧中的有声片段时,开窗重叠相加(SOLA)方法用于校准和合并帧的匹配部分。通常,窗口被分割为上升部分即wa[n],和衰减部分即wb[n]。该重叠信号然后乘以这些窗口以平滑该过渡。具体地,延伸到过去的信号乘以衰减窗口,而延伸到将来的信号将乘以上升窗口。而且,因为校准的信号是相关的,传统窗口,如Hanning窗口开始是零并当相加时总和为1,即wa[n]+wb[n]=1,该窗口被用于消除或减小在帧的扩展部分的边界上的人工产物。这种窗口对本领域技术人员是公知的。
然而,不像用于扩展有声片段的传统系统,该瞬时音频定标器还通过交替片段的位置用作参考或模板,来减小在重构信号中可感知周期的人工产物,以便不像传统语音算法那样,该模板不总是取自片段的末端。具体地,该模板可以取自帧的末端、帧的开头、或帧中的各种位置。例如,在一个实施例中,定位该模板以便将过渡窗口的中点定位在波形的低能量点上。该模板的定位还用于减小在重构信号中可感知的人工产物。注意,根据需要多次重复该扩展过程,以实现对当前帧扩展的理想级别。
在测试的实施例中,如图3所示,音调的初步估计被用于估计片段需要被扩展(或压缩)的次数,以实现理想长度。具体地,每个迭代将压缩或扩展信号大约一个音调周期,因此迭代数量即K的较好估计,将由公式1提供,如下:
K=|M-N|/p0 公式1
其中p0是当前片段的初步音调估计。在被扩展的片段上均匀的分布该模板。而且,如果信号的过去历史是有效的,在模板之前的区域中搜寻匹配。可替换地,如果过去历史无效,基于更多有效数据的位置,在当前片段之前或之后将搜寻匹配。
具体地,如图3所示,从正在输入的音频信号中得到下一当前帧x[n]300开始该过程。然后,为使用的传统方法计算310初步音调估计p0。在一个实施例中,用于当前帧的初步音调估计仅仅是接收帧的平均音调。
下面,作为初步音调估计p0、当前片段大小、和理想帧大小的函数,估计320用于扩展信号所需的迭代数量。例如,因为每个迭代将扩展或压缩该信号将近一个音调周期,使用诸如公式1提供的方法可容易地估计迭代的数量。显然,通过在当前片段大小和理想大小之间分配差值,并且除以估计的音调大小,该结果是迭代数量的较好估计,该迭代数量是扩展或压缩该片段到理想大小所需的。
一旦迭代的数量已经被估计320,迭代计数器即i被初始化为零330。然后再次使用传统技术,在但前片段中、在用于当前片段的小部分即子片段或子帧的当前采样位置即s[i],估计音调p340。然后使用传统的开窗重叠相加(SOLA)方法350,用于用该音调周期滑动该模板,重叠该模板,并增加该片段,以通过在位置s[i]的片段的音调周期长度扩展该片段。
然后确定是否已经达到理想的片段大小360。如果没有到达理想的大小360,那么作为迭代数量K的函数,当前采样定位的位置即s[i]被调整,并且用于估计音调p340和开窗350以扩展该片段的上述步骤被重复,直到达到理想的片段大小360。最后,一旦到达理想大小360,将扩展的帧输出380给扩展帧的缓冲器390用于重放或使用。而且,在此时也确定是否存在更多将要处理的帧395。如果不存在更多要处理的帧395,过程终止。然而,如果存在更多要处理的帧395,得到下一当前帧300,并且从310到395重复上述步骤。
而且,当从帧的末端选择模板时,为了匹配片段,通过最传统的语音扩展系统,在过去中搜寻,即通过信号中的早期搜寻来实现模板的匹配。因此,在该情况下,基于帧和模板的长度,有必要保持一个或多个已播放的帧的缓冲。利用传统技术校准和合并该匹配片段,如关于步骤350的描述,因此扩展当前帧的长度。
可替换地,与传统的语音扩展系统不同,瞬时音频定标器也能从帧的开头提取模板。在该情况下,为了匹配片段,有必要在将来,即在信号的后期进行搜寻,尤其是当过去的帧无效时。因此,在该情况下,有必要延迟缓冲的帧,以便通过到信号的本地将来中搜寻匹配当前模板的片段,允许在播放该帧之前扩展当前帧。这可以实现,通过要求帧大小足够的常以包含多个音调周期。
而且,还与传统语音扩展系统不同,除了从帧的末尾或开头选择模板外,也可以在帧内从当前帧的开头和末尾之间某个位置上选择模板。在该情况下,如上所述,基于在当前帧中选择的模板的位置,通过到过去或未来中进行搜寻,识别对模板的匹配。
在一个实施例中,交替选择模板的位置以将可感知的人工产物的引入最小化,该可感知的人工产物源于在当前帧中的任何点上过于一致的周期。由于施加给任何指定的帧的扩展量增加超过几个音调周期,所以该能力变得尤其重要。实际上,因为可以要求一个以上的扩展操作以实现用于任何指定帧的理想的帧长度,所以以上述方式,可为在当前帧中的每个操作选择不同的模板用于重复的扩展操作,以便在任何指定点的周期性不会导致显著的人工产物。
而且,在一个实施例中,顺是音频定标器也使用可变的片段大小,其类似于为当前帧计算的平均音调周期的大小。而且,在有关的实施例中,然后通过将用于当前帧的扩展的理想或目标长度除以用于当前帧的平均估计音调周期来估计扩展迭代的数量,并且接着舍入到下面的整数。在该实施例中,当前帧被分为与估计的扩展迭代数量相等的多个模板,每个模板具有与平均估计的音调周期相等的大小。在整个当前帧中均等地分隔这些模板。因此,基于模板的长度、模板的数量、和帧的长度,模板可以重叠。
在有关的实施例中,为了确保在扩展操作最小化人工产物,通过确保模板被定位在帧中,来最小化每个模板中的能量,以便每个模板只包括一个本地信号峰值。具体地,在帧中几乎统一定位该模板,以便在任何的定样本中的任何本地信号峰值近似为模板长度的1/3到1/2左右,模板长度来自于模板的每一个边缘。这种在帧中的模板位置用来确保每个模板将只包含一个本地信号峰值。因此,每个模板包含的信号能量被最小化,因而允许在扩展信号中有较少人工产物的情况下进行扩展。
3.2.2 扩展无声片段:
无声片段即寂静、噪音、其他非周期声音等的扩展将以较大不同的方式进行处理。具体地,与扩展有声片段的过程不同,其中重复一个或多个与模板匹配的片段用于增加片段的长度,这对于避免引入周期性是重要的。原因是,听众可以容易地识别出这种片段中人工引入的周期性,并且这种周期性将表现为在重构的扩展信号中的信号人工产物。因此,不是增加匹配该模板的片段,而取而代之的是,通过产生理想长度的并具有类似于当前片段的功率频谱的不同信号片段来修改当前片段。然后使用开窗函数将产生的信号插入到当前片段的中部,以平滑在原始片段和产生的片段之间的过渡点。而且,在相关的实施例中,产生的片段的能量被进一步减小了大约30%左右的预定百分比,以便进一步减小在重构信号中的任何显著的人工产物。
在其他有关的实施例中,不是利用单个合成片段来扩展无声帧,而是产生多个合成片段,并插入到原始无声帧中的不同点中,以达到总的理想的帧长度。该实施例也提供利用较小FFT计算较小合成片段的优点,并因此可以要求减小计算开销。注意,同使用单个较长合成信号片段相比,该实施例的出现将产生感知优良的扩展帧。在该实施例中,帧的各种片段被等同地扩展、或压缩。例如,在测试的实施例中,FFT的大小被设置为预定长度,例如128个采样。
然后计算重叠需要获得理想的最终大小的片段的数量。注意,计算应当考虑不需要修改帧的开头或末尾。这可实现,通过不改变第一和最后的片段,仅仅在其中或在其外混合(重叠/相加)相邻的(可能合成的)片段。因此,在计算要被计算的合成片段的数量中,从帧长度中减去帧的第一和最后半个片段。因而,容易的通过如下所示的公式2计算相等大小的合成片段的数量n(并因此计算在当前帧中的原始片段的数量):
公式2
通过将片段插入到帧的n个片段的每个片段的中心,计算的n个合成片段于是被均匀地分布在帧中。
在其他情况下,产生该合成的信号片段使之具有与当前帧类似的功率频谱。这可以实现,通过计算所有或部分当前帧的傅立叶变换,依靠是否插入单个或多个片段,将相位的随机旋转引入到FFT系数中,并且对每个片段简单的计算反向FFT。产生的信号片段具有类似频谱,但与原始片段无关。另外,通过在计算FFT之前进行零填充该信号可获得较长的信号。
注意,对于有关产生合成片段而描述的特定实施例,上述提供的范例不意味着限制瞬时音频定标器的范围。具体地,本领域技术人员应当清楚存在多个用于产生信号的传统技术,该信号具有类似频谱,并与原始信号无关。例如包括,随机信号的LPC滤波的任何这种技术和其他传统技术可用于产生该合成信号片段。
如上所述,当前帧被分为两个或多个部分,并且只将合成的片段插入到帧的分开部分中,通过开窗和重叠来平滑在合成片段和原始帧之间的过渡。注意,在上述任何一个实施例中,帧或片段的开头和末尾完全没有改变。因此,该过程可避免人工产物的产生或来自非匹配帧或片段边界的人工产物。
而且,与用于有声片段的开窗不同,在此使用的优选的重叠平滑窗口是不同的。例如,尽管用于扩展有声片段的信号的重叠部分是相关的,但在无声情况下的信号的重叠部分理论上是无关的。因此,通过使用窗口,如传统的正弦窗口可在边界点上达到更好的结果,即减小人工产物,该正弦窗口保持能量恒定并当平方和相加时总和为一,即(wa[n])2+(wb[n])2=1。这种窗口对本领域技术人员来说是公知的。该过程通常由图4的步骤400到480表示。
具体地,如图4所示,用于从当前信号帧中产生合成信号片段的一个实施例,通过从输入的音频信号中获得下一个当前帧x[n]400而开始。下面,在一个实施例中,该当前帧、或片段x[n]被零填充410,从而产生具有足够长度的合成片段,以达到理想的帧长度。具体地,在该实施例中通过用多个零简单填充x[n]来确定零填充410的数量,该多个零等于在当前帧或片段长度,和理想帧或片段长度之间的采样的差值。
下面,指定x[n],不论是否已经被零填充410,计算420该FFT。该FFT的相位被随机化430。下面,根据具有随机化相位的FFT计算440该反向FFT即y[n]。该过程即步骤420到440的结果是合成帧或片段即y[n],其具有类似频谱,但与原始片段即x[n]无关。原始(非被零填充的)帧或片段x[n]被分为两部分,并且在这两部分之间插入y[n],并且利用上述传统的重叠/添加过程450,例如传统正弦窗口进行无缝添加以产生扩展的帧。
之后,将扩展的帧输出460到扩展帧470的缓冲器,用于如所期望的重放或使用。而且,此时也确定是否存在更多的帧需要处理480。如果没有更多的帧需要处理480,则过程结束。然而,如果存在更多的帧需要处理480,那么得到400下一个当前帧,并且重复如上所属的步骤410至480。
在上述的使用多个合成片段用于扩展该帧的实施例中,该合成片段都具有相等的长度并均匀分布。然而,在有关的实施例中,显示低能量帧的这些部分比显示高能量帧的这些部分进行更大的扩展,而不是仅仅使用均匀分布。该实施例用作进一步减小人工产物。然而,甚至在该实施例中,尽管优于以前的实施例,但信号的变化可超过预计想象,因此导致音频差值可以被听众感知。
因此,在其他有关的实施例中,相对于原始内容被修改的数据量被减小。因此,产生的部分合成的信号帧或片段对于听众感知来说更接近原始信号。具体地,在该实施例中,不是仅产生多个合成片段,而是使用合成的和复制的原始信号的混合物,在某种程度上尽可能多的保持原始信号,而最小化在扩展的片段或帧中的可感知的人工产物。
例如,在其他实施例中,如图5所示,不是直接处理整个当前帧x[n],而是修改参照图4描述的过程以产生较小的FFT,其具有更多的本地化频谱信息,以避免可导致显著的人工产物的潜在的扩展瞬态。具体地,在该实施例中,再次通过从输入的音频信号中获取下一个当前帧x[n]500开始,从当前信号帧中产生合成信号片段。然而,不是产生单个合成片段,而是产生多个较小的合成片段,并通过上述重叠/添加过程插入。具体地,为了确保在前述帧和将要产生的部分合成帧之间的平滑过渡,该过程一开始,就首先对当前帧x[n]进行开窗,用于将原始数据混合到将变成部分合成帧y[n]505的开始处。用于实现开窗和混合的方法如公式3所述:
y[1:M]=0;y[1:K]=x[1:K]·w[K+1:2K] 公式3
其中M是理想的片段大小,N是当前的片段大小,FFT大小为2K,并且w[n]是采用的混合窗口。注意公式3的第一部分只是初始化y[n],用于将来使用(例如,在公式7中)。
下面,计算510重叠片段的总数即T,其长度在2K以内,且第一和最后的半个片段未计算在内,需要T来获得理想的最终片段大小。通常,按照公式4所描述的来完成计算510:
或者简化的, 公式4
下面,重叠片段计数器即i被初始化为零515。然后,在原始数据即x[n]中的起点s和在起点s开始的x[n]的对应子片段即z[n],按照公式5A和5B进行计算:
s=round(K+i·(N-2K)/(T-1)) 公式5A
z[1:2K]=x[(s+1):(s+2K)] 公式5B
下面,z[n]乘以平滑窗口即v[n],并且平滑的子片段的FFT按照公式6进行计算:
z[w]=FFT{v[n]·z[n]} 公式6
在这一点,产生的FFT的相位即Z[w]被随机化530、标量化,以补偿平滑窗口增益(例如,2用于正弦窗口),并且根据Z[w]计算535反向FFT即u[n],以产生具有类似频谱的合成子片段,但与原始片段z[n]无关。最新的合成信号子片段u[n]在点s被插入到原始信号中,并且使用上述传统的重叠/相加过程540,例如,传统的正弦窗口进行无缝添加,以产生部分扩展帧,如公式7所述:
y[(i·k+1):(i·k+2k)]=y[(i·k+1):(i·k+2K)]+w[1:2K]·u[1:2K] 公式7
在这一点,重叠片段计数器i被递增545,确定为获得理想最终片段大小的总数T的重叠片段是否已经被插入550。如果更多的重叠片段需要被计算550,那么重复如上所述的步骤520到550,直到所有重叠片段已经被计算,并被插入到x[n]以产生部分合成扩展片段即y[n]。最后,一旦所有重叠片段都被计算并被插入以产生y[n],为了确保在y[n]和下一帧之间的光滑过渡,通过到帧y[n]555的末尾中对部分具有来自x[n]的原始数据的合成帧y[n]进行开窗,结束该过程。用于实现开窗和合并的一种方法如公式8所述:
y[(i·k+1):(i·k+k)]=y[(i·k+1):(i·k+K)]+w[1:K]·x[(M-K+1):M] 公式8
上述实施例计算子片段,用于插入和对原始信号帧或片段开窗。然而,计算的子片段被均匀分布在原始信号帧上,而不考虑在原始信号帧中的内容或实际采样。因此,在有关的实施例中,如图6所示,通过首先在被扩展的帧或片段中选择特定点,而不仅仅是均匀地扩展整个原始片段,上述参照图5描述的过程进一步得到改善。而且,该实施例也确定对计算的FFT的相位的随机化是否合适于每个子片段,或在用于扩展该原始信号片段或帧的重叠/添加操作中,是否可以更改每个子片段。
因此,在图6描述的实施例中,该过程再次通过从输入的音频信号中获得下一当前帧x[n]600来开始。然而,与上述的实施例不同,当前帧然后被分析以选择605扩展当前帧的最佳T起点即s[1:T]。注意在章节3.2.3参照图7详细描述了选择最佳T起点。指定帧被扩展的这些点,图6的过程以近似于参照图5所描述的过程的方式继续,下面将会突出描述一些更进一步的差别。
具体地,在选择起点s[1:T]605之后,为了确保在先前帧和将被产生的部分合成帧之间的平滑过渡,该过程开始首先开窗并合并当前帧x[n],用于将原始数据合并到将变成部分合成帧y[n]的开始处610。用于实现开窗和合并的一种方法如上面所述的公式3所示。下面,计算615重叠片段的总数T,其长度在2K以内,且第一和最后的半个片段未计算在内,需要T来获得理想的最终片段大小。通常,通过上面所述的公式4来实现计算615。
下面,重叠片段计数器i被初始化为零620。指定预选择的起点s[i],对应于当前起点的子片段z[n]从当前信号帧中获取,如公式9所示:
s=s[i];z[1:2K]=x[(s+1):(s+2K)] 公式9
然后,确定630当前子片段是否将被合成。换言之,确定630子片段的FFT是否具有它的如上所述的随机化相位。确定630作为当前和相邻片段起点的函数,在下面的章节3.2.3中根据图7进行详细描述。更具体地,如果在当前帧的起点s[i]和前一帧的起点s[i-1]之间的距离是K,则没有必要随机化s[i+1]。这是因为新帧和旧帧在原始和扩展的帧中具有相同的间隔,并因此可以保存该信号。而且,如果最后未更改的帧是j,并且s[i]-s[j]>2K,则没有必要在起点s[i]上随机化该帧,因为信号将不会重复。也可使用小于2K的阈值(例如,在一个实施例中使用K)。如果确定630即将随机化该相位,那么当前子片段z[n]乘以平滑窗口v[n],并且根据所示的公式6计算635平滑子片段的FFT,如上所述。
在这一点上,与上述类似,产生的FFT的相位Z[w]被随机化640,并且根据Z[w]计算645反向FFT即u[n],以产生具有类似频谱的合成子片段,但与原始片段z[n]无关。在点s上将最新的合成信号子片段u[n]插入到原始信号中,并且使用上述传统的重叠/添加过程650,如传统正弦窗口进行无缝添加,以产生部分扩展帧,如上所述的公式7所示。
可替换地,如上所述,在确定630当前子片段的FFT将不具有它的如上所述的随机化相位的情况下,那么为了在点s使用上述传统的重叠/添加过程650插入到原始信号中,z[n]仅仅作为没有更改的z[n]而被通过,如上所述。而且,应当指出,在特定片段没有被修改的位置,在步骤650中的不同合并窗口是合适的,具体地,如果当前或以前的子片段没有被修改,那么使用不同的合并窗口(例如,Hamming窗口而不是正弦窗口)。原因是在该情况下,信号的未修改的子片段实际上是相关的。因此,使用的窗口应当是wa[n]+wb[n]=1,而不是如上所述的(wa[n])2+(wb[n])2=1。窗口的选择将保存信号的能量。
而且,应当指出,合并未修改的子片段和原始信号与合并信号本身是一样的。因此,产生的子片段将等同于原始信号的对应部分。因此,在一个实施例中,不是执行合并操作,对于未修改的片段,而是从原始信号中简单复制对应的片段。
在这点上,根据图5描述的范例,重叠片段计数器i被递增660,确定为获得理想最终片段大小的总数T的重叠片段是否已经被插入665。如果更多的重叠片段需要被计算665,那么重复如上所述的步骤625到650,直到所有重叠片段已被计算出,并被插入到x[n]以产生部分合成扩展片段即y[n]。最后,一旦所有重叠片段都被计算出并被插入以产生y[n],为了确保在y[n]和下一帧之间的光滑过渡,通过到帧y[n]670的末尾中对部分具有来自x[n]的原始数据的合成帧y[n]进行开窗合并,结束该过程。用于实现开窗和合并的一种方法如上述公式8所示。
3.2.3 选择扩展的片段:
指定各种片段类型和上述的扩展方法,仍旧存在当前帧的哪个点是扩展该帧的最佳点的问题。例如,甚至在一个相对短的帧中,诸如信号的20毫秒片段,经常存在一个或多个过渡点或者甚至是几毫秒的寂静。在该情况下,选择帧被扩展的特殊点是有利的。因此,在一个实施例中,采用扩展“质量”的方法,其中基于片段能量的组合(低能量更好)来确定帧中扩展的位置,并且发现标准化相关系数用于与其匹配的片段(越高越好)。
例如,在一般情况下,20毫秒帧可以分为4个子帧或每个5毫秒片段,或可替换地,潜在地分为重叠片段,该片段近似的具有估计的音调周期。如果特定片段的计算的能量足够低,那么就认为过渡存在于该帧中。然后选择最低能量片段用于扩展。然而,如果能量不是足够低,过渡未必存在于帧中,并且每个子帧的匹配的标准化自相关被用来选择最佳匹配以便扩展。
例如,图7描述了用于选择将要扩展的片段的一个实施例。通常,为了保存更多的原始信号,具有采样间隔尽可能是K(即,FFT/2)的多个起点是最好的。通过观察,图7描述了用于确定起点的一个示例性过程。第一步是在FFT/2采样间隔的点上选择初始起点。需要一次一个的,将许多新的点插入在存在的点之间。新的点被插入在最低能量片段中。而且,在一个实施例中,为了说明不同长度的片段,每个片段的平均能量被加权以拆分较长的片段。在一个实施例中,通过片段大小的平方根来加权该片段。然而,可使用任何传统加权方法。在最后分布中,许多点仍旧是FFT/2间隔。这些片段(很可能是高能量片段),不需要修改。
具体地,如图7所示,在选择用于扩展当前信号帧的最佳点中,该过程一开始,就确定在理想帧大小即M中的内部片段T(T=(M/K)-1)的总数,和在原始帧大小即N中的内部片段P(P=(M/K)-1))的总数(步骤700)。接着选择在k个样值间隔上均匀地展开的p个初始点s[i]=iK(步骤710),同时,点计数器Pt被设置为P+1(步骤720)。接着计算(步骤730)每个子片段的平均能量E(i),如公式10所述:
E(i)=avg(x(s[i]:s[i+1])2) 公式10
下面,在一个实施例中,与每个子片段长度成比例地,对每个子片段的平均能量E(i)加权(步骤740)。如上所述,在测试的实施例中,通过片段大小的平方根来加权该片段(步骤740),如公式11所述:
公式11
然而,如上所述,任何传统的加权方法可用于加权该能量值。
一旦加权740,检查平均能量值E(i)以选择具有最低能量值的片段s[j](步骤750)。如上所述,利用用于扩展被定位在拆分点上的当前帧的新起点s[Pt],这些最低能量片段然后被分为两个(步骤760),如公式12所示:
s[Pt]=(s[j]+s[j+1])/2 公式12
在一个实施例中,为了简化符号,根据能量值对s[i]进行排序(步骤770)。例如,假设存在四个当前点,即s[1:4]={64、128、192、256},并且在s[3]和s[4]之间即在224上引入新点,该新点应是s[5]。因此,现在的顺序是s[1:5]={64、128、192、256、224}。排序s[:]将恢复点的正确顺序,使得s[1:5]={64、128、192、224、256}。
最后,确定是否已经选择用于扩展的最佳T最佳点(步骤780)。如果没有,重复如上所述的步骤720到780,直到选定用于扩展的最佳T最佳点。
3.3 扩展混合片段
如上所述,混合片段表示周期和非周期成分的组合。因此,用于扩展有声片段或用于无声片段的方法都不能单独用于扩展混合片段。例如,使用处理有声片段的方法将把显著的人工产物引入到无声的频谱部分。同样,使用处理无声片段的方将破坏在片段的任何有声部分中的周期性。因此,在一个实施例中,两个方法都使用。具体地,使用有声和无声方法从当前混合片段中产生信号。这些信号然后被组合以产生包括有声信号和无声信号的混合信号。
而且,在有关实施例中,产生的有声和无声信号再次被加权,作为标准化互相关峰值的函数。例如,如上所述,由于片段变得更加周期性,即由于在片段中存在更多语音,标准化互相关峰值增加。因此,在标准化互相关峰值较高的情况下,较多地加权该有声信号将以一些周期性为代价来改善在扩展的片段中的语音质量,并因此潜在地改善在扩展的片段的无声部分中的一些可感知的人工产物。相反,由于标准化互相关峰值减小,片段中存在较小的周期性。因此,较多地加权无声信号,由此以减小周期性为代价来改善片段的无声部分的感知质量,并潜在地改善片段的任何有声部分的可识度。
例如,在测试的实施例中,通过使用上述有声片段方法来产生理想长度的信号,分别对应于.45到.95的标准化互相关峰值的从0到1的线性加权,被用于产生用于复合信号的有声成分。同样,通过使用上述无声片段方法来产生相同理想长度的信号,分别对应于.45到.95的标准化互相关峰值的从0到1的线性加权,被用于产生用于复合信号的无声成分。然后简单相加这两个加权的信号部分以产生复合信号。然而,本领域技术人员应当清楚,不需要使用上述的线性加权,并且该加权可以是期望的线性或非线性加权。而且,上述被识别的用于有声和无声片段的阈值用在该测试的实施例中,并只用于说明。显然,根据在此描述的方法可使用用于识别有声、无声和混合片段的其他阈值。
3.4 用于压缩片段的分层方法
在有充分自由的选择的应用中,在任何指定帧中确定选择哪个片段用于实际压缩也是重点考虑的,由于它一般影响用于听众的重构信号的感知质量。例如,不是均等地压缩指定信号的所有片段,而是一般通过使用分级或分层方法进行压缩来达到更好的结果。具体地,如上所述,在对帧即将进行压缩的时候已经知道每个片段的类型。指定该信息,通过首先以优先分级顺序压缩特定片段类型,在任何指定帧中可达到理想的压缩。
具体地,首先压缩表示有声片段或寂静片段(即,包括相对低能量非周期信号)的帧或片段。下面,压缩无声片段。最后,压缩混合片段,或包括瞬态片段。对于该优先顺序的原因是,有声或寂静片段的压缩是各种片段类型中,在不产生显著的人工产物的情况下最容易完成的。无声片段的压缩是在不具有显著的人工产物的情况下次容易压缩类型。最后,压缩混合片段和包含瞬态片段,由于在不具有显著的人工产物的情况下,该片段最难压缩。
因此,不是均等地压缩信号的所有片段,而是一般通过有选择地压缩特定帧来达到更好的结果。例如,压缩表示语音、寂静或简单噪音的帧,同时避免无声片段或瞬态压缩,可产生具有减小了的可感知的人工产物的重构信号。如果通过压缩有声或寂静片段不能实现充分压缩,则以上述方式压缩非过渡无声片段。最后,如果通过有声片段或非过渡无声片段的压缩不能实现充分压缩,则压缩包括过渡即混合片段的片段。对分级的压缩的方法用来限制在重构信号中可感知的人工产物。
而且,在离线应用中,或者如果根本无法播放的帧是有效的,那么必要的话,通过只压缩将导致最小量信号破坏或人工产物的那些片段,在完全有效信号的一个或多个帧上可开展期望的压缩。例如,实现该压缩的一个特定方法是向每个不同的帧类型预分配任何理想的压缩比。例如,5X的压缩比可分配给寂静帧,2X分配给有声帧,1.5X分配给无声帧,并且1X(无压缩)分配给混合或过渡片段。显然,本例中的压缩比只是用于说明,并且任何理想的压缩比可分配给各种帧类型。
通常,一旦被压缩的特定片段已经被选择或识别,就以与上述用于扩展片段相同的方式来处理片段的压缩。例如,当压缩有声帧时,从片段中选择模板,并且执行匹配的搜寻。一旦识别该匹配,片段就被开窗、重叠和相加,因此截断在模板和匹配之间的信号。由此,该片段被缩短,或压缩。换言之,当压缩无声片段时,随机或预定移动用于截断片段或帧的一部分,与诸如恒定平方和窗口的窗函数一起,将片段压缩到理想数量。最后,与上述有关扩展混合片段类似,使用有声和无声方法的加权组合来压缩混合片段。
为了示意和说明,已经介绍了用于提供自动可变扩展和压缩音频信号帧的瞬时音频定标器的上述说明。并不意味着穷举,或将本发明限制在精确形式的公开内容。根据上述教导,任何修改或变化是可能的。而且,应当指出,任何或所有上述替换的实施例可用在期待的任何组合中,以形成在此所述的瞬时音频定标器的额外的混合实施例。本发明的范围不由详细的描述所限制,而由在此附加的权利要求限制。