1.本发明涉及人工智能技术领域,特别涉及一种变压器声纹异常检测方法。
背景技术:2.声纹识别技术是生物识别技术的一种,根据语音波形中反映说话人生理和行为特征的语音参数,自动识别说话人身份的技术。声纹识别的原理是通过预先录入说话人的声音样本,提取说话人独一无二的语音特征并保存在数据库中,应用时将待验证的声音与数据库中的特征进行匹配,从而决定说话人的身份。
3.将声纹识别技术应用在工业领域,通过设备在正常运行/各类故障状态下声纹表现不同,收集、标注设备各类工况下历史声纹数据并构建模型,进而在实际场景中自动化的识别设备故障隐患。但是由于实际场景中,设备数据基本都是正常数据,很少有异常数据出现,因此传统的监督学习方法不能很好的应用在这里,因而使用一种无监督学习方法——g
‑
made(group
‑
maskedautoencoder)自编码器。
4.现有的一些技术方案存在的缺陷在于:
5.(1)从数据预处理的角度,现有的方案中,大多数考虑的是理想情况下的数据,没有考虑实际场景下数据噪声的问题(如车声、脚步声等),一些方案中提到了数据降噪的问题,但是处理方法是将降噪过程与用于检测异常的自编码模型构建过程融合,降低了降噪效果的可解释性。
6.(2)从特征提取的角度,现有的方案中,有使用自然语言技术对声纹数据进行特征的提取;亦有使用关联规则挖掘技术对声纹数据进行特征的提取,但是都没有使用更加适用于声纹数据的频谱特征提取方法,有些方案中提到了频谱特征提取,不过并未将提取到的频谱特征当作图像数据进行后续模型构建,忽略了数据内在的时间序列关系。
7.(3)从模型的角度,现有的方案中,有使用传统的自编码器结构,该结构无法利用训练好的模型重构数据,即不能定性的评价模型的好坏。而且这种像素点对应的学习方式一定程度上违背了对于正常数据模式学习的目标;有使用了变分自编码器,其是一种学习数据分布的自编码器,可以用于数据的生成,优化了传统自编码器的不足,但是该模型没有对时间序列关系建模。
技术实现要素:8.本发明的目的在于克服上述背景技术中的不足,提高变压器声纹异常检测的准确性。
9.为实现以上目的,采用一种变压器声纹异常检测方法,包括:
10.获取待检测的变压器声纹数据;
11.利用去躁模型u
‑
net对变压器声纹数据进行去躁处理,得到去躁后的变压器声纹数据;
12.使用mel频谱特征提取方法,对去躁后的变压器声纹数据进行特征提取,得到mel
频谱特征;
13.利用检测模型g
‑
made对mel频谱特征进行检测,得到变压器声纹数据的得分;
14.根据变压器声纹数据的得分,判断变压器是否正常。
15.进一步地,所述去躁模型u
‑
net的损失函数采用加权sdr损失,公式表示如下:
[0016][0017]
其中,为所述去躁模型u
‑
net的输出,y为实际标签值,作为去躁模型u
‑
net的输入值,
∝
表示正比于。
[0018]
进一步地,在所述获取待检测的变压器声纹数据之前,还包括:
[0019]
收集连续的变压器设备声纹数据作为原始数据;
[0020]
对连续的变压器设备声纹数据添加噪声,得到噪声数据;
[0021]
将噪声数据和原始数据分别作为所述去躁模型u
‑
net的输入和输出,对所述去躁模型u
‑
net进行训练,得到训练好的去躁模型u
‑
net。
[0022]
进一步地,所述使用mel频谱特征提取方法,对去躁后的变压器声纹数据进行特征提取,得到mel频谱特征,包括:
[0023]
对所述去躁后的变压器声纹数据进行分帧处理,得到多帧数据;
[0024]
对每一帧数据进行加窗处理,得到加窗后的数据;
[0025]
对加窗后的数据进行短时傅里叶变换,将加窗后的数据由时域转换到mel频率上,得到频谱序列;
[0026]
利用包含k个滤波器的mel滤波器组对频谱序列进行mel特征提取,得到所述mel频谱特征。
[0027]
进一步地,所述mel滤波器组中的mel滤波器的函数形式如下:
[0028][0029]
其中,k待计算点的频率值,m表示是第m个mel滤波器,f(m)表示第m个滤波器频率的平均值,f(m
‑
1)表示第m个滤波器频率的最小值,f(m+1)表示第m个滤波器频率的最大值。
[0030]
进一步地,所述提取得到的mel频谱特征表示形式为:
[0031][0032]
其中,f(ω)表示短时傅里叶变换,f
‑1表示逆傅里叶变换。
[0033]
进一步地,所述检测模型g
‑
made的损失函数定义为整体的整体的负对数似然函数:
[0034][0035]
其中,p(.)为正态分布或混合正态分布,d表示样本总数,x
d
表示第d个样本,w、v表示为模型权重矩阵。
[0036]
进一步地,在所述获取待检测的变压器声纹数据之前,还包括:
[0037]
对所述去躁模型u
‑
net输出的所述原始数据进行mel频谱特征提取;
[0038]
利用提取的mel频谱特征对所述检测模型g
‑
made进行训练,得到训练好的检测模型g
‑
made。
[0039]
进一步地,所述根据变压器声纹数据的得分,判断变压器是否正常,包括:
[0040]
将所述变压器声纹数据的得分与设定的检测阈值进行比较;
[0041]
若得分大于检测阈值,则确定所述变压器正常;
[0042]
若得分小于或等于检测阈值,则确定所述变压器异常。
[0043]
与现有技术相比,本发明存在以下技术效果:本发明在数据预处理时,除了传统的预处理方法(归一化、异常值处理、插补等)外,使用u
‑
net自编码器对实际场景声纹数据去噪;在特征提取时,使用mel频谱法提取声纹的频谱特征,并且保留数据的时间序列关系;在模型构建时,使用g
‑
made(group
‑
maskedautoencoder)自编码器针对时间序列数据进行分布特征学习。
附图说明
[0044]
下面结合附图,对本发明的具体实施方式进行详细描述:
[0045]
图1是一种变压器声纹异常检测方法的流程图;
[0046]
图2是去躁模型u
‑
net结构图;
[0047]
图3是stft具体流程图;
[0048]
图4是卷积运算模块结构图;
[0049]
图5是一段10s的水泵声纹数据示意图;
[0050]
图6是声纹数据分帧示意图;
[0051]
图7是两帧数据之间重叠示意图;
[0052]
图8是帧数据加窗示意图;
[0053]
图9是包含10个滤波器的滤波器组图像;
[0054]
图10是对时域声纹数据进行了分帧、加窗、傅里叶变换、mel特征提取流程示意图;
[0055]
图11是检测模型g
‑
made结构图;
[0056]
图12是一种变压器声纹异常检测方法的整体流程示意图。
具体实施方式
[0057]
为了更进一步说明本发明的特征,请参阅以下有关本发明的详细说明与附图。所附图仅供参考与说明之用,并非用来对本发明的保护范围加以限制。
[0058]
如图1所示,本实施例公开了一种变压器声纹异常检测方法,包括如下步骤s1至s5:
[0059]
s1、获取待检测的变压器声纹数据;
[0060]
s2、利用去躁模型u
‑
net对变压器声纹数据进行去躁处理,得到去躁后的变压器声纹数据;
[0061]
s3、使用mel频谱特征提取方法,对去躁后的变压器声纹数据进行特征提取,得到mel频谱特征;
[0062]
s4、利用检测模型g
‑
made对mel频谱特征进行检测,得到变压器声纹数据的得分;
[0063]
s5、根据变压器声纹数据的得分,判断变压器是否正常。
[0064]
需要说明的是,在实际工作环境中,巡检机器人采集到的声纹数据中,可能会夹杂着设备以外的其他噪音,比如:人脚步声、鸟叫声、人说话声、车声等等。如果不对噪声进行处理,那么模型很有可能会将一段包含鸟叫声的设备声纹数据识别为异常数据(因为数据中存在了异常模式),本实施例在数据预处理时,除了传统的预处理方法(归一化、异常值处理、插补等)外,还使用u
‑
net自编码器对实际场景声纹数据去噪,确保数据去躁的准确性。
[0065]
声纹数据的特征抽取使用mel频谱特征提取方法,mel频谱特征提取方法的一个重要特点是:人耳对hz这种标度的感知并不是线性的,对低频音调敏感,对高频音调迟钝,mel频谱改变了这种标度,使得人耳对变换后的标度感知是线性的。
[0066]
使用一种无监督学习方法——g
‑
made(group
‑
maskedautoencoder)自编码器对mel频谱特征进行检测,该自编码器实现了对有序列关系的数据进行分布学习的自编码器架构。
[0067]
作为进一步优选的技术方案,如图2所示,本实施例中的去躁模型u
‑
net包括短时傅里叶变换stft、卷积运算和逆傅里叶变换,其中,x是模型的输入噪声数据(可能存在噪声,也可能没有),y^是对应的原始数据的估计值,数据的表现形式为向量的形式,即从原始wav数据读取的振幅向量[x_1,x_2,
…
,x_n]和[y_1,y_2,
…
,y_n],stft是短时傅里叶变换,作用是将声纹数据这种时域的数据转换成频域的数据,转换后得到彩色方框中的x,stft具体流程图如图3所示:
[0068]
傅里叶变换公式:
[0069][0070]
逆傅里叶变换公式:
[0071][0072]
去躁模型u
‑
net中的卷积运算,是图像中常用的模块,如图4所示,去躁模型u
‑
net的损失函数采用加权sdr(source
‑
to
‑
distribution)损失,公式表示如下:
[0073][0074]
其中,为所述去躁模型u
‑
net的输出,y实际标签值,对于自编码器就是输入的值,
∝
表示正比于。
[0075]
作为进一步优选的技术方案,在上述步骤s1:获取待检测的变压器声纹数据之前,还包括对去躁模型u
‑
net进行训练,具体为:
[0076]
(1
‑
1)收集连续的变压器设备声纹数据作为原始数据;
[0077]
需要说明的是,将原始连续的变压器设备声纹数据分割成10s一段的wav数据(具体分割方式不局限于10s和wav)。需要注意的是,尽量保证收集到的数据不包含噪音,这份数据会作为u
‑
net中的输出数据部分。
[0078]
(1
‑
2)对连续的变压器设备声纹数据添加噪声,得到噪声数据;
[0079]
需要说明的是,对步骤(1)中分割得到的多段数据添加噪声,噪声数据使用开源数据集urbansound8k,该数据集包含8732段城市常见声音片段(<=4s),包括汽车喇叭声、警报声、狗叫声、音乐声等10类声音。
[0080]
具体的添加方式是:选取一段原始10s的wav数据,从bernulli(1,0.5)中生成一个随机数r(该分布以0.5的概率生成0或1,0.5是一个超参数,可调整)r表示是否添加噪声,即,如果r=0,那么该段数据不添加噪声;如果r=1,该段需要添加噪声,继续执行。
[0081]
从(0,10]生成一个随机整数t_1,t_1表示要添加的噪声类型,一一对应于urbansound8k数据集中的10类噪声数据。比如,对于一个10s的原始声纹数据和4s的汽车噪声数据,可以从(0,10
‑
4]中随机生成一个整数t_2,将4s的声音片段从t_2s开始混合入原始数据中,混合方式使用振幅的线性叠加求平均的混音方法。按上述方式遍历数据集中每一段原始数据就完成了添加噪声的过程。
[0082]
本实施例这样做是因为在实际应用模型时,希望如果输入的是包含噪声的数据,那么去噪,如果不包含噪声的数据,那么尽量保持原样输出,所以在构建数据集的时候也构造一些不包含噪声的输入数据。
[0083]
(1
‑
3)将噪声数据和原始数据分别作为所述去躁模型u
‑
net的输入和输出,对所述去躁模型u
‑
net进行训练,得到训练好的去躁模型u
‑
net。
[0084]
具体为训练过程为:去躁模型u
‑
net模型的输入数据为(x,y),y为步骤(1
‑
1)得到的原始数据,x为y经过步骤(1
‑
2)噪声处理后的数据。数据x经过u
‑
net结构计算得到通过最小化加权sdr损失使得u
‑
net的输出尽量近似于不含噪声的数据y,那么u
‑
net模型就学习到了对x去噪的方式。
[0085]
使用u
‑
net进行数据去噪的原理是模型经训练学习了含有噪声的输入数据与不含噪声的输出数据的函数映射关系,那么模型进行推断时,输入一段数据,将会输出该段数据去噪后的数据。
[0086]
作为进一步优选的技术方案,上述步骤s3:使用mel频谱特征提取方法,对去躁后的变压器声纹数据进行特征提取,得到mel频谱特征,具体包括如下细分步骤s31至s34:
[0087]
s31、对所述去躁后的变压器声纹数据进行分帧处理,得到多帧数据;
[0088]
需要说明的是,在实际分帧中,为了提高分割的连续性,往往两帧之间会有重叠部分,重叠部分称为帧移。
[0089]
s32、对每一帧数据进行加窗处理,得到加窗后的数据;
[0090]
需要说明的是,常用的窗函数有矩形窗、高斯窗、海明窗等,海明窗函数形式为:
[0091][0092]
对于一帧数据r(n),加窗计算方式为:
[0093]
w(n)=ω(n)*r(n)。
[0094]
s33、对加窗后的数据进行短时傅里叶变换,将加窗后的数据由时域转换到mel频率上,得到频谱序列;
[0095]
需要说明的是,特征提取使用mel频谱特征提取方法,这一步主要是将时域的声纹数据转换为频域数据,并提取特征,之所以要进行这一步变换&特征提取是因为时域上的声纹数据看起来是杂乱无章,没有规律的,因此需要转换到更容易解释的频域中。
[0096]
短时傅里叶变换,使用傅里叶变换公式对加窗后的数据进行时域到频域的转换:
[0097][0098]
同时将频率转换到mel频率上:
[0099]
mel(f)=2595*log
10
(1+f/700)。
[0100]
s34、利用包含k个滤波器的mel滤波器组对频谱序列进行mel特征提取,得到所述mel频谱特征。
[0101]
作为进一步优选的技术方案,所述mel滤波器组中的mel滤波器的函数形式如下:
[0102][0103]
其中,k待计算点的频率值,m表示是第m个mel滤波器,f(m)表示第m个滤波器频率的平均值,f(m
‑
1)表示第m个滤波器频率的最小值,f(m+1)表示第m个滤波器频率的最大值。
[0104]
例,包含10个滤波器的滤波器组图像如图9所示:
[0105]
与加窗的方式一样,每一个滤波器与m(ε)逐点相乘,并求和,这样数据就变成包含k个数值的向量。对这k个数值取对数,并做逆傅里叶变换(离散),就得到了提取后的特征向量:
[0106]
所述提取得到的mel频谱特征表示形式为:
[0107][0108]
其中,f(ω)表示短时傅里叶变换,f
‑1表示逆傅里叶变换。
[0109]
作为进一步优选的技术方案,在上述步骤s1:获取待检测的变压器声纹数据之前,还包括对检测模型g
‑
made进行训练,具体为:
[0110]
(2
‑
1)将上述步骤(1
‑
3)中去躁模型u
‑
net输出的所述原始数据进行mel频谱特征提取,如图10所示:
[0111]
特征提取使用mel频谱特征提取方法,这一步主要是将时域的声纹数据转换为频域数据,并提取特征,之所以要进行这一步变换&特征提取是因为时域上的声纹数据看起来是杂乱无章,没有规律的,因此需要转换到更容易解释的频域中,比如一段10s的水泵声纹数据如图5所示,处理过程如下:
[0112]
(2
‑1‑
1)分帧,从去除噪声后的声纹数据,将整段声纹数据均匀的分割成k个等份,
即分为k帧,在后续的建模中,每一帧将会是一条输入数据,为提高准确性,也可以合并多帧作为一条数据;在实际操作中,为了提高分割的连续性,往往两帧之间会有重叠部分,重叠部分称为帧移,如图6所示;
[0113]
(2
‑1‑
2)加窗,对得到的每一帧数据进行加窗,即将一帧数据逐点的乘以窗函数,如图7所示;
[0114]
(2
‑1‑
3)短时傅里叶变换,使用傅里叶变换公式对加窗后的数据进行时域到频域的转换,同时将频率转换到mel频率上,得到频谱序列m(ε),如图8所示;
[0115]
(2
‑1‑
4)对计算得到的频谱序列m(ε)提取mel频谱特征向量。
[0116]
(2
‑
2)利用提取的mel频谱特征对所述检测模型g
‑
made进行训练,得到训练好的检测模型g
‑
made。
[0117]
作为进一步优选的技术方案,如图11所示,检测模型g
‑
made左侧(autoencoder)是一个可以用于学习数据分布的自编码器模型(如变分自编码器vae),其中v,w1,w2为权重矩阵,made通过对权重添加约束masks解决可数据时序性依赖问题,masks实际上就是一个由0和1组成的矩阵(黑色为0,白色为1),图中,参数矩阵v与masks矩阵mv逐点相乘,使得v中的一些权重为0(失活),得到右侧的实际连接结果图,因为mv第二行全为0(黑色),所以右侧图中最上面一行与第二个节点(1节点)连接的权重全部消失。通过对masks的仔细设计就可以实现时序依赖性问题,比如,图中最上方右侧节点(2节点),查看完整的连接路径只和输入的中间节点(1节点)相关,即x3只与x2有关而与x1无关(这个例子中时间序列的顺序关系可能是x2
→
x3
→
x1)。masks的设计原则模型作者给出的方式是:
[0118][0119]
作为进一步优选的技术方案,所述检测模型g
‑
made的损失函数定义为整体的整体的负对数似然函数:
[0120][0121]
其中,p(.)为正态分布或混合正态分布,d表示样本总数,x
d
表示第d个样本,w、v表示为模型权重矩阵。
[0122]
其中,分布的参数由模型基于数据学习得到(即为f((data,v,w)),学习算法是基于损失的反向传播算法,比如梯度下降算法。前面说明了made模型,g
‑
made模型是在此基础上添加了分组,步骤(2
‑1‑
1)中提到可以将多帧合并为一条数据,那么如果合并的话就需要使用g
‑
made,一帧数据对应一组,每组数据对应一个made模块,然后将似然函数组合到一起(即求和)。
[0123]
需要说明的是,模型通过大量正常设备声纹数据的,学习分布特征,那么如果检测中遇到了正常设备的声纹数据,那么模型计算出的损失函数一般会与训练数据(正常数据)类似,会比较低,反之遇到故障数据,模式与训练数据不同,那么损失会比较大。为了符合使用习惯,我们用损失的负数,称为得分,来描述结果。即如果输入了正常设备的声纹数据,得分会较高,异常设备的声纹数据,得分会比较低。
[0124]
作为进一步优选的技术方案,上述步骤s5:根据变压器声纹数据的得分,判断变压
器是否正常,包括:
[0125]
将所述变压器声纹数据的得分与设定的检测阈值进行比较;
[0126]
若得分大于检测阈值,则确定所述变压器正常;
[0127]
若得分小于或等于检测阈值,则确定所述变压器异常。
[0128]
具体来说,利用训练好的检测模型,对于一段待测的声纹数据(比如说step1.1提到的10s的wav)一般会包含很多帧数据,比如n帧,那么模型也会输出n个得分s1,s2,
…
,sn,最终使用这n个得分的均值或者中位数作为这一段待测数据的最终得分。判断是否异常的方式是,基于训练数据得分情况选取适当的检测阈值t,比如下5%分位数(或者结合标签信息,使用分类模型的评价指标,如精度,召回率,auc等确定阈值)。如果待测数据得分大于t,则模型推断为正常数据,带测数据得分小于t,则模型推断为异常数据。
[0129]
需要说明的是,如图12所示,本实施例先进行离线的模型构建,其中去躁模型u
‑
net和检测模型g
‑
made基于python的tensorflow框架,具体的使用tensorflow_probability,返回两个模型文件,文件格式可以是多样的,比如.pb,.h5或其他格式。mel频谱特征提取使用python的librosa框架,这里没有结果返回,只是记录了一套固定的处理方法参数。然后对待检测声纹数据进行在线推断,中间数据通讯交互技术不限,可以基于python的flask框架、python的mqtt框架等。
[0130]
本发明具有如下有益效果:
[0131]
(1)建模时,主要使用了无标注的正常样本数据,解决了大数据环境下,标注数据少,标注成本高,异常样本少的问题:
[0132]
在实际工作环境中,通过巡检机器人声纹采集设备,可以采集到大量的设备声纹数据,但是这些数据中绝大多数数据都是设备正常运行下的数据,很少或几乎没有异常数据。本发明在只使用正常数据的情况下(或者添加少量的异常数据)构建模型,该模型可以对异常数据进行识别。
[0133]
设备正常状态下的运行模式往往比较稳定统一,但是异常状态却是多种多样的,本发明模型可在缺少异常数据的条件下,能够检测出各种各样的异常状态。
[0134]
(2)检测模块使用了可以体现数据时序关系的模型,更符合客观业务场景。
[0135]
(3)在实际工作环境中,巡检机器人采集到的声纹数据中,可能会夹杂着设备以外的其他噪音,比如:人脚步声、鸟叫声、人说话声、车声等等。本发明通过对噪声进行处理,使模型对设备声纹数据识别更加准确。
[0136]
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。