本发明属于语音检测领域,尤其一种基于图像识别的短波语音端点检测方法。
背景技术:
尽管新型无线电通信系统不断出现,短波电台由于其自主通信能力和覆盖范围广的特点,依然受到普遍重视。但是短波通信发射电波需要经过电离层反射,因此其噪声较大。强背景噪声的存在使得监听人员无法长时间工作,必须做降噪处理,同时对无话音段进行静噪处理。此时为了防止漏听,语音端点检测方法的性能显得尤为重要。
传统语音处理中,依据不同特征,已经有很多端点检测的方法,如基于相关函数的端点检测、基于倒谱距离的端点检测、基于能零比的端点检测以及基于小波分解的端点检测等。针对不同语音,调整参数,能准确地选取语音有话段。但在多变环境,要求实时通信的情况下,调整端点检测参数是不现实的,传统语音处理方法就不再适用了。
语音频谱图简称语谱图,通过语音的短时傅里叶变换分析研究语音的短时频谱随时间的变化关系。语谱图水平方向是时间轴,垂直方向是频率轴,其上的灰度条纹代表各个时刻的语音短时谱。语谱图反映了语音信号的动态频谱特性,在语音分析中具有重要的实用价值,被称为可视语音。
技术实现要素:
针对现有技术的缺陷,根据人类发声的特有机制,以及噪声频谱中不会存在声纹这一特征,本发明提出一种自适应的处理方法。
本发明的技术方案为:首先对数据进行预处理,提高信噪比;然后按特定长度分帧,同时进行短时傅里叶变换,从而得到语谱图;最后使用图像识别方法寻找语谱图中的声纹,依据声纹分布确定数据中有话段。
一种基于图像识别的短波语音端点检测方法,其步骤具体如下:
s1、进行语音预处理,进行语音预处理的目的是为保证形成的语谱图声纹清晰度大致相同,这是进行有效图像识别的前提,具体步骤为:
s11、在采集语音信号数据的过程中,由于测试系统的某些原因,在时间序列中会产生一个线性的或者慢变的趋势误差,使语音信号的零线偏离基线,甚至偏离的大小会随着时间变化,这会导致语音的相关函数,功率谱函数在处理计算中变形,采用最小二乘法拟合趋势项去除趋势误差;
s12、进行幅值归一化;
s13、低通滤波,去除高于3500hz的噪声;
s14、使用多窗谱的谱减法对语音进行加强;
s2、对获取的语谱图进行图像识别,获取结构体,此结构体包含语谱图声纹位置的起始点和结束点,具体为:
s21、对语音信号进行分帧处理,以帧为单位进行短时傅里叶变换,得到短时频谱;
s22、按帧的时间顺序排列s21得到的短时频谱,获取语谱图;
s23、识别s22所述语谱图中的声纹,即:将彩色语谱图变成灰度图像;提取灰度图的图像边缘,识别灰度图中线段的位置;将得到的包含语谱图声纹位置的起始点和结束点构成结构体;
s3、进行端点检测,具体为:
s31、从s2所述结构体中提取出起始点位置向量st=[st1,st2,...,sti,...,stn]和结束点位置向量en=[en1,en2,...,eni,...,enn],其中,sti指第i个起始点位置,eni指第i个结束点位置。对所述起始点位置向量st和结束点位置向量en按照升序进行排序;
s32、判断有话段,当有三条水平线段时即可认为是声纹,其余为噪声。在数值上体现为,当eni>sti+2即可认为第i点为起始点的线段是在有话段中的;
s33、选出所有肯定在有话段中的线段,向左右两个方向100帧范围内寻找是否有st的元素st'i存在,有的话也包含在有话段内,并替代原本sti再重复向左右100帧范围内寻找,直到左右100帧范围不存在st的元素。
进一步地,s14所述使用多窗谱的谱减法对语音进行加强具体步骤如下:
步骤a、设语音信号的时间序列为x(n),用长度为wlen的汉明窗对x(n)进行加窗分帧处理,得到第i帧语音信号为xi(m),所述xi(m)的的帧长为wlen,所述xi(m)离散傅立叶变换为
步骤b、以i帧为中心的前后各取m帧,共2m+1帧计算步骤a所述xi(k)中每个分量的平均幅度谱
步骤c、求多个正交数据窗对同一数据序列的平均得到谱估计,多窗谱定义为
步骤d、对多窗谱功率密度估计值进行平滑处理,计算平滑功率谱密度
步骤e、根据得到的多窗谱谱减后的幅度谱
进一步地,所述过减因子的选取方法如下:
ⅰ、过减因子初始值为1,并取初始信噪比snr'=0;
ⅱ、使用多窗谱谱减法对语音进行加强处理,计算处理后信号的信噪比snr;
ⅲ、若处理后的信号的信噪比snr大于初始信噪比snr',则进行下一步骤,若处理后的信号的信噪比snr小于或者等于初始信噪比snr',说明信号中语音不显著,则不做处理,保留所有语音信号,直接输出;
ⅳ、若处理后的信号的信噪比snr小于8db,则过减因子增加0.5,令snr'=snr,重复步骤ⅱ-步骤ⅳ直到信号信噪比大于8db。
本发明的有益效果是:
采用本发明方法在预处理后的语音具有相似信噪比,后续步骤不需要调节参数,因此,本发明方法可以从不同背景噪声中自适应地选取有话段。
附图说明
图1为多窗谱改进谱减法原理图。
图2为语音加强处理流程图。
图3为本发明方法流程图。
图4为具体实施例1中语音预处理之前的语音时域图。
图5为具体实施例1中语音预处理之后的语音时域图。
图6为具体实施例1中语音各帧频谱图。
图7为具体实施例1中灰度处理后的语谱图。
图8为具体实施例1中灰度处理后的语谱图中水平线段部分。
图9为具体实施例1中灰度处理后的语谱图端点检测结果。
图10为具体实施例1中端点检测结果时域图,其中,左为原始语音,右为预处理后语音。
图11为具体实施例2中语音预处理前的语音时域图。
图12为具体实施例2中语音预处理后的语音时域图。
图13为具体实施例2中语音各帧频谱图。
图14为具体实施例2中灰度处理后的语谱图。
图15为具体实施例2中灰度处理后的语谱图中水平线段部分。
图16为具体实施例2中灰度处理后的语谱图端点检测结果。
图17为具体实施例2中端点检测结果时域图,其中,左为原始语音,右为预处理后语音。
具体实施方式
下面结合附图对本发明进行说明。
本发明方法选取声纹特性作为声音的特征。由于人类发声的独特生理结构,从语音频谱图(语谱图)中可以看到声纹。人类语音的声纹具有显著特征,在有话段,可以看到不同频率上能量分布有特定规律;在语音的频谱图中,呈现横向平行的若干纹路,这些纹路就是声纹。声纹可以体现个人发音特征以及音素特征,在语音识别方面得到广泛运用。
如图3所示,本发明方法步骤如下:
s1、进行语音预处理,进行语音预处理的目的是为保证形成的语谱图声纹清晰度大致相同,这是进行有效图像识别的前提,具体步骤为:
s11、在采集语音信号数据的过程中,由于测试系统的某些原因,在时间序列中会产生一个线性的或者慢变的趋势误差,使语音信号的零线偏离基线,甚至偏离的大小会随着时间变化,这会导致语音的相关函数,功率谱函数在处理计算中变形,采用最小二乘法拟合趋势项去除趋势误差;
s12、进行幅值归一化;
s13、低通滤波,去除高于3500hz的噪声;
s14、使用多窗谱的谱减法对语音进行加强,具体为:
步骤a、设语音信号的时间序列为x(n),用长度为wlen的汉明窗对x(n)进行加窗分帧处理,得到第i帧语音信号为xi(m),所述xi(m)的的帧长为wlen,所述xi(m)离散傅立叶变换为
步骤b、以i帧为中心的前后各取m帧,共2m+1帧计算步骤a所述xi(k)中每个分量的平均幅度谱
步骤c、求多个正交数据窗对同一数据序列的平均得到谱估计,多窗谱定义为
步骤d、对多窗谱功率密度估计值进行平滑处理,计算平滑功率谱密度
步骤e、根据得到的多窗谱谱减后的幅度谱
所述过减因子的选取方法如下:
ⅰ、过减因子初始值为1,并取初始信噪比snr'=0;
ⅱ、使用多窗谱谱减法对语音进行加强处理,计算处理后信号的信噪比snr;
ⅲ、若处理后的信号的信噪比snr大于初始信噪比snr',则进行下一步骤,若处理后的信号的信噪比snr小于或者等于初始信噪比snr',说明信号中语音不显著,则不做处理,保留所有语音信号,直接输出;
ⅳ、若处理后的信号的信噪比snr小于8db,则过减因子增加0.5,令snr'=snr,重复步骤ⅱ-步骤ⅳ直到信号信噪比大于8db;
s2、对获取的语谱图进行图像识别,获取结构体,此结构体包含语谱图声纹位置的起始点和结束点,具体为:
s21、对语音信号进行分帧处理,以帧为单位进行短时傅里叶变换,得到短时频谱;
s22、按帧的时间顺序排列s21得到的短时频谱,获取语谱图;
s23、识别s22所述语谱图中的声纹,即:将彩色语谱图变成灰度图像;提取灰度图的图像边缘,识别灰度图中线段的位置;将得到的包含语谱图声纹位置的起始点和结束点构成结构体;
s3、进行端点检测,具体为:
s31、从s2所述结构体中提取出起始点位置向量st=[st1,st2,...,sti,...,stn]和结束点位置向量en=[en1,en2,...,eni,...,enn],其中,sti指第i个起始点位置,eni指第i个结束点位置。对所述起始点位置向量st和结束点位置向量en按照升序进行排序;
s32、判断有话段,当有三条水平线段时即可认为是声纹,其余为噪声。在数值上体现为,当eni>sti+2即可认为第i点为起始点的线段是在有话段中的;
s33、选出所有肯定在有话段中的线段,向左右两个方向100帧范围内寻找是否有st的元素st'i存在,有的话也包含在有话段内,并替代原本sti再重复向左右100帧范围内寻找,直到左右100帧范围不存在st的元素。这样做的目的是防止由于取直线函数效果不佳影响端点检测性能。
具体实施例1、典型噪声背景
步骤一、读入文件,绘制时域图形见图4,语音预处理之后时域图见图5。
将语音分帧,帧长200,帧移80,得到分帧后的数据是200*2964的二维矩阵,每列200个数(每帧)为一个单位进行傅里叶变换得到各帧频谱,则有2964个频谱,以横轴为时间,纵轴为频率绘制频谱图见图6,取低频部分(0hz~3500hz)并做灰度处理得到语谱图,见图7。其中,为了清晰显示,已将图7,图8,图9顺时针旋转90度)。
图7中可见白色部分,有平行波纹,即声纹,此为语音部分,另有白色不成波纹部分是强噪声造成的。选取图中水平线段部分,见图8。
将起始点结束点储存,按横轴方向大小重新排序,得到起始点向量和结束点向量。我们认为当有三条水平线段时即可认为是声纹,其余为噪声。在数值上体现为eni>sti+2,即第i个线段结束位置大于第i+2个线段的开始位置,以此为凭据判断语音是否有话。为确保无漏检信息,往左右再寻找可能有话段。得到结果如图9。转换至时域图见图10.。利用本发明方法,在典型噪声背景下,有话段均被检出。
具体实施例2、强噪声背景
步骤与实例一相同,实验结果如下:
需要说明的是,强噪声背景下,语音加强处理后仍然会留下较强噪声频谱,如图14所示,图中有话段为能量较高且有平行纹路所在的区域,而在有话段之后,由于有较强噪声存在,在语谱图中留下了能量较低,成点状存在的噪声谱。如图15,在识别线段时,会将噪声谱中的一部分识别为线段,所以会在端点检测时造成误判。最后的检测结果见图16至图17,可以看到,语音中所有的有话段全部识别出来,但会将一部分只含有强噪声的部分误判为语音。