发明内容
本发明提出了一种FEC技术,包括通过分析之前的解码语音推导出滤波器,合适的设置所述滤波器的内部状态(存储器),计算所述滤波器的“铃音”信号(ringing signal),并使用外推的波形对生成的滤波器铃音信号执行叠加操作,以确保帧边界附近的平滑波形转换而不需要G.711附录I中的额外延时。在本发明中,当给滤波器的输入信号为零时,所述滤波器的“铃音”信号便是所述滤波器的输出信号。选择的所述滤波器使得在对应丢失帧之前的最后一个好帧的最后几个采样的时间周期内,滤波器的输出信号与所述解码语音信号相同。因为在丢失帧开始时滤波器具有非0内部“状态”(存储器),所述输出信号通常是非0的,即使从丢失帧开始时开始所述滤波器输入信号被设为0。以此方法得到的滤波器铃音信号具有以平滑方式延续上一个好帧的末端的波形至当前丢失帧的趋势(即,帧边界没有明显的波形不连续)。在一个实施例中,所述滤波器包括长期预测滤波器和短期预测滤波器。
长期预测滤波器一般需要有长信号缓存作为其滤波器存储器,因此明显的增加了总存储器需求量。本发明的一个实施例通过不维持长期预测滤波器的存储器的长期缓存,而当需要时实时计算必要的滤波器存储器,来实现非常低的存储器大小要求,达到很低的内存要求。这可以使用长度仅为最大间距周期的1倍加上预定义分析窗的长度的语音历史缓存(history buffer)(而不是G.711附录I的3.5倍)来完成。
在本发明的一个实施例中,长期和短期预测滤波器用于在每个坏帧(即,丢失帧)的开始以及帧擦除后的第一个好帧(如,接收到的帧)的开始生成用于叠加操作的所述铃音信号。
在本发明的另一个实施例中,长期和短期预测滤波器用于仅在帧擦除每次出现的第一错误帧开始时生成叠加操作用的铃音信号。从第二个连续的错误帧直到出现振擦除后的第一个好帧,代替滤波器铃音信号,系统继续前一帧的波形外推以获得从前一帧到当前帧的语音波形的平滑扩展,并使用所述扩展波形与由当前坏帧获得的新外推波形或针对帧擦除后第一个好帧的解码好波形进行叠加操作。
根据本发明的一个特征,对于坏帧以及对于帧擦除后的第一个好帧,叠加的长度是分别进行调谐的,并且两个最优叠加长度通常是不同的。
根据本发明的另一个特征,针对帧擦除后的第一个好帧的叠加长度可自适应地在用于无声语音(unvoiced speech)的较短长度和用于有声语音(voicedspeech)的较长长度之间进行转换。
根据本发明的另一个特征,如果正在重建的语音的当前帧为纯语音(接近周期性的),那么执行周期性波形外推;如果语音的当前帧为纯无声的,则通过传送一合适比例的随机白噪音序列给短期预测滤波器(通常称作“LPC合成滤波器”)来执行波形外推;如果语音当前帧位于上述两个极端之间,则通过使用混合上述周期性部分和随机部分的混合模型来执行波形外推,且周期性部分所占比例大致与周期性的程度成比例。
根据本发明的另一个特征,可使用一种计算有效且存储器有效的方法来生成上述的随机白噪音序列。所述方法基于对由N个随机白噪音样本组成的存储表的等间距采样和按模数索引来进行,其中各样本之间的间距取决于帧索引(frame index),并且N是比需要在擦除帧中产生的随机白噪音样本的数量大的最小素数。
根据本发明的一个方面,提供一种解码语音信号的方法,包括:
解码语音信号的一个或多个非擦除帧;
检测所述语音信号的第一个擦除帧;
对检测所述第一擦除帧作出如下响应:
基于所述语音信号的之前解码的部分推导出滤波器;
使用所述滤波器计算铃音信号片段;
生成所述第一擦除帧的替代帧,其中生成所述替代帧包括将所述铃音信号片段叠加至外推波形。
优选地,推导出所述滤波器包括推导出长期滤波器和短期滤波器,且使用所述滤波器计算所述铃音信号片段包括使用长期和短期滤波器计算所述铃音信号片段。
优选地,推导出所述长期滤波器包括基于所述语音信号之前解码的部分计算长期滤波器存储器。
优选地,基于所述语音信号之前解码的部分计算所述长期滤波器存储器包括对所述语音信号之前解码的部分进行反向短期滤波。
优选地,所述方法进一步包括:
检测所述语音信号的一个或多个随后的擦除帧,所述一个或多个随后的擦除帧及时紧跟在所述第一个擦除帧后;
使用所述滤波器为每个所述随后的擦除帧计算铃音信号片段。
优选地,所述方法进一步包括:
检测所述语音信号的一个或多个随后的擦除帧,所述一个或多个随后的擦除帧及时紧跟在所述第一个擦除帧后;
为所述一个或多个随后的擦除帧中的每一个生成替代帧,其中生成替代帧包括将对之前解码的帧外推获得的波形的延续与对所述擦除帧外推获得的波形叠加。
优选地,所述方法进一步包括:
检测所述第一个擦除帧后的所述语音信号的第一个非擦除帧;
使用所述滤波器为所述第一非擦除帧计算铃音信号片段。
优选地,所述方法进一步包括:
检测所述第一个擦除帧后的所述语音信号的第一个非擦除帧;
将对之前解码的帧外推获得的波形的延续与所述第一个非擦除帧的一部分叠加。
优选地,所述将对之前解码的帧外推获得的波形的延续与所述第一个非擦除帧的一部分叠加包括选择叠加窗的长度。
优选地,所述选择叠加窗的长度包括基于所述语音信号的之前解码帧是否为无声帧选择叠加窗的长度。
优选地,解码所述语音信号的一个或多个非擦除帧包括以块独立的方式解码所述语音信号的一个或多个非擦除帧。
根据本发明的一个方面,提供一种解码语音信号的方法,包括:
解码所述语音信号的一个或多个非擦除帧;
检测所述语音信号的擦除帧;
对检测所述擦除帧作出如下响应:
基于所述语音信号之前解码的部分导出短期滤波器;
生成伪随机白噪音采样序列;
通过所述短期滤波器对所述伪随机白噪音采样序列进行滤波,生成外推波形;
基于所述外推波形生成所述擦除帧的替代帧。
优选地,对于每个将要生成的样本,所述生成伪随机白噪音采样序列包括:
通过统一概率分布函数计算伪随机数;
将伪随机数映射为弯曲的缩放比例(warped scale)。
优选地,所述生成伪随机白噪音采样序列包括:
顺序地从预先计算的白高斯噪音样本阵列中读取样本。
优选地,所述生成伪随机白噪音采样序列包括:
将N个伪随机高斯白噪音样本存储在表内,其中N是比t大的最小素数,且t表示将要生成的样本的总数量;
从所述表中获取t个样本组成的序列,其中所述序列中的第n个样本使用基于下面函数的索引获得:
cn以N为模,
且其中c是所述语音信号内连续擦除帧的当前数量;
基于所述语音信号的前一解码部分的周期性,调整所述周期性波形部分和随机波形部分;
将所述调整后的周期性波形部分和调整后的随机波形部分相加。
优选地,基于所述语音信号的前一解码部分的周期性调整所述周期性波形部分和随机波形部分包括:
通过比例因子Gp调整所述周期性波形部分;
通过比例因子Gr调整所述随机波形部分;
其中Gr按照所述语音信号的前一解码部分的周期性的函数进行计算,且Gp=Gr-1。
优选地,推导出所述长期滤波器包括基于所述语音信号的之前解码的部分计算长期滤波器存储器。
优选地,所述基于所述语音信号的之前解码的部分计算长期滤波器存储器包括反向短期滤波所述语音信号的前一解码部分。
优选地,使用所述短期滤波器和长期滤波器生成周期性波形部分包括:
使用所述长期和短期滤波器计算铃音信号片段;
将所述铃音信号片段叠加至外推波形。
优选地,使用所述短期滤波器生成随机波形部分包括:
生成伪随机白噪音采样序列;
通过所述短期滤波器对所述伪随机白噪音采样序列进行滤波以生成所述随机波形部分。
优选地,所述方法进一步包括:
在通过所述短期滤波器对所述序列滤波之前,比例调整所述伪随机白噪音采样序列。
优选地,调整所述伪随机白噪音采样序列包括:通过与对语音信号的之前解码的非擦除帧计算出的短期预测余量相对应的增益测量,调整所述伪随机白噪音采样序列。
优选地,解码所述语音信号的一个或多个非擦除帧包括以块独立的形式解 码所述语音信号的一个或多个非擦除帧。
根据本发明的一个方面,提供一种解码语音信号的方法,包括:
解码所述语音信号的一个或多个非擦除帧;
检测所述语音信号的擦除帧;
对检测所述擦除帧作出如下响应:
基于所述语音信号的之前解码的部分推导出短期滤波器和长期滤波器;
使用所述短期滤波器和长期滤波器生成周期性波形部分;
使用所述短期滤波器生成随机波形部分;
生成所述擦除帧的替代帧,其中生成替代帧包括将所述周期性波形部分和随机波形部分混合。
优选地,混合所述周期性波形部分和随机波形部分包括:
基于所述语音信号的之前解码部分的周期性按比例调整所述周期性波形部分和随机波形部分;
将调整后的周期性波形部分和调整后的随机波形部分相加。
优选地,基于所述语音信号的之前解码部分的周期性按比例调整所述周期性波形部分和随机波形部分包括:
通过比例因子Gp调整所述周期性波形部分;
通过比例因子Gr调整所述随机波形部分;
其中,Gr按所述语音信号的之前解码部分的周期性的函数进行计算,且Gp=Gr-1。
优选地,推导出所述长期滤波器包括基于所述语音信号的之前解码部分计算长期滤波器存储器。
优选地,基于所述语音信号的之前解码部分计算长期滤波器存储器包括反向短期过滤所述语音信号的之前解码部分。
优选地,使用所述短期滤波器和长期滤波器生成周期性波形部分包括:
使用所述长期和短期滤波器计算铃音信号片段;
将所述铃音信号片段叠加至外推波形。
优选地,使用所述短期滤波器生成随机波形部分包括:
生成伪随机白噪音采样序列;
通过所述短期滤波器对所述伪随机白噪音采样序列进行滤波以生成所述随机波形部分。
优选地,对于每个将要生成的样本,所述生成伪随机白噪音采样序列包括:
使用统一概率分布函数计算伪随机数;
将所述伪随机数映射为弯曲的缩放比例。
优选地,生成伪随机白噪音采样序列包括:
从预先计算的白高斯噪音采样阵列中顺序地读取样本。
优选地,生成伪随机白噪音采样序列包括:
将N个伪随机高斯白噪音样本存储在表内,其中N是比t大的最小素数,且t表示将要生成的样本的总数量;
从所述表中获取t个样本组成的序列,其中所述序列中的第n个样本使用基于下面函数的索引获得:
cn以N为模,
且其中c是所述语音信号内连续擦除帧的当前数量。
优选地,所述方法进一步包括:
在通过所述短期滤波器对所述序列进行滤波之前,按比例调整所述伪随机白噪音采样序列。
本发明的优点、目的和新特性以及本发明各个实施例的结构和操作,将在后续结合附图给出详细的介绍。需要注意的是,本发明并不限于这些具体实施例,这些实施例仅仅是出于解释的目的。本领域的普通技术人员基于本申请的教导显然还可以获得其他各种实施例。
具体实施方式
以下结合附图和实施例对本发明进行详细描述。在不脱离本发明的精神实质和范围情况下,可以提出其它的实施例和对本申请书中的实施例进行修改。因此,以下的详细描述不是对本发明的限制,本发明的范围由权利要求来定义。
对本领域技术人员显而易见的是,如下所述,本发明可实现于许多硬件、软件、固件和/或图示的实体构成的实施例中。实现本发明的任何实际的软家代码以及专用的控制硬件均不是对本发明的限制。因此,本发明的操作和动作将基于以下理解进行描述,即可以对本申请中的实施例进行各种修改和变更。在详细描述本发明之前,先介绍实现本发明的环境将有助于理解本发明。
A.本发明一个实施例的语音解码器的实现
本发明可用于块独立的语音编解码器的解码器环境中隐匿帧擦除或数据包丢失产生的质量降低影响。本发明的通用原理可以应用于任何块独立的编解码器中。然而,本发明的应用不仅限于块独立的编解码器,下面描述的技术也可应用于其他类型的编解码器,如预测编解码器。图1是本发明优选实施例100的框图。
在该优选实施例中,解码器接收的语音信号的每个帧分为以下5个不同的级别:
(1)一串连续的擦除帧中的第一个擦除(坏)帧;如果一次擦除仅包括一个坏帧,那么该坏帧属于此类;
(2)一次擦除中有两个或多个帧的情况下,一串连续的擦除帧中的第二个坏帧;
(3)不是一次擦除中的上述第一个或第二个坏帧的坏帧;
(4)擦除后立即接收到的第一个(好)帧,
(5)非擦除后立即接收到的第一个好帧的好帧。
图2是由本发明优选实施例所区分的5个不同类别的一系列帧200的示意图。在图2中,长的水平轴是时间轴,每个垂直的记号表示2个临近的帧的边界位置。图2中的帧越靠右,帧就越新(随后出现)。阴影的帧是“好”帧,或者是那些由语音解码器接收的无传输错误的帧。无阴影的帧是“坏”帧,或者是那些未由解码器接收的或在解码器处被严重破坏的帧,因此认为“被擦除”。一串两个或多个连续的坏帧在此称为单次“擦除”。
本发明的该优选实施例为不同类别的帧执行不同的任务;此外,为某一类别的帧执行的任务的计算结果可随后用于其它类别的帧。因此,很难通过传统的框图展示该FEC技术的一帧接一帧的操作。
为了克服这个问题,图1所示为本发明实施例100的特殊类型的框图。图1的目标是为了说明本发明的基本概念,而不是一步接一步、一个模块接一个模块的操作。图1中的各个功能块可处于非无用状态或被旁路,这依赖于当前帧所属的类别。下面的描述将会解释清楚在哪个类别的帧中哪个功能块为激活状态。同样,为了更清楚的描述操作顺序和控制流程,在图3和图4中示出了实现本发明的优选方法的流程图。
首先对图1中的框图100进行描述,随后详细介绍图3和4的流程图。
参照图1,实心箭头表示语音信号流或其它相关的信号。虚线箭头表示涉及滤波器参数、滤波存储器等等的更新的控制流。
以下将描述当前帧为好帧的情况。对于好帧,模块105将输入比特流解码为解码语音信号的当前帧,并传送至模块110以存储在解码语音缓存器中;随后,模块115、125和130被激活。在优选实施例中,解码语音缓存器的大小是最大间距周期(pitch period)的一倍加上预定义分析窗的大小。最大间距周期可以为,例如17和20ms之间,而分析窗的大小可以在5和10ms之间。
使用存储于缓存器内的解码语音信号,模块115执行长期预测分析以导出长期滤波器参数(间距周期、抽头权重(tap weight)等等)。同样地,模块130执行短期预测分析以导出短期滤波器参数并计算当前帧中短期预测残留信号的平均幅度。短期滤波器和短期预测残留在语音编码文献中也被称作LPC(线性预测编码)滤波器和LPC预测残留。模块125取出当前帧中解码语音的最后几个采样样本,颠倒其顺序并将其存储在短期滤波存储器中。
如果当前帧是好帧但不是擦除后的第一个好帧(即第五类帧),那么模块135、155、160、165和170不被激活,模块140、145、150、175、180和185被绕开。换句话说,解码语音的当前帧被作为输出语音信号直接播出。
另一方面,如果当前帧是擦除后的第一个好帧(即第四类帧),那么在紧靠的最后帧(即最后一次擦除的最后一个坏帧)内,应该有已经计算出并存储在模块135内的铃音信号片段(稍后作解释)。在这种情况下,模块155、160、165和170也不被激活,并且模块140被绕开。模块145执行存储于模块135中的铃音信号片段与存储于模块110中的解码语音信号之间的叠加操作以得到从存储的铃音信号至解码语音的平滑转换。这是为了避免当前帧开始时的波形不连续性。叠加长度一般短于帧的大小。在叠加操作之后,模块145使用存储于模块110内的解码语音信号中对应的采样填充当前帧的剩余部分。模块150、175、180和185被绕开。即,解码语音的叠加后的当前帧作为输出语音信号被直接播出。
如果当前帧是一次擦除中的第一个坏帧(即第一类帧),模块115不提取间距距离或抽头权重(它仅使用为上一个好帧提取的值),但它将计算语音测量值以确定存储于模块110内的解码语音信号的周期性如何。所述语音测量值随后用于分别控制模块175和170的增益值Gp和Gr。此外,模块115也对最后几个帧求平均值计算每个帧的间距周期改变。模块120通过使用短期滤波器仅对比当前帧开始时的叠加周期早的一个间距周期内的片段进行解码语音的反向滤波,来计算长期滤波器存储器。如语音编码文献中提到的,反向滤波的结果是“LPC预测残留”。随后,模块135对由长期滤波器抽头权重计算的长期滤波存储器片段进行比例调整,然后将生成的信号通过短期合成滤波器传送,该短期合成滤波器的系数由模块130在前一帧中更新,并且其滤波存储器也在前一帧中由模块125设置。所述短期合成滤波器的输出信号是将在当前帧的开始时使用的铃音信号(一次擦除中第一个坏帧)。
接下来,模块140使用模块115在前一个好帧期间确定的间距周期和外推比例因子执行解码语音的第一阶段周期波形外推,直到叠加周期结束。具体地,模块140将比当前叠加周期早一个间距周期的解码语音波形片段乘以外推比例因子,并将生成的信号片段存储在对应当前叠加周期的地址中。随后,模块145执行叠加操作以获得从模块135计算的铃音信号到模块140产生的外推语音信号的平滑转换。接下来,模块150接收并执行第二阶段周期波形外推,从当前帧的叠加周期末直至下一个帧的叠加周期末(即当前帧的末尾加上叠加长度)。然后,在发送给加法器180之前,在模块175内通过增益值Gp对外推波形的当前帧部分以及模块150内下一帧的叠加周期进行比例调整。
模块155分别为当前帧加上下一帧的叠加周期生成随机白噪音序列。(稍后给出详细描述。)所述白噪音序列通过模块160使用增益值avm进行比例调整,avm为前一帧的LPC预测残留信号的平均幅度,在前一帧过程中由模块130计算得到。随后,模块165对比例调整后的白噪音信号进行滤波以生成该调整后白噪音的滤波后版本。模块165的输出在被发送至加法器180之前,在模块170中进一步由增益值Gr进行比例调整。
比例因子Gp和Gr分别是周期性部分的增益和随机部分的增益。Gp和Gr的值由模块115中计算的语音测量值来控制。如果语音测量值表示存储于模块110的缓存器内的解码语音信号本质上是周期性的,那么Gp=1且Gr=0。另一方面,如果语音测量值表示解码语音本质上是无声音频或呈现非周期性,那么Gp=0且Gr=1。如果该语音测量值在所述两个极限之间,那么Bp和Gr均非0,Gp大致与解码语音的周期度成比例,且Gp+Gr=1。
周期信号部分(模块150的输出)和随机信号部分(模块165的输出)分别由Gp和Gr进行比例调整,并且生成的2个调整后信号由加法器180相加。所述加法操作用于在下一帧开始时将当前帧加上叠加长度。超出当前帧末端的额外的采样对于生成当前帧的输出样本来说是不需要的。因而此时对其进行计算并存储为模块145为下一帧进行叠加操作用的铃音信号。
如果当前帧在一次擦除内不是很“深”,即,如果它离当前的一串连续擦除帧的开始(onset)不是太远,那么模块185被绕开,加法器180的输出作为输出语音直接播出。如果当前帧超出了从当前擦除的开始(onset)开始的特定距离阀值,那么模块185对加法器180的输出波进行增益衰减,这样的话,当前帧离当前擦除的开始越远,应用的增益衰减就越多,直到波形幅度达到0。
需要注意的是,上面的阐述假设周期信号部分(模块150的输出)和随机信号部分(模块165的输出)均被计算。这可使程序控制更简单。然而,这可能会导致计算的浪费。计算上更有效的方法是首先检验语音测量值,随后,如果根据语音测量值Gp将被设置为0,那么跳过周期信号部分的计算,而如果根据语音测量值Gr设置为0,则跳过随机信号部分的计算。
如果当前帧是一次擦除中的第二个坏帧(即第二类帧),模块120、125、130和135不被激活。模块115通过将在前一帧(第一类帧)期间计算每帧的平均间距周期改变与前一帧的间距周期相加,推导出新的间距周期。模块140使用由模块115计算的新间距周期以与第一类帧中同样的方式工作。模块145同样以与第一类帧同样的方式工作,除了其使用的铃音信号不同之外。具体地,此时模块145不使用模块135的输出,而使用存储于前一帧的铃音信号作为超出前一帧(第一类帧)末端的模块180的额外输出样本。模块150、155、160、165、170、175、180和185均以与第一类帧内相同的方式工作。
如果当前帧是坏帧,并且不是一次擦除的第一个坏和第二个坏帧(第三类帧),那么图1中所有模块均以与第二类帧中相同的方式工作,除了模块115不将每个帧的平均间距周期改变与前一帧的间距周期相加。相反,模块115简单地再使用前一帧的间距周期作为给模块140的输出间距周期。
B.根据本发明一个实施例的帧擦除隐匿方法
接下来将介绍实现本发明的优选方法的流程图,如图3和4所示。图3和4对应一个流程,介绍了处理语音信号的一个帧的步骤。然而,由于所述流程图太大,不能够在一页纸中表示出来,因此,流程图被分为图3和4,节点“A”是连接两部分的连接点。
在所述流程图中,图3的左边的1/3部分(步骤306至步骤316)对应于仅在好帧期间执行的处理,图3右边的2/3部分(步骤318至348)对应于仅在坏帧期间执行的处理。
参照图3,每个帧的处理开始于左上角的节点302,标记为“开始”。第一处理步骤是在判断步骤304中确定当前帧是否被擦除或未被擦除。如果结果是“否”(即当前帧是好帧),那么,判断步骤306进一步确定当前帧是否为一次擦除后的第一个好帧。如果结果是”否”(即当前帧为第5类帧),处理308中将当前帧中的解码语音样本复制至输出缓存器中对应的地址。
如果判断步骤306的结果为“是”(即当前帧为第4类帧),那么,判断步骤310进一步确定输出解码语音信号的前一帧是否为“无声音频”。如果结果为“是”,那么,处理312中使用短叠加窗执行叠加(OLA)操作。该OLA在两个信号间执行:(1)解码语音的当前帧,(2)在前一帧中为当前帧的开始部分计算的铃音信号,这样的话,OLA操作的输出逐渐地从铃音信号转换至当前帧的解码语音。具体地,该铃音信号被从1至0“向下倾斜”的窗口“加权”(即相乘),而该解码语音被从0至1“向上倾斜”的窗口加权。然后将这两个窗口加权的信号相加在一起,生成的信号放在输出缓存器内对应当前帧开始部分的一部分中。向下倾斜窗口和向上倾斜窗口的和在任何给定时间均为1。因而可使用典型的窗口如三角窗或升余弦窗。所述OLA操作是本领域技术人员所熟知的。一个示例中,处理312中使用的短窗口的长度(或者叠加长度)约等于1ms,是8KHz电话带宽语音的8个采样,以及16KHz带宽语音的16个采样。无声语音的OLA长度相对较短以避免OLA输出信号的幅度中的偶然出现的偏角。从叠加周期的末端到当前帧的末端,处理312中简单地将当前帧中解码语音采样的对应部分复制至输出缓存器器中对应的部分内。
如果判断步骤310的结果是”否”,那么处理314中使用长叠加窗执行近似地叠加操作。处理314本质上与处理312相同。唯一的区别是处理314中使用了至少2.5ms的较长的叠加窗。
处理308、312或314完成后,控制流程跳至处理316,执行“LPC分析”(LPC分析为本领域技术人员熟知的技术),以更新短期预测器系数。设M是短期预测器的滤波器阶数(filter order),那么短期预测器可表示为传递函数 其中ai,i=1,2,...,M是短期预测器系数。
在处理316完成后,控制流程跳至标记为“A”的节点350,其与图4中的节点402一致。至此完成对好帧期间执行的处理步骤的描述,接下来介绍仅在坏帧期间执行的处理步骤。
如果判断步骤304的结果为“是”(如当前帧被擦除),那么判断步骤318进一步确定当前帧是否为当前擦除数据流中第一个帧。如果结果为“是”,当前帧是第一类帧,那么将执行处理步骤320、322和324。这三个处理步骤可以任何顺序执行,不限于图3中所示的特定步骤顺序。
处理320对解码语音的当前帧计算“语音测量值”。语音测量值是值依赖于语音信号的声音强度大小的一个优值。如果解码语音波形的当前帧声音强度很强且具有很高的周期性(如元音区域),则处理320计算的语音测量值将很高。如果语音是无声的(随机和类似噪音的,如摩擦辅音),语音测量值将较低。如果语音不属于上述两者任何一种情况,如混合音或过渡区,那么语音测量值将为中间值。估算语音测量值有很多种技术,多使用间距预测增益、标准化自相关、零相交率或其各种组合。这些技术为本领域技术人员所熟知的技术。处理步骤320中可以使用任何合理的音频测量估计器。
如果最后几个帧内的间距周期均位于一个小范围内(即语音的有声区内的情况),处理322中将计算最后几个帧期间内间距周期的平均改变。帧到帧间距周期改变的平均值通常是分数(即非整数),其被随后用于处理第二类帧。如果间距周期改变很大,那么间距周期的平均改变被人为的设为0,以便随后在处理328中不会产生预期外的结果。
处理步骤324中,计算级联长期合成滤波器和短期合成滤波器的铃音信号。对于有声语音,该铃音信号趋向于自然的以平滑的方式将前一帧的语音波形“延伸”至当前帧。因此,在处理步骤332中(随后描述)将该铃音信号与周期性的外推语音波形叠加是有用的,可以确保从前一帧到当前丢失帧的平滑过渡。
长期合成滤波器可以是单抽头的或多抽头的。为简便起见,可使用单抽头长期合成滤波器。实现单抽头全极长期合成滤波器的常用方法是维持长的延迟线(即滤波器存储器),且延迟元件的数量等于最大可能的间距周期。因为该滤波器是全极滤波器,存储于这一延迟线内的采样样本与长期合成滤波器输出中的采样样本相同。为了节省该长延迟线所需的数据RAM的存储空间,在本发明的一个优选实施例中,该延迟线被删除,而长期滤波器操作所需的延迟线部分近似于并从解码语音缓存器计算得到。
为了描述方便,使用向量符号来展示此方案如何工作。设符号x(1:N)表示包含有阵列x( )的第一至第N个元素的N维向量。换句话说,如果x(1:N)是行向量,则x(1:N)是向量[x(1)x(2)x(3)...x(N)]的缩写。设xq()为输出语音缓存。并设F是采样中帧的大小,Q为xq( )缓存中之前的输出语音采样的数量,以及,设L是图3的处理步骤332中使用的叠加操作的长度。随后,向量xq(1:Q)对应于之前的输出语音采样,直至最后一帧的最后一个采样,向量xq(Q+1:Q+F)对应于当前帧,处理步骤324的目的是计算对应于xq(Q+1:Q+L)的滤波器铃音信号。
为了计算对应xq(Q+1:Q+L)的时间周期的滤波器铃音信号,该操作所需的长期滤波器存储器的一部分比xq(Q+1:Q+L)的时间周期早一个间距周期。设e(1:L)是长期合成滤波存储器的一部分(即长期合成滤波器输出),当通过短期合成滤波器时,将产生需要的对应xq(Q+1:Q+L)的时间周期的滤波器铃音信号。此外,设pp为用于当前帧的间距周期。那么,向量e(1:L)可通过xq(Q+1-pp:Q+L-pp)的反向短期滤波逼近。
所述反向短期滤波的实现如下:首先指定xq(Q+1-pp-ML:Q-pp)为表不为A(z)=1-P(z)的短期预测器错误滤波器的初始存储器(或“状态”),然后使用这一合适的初始化滤波器A(z)对向量xq(Q+1-pp:Q+L-pp)进行滤波。对应的滤波输出向量便是向量e(1:L)的期望近似值。我们可称该近似向量为
(1:L),其可用于处理步骤332。
(1:L)仅仅是一个近似值,这是因为如果pp很大,用于当前帧的A(z)的系数将与对应于xq(Q+1-pp:Q+L-pp)的时间周期的A(z)的一组系数不同。
如果需要,可将之前的多组A(z)系数储存起来,依据间距周期pp,可重新获取适合的一组或多组A(z)系数并用于上述的反向短期滤波中。那么,该操作将与长期合成滤波器的维持长延迟线完全相同。然而,这样做将需要额外的存储器存储多组A(z)系数,并且决定何时使用哪组A(z)系数会很复杂和麻烦。在实践中发现,不存储之前的A(z)系数组而仅使用当前的A(z)系数组,可省下更多的存储器并可以达到同样满意的结果。因此,本发明的一个优选实施例中使用这种简单的方法。
需要注意的是,向量xq(Q+1-pp:Q+L-pp)简单地包含有将被滤波的向量xq(Q+1-pp:Q+L-pp)之前的M个采样样本,因此它可用于初始化全零滤波器A(z)的存储器,这样的话,在其达到这个点之前,全零滤波器A(z)就好像正对xq( )信号进行滤波。
在使用A(z)对向量xq(Q+1-pp:Q+L-pp)进行反向短期滤波之后,将产生的输出向量
(1:L)乘以长期滤波器存储器比例因子β,β是用于生成铃音信号的单抽头长期合成滤波器的抽头权重的近似值。比例调整后的长期滤波器存储器
(1:L)是xq(Q+1-pp:Q+L-pp)的时间周期内的长期合成滤波器输出的近似值。该比例因子
(1:L)进一步传送通过表示为1/A(z)的全极短期合成滤波器以获得想得到的滤波器铃音信号,表示为r(1:L)。在1/A(z)滤波操作开始前,所述全极滤波器1/A(z)的滤波器存储器被初始化为xq(Q-M+1:Q),即最后帧的输出语音的最后M个采样。滤波器存储器的初始化使得对应a
i的延迟元件被初始化为xq(Q+1-i),其中i=1,2,...,M。
短期合成滤波器1/A(z)的所述滤波器存储器初始化基本上设置滤波器1/A(z)为好像已被用于滤波操作以生成xq(Q-M+1:Q),或者前一帧内输出语音的最后M个采样,并已准备好滤波下一个采样样本xq(Q+1)。通过以这种方式设置短期合成滤波器1/A(z)的初始存储器(滤波器状态),并随后通过这样一个合适的经初始化的短期合成滤波器传送
(1:L),便可生成滤波器铃音信号,
趋向于自然地平滑地将前一帧中的语音波形“延伸”至当前帧。
处理步骤324中计算出滤波器铃音信号向量r(1:L)后,将其存储以便随后用于处理步骤332中。然后处理继续至判断步骤330,详细介绍将在下面给出。
如果判断步骤318中确定当前帧不是当前擦除数据流中的第一帧,那么前述步骤320、322和324被绕过,流程跳至判断步骤326。判断步骤326确定当前帧是否是当前擦除中的第二帧。如果结果为“是”,那么处理步骤328中改变间距周期,通过将之前在步骤322中计算得到的平均间距周期改变值与前一帧的间距周期相加,并使用生成的值作为这一帧的新间距周期。然后控制流程进行至判断步骤330。另一方面,如果步骤326中结果是”否”,控制流程跳过步骤328而直接进入判断步骤330。
需要注意的是,步骤322中计算的平均间距周期改变值通常是分数。因此,如果本发明的实施例仅使用整数间距周期用于周期性波形外推,那么处理步骤328中会将更新后的间距周期四舍五入为最接近的整数值。
判断步骤330中确定步骤320中计算的语音测量值是否大于第一阀值T1。如果结果为“否”,则认为前一帧的波形不具有任何周期性,不能进行任何周期波形外推,则跳过处理步骤332而进入判断步骤334。另一方面,如果结果为“是”,则认为前一帧的波形具有至少某些程度的周期性,那么,处理步骤332中通过叠加波形平滑法执行周期波形外推。
处理步骤332中主要执行图1中模块140、145和150的操作。具体地,设t为外推比例因子,并假设间距周期大于叠加周期(即pp≥L),那么处理步骤332中首先计算xq(Q+1:Q+L)=t×xq(Q+1-pp:Q+L-pp)。接下来,xq(Q+1:Q+L)与r(1:L)叠加。即xq(Q+n)=wu(n)×xq(Q+n)+wd(n)×r(n),n=1,2,...,L,其中wu(n)和wd(n)分别是向上倾斜窗和向下倾斜窗的第n个采样,且wu(n)+wd(n)=1。这是通过叠加实现的第一阶段的外推。
最后,处理步骤332中,在当前帧的末端后,进一步外推语音信号至K个采样样本,其中K可与L相等,但是通常情况下两者不相同。所述第二阶段的外推实现为xq(Q+L+1:Q+F+K)=t×xq(Q+L+1-pp:Q+F+K-pp)。K的值是用于擦除后第一个好帧的长叠加窗的长度,即用于处理步骤314中的叠加长度。当前帧后的外推语音的额外的K个采样,即xq(Q+F+1:Q+F+K)内的样本,被视为下一帧开始时用于叠加操作的“铃音信号”。
如果间距周期小于叠加周期(pp<L),第一阶段的外推以一个采样接一个采样的形式执行以避免复制波形从所述帧的开始到叠加操作执行前的一个间距周期后的不连续。具体地,使用叠加操作的第一阶段的外推应通过下面的算法执行:
对于N=1,2,3,...,L,xq(Q+n)=wu(n)×t×xq(Q+n-pp)+wd(n)×r(n)事实上,该算法的执行不考虑pp和L之间的关系;因此,一个实施例中,其可广泛用于避免检查pp和L之间的关系。
执行完判断步骤330或处理步骤332后,在判断步骤334中确定在处理步骤320中计算的语音测量值是否小于第二阀值T2。如果结果为“否”,则认为前一帧的波形具有很高的周期性,不需要在输出语音中混入任何随机噪音成分;因此,跳过处理步骤336到344,控制流程进入判断步骤346。
另一方面,如果判断步骤344的结果为“是”,那么处理步骤336到344将生成白噪音序列,使用短期合成滤波器对该噪音进行滤波,并将滤波后的噪音与处理步骤322中产生的周期性外推语音混合。
处理步骤336类似于图1中所示的模块155,生成伪随机白噪音序列。理想情况下,该噪音不应均匀分布,相反,其应为高斯或近似高斯的分布。有很多方法可以实现该模块。例如,该噪音序列可以在工作中一个采样接一个采样的进行计算,首先使用已知的算法通过统一概率分布函数(PDF)计算伪随机数,随后使用映射器将该伪随机数映射为弯曲的缩放比例,这样生成的数字具有高斯PDF。然而,这种方法需要很复杂的计算量。
另一种方法是存储预先计算的白高斯噪音采样阵列,并顺序地读取所述阵列以获得想要数量的噪音采样。这种方法存在的潜在问题是,如果有许多丢失帧的扩展帧擦除需要比存储于预先计算的噪音阵列中的噪音采样更多的噪音采样,那么输出噪音序列会以固定形式重复,可能产生不想要的周期性,听起来像嗡嗡声。为了避免这种情况,需要在阵列中存储相当大量的噪音采样。例如,如果最差的情况是在输出语音由处理步骤348衰减为0之前,产生60ms的白噪音,那么对于16KHz宽带的信号,该预先计算的噪音阵列将不得不存储16×60=960个预先计算的白高斯噪音采样。
在本发明的一个优选实施例中,处理步骤336中使用特定的表格查找和模数索引(modulo indexing)方法产生所述伪随机高斯白噪音序列。这种方法避免了实时计算方法的计算复杂度和普通表格查找方法的高存储量要求。以下举一个例子介绍该方法。
假设采样率是16KHz,帧的大小是F=80个样本(5ms),超出当前帧的末端外推得出的额外采样样本的数量是K=40个样本。那么,处理步骤336中需要每次生成F+K=120个白噪音样本。该方法首先找出比120大的最小素数。该素数是127。然后,该方法将离线预计算伪随机高斯白噪音的127个采样样本并将其存储在表格中。设wn(1:127)为包含所述127个噪音采样的向量。设c为当前坏帧所在的一次擦除中的坏帧的数量。例如,如果当前帧是一次擦除中的第一个坏帧,那么c=1;如果当前帧是当次擦除的第二个连续的坏帧,那么c=2,依此类推。那么,该方法生成的噪音序列的第n个采样样本通过 ,n=1,2,3,...,120获得,其中是期望的比例因子或“增益”,将w(n)序列带入适当的信号级。模索引“mod(cn,127)”表示cn除以127后的余数,可定义为mod(on,127)=on-[cn/127]×127,其中符号[x]表示小于或等于x的最大整数。
例如,对于进入擦除的第一帧,存储的白噪音表格wn(1:127)的前120个采样样本用作输出白噪音。对于进入擦除的第二帧,wn(2)、wn(4)、wn(6)、wn(8)、...、wn(126)、wn(1)、wn(3)、wn(5)、...、wn(113)用作输出白噪音的120个采样。对于进入擦除的第三帧,输出白噪音序列为wn(3)、wn(6)、wn(9)、wn(12)、...、wn(123)、wn(126)、wn(2)、wn(5)、wn(8)、...、wn(122)wn(125)、wn(1)、、wn(4)、、wn(7)、...、wn(106)。同样地,对于进入擦除的第四帧,输出白噪音序列为wn(4)、wn(8)、wn(12)、wn(16)、...、wn(120)、wn(124)、wn(1)、wn(5)、wn(9)、...、wn(121)wn(125)、wn(2)、wn(6)、wn(10)、...、wn(122)、wn(126)、wn(3)、wn(7)、wn(11)、...、wn(99)。
从上面的四个例子中可以看出,对于进入擦除的每个新帧,以没有任何重复的不同方式从存储的白噪音表格wn(1:127)中提取出102个采样样本。当然,如果c非常大,那么最终噪音提取形式将会出现重复。但是实践中,如果在50至100ms或更长的擦除之后,输出语音衰减至0,则只需要12至20个非重复噪音形式的帧。上述模索引方法不会出现12至12帧的噪音形式重复。通过仅有的127个存储的噪音样本,所述方法可生成噪音形式不重复的几千个噪音样本。
在所述方法的一个实施例中,为了节省计算指令周期,不执行除法操作cn/127。相反地,将一计数器初始化为0,并且在每次从白噪音表格中提取新样本之前,所述计数器以c递增,并与素数127进行比较。如果计数器值比127小,则将该计数器的值用作从白噪音表格中提取噪音样本的地址。如果计数器的值大于127,则将计数器值减去127,得到的余数用作从白噪音表格中提取噪音样本的地址。通过这种实现方法,仅需要简单的加法、减法和比较操作。事实上,多数数字信号处理器(DSP)均具有模索引的硬件支持。
处理步骤336中产生F+K个伪随机高斯白噪音的样本后,处理步骤338随后将这些噪音样本传送给全极短期合成滤波器1/A(z),该全极短期合成滤波器以与处理步骤324中初始化全极短期合成滤波器相同的方式将初始滤波器存储器设置为前一帧的最后M个输出语音采样。在噪音序列通过该短期合成滤波器滤波后,产生的滤波后噪音信号将大致具有与前一帧输出语音相同的频谱包络(spectral envelope)。然后将所述滤波后噪音信号的F+K个样本存储以供随后处理步骤342中使用。
接下来,判断步骤340确定处理步骤320中计算的语音测量值是否大于阀值T1。如果结果是“否”,则认为前一帧的波形不具有任何周期性,因此不需要将该滤波后噪音信号和处理步骤332中计算的周期性外推语音信号混合。因此,该滤波后噪音信号的前F个采样样本将用作输出语音信号xq(Q+1:Q+F)。
如果判断步骤340的结果为“是”,那么由于判断步骤340位于判断步骤334的“是”分支内,可以推出语音测量值位于阀值T1和T2之间。在这种情况下,处理步骤342将处理步骤338产生的滤波后噪音信号和处理步骤332产生的周期性外推语音信号混合。在混合之前,需要为此两个信号部分推导出适合的比例因子Gr和Gp,且Gr+Gp=1。如果语音测量值接近T1,则用于滤波后噪音的比例因子Gr接近1,且用于周期性外推语音的比例因子应接近0。相反地,如果语音测量值接近T2,那么Gr应接近0,且Gp应接近1。简单起见,用于滤波后噪音的比例因子Gr可计算为Gr=(T2-v)/(T2-T1),其中v是语音测量值。计算出Gr之后,Gp可根据Gp=1-Gr计算得出。
假设处理步骤332中计算得到的周期性外推语音存储在xq(Q+1:Q+F+K)内,而处理步骤338中计算出的滤波后噪音存储于fn(1:F+K)内。那么,一旦计算出比例因子Gr和Gp后,处理步骤342中将两个信号混合为xq(Q+n)=Gr×fn(n)+Gp×xq(Q+n),n=1,2,...,F+K,并将混合信号存储于输出信号缓存器中。
接下来,判断步骤346中检查当前擦除是否太长,即当前帧是否在此次擦除中位于太“深”位置。合理的阀值是20至30ms之间。如果当前擦除的长度未超过所述阀值,那么控制流程将进入图3中的节点350(标为“A”),也即图4中节点402。如果当前擦除的长度超过了所述阀值,那么在处理步骤348中应用增益衰减,逐渐将输出信号幅度降低至0,随后控制流程进入节点350。将增益衰减至0是非常必要的,因为外推波形太长会导致输出信号听起来不自然,像嗡嗡声,这将被认为是非常差的伪信号(artifacts)。为了避免出现不自然的音调和嗡嗡声,在大约60ms至80ms之后将输出信号衰减至0是合理的。本领域的技术人员能够理解,执行所述增益衰减的方法有很多种,因此在此不作讨论。至此完成了图3中的帧擦除细节处理的描述。
参照图4,在图3中的处理完成后,处理步骤404通过数模转换器播放包含在向量xq(Q+1:Q+F)中的输出信号样本。随后处理步骤406中计算当前帧的短期预测残留信号,将该输出信号向量xq(Q+1:Q+F)传递通过短期预测误差滤波器A(z),且初始滤波存储器保持在前一帧进行处理步骤406中的滤波后的状态。处理步骤406针对每一帧执行。
处理步骤408计算在处理步骤406中计算的短期预测残留信号的“增益”。然后存储该增益,并用作白噪音生成过程中处理步骤336对下一帧使用的平均增益,使用等式 进行计算。所述“增益”可以是多个表示信号级高度的可能量之一。例如,其可以是当前帧中短期预测残留信号的平均幅度,也可以是短期预测残留信号或其他增益测量值的均方根(RMS)。只要以与处理步骤336产生白噪音序列一致的形式使用,任何量均可被选择为“增益”。
接下来,判断步骤410确定当前帧是否被擦除。如果结果为“是”,那么跳过处理步骤412、414和416,并进入步骤418。如果结果为“否”,表示当前帧是好帧,那么执行处理步骤412、414和416。
处理步骤412可使用大量可能的间距估计器中的任何一个生成估计的间距周期pp,该间距周期pp可由处理步骤320、322、324、328和332在下一帧中使用。因为间距估计是本领域技术人员熟知的技术,本申请在此不进行详细介绍。然而,因为处理步骤412仅在好帧期间执行,需要注意的是,如果处理步骤412中使用的间距估计器算法要求某些处理步骤对语音信号的每个帧均执行,那么这些处理步骤可作为附加处理插入处理步骤408和判断步骤410之间。
处理步骤414计算可由处理步骤332在下一帧中使用的外推比例因子t。这一步骤也有很多方法可以完成所述计算。一种方法是为单抽头长期预测器计算最优抽头权重,所述单抽头长期预测器通过加权后的xq(Q+1-pp:Q+F-pp)预测xq(Q+1:Q+F)。该最优权重的推导是本领域技术人员熟知的技术,该最优权重可用作外推比例因子t。这个方法的一个潜在问题是,如果两个波形向量xq(Q+1:Q+F)和xq(Q+1-pp:Q+F-pp)不是非常相关的(即标准化相关度不接近1),那么处理步骤332中计算的周期性外推波形将很快地衰减到0。一种避免这个问题的方法是将向量xq(Q+1:Q+F)的平均幅度除以向量xq(Q+1-pp:Q+F-pp)的平均幅度,并将生成的商用作外推比例因子t。在当向量xq(Q+1-pp:Q+F-pp)的平均幅度为0的特殊情况下,t可设为0。此外,如果xq(Q+1:Q+F)和xq(Q+1-pp:Q+F-pp)之间的相关度是负数,则可对上面计算的商值求反并将结果用作t。最后,为了防止外推波形“过大(blowingup)”,可对t的值进行限制以使其幅度不超过1。
处理步骤416计算可用于下一帧的处理步骤324中的长期滤波存储器比例因子β。获得该β值的一种现有方法是首先计算短期预测残留信号,然后在间距周期pp内为所述短期预测残留信号计算单抽头长期预测器的最优抽头权重。生成的最优抽头权重可用作β。然而,这样作需要对短期预测残留信号使用一个长的缓存器。为了降低计算的复杂程度和存储器使用量,通过以小于1的正值调整外推比例因子t也可以获得合理的性能。而且按照β=0.75×t计算长期滤波存储器比例因子可以得出很好的结果。
处理步骤418更新将在下一帧中由处理步骤322使用的间距周期历史缓存。这通过如下方法实现;首先将用于之前帧的之前的间距周期值(已经存储于间距周期历史缓存中)移一个位置,然后将当前帧的新间距周期pp写入由上述移位操作清空的间距周期历史缓存中的该位置处。如果对于当前帧,判断步骤410的结果为“否”,那么处理步骤412中获得的间距周期值pp便是当前帧的间距周期。如果判断步骤410的结果为“是”,那么前一帧的间距周期被重新用作当前帧的间距周期。两种方法中,当前帧的间距周期均被写入通过上述移位操作清空的间距周期历史缓存内的该位置。
处理步骤420更新可在下一帧中用于处理步骤324和338的短期合成滤波器存储器。所述滤波器存储器更新操作的目的是为了在下一帧内处理步骤324和338的滤波操作开始前,初始化短期合成滤波器1/A(z)的存储器。当然,如果处理步骤324和338分别将该滤波器存储器初始化作为处理的一部分执行,那么可以跳过处理步骤420。或者,短期滤波器存储器可在处理步骤420中更新,随后对于下一帧,处理步骤324和338可直接使用该已更新的滤波器存储器。在这种情况下,所述滤波器存储器初始化的执行使得对应ai的延迟元件被初始化为xq(Q+F+1-i),i=1,2,...,M。需要注意的是,当前帧的xq(Q+F+1-i)与下一帧的xq(Q+1-i)相同,因为xq( )缓存在处理进行至下一帧之前移位F个采样样本。
处理步骤422执行输出语音缓存的移位和更新。基本上,该步骤中将向量xq(1+F:Q+F)复制到xq(1:Q)占据的向量位置。换句话说,输出语音缓存的内容将移位F个采样样本。
处理步骤424将超出当前帧的末端的外推语音信号的额外的样本存储为下一帧的铃音信号。换句话说,xq(Q+F+1:Q+F+L)被存储为铃音信号r(1:L)。需要注意的是,如果下一帧是第一类帧(即一次擦除中的第一个坏帧),所述铃音信号r(1:L)将被由处理步骤324计算得到的新的滤波器铃音信号r(1:L)所替代。如果下一帧是除第一类之外的其它任何类的帧,那么按照r(1:L)=xq(Q+F+1:Q+F+L)计算的所述铃音信号将用作处理步骤332中的铃音信号。
在处理步骤424执行完后,控制流程进入节点426,在图4中表示为“结束”。节点426表示帧处理环路的结束。随后,控制流程返回至标记为“开始”的节点302,以开始下一帧的帧处理。然后再次执行图3和4中所示的整个流程,直到再次达到节点426“结束”。所述处理流程针对每个新的帧进行重复。
C.硬件和软件实现
为了完整介绍本发明,下面描述一个通用计算机系统。本发明可通过硬件或硬件与软件的结合来实现。因此,本发明可实现于计算机系统或其它处理系统内。图5是本发明计算机系统的一个示例500的示意图。在本发明中,图1-4所示的所有处理模块或步骤可在例如一个或多个不同的计算机系统500上执行以实现本发明的各种方法。所述计算机系统500包括一个或多个处理器,如处理器504。处理器504可以是专用的或通用的数字信号处理器。处理器504与通信设施502(如总线或网络)连接。各种软件实现均基于该示例计算机系统进行描述。根据本申请的介绍,本领域的技术人员能够理解如何使用其它计算机系统和/或计算机架构实现本发明。
计算机系统500还包括有主存储器506,优选为随机访问存储器(RAM),并还可包括有次存储器520。次存储器520可包括例如硬盘驱动器522和/或可移动存储驱动器524,例如软盘驱动器、磁带驱动器、光盘驱动器等等。可移动存储驱动器524以熟知的方式读写可移动存储单元528。可移动存储单元528可以是软盘、磁带、光盘等等,由可移动存储驱动器524进行读写。能够理解的是,所述可移动存储单元528包括已存储有计算机软件和数据的计算机可用存储介质。
在另一个实施例中,次存储器520可包括有其它类似的装置以允许计算机程序或其它指令装载入计算机系统500内。所述装置包括例如可移动存储单元530和接口526。所述装置还包括盒式磁带和盒式磁带接口(视频游戏设备中可以找到)、可移动存储芯片(如EPROM或PROM)和相关的插口,以及其它可移动存储单元530和允许软件和数据从可移动存储单元530传输至计算机系统500的接口526。
计算机系统500还包括有通信接口540。通信接口540实现软件和数据在计算机系统500和外部设备之间传输。通信接口540的例子包括调制解调器、网络接口(如以太网卡)、通信端口、PCMCIA槽和卡等等。通过通信接口540传输的软件和数据以信号的形式传输,可为电子信号、电磁信号、光信号或其它能够被通信接口540接收的信号。这些信号通过通信路径542提供给通信接口540。通信路径542传送信号,可使用电线或电缆、光纤、电话线、蜂窝电话链路、RF链路和其它通信信道实现。
本申请中所使用的术语“计算机程序介质”和“计算机可用介质”用于指各种媒介,如可移动存储单元528和530、硬盘驱动器522中安装的硬盘,以及通信接口540接收的信号。所述计算机程序产品是提供软件给计算机系统500的装置。
计算机程序(也称作计算机控制逻辑)存储于主存储器506和/或次存储器520内。计算机程序也可通过通信接口540接收。执行所述计算机程序时,可激活计算机系统500实现本发明。具体来说,执行所述计算机程序可激活处理器500执行本发明的处理流程,例如图3和4所示的方法。因此,所述计算机程序代表计算机系统500的控制器。若本发明使用软件实现,所述软件可存储于计算机程序产品内,并使用可移动存储驱动器524、接口526或通信接口540载入计算机系统500内。
在本发明的另一个实施例中,本发明的特征主要在使用例如硬件部件(例如专用集成电路(ASICs)和门阵列)的硬件内实现。通过硬件状态机来实现本发明也是本领域技术人员熟知的。
D.总结
以上介绍了本发明的各种具体实施例,但是上述各种具体实施例不是对本发明的限制。本领域的普通技术人员可知,可以对本发明的形式或细节做出各种改变而不脱离本发明的范围和精神实质。例如,尽管本发明的优选实施例中使用长期预测滤波器和短期预测滤波器生成铃音信号,本领域的技术人员能够理解,该铃音信号能够仅使用长期预测滤波器或仅使用短期预测滤波器来生成。此外,本发明并不限于预测滤波器的使用,本领域的技术人员能够理解,长期和短期滤波器一般均可用于实现本发明。
本发明通过功能模块和方法步骤对其中的特定功能和关系进行了描述。这些功能模块和方法步骤的边界,为了描述方便起见,在说明书中任意地给出了定义。只要特定的功能和关系被正确执行,本发明还可以定义其它的边界而不脱离本发明的范围和精神实质。本领域的技术人员可知,这些功能模块可通过独立的部件、专用集成电路、执行适当软件的处理器及其各种组合来实现。因此,本发明的范围不限于任何上述的具体实施例,而应由本发明的权利要求及其等效替换来定义。