静态和非静态信号的鉴别.pdf

上传人:54 文档编号:4551421 上传时间:2018-10-19 格式:PDF 页数:25 大小:911.44KB
返回 下载 相关 举报
摘要
申请专利号:

CN94190318.4

申请日:

1994.05.11

公开号:

CN1110070A

公开日:

1995.10.11

当前法律状态:

终止

有效性:

无权

法律详情:

专利权的终止(未缴年费专利权终止)授权公告日:1999.11.10|||授权||||||公开

IPC分类号:

G10L9/08; G10L3/00

主分类号:

G10L9/08; G10L3/00

申请人:

艾利森电话股份有限公司;

发明人:

K·T·韦格伦

地址:

瑞典斯德哥尔摩

优先权:

1993.05.26 SE 9301798-6

专利代理机构:

中国专利代理(香港)有限公司

代理人:

张志醒;马铁良

PDF下载: PDF下载
内容摘要

鉴别器(24)鉴别静态和非静态信号,输入信号的能量E(Ti)在一系列窗Ti中计算出来。这些能量值存入缓冲器(52)中,根据这些存储值计算测试变量Vγ(54)。此测试变量包括缓冲器中最大能量值与最小能量值的比值。最后将该测试变量与静止状况极限γ加以比较。若测试变量超过该极限,就将输入信号视为非静态的。这种鉴别方式对鉴别移动无线电通信系统中的静态和非静态背景音特别有用。

权利要求书

1: 一种鉴别静态和非静态信号,例如表示移动无线电通信系统中的背景音的信号的方法,其特征在于包括以下步骤: (a)估出信号在预定长度的时间窗T的各N时间子窗Ti中的统计瞬时值之一,其中N>2; (b)估出步骤(a)中得出的估算值的变量作为衡量所述信号静态状况的尺度; (c)确定步骤(b)中得出的变量估算值是否超过预定的静态状况极限值γ。
2: 如权利要求1所述的方法,其特征在于,在步骤(a)中估出二级统计瞬时值。
3: 如权利要求1或2所述的方法,其特征在于,在步骤(a)中估出各时间子窗Ti中的信号能量E(Ti)。
4: 如权利要求3所述的方法,其特征在于,所述信号是离散时间信号。
5: 如权利要求4所述的方法,其特征在于,所述估出的变量按下式求出:
6: 如权利要求4所述的方法,其特征在于,所述估出的变量按下式求出: 其中MAXBUF是只储存最近的最大能量估算值的缓冲器,MINBUF是只储存最近的最小能量估算值的缓冲器。
7: 如权利要求5或6所述的方法,其特征在于,复用共同覆盖所述时间窗T的时间子窗Ti。
8: 如权利要求7所述的方法,其特征在于,时间窗Ti的大小相同。
9: 如权利要求8所述的方法,其特征在于,所述各时间子窗Ti包括两个连续的语音帧。
10: 一种在以数字帧为基础的语音编码器和/或译码器中对静态背景音进行检测和编码和/或译码的方法,该编码器和/或译码器有一个信号源与一个滤波器相连接,所述滤波器由各帧的一套滤波器参数确定,供重视待编码和/或译码的信号之用。该方法的特征在于包括以下步骤: (a)检测传送到所述编码器/译码器的信号主要是表示语音还是表示背景音; (b)当所述传送到所述编码器/译码器的信号主要是表示背景音时,检测所述背景音是否是静态的; (c)当所述信号为静态时,限制各连续帧之间的时间变量和/或所述一套滤波器参数的至少一些参数范围。
11: 如权利要求10所述的方法,其特征在于,所述静态状况检测过程包括下列步骤: (b1)估出预定长度的时间窗T的各N时间子窗Ti中的所述背景音的其中一个统计瞬时值,其中N>2; (b2)估出步骤(b1)中得出的估算值的变量作为衡量所述背景音静态状况的尺度; (b3)确定步骤(b2)中得出的变量估算值是否超过预定的静态状况极度限γ。
12: 如权利要求11所述的方法,其特征在于,在步骤(b1)中估出各时间子窗Ti中所述背景音的能量E(Ti)。
13: 如权利要求12所述的方法,其特征在于,所述变量估算值按下式求出:
14: 如权利要求12所述的方法,其特征在于,所述变量估算值按下式求出: 其中MAXBUF是只储存最近的最大能量估算值的缓冲器,MINBUF是只储存最近的最小能量估算值的缓冲器。
15: 如权利要求13或14所述的方法,其特征在于,复用共同覆盖所述时间窗T的时间子窗Ti。
16: 如权利要求15所述的方法,其特征在于,时间子窗Ti的大小相同。
17: 如权利要求16所述的方法,其特征在于,各时间子窗Ti包括两个连续的语音帧。
18: 一种在以数字帧为基础的语音编码器和/或译码器中对静态背景音进行编码和/或译码的设备,所述编码器和/或译码器有一个信号 源与一个滤波器相连接,所述滤波器由各帧的一套滤波器参数确定,供重现待编码和/或译码的信号之用,所述设备的特征在于包括: (a)信号检测装置(16,34),用以检测传送到所述编码器/或译码器的信号主要是表示语音还是表示背景音; (b)背景音检测装置(24,24'),用以当所述传送到所述编码器/译码器的信号主要是表示背景音时检测所述背景音是否是静态的;和 (c)限定装置(18,36),用以当所述传送到编码器/译码器的信号表示静态的背景音时限定各连续帧之间的时间变量和/或所述一套滤波器参数的至少一些参数的范围。
19: 如权利要求18所述的设备,其特征在于,所述静态状况检测装置包括: (b1)统计瞬时值估计装置(50),用以估出预定长度的时间窗T的各N时间子窗Ti中的所述背景音的其中一个统计瞬时值,其中N>2; (b2)估算值变量估计装置(54),用以估出估算值的变量作为衡量所述背景音静态状况的尺度;和 (b3)确定装置(56),用以确定变量估算值是否超过预定的静态状况极限γ。
20: 如权利要求19所述的设备,其特征在于,所述统计瞬时值估计装置(50)用以估出各时间子窗Ti中所述背景音的能量E(Ti)。
21: 如权利要求20所述的设备,其特征在于,所述变量估算值按下式求出:
22: 如权利要求20所述的设备,其特征在于,还包括控制装置(58),用以控制第一缓冲器MAXBUF和第二缓冲器MINBUF,使之只分别储存最近 的大的和小的能量估算值。
23: 如权利要求22所述的设备,其特征在于,各所述缓冲器MINBUF和MAXBUF除储存能量估算值外,还储存识别对应于各缓冲器中每一能量估算值的时间子窗Ti的标号。
24: 如权利要求23所述的设备,其特征在于,所述变量估算值按下式求出:

说明书


技术领域

    本发明涉及一种鉴别静态和非静态信号的方法。这种方法例如可用以检测移动无线电通信系统中表示背景音的信号是否为静态。本发明还涉及应用此方法对静止背景音进行检测和编码/译码的一种方法和一种设备。

    【发明背景】

    许多现代的语音编码器分属于一大类叫做LPC(线性预测编码器)的语音编码器。属于这一类编码器的例子有:美国国防部的4.8千位/秒的CELP,欧洲数字蜂房式移动电话系统GSM的RPE-LTP编码器,相应于美国系统ADC的VSELP编码器,以及太平洋数字蜂房式系统PDC的VSELP编码器。

    所有这些编码器在信号产生过程中都应用了信号源-滤波器原理。滤波器用来模拟待重视的信号的短时信号频谱,信号源则用来处理所有其它信号变种。

    这些信号源-滤波器模型的共同点是,待重视的信号用确定信号源办出信号的参数和确定滤波器的滤波器参数表示。“线性预测”一词是指通常用以预计滤波器参数的方法。因此待重视的信号一部分是用一套滤波器参数表示的。

    采用信号源-滤波器组合作为信号模型的这种方法对语音信号相当有效,但用移动电话地人不作声且输入信号中含有环境声时,现行周知的编码器由于只有在话音信号下才处于最佳工作状态因而很难适应这种情况。在通信链路另一端的收听者当对其熟悉的背景音因其受“编码器误处理”而辩认不出时可能容易感到困扰。

    按照瑞典专利申请93    00290-5(这里也把该专利申请包括进来以供参考),上述问题是这样解决的:检测编码器听收到的信号中有否背景音,当背景音在信号中占优势时,根据某一叫做反回荡的算法(anti-swirling  algorithm)去修改滤波器参数的计算方法。

    但我们知道,背景音不同,其静态特性就不一定相同。其中一种背景音,例如汽车噪音,其特点可以说是静态的。另一种背景音,例如背景混串音,其特点可以说是非静态的。实验表明,上述反回荡算法对静态背景音确实有效,但对非静态背景音则不然,因此有必要将静态和非静态的背景音加以区别,以便在背景音是非静态时避免使用反回荡算法。

    发明概述

    因此,本发明的目的是要提供一种鉴别静态和非静态信号(例如表示移动无线电通信系统中的背景音信号)的方法。

    按照本发明,这种方法的特征在于:

    (a)估出信号在预定长度的时间窗T的各N时间子窗Ti(其中N>2)中的统计瞬时值之一;

    (b)估出步骤(a)中得出的估算值的变量作为衡量所述信号静态状况的尺度;

    (c)确定步骤(b)中得出的变量估算值是否超过预定的静态状况极限值γ。

    本发明的另一个目的是提供一种在以数字帧为基础的语音编码器和/或译码器中对静态背景音进行检测和编码和/译码的方法,该编码器和/或译码器有一个信号源与一个滤波器相连接,所述滤波器由各帧的一套滤波器参数确定,供重视待编码和/或译码的信号之用。

    按照本发明,这种方法包括下列步骤:

    (a)检测传送到所述编码器/译码器的信号主要是表示语音还是表示背景音;

    (b)当所述传送到所述编码器/译码器的信号主要是表示背景时,检测所述背景音是否是静态的;

    (c)当所述信号为静态时,限定各连续帧之间的时间变量(temporal  variation)和/或所述一套滤波器参数的至少一些参数的范围。

    本发明的另一目的是提供一种在以数字帧为基础的语音编码器和/或译码器中对静态背景音进行编码和/或译码的设备,该编码器和/或译码器有一个信号源与一个滤波器相连接,所述滤波器由各帧的一套滤波器参数确定,供重视待编码和/或译码的信号之用。

    按照本发明,这种设备包括:

    (a)信号检测装置,用以检测传送到所述编码器/译码器的信号主要是表示语音还是表示背景音;

    (b)背景音检测装置,用以当所述传送到所述编码器/译码器的信号主要是表示背景音时检测所述背景音是否是静态的;和

    (c)限定装置,用以当所述传送到编码器/译码器的信号表示静态背景音时限定各连续帧之间的时间变量和/或所述一套滤波器参数的至少一些参数的范围。

    附图的简要说明

    结合附图参看下面的说明可以最清楚地了解到本发明连同其其它目的和优点,附图中:

    图1是配备有实施本发明方法的装置的一个语音编码器的方框图;

    图2是配备有实施本发明方法的装置的一个语音译码器的方框图;

    图3是可用于图1的语音编码器中的一个信号鉴别器的方框图;

    图4是可用于图1的语音编码器中值得推荐的信号鉴别器的方框图。

    最佳实施例的详细说明

    虽然本发明通常可用以鉴别静态和非静态信号,但这里将只就如何检测表示移动无线电通信系统中背景音的信号的静态进行说明。

    参看图1的语音编码器。在输入线路10上,输入信号S(n)传送到滤波估计器12上,由该估计器按标准化程序对滤波器参数进行估计。所述标准化程序包括:Levinson-Durbin算法,Burg算法,Cholesky分解法(Rabiner,Schafer著的“语音信号的数字处理”一书第8章,Prentice-Hall出版社,1978年版),Schur算法(Strobach写的“新型的Levinson和Schur算法”,1991年元月份的IEEE    SP杂志,第12-36页),Le  Roux-Gueguen算法(Le  Roux,Gueguen写的“部分相关系数的定点计算”,1977年“IEEE声学、语音和信号处理论文集”,ASSP-26卷第3期,第257-259页),转让给Motorola公司的美国专利4544919中所述的所谓FLAT算法。滤波估计器12输出各帧的滤波器参数。这些滤波器参数传送到激励分析器14,线路10上的输入信号也由激励分析器14接收。激励分析器14根据标准程序确定最佳信号源或激励参数。这些程序的例子有VSELP(Gerson,Jasiuk写的、在Atal等人汇编的“语音编码的新发展”一书,Kluner学术出版社1991年版第69-79页上发表的“矢量和激励线性预测(VSELP)”),TBPE(Salami在上一个参考文献第145-156页上发表的题为“二进制脉冲激励:逼近低复合度CELP编码的新方法”的文章),随机编码手册(Campbell等人在上一个参考文献第121-134页上发表的题为“D0D4.8  KBPS标准(联邦标准1016提案)”一文),ACELP(Adoul  Lamblin写的“CELP语音编码某些代数结构的比较一文,1987年国际声学、语音和信号处理会议记录,第1953-1956页)。线路10上的这些激励参数、滤波器参数和输入信号都传送到语音检测器16上。该检测器16确定上述输入信号主要是含语音还是含背景音。可作为检测器的有例如GSM系统中规定的话音激活度检测器(话音激活度检测过程,GSM建议书06.32,ETSI/PT12)。欧洲专利EP,A,335521(英国电信产品目录通报)中介绍了适用的检测器。语音检测器16产生表示编码器输入信号主要是否含有语音的输出信号S/B。此输出信号连同滤波器参数一起通过信号鉴别器24传送到参数调节器18。

    按照上述瑞典专利申请,参数调节器18在输入到编码器的信号中没有语音信号时调节经确定的滤波器参数。若出现语音信号,则滤波器参数毫无变化地通过参数调节器18。可能变化的滤波器参数和激励参数都传送到信道编码器20,由该编码器产生在线路22的信道上发送的位流。

    参数调节器18可按若干不同的方法调节参数。

    其中一个可能的调节方法是扩大滤波器的带宽。这就是说将滤波器的各极移向复合平面的原点。假设原滤波器的H(Z)=1/A(Z)是由下式给出:

    A(Z)=1+Σm=1Mamz-m]]>

    当各极随因数r(0≤r≤1)移动时,扩大了的带宽可用A(z/r)表示,即:

    A(Zr)=1+Σm=1H(amrm)Z-m]]>

    另一种可能的调节方法是低通滤除瞬时范畴中的滤波器参数。就是说,用低通滤波除至少某些滤波器参数的方法使滤波器参数的逐帧快速变化衰减。这种方法的特殊情况是求出若干帧(例如4-5帧)上滤波器参数的平均值。

    参数调节器18还可将这两种方法结合起来使用,例如扩大带宽之后进行低通滤波。此外也可以先进行低通滤波再扩大带宽。

    在以上的说明中,忽略了信号鉴别器24。但我们知道,只将信号分成表示语音和背景音的信号是不够的,因为如前面说过的那样,各背景音的静态特性可能不同。因此,表示背景音的信号在信号鉴别器24中被分成静态和非静态信号,这稍后将参照图3和图4予以说明。这样,信号鉴别器24在线路26上的输出信号就表示出待编码的帧是含静态背景音还是含语音/非静态背景音,在前者情况下,参数调节器18进行上述参数调节,在后者情况下,不进行任何调节。

    在上述说明中,假设参数调节是在发信机的编码器中进行的。但不言而喻,类似的参数调节过程也可以在收信机的译码器中进行。图2中示出了这方面的实施例。

    图2中,在输入线路30上接收来自信道的位流。此位流由信道译码器32进行译码。信道译码器32输出滤波器参数和激励参数。在此情况下,假设这些参数未经在发信机的编码器中调节过。滤波器参数和激励参数都传送到语音检测器34,由语音检测器34对这些参数进行分析,以确定将由这些参数再现的信号是否含有语音信号。语音检测器34的输出信号S/B通过信号鉴别器24'传送到参数调节器36,参数调节器36还接收滤波器参数。

    按照上述瑞典专利申请,若语音检测器34已确定所收到的信号中没有语音信号,参数调节器36就进行与图2的参数调节器18进行的类似的调节。若出现语音信号,则不进行调节。可能加以调节的滤波器参数和激励参数传送到语音译码器38,该译码器在线路40上产生一合成输出信号,语音译码器38应用激励参数产生上述源信号和可能调节的滤波器参数,以限定信号源-滤波器模型中的滤波器。

    和图1的编码器中一样,信号鉴别器24'鉴别静态和非静态背景音,于是只有含静态背景音的帧才会激励参数调节器36。但在此情况下,信号鉴别器24'并没有机会使用语音信号S(n)本身,而只能使用确定该信号的激励参数。现在参照图3和图4进一步说明鉴别过程。

    图3示出了图1信号鉴别器24的方框图。鉴别器24接收输入信号S(n)和来自语音检测器16的输出信号S/B。信号S/B传送到开关SW上。若语音检测器16确定信号S(n)主要含有语音,则开关SW假定取上方位置,在此情况下,信号S/B就直接传送到鉴别器24的输出端。

    若信号S(n)主要含背景音,则开关SW就处在其下方位置,于是信号S/B和S(n)都传送到计算装置50,由计算装置50估算出各帧的能量E(Ti)。这里Ti可表示帧i的时间间隔。但在最佳实施例中,Ti含有两个连续帧的试样,EL(Ti)则表示这些帧的总能量。在此最佳实施例中,下一个时间窗Ti+1位移了一个语音帧,因而它含有一个新帧和一个来自上一时间窗Ti的帧,因此该两窗复用了一个帧。能量可以例如按下式估算:

    E(Ti)=ΣtnεTiS(n)2]]>

    其中S(n)=S(tn)。

    能量估算值E(Ti)存入缓冲器52中。该缓冲器例如可储存来自100-200个能量估算值。一个新的估算值输入缓冲器52中时,最旧的估算值就从缓冲器中删除掉。因此缓冲器52始终储存着最近的N个能量估算值,其中N为缓冲器的容量。

    接着,缓冲器52的能量估算值都传送到计算装置54,计算装置54根据下式计算出测试变量Vr:

    其中T是所有(可能复用的)时间窗Ti的累积时间间隔。T的长度通常是固定的,例如100-200语音帧或2-4秒。用话表达出来即为,Vr为时间T内的最大能量估算值除以在同一时间内的最小能量估算值。这个测试变量VT是能量在最近N个帧内的变化估算值。这个估算值稍后会用来确定信号的静态状况。若信号是静态的,则其逐帧的能量变化非常小,这就是说,测试变量VT将接近1。信号是非静态时,能量逐帧的变化幅度非常大,这就是说,估算值将远大于1。

    测试变量VT传送到比较器56,在比较器56中与静态极限γ相比较。若VT超过γ,则在输出线路26上有非静态信号表示出来。这表明不应调节滤波器参数。已发现,γ值以2-5特别是3-4为宜。

    从上面的说明可知,要检测一个帧中是否含有语音,只要考虑该具体帧,在语音检测器16中进行检测即可。但是,若确定该帧不含语音,则须要从帧周围的各帧累积出能量估算值,以便对静态状况进行鉴别。因此须要有一个具有N个存储单元的缓冲器,其中N>2,且通常在100-200左右。此缓冲器还可储存各能量估算值的帧号。

    当已测试出测试变量VT并在比较器56作出比较决定时,则在计算装置50中产生下一个能量估算值,并将其转移到缓冲器52中,这之后计算新的测试变量VT,并在比较器56中与γ比较。这样,时间窗T就及时前移一个帧。

    在上面的说明中,假设当语音检测器16已检测出含背景音的一个帧时,为了在缓冲器52中累积足量的能量估算值以形成测试变量VT,它会继续检测以后各帧的背景音。但有时有这样的情况,即语音检测器16可能检测出几个含背景音的帧,然后是一些含语音的帧,接着是一些含新背景音的帧。由于这个原因,缓冲器52储存的是“有效时间”内的能量值,就是说,只计算和储存含背景音的帧。也正是出于这个原因,各能量估算值可以连同其相应的帧号一起储存起来,因为这提供了确定在长时间没有背景音时能量值太旧以致不能将其联系起来的解决办法。

    另一种可能发生的情况是,背景音的时间短,从而使计算出的能量值不大,而且在很长的时间内再也没有背景音。在此情况下,缓冲器52储存的能量值可能不足以在合理的时间内有效进行测试变量的计算。这种情况的解决办法是规定出暂停极限值,然后决定对这些含背景音的帧进行像对语音那样的处理,因为这时没有充分的根据来作出静态状况的决定。

    此外,在某些情况下,当经确定某个帧含有非静态背景音时,最好将静态状况极限值γ从例如3.5降低到3.3,这是为了避免对以后各帧在“静态”与“非静态”之间反复考虑而作不出决定才这样做的。因此,若发现有非静态帧,则较简单的作法是将以后的各帧也归类为非静态的。当最终发现静态帧时,静态状况极限γ就再被增大。这种方法叫做“滞后法”。

    另一种值得推荐的方法是“拖延法”。“拖延”的意思是信号鉴别器24作出的某个决定应该坚持至少一定数目的帧,例如5帧,才最后作出决定。最好“滞后法”与“拖延法”结合起来使用。

    从以上所述的可知,图3的实施例须要有容量相当大的缓冲器52,一般情况为要有100-200个存储单元的容量(若帧号也储存起来则为200-400个存储单元)。鉴于这种缓冲器通常装在存储器资源极缺乏的一个信号处理器中,因而最好是减小缓冲器的容量。因此图4所示的信号鉴别器24的最佳实施例中改用由缓冲器控制器58控制的缓冲器52'。

    缓冲器控制器58是用来将缓冲器52'控制成使其不致储存一些不必要的能量估算值E(Ti)。这是由于观察到只有最极端的能量估算值才真正与VT的计算有关而这样做的。因此大致上只在缓冲器52'中储存一些大的和一些小的能量估算值就可以了,于是将缓冲器52'分成两个缓冲器MAXBUF(最大缓冲器)和MINBUF(最小缓冲器)。由于旧的能量估算值经过一段时间之后应从缓冲器中消失,因而还有必要把相应能量值的帧号也存入MAXBUF和MINBUF中。由缓冲器控制58进行的将各值存入缓冲器52'中的可使用的一种算法在附录中的Pascal程序中有详细介绍。

    图4的实施例比起图3的实施例稍微差一点。原因在于例如当MAXBUF中存有较大但较旧的帧能量时就可能不能将大的帧能量输入MAXBUF中。在此情况下。该特定帧能量虽然在以后当先前的一些大的(但是旧的)帧能量已被移出时实际上还可能是有效的,但这时却消失了。因此实际上计算的并不是VT而是可用下式表示的V'T:

    然而,从实用观点看,这个实施例是“够好”的了,它使所需的缓冲器容量从100-200个被储存能量估算值大幅度减少到大约10个估算值(5个存入MINBUF)。

    上面在说明图2时说过,信号鉴别器24'没有机会使用信号S(n)。但由于滤波或激励参数通常都含表示帧能量的参数,因而能量估算值可以从该参数求出。例如,按照美国标准IS-54,帧能量是用激励参数r(0)表示的。(当然也可以在图1的信号鉴别器24中用r(0)作为能量估算值。)另一种办法是将信号鉴别器24'和参数调节器36移到图2中语音译码器38的右侧。这样,信号鉴别器24'就有机会使用表示译码信号的信号40,即该信号与图1中的信号s(n)形式相同。但这样做就须要在参数调节器36后面另设语音译码器来重视经调节的信号。

    在上面说明信号鉴别器24,24'时假设静态情况是根据能量计算结果决定的,但能量终究仅仅是许多可用来检测静态状况不同等级的统计瞬时值之一。因此,本发明也使用二级瞬时值(相当于信号的能量或偏差)的其它统计瞬时值。此外还可以试验不同静态状况等级的若干统计瞬时值,并根据这些试验结果最后决定静态状况。

    此外,上述规定的测试变量VT并不是唯一可用的测试变量。例如还可以按下式规定另一个测试变量:

    其中表达式<dE(Ti)/dt>是逐帧能量变化率的估算值。例如可以用Kalman滤波器例如根据线性趋势模型(见A.Gelb著的“应用最佳估算法”,MIT出版社,1988年版)计算估算值。但本说明书中早先限定的测试变量VT具有我们所希望有的特点,即它与换算因数无关,这样,信号鉴别器就对背景音的水平不敏感。

    本技术领域的行家们都知道,在不脱离本发明精神和在所附权利要求书范围内是可以对本明作种种修改的。

    附录

    PROCEDURE  FLstatDet(

    ZFLacf  :  realAcfVectorType;  {In}

    ZFLsp  :  Boolean;  {In}

    5    ZFLnrMinFrames  :  Integer;  {In}

    ZFLnrFrames  :  Integer;  {In}

    ZFLmaxThresh  :  Real;  {In}

    ZFLminThresh  :  Real;  {In}

    VAR  ZFLpowOld  :  Real;  {In/Out}

    10    VAR  ZFLnrSaved  :  Integer;  {In/Out}

    VAR  ZFLmaxBuf  :  realStatBufType;  {In/Out}

    VAR  ZFLmaxTime  :  integerStatBufType;  {In/Out}

    VAR  ZFLminBuf  :  realStatBufType;  {In/Out}

    VAR  ZFLminTime  :  integerStatBufType;  {In/Out}

    15    VAR  ZFLprelNoStat  :  Boolean);  {In/Out}

    VAR

    i    :  Integer;

    maximum,minimum    :  Real;

    powNow,testVar    :  Real;

    20    oldNoStat    :  Boolean;

    replaceNr    :  Integer;

    LABEL

    statEnd;

    BEGIN

    25    oldNoStat  :=  ZFLprelNoStat;

    ZFLprelNoStat  :=  ZFLsp;

    IF  NOT  ZFLsp  AND  (ZFLacf[0]  >  0)  THEN  BEGIN

    {If  not  speech}

    ZFLprelNoStat  :=  True;

    30    ZFLnrSaved  :=  ZFLnrSaved  +  l;

    powNow  :=  ZFLacf[0]  +  ZFLpowOld;

    ZFLpowOld  :=  ZFLacf[0];

    IF  ZFLnrSaved  <2  THEN

    GOTO  statEnd;

    5    IF  ZFLnrSaved  >  ZFLnrFrames  THEN

    ZFLnrSaved  :=  ZFLnrFrames;

    {Check  if  there  is  an  old  element  in  max  buffer}

    FOR  i  :=  1  TO  statBufferLength  DO  BEGIN

    10    ZFLmaxTime[i]  :=  ZFLmaxTime[i]  +  l;

    IF  ZFLmaxTime[i]  >  ZFLnrFrames  THEN  BEGIN

    ZFLmaxBuf[i]  :=  powNow;

    ZFLmaxTime[i]  :=  l;

    END;

    15    END;

    {Check  if  there  is  an  old  element  in  min  buffer}

    FOR  i  :=  l  TO  statBufferLength  DO  BEGIN

    ZFLminTime[i]  :=  ZFLminTime[i]  +  l;

    IF  ZFLminTime[i]  >  ZFLnrFrames  THEN  BEGIN

    20    ZFLminBuf[i]  :=  powNow;

    ZFLminTime[i]  :=  l;

    END;

    END;

    maximum  :=  -  lE38;

    25    minimum  :=  -maximum;

    replaceNr  :=  0;

    {Check  if  an  element  in  max  buffer  is  to  be  substituted,

    find  maximum

    }

    30    FOR  i  :=  l  TO  statBufferLength  DO  BEGIN

    IF  powNow  >=  ZFLmaxBuf[i]  THEN

    replaceNr  :=  i;

    IF  ZFLmaxBuf[i]  >=  maximum  THEN

    maximum  :=  ZFLmaxBuf[i];

    END;

    IF  replaceNr  >  0  THEN  BEGIN

    5    ZFLmaxTime[replaceNr]  :=  1;

    ZFLmaxBuf[replaceNr]  :=  powNow;

    IF  ZFLmaxBuf[replaceNr]  >=  maximum  THEN

    maximum  :=  ZFLmaxBuf[replaceNr];

    END;

    10    replaceNr  :=  0;

    {Check  if  an  element  in  min  buffer  is  to  be  substituted,

    find  minimum

    }

    FOR  i  :=  1  TO  statBufferLength  DO  BEGIN

    15    IF  powNow  <=  ZFLminBuf[i]  THEN

    replaceNr  :=  i;

    IF  ZFLminBuf[i]  <=  minimum  THEN

    minimum  :=  ZFLminBuf[i];

    END;

    20    IF  replaceNr  >  0  THEN  BEGIN

    ZFLminTime[replaceNr]  :=  l;

    ZFLminBuf[replaceNr]  :=  powNow;

    IF  ZFLminBuf[replaceNr]  >=  minimum  THEN

    minimum  :=  ZFLminBuf[replaceNr];

    25    END;

    IF  ZFLnrSaved  >=  ZFLnrMinFrames  THEN  BEGIN

    IF  minimum  >  1  THEN  BEGIN

    {Calculate  test  variable}

    testVar  :=  maximum/minimum;

    {If  test  variable  is  greater  than  maxThresh,  decide

    5    speech

    If  test  variable  is  less  than  minThresh,  decide

    babble

    If  test  variable  is  between,  keep  previous  decision

    }

    10    ZFLprelNoStat  :=  oldNoStat;

    IF  testVar  >  ZFLmaxThresh  THEN

    ZFLprelNoStat  :=  True;

    IF  testVar  <  ZFLminThresh  THEN

    ZFLprelNoStat  :=  False;

    15    END;

    END;

    END;

    statEnd:

    END;

    20    PROCEDURE  FLhangHandler(

    ZFLmaxFrames  :  Integer;  {In}

    ZFLhangFrames  :  Integer;  {In}

    ZFLvad  :  Boolean;  {In}

    VAR  ZFLelapsedFrames  :  Integer;  {In/Out}

    25    VAR  ZFLspHangover  :  Integer;  {In/Out}

    VAR  ZFLvadOld  :  Boolean;  {In/Out}

    VAR  ZFLsp  :  Boolean);  {Out}

    BEGIN

    {Delays  change  of  decision  from  speech  to  no  speech

    hangFrames  number  of  frames

    However,  this  is  not  done  if  speech  has  lasted  less  than

    5    maxFrames  frames

    }

    ZFLsp  :=  ZFLvad;

    IF  (ZFLelapsedFrames  <  ZFLmaxFrames)  THEN

    ZFLelapsedFrames  :=  ZFLelapsedFrames  +  l;

    10    IF  ZFLvadold  AND  NOT  ZFLvad  THEN

    ZFLspHangOver  :=  l;

    IF  (ZFLspHangOver<ZFLhangFrames)  AND  NOT  ZFLvad  THEN  BEGIN

    ZFLspHangOver  :=  ZFLspHangOver  +  l;

    ZFLsp  :=  True;

    15    END;

    IF  NOT  ZFLvad  AND  (ZFLelapsedFrames  <  ZFLmaxFrames)  THEN

    ZFLsp  :=  False;

    IF  NOT  ZFLvad  AND  (ZFLspHangOver  >  ZFLhangFrames-l)  THEN

    ZFLelapsedFrames  :=  0;

    20    ZFLvadOld  :=  ZFLvad;

    END;

静态和非静态信号的鉴别.pdf_第1页
第1页 / 共25页
静态和非静态信号的鉴别.pdf_第2页
第2页 / 共25页
静态和非静态信号的鉴别.pdf_第3页
第3页 / 共25页
点击查看更多>>
资源描述

《静态和非静态信号的鉴别.pdf》由会员分享,可在线阅读,更多相关《静态和非静态信号的鉴别.pdf(25页珍藏版)》请在专利查询网上搜索。

鉴别器(24)鉴别静态和非静态信号,输入信号的能量E(Ti)在一系列窗Ti中计算出来。这些能量值存入缓冲器(52)中,根据这些存储值计算测试变量V(54)。此测试变量包括缓冲器中最大能量值与最小能量值的比值。最后将该测试变量与静止状况极限加以比较。若测试变量超过该极限,就将输入信号视为非静态的。这种鉴别方式对鉴别移动无线电通信系统中的静态和非静态背景音特别有用。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1