袁三男, 吴立新, 刘 虹
(1.上海电力大学,上海 200090; 2.上海科江电子信息技术有限公司,上海 200030)
现代生活中,噪声的种类多种多样,人们所处的环境是被噪声包围的,但是调频广播中的噪声与自然界的噪声不一样,是一种似高斯噪声[1]。这种噪声可以被用来监测黑广播的出现。黑广播是指未经批准设置、非法占用无线调频广播频率的无线电发射电台。黑广播极大地影响了社会安全、国家稳定和社会和谐,并对居民的身体健康造成威胁[2-3]。传统噪声和语音的区分采用频域的方法,即傅里叶变换,这是因为大部分噪声的能量集中在高频段,而语音的能量主要分布在低频段[4-5]。调频广播中出现的这种噪声有些不同,其能量主要分布在中低频段,采用传统的方法很难将噪声和语音区分开来。因此,针对这种情况,本文提出了计算相关函数最大值和短时能零比的方差这两种方法,来区分调频广播中的噪声和语音。
似高斯噪声是一种和高斯噪声分布类似的声音。该声音的功率决定了其分布的宽度。这种似噪声的声音幅度可以超过载波过调的起始电平,这时,载波的瞬时频率就超出接收机的中频滤波器[6],引起被解调信号的损耗,引发射频噪声的解调。接收端接受的唯一信号就是解调出的射频噪声。这种含有射频噪声的声音与接收机没有准确地调到某个台时所产生的强烈噪声是相同的[7]。调制的声音幅度超过了过调发生电平的那个时间,接收机将产生出偏离某个台的噪声以取代原先的调制信号。解调后的噪声具有很大的冲击量,这种噪声就是人耳听到的“呲呲”的声音。因此黑广播出现前常常伴随着这类噪声的出现。
噪声语音的相关函数有着很大的差别,一般情况下,噪声的相关函数最大值要比语音的相关函数最大值小很多[8]。语音、噪声以及含噪语音的自相关函数最大值如图1所示。图1(a)中语音信号的自相关函数最大值的幅值区间在1~7,图1(b)中噪声的自相关函数最大值的幅值均在1以下。但这种大小是相对的,无法找到一个阈值区分所有的噪声和语音。图1(c)是一段调频广播中音频的自相关函数最大值,该音频前3 s为语音,后2 s为似高斯噪声,该段语音的自相关函数最大值幅值在1.5左右,而噪声自相关函数最大值的幅值却在0~2.5之间,因此单靠自相关函数最大值无法准确区分调频广播中的噪声和语音。语音的自相关函数最大值波动较大,噪声的自相关函数最大值波动较小,而方差描述的是数据的变化,因此可以采用基于相关函数最大值的方差来区分调频广播中的噪声和语音。假设语音信号x(n),分帧为xi(n),i=1,2,3,…,M。M为帧数,则每帧语音的自相关函数的定义为
图1 自相关函数的最大值
(1)
式中:L——帧长;
k——延迟量。
在相邻两帧之间计算相关函数,即为互相关函数,其公式为
i=2,3,4,…,M
(2)
通常,噪声信号的短时能量小,而语音信号的短时能量大[9],同样,这种大小也是相对的,不适用于所有的音频。短时能量的公式为
i=1,2,3,…,M
(3)
短时平均过零率表示一帧语音中语音信号波形穿过横轴(零点平)的次数[10]。若为连续语音信号,短时平均过零率就是时域波形通过时间轴的次数;若为离散信号,过零即为相邻的抽样值改变符号,短时平均过零率就是样本数值改变符号的次数。噪声和语音信号的短时平均过零率分别如图2和图3所示。由图2和图3可知,噪声的短时平均过零率高,而语音信号的短时平均过零率低。第i帧语音信号xi(n)的短时平均过零率Z(i)为
图2 噪声的短时平均过零率
图3 语音信号的短时平均过零率
(4)
语音信号的短时能量比噪声短时能量大,而短时平均过零率比噪声小。能零比则是用每一帧语音信号的短时能零比上短时平均过零率,因此语音的短时能零比比噪声的短时能零比大很多。图4为一段音频的短时能零比值,前3 s为噪声,2 s之后为语音,噪声段的能零比的波动幅度较小,而语音段的能零比的波动幅度较大。因此,可以在短时能零比的基础上,再用方差来区分调频广播中的噪声和语音。
图4 含噪语音短时能零比值
实验软件为VC++2010,实验数据为广播调频中的音频数据。由于原始广播调频检测的音频为MP4格式,不利于数据的读取,因此首先将MP4格式经ffmpeg转码转换为wav文件。由MP4转换的wav文件和原始wav文件数据存储的位置不同[11],但在00H-23H之间,两者数据的存储位置是一样的,从24H开始,原始wav文件和转换后的wav文件数据存储位置如表1所示。在24H-45H之间,转换后的wav文件存储的是LIST的标志、字节数以及内容。
表1 wav文件与经ffmpeg转码后的wav文件的区别
从46A开始的数据内容才与原始wav文件24H之后的存储数据一致。
对输入的语音信号进行分帧。由于语音信号是一个非稳态、时变的信号,但是可以在“短时间”范围内认为语音信号是稳态的,不随时间变化。这个短时间一般指10~30 ms,本文帧长为20 ms。求每帧语音信号的短时自相关函数的最大值。由于1 s内噪声的自(互)相关函数的最大值波动程度比语音信号小,由此可判定每秒的音频是噪声还是语音。基于相关函数最大值的方差法区分噪声和语音检测流程图如图5所示。
图5 基于相关函数最大值的方差法区分噪声和语音检测流程
首先,开始分帧,每帧长20 ms,因此1 s内有50帧;先计算每帧语音信号的自相关函数,再计算1 s内自相关函数最大值的方差,设置一个阈值Th。信号方差大于设定阈值Th时,判断其为语音;信号方差小于设定阈值Th时,判定其为噪声。
对输入的语音信号进行分帧。计算每帧语音信号的短时能量。一般语音信号的能量随时间变化比较明显,且噪声的能量比语音的能量小很多。基于短时能零比的方差法区分噪声和语音检测流程如图6所示。
图6 基于短时能零比的方差法区分噪声和语音检测流程
分帧后,先计算每帧语音信号的短时平均过零率,即每帧内信号通过零值的次数,再计算每帧信号的短时能量与短时平均过零率的比值。对1 s内50帧能零比进行方差计算,得到的方差可以反映信号的波动程度,因此可以根据噪声的情况,设置一个阈值Th。信号方差大于设定阈值Th时,判断其为语音;信号方差小于设定阈值Th时,判定其为噪声。
实验结果表明,调频广播中的噪声与语音的区分采用基于短时能零比的方差法效果更好。短时能零比的方差阈值Th设定为5×10-6,因为生活中纯净的语音很少,大多为含噪语音。为了更好地监测调频广播中“黑广播”的出现,本文将音频的质量划分了5个等级,具体如表2所示。
表2 音频等级的划分
表2中,Vad是每秒短时能零比的方差。为了方便计算,Vad乘上106后再进行等级划分,阈值Th乘以106后为5,因此在0~5之间的等级为1,即为噪声,等级在5以上的为语音,等级越高,语音质量越好,语音的纯净度就越高。
实验结果如图7所示。图7为一段调频广播中的音频,在第58 s之前,语音质量一直较好,音频等级为5,在第58 s时,音频质量下降,音频等级为2,在第59 s之后,音频等级下降为1,因此从第59 s开始,出现了噪声,也就意味着黑广播的出现。
图7 实验结果
本文针对调频广播中的似高斯噪声难以用频域方法区分的问题,对比分析噪声和语音的时域差异,提出了区分噪声与语音的两种方法,根据计算的相关函数最大值的方差和每秒短时能零比的方差,设定合适的阈值进行区分。实验证明这两种方法可以有效地区分调频广播中的噪声和语音,同时本文还为音频质量划分了等级,可用于监测黑广播以及提升调频广播中的语音质量。