APP下载

基于BP神经网络猪咳嗽声识别*

2022-03-08孙浩楠仝志民谢秋菊李嘉熙

中国农机化学报 2022年2期
关键词:咳嗽声识别率滤波器

孙浩楠,仝志民,谢秋菊,李嘉熙

(黑龙江八一农垦大学工程学院,黑龙江大庆,163000)

0 引言

疾病检测是生猪集约化养殖的主要问题之一。在密集的饲养条件下,患病猪的叫声可能表明呼吸系统疾病[1]。为了最大限度地减少各种呼吸道疾病对集约化养猪产业造成的损害,可以通过对猪咳嗽声音进行监测,达到对猪早期呼吸道疾病预警的效果。咳嗽是广泛呼吸道疾病的初期症状之一,也是筛查和诊断的核心要素。咳嗽是由气道突然排出的空气引起的,这种声音具有特征性,可以将其与其他声音表现区分开来[2]。

目前在集约化生猪产业中对呼吸道疾病的检测方法一般使用人工检测,人工检测的缺点是识别率低,成本过高。因此为了解决这些问题,研究猪咳嗽声检测系统具有重要意义。

国外在猪声音识别研究方面开展的较早。Chung等[3]从预处理之后的猪声音数据中提取梅尔频率倒谱系数(MFCC),以支持向量机(SVM)和稀疏表示分类器(SRC)对猪声音和呼吸道疾病进行分类,通过试验数据表明,分类精度分别为91%和94%,这种方法可以准确地检测猪的呼吸道疾病。Mitchell等[4]经研究发现健康猪和患有呼吸道疾病的猪咳嗽声音的短时能量有明显区别,健康猪咳嗽声音持续时长为0.21 s,而患有呼吸道疾病的猪咳嗽声音持续时长为0.3 s。Ferrari等[5]通过提取声音的时域和频域特征,对健康猪和患有呼吸道疾病猪的咳嗽声音进行识别和区分,设计在线咳嗽声计数算法对呼吸道疾病进行预警。Guarino等[6]设计一种基于动态时间规整(DTW)的猪声音识别与分析算法,咳嗽声误识别率和非咳嗽声误识别率都在15%以下,识别效果明显。

国内在声音识别方面尚处于起步阶段。黎煊等[7]将具有时域特征的短时能量和具有频域特征的Mel倒谱系数(MFCC)的维数相结合,组合成具有新维度的猪声音特征参数,以新的特征参数构建深度信念网络(DBN)猪咳嗽声识别模型,识别误差为6.83%。徐亚妮等[8]用无线多媒体传感器网络采集猪声音样本,对采集到的样本进行去噪等预处理,通过5种猪声音的功率谱密度曲线的波动性不同提取声音功率谱密度(power spectral density,PSD)特征,并以PSD的特征作为聚类中心,运用改进的模糊C均值聚类算法(fuzzy C-means,FCM)对猪咳嗽声和猪非咳嗽声进行分析识别,识别率为84.1%。宣传忠等[9]利用改进的Mel倒谱系数(MFCC)和支持向量机(SVM)对母羊的咳嗽声、打架声、饥饿声、撕咬声和寻伴声进行识别和分析。识别率分别为85.0%、86.7%、85.0%、81.7%和83.0%。董红松等[10]提出用隐马尔可夫模型对猪咳嗽声进行识别,识别率为80%。综上所述,国内外在猪声音识别研究方面存在去噪效果不明显、识别率低、识别模型复杂等问题。

针对上述问题,在现有咳嗽声音识别算法的基础之上,本文对猪的咳嗽声识别算法做了进一步的研究,其中包括用麦克风阵列对声音的获取,FIR滤波器对采集的5种声音(咳嗽声、尖叫声、咆哮声、哼哼声、打呼噜声)进行去噪,用窗函数法对声音数据进行端点检测,以梅尔频率倒谱系数为特征参数,利用单隐层BP神经网络对其进行识别,为长白猪在集约化养殖过程中猪咳嗽声的识别提供全新的思路。

1 猪声音采集与预处理

1.1 采集地点

本研究的试验地点在黑龙江省哈尔滨市亚布力猪场,试验对象为10头75 kg左右的长白猪。猪声音数据采集时间为2020年11月。试验猪饲养于2.1 m×3.2 m的猪舍内,舍内有温度、湿度调节器、食槽等。试验期间,猪舍内的温度一直保持在23 ℃ 左右。自然光照时间从早晨7点至下午16点。

1.2 猪声音采集

猪声音采集设备为树莓派3B与7寸HDMIips触摸屏搭建Linux系统微型计算机,连接四麦克风阵列进行采样,该设备具有空间选择性、不需要移动就可以改变接收方向拾取多路信号、拾音范围大等优点,如图1所示。采样频率为48 kHz,采样精度为16位,可不间断录音24 h。

图1 猪声音数据采集设备

试验设备采集的猪声音在猪场饲养员的指导下进行人工分类标记,选取猪咳嗽声、猪打呼噜声、猪尖叫声、猪咆哮声、猪哼哼声作为声音样本数据。得到1 200 个有效猪声音样本,其中包括猪的咳嗽声样本为412个,猪的打呼噜声样本为165个,猪的尖叫声样本为243个,猪的咆哮声样本为208个,猪的哼哼声样本为172个,保存为wav格式。

1.3 猪声音预处理

在猪舍环境下采集到的声音数据不仅有我们所需要的样本,还包含了环境噪声和无效声音。因此,在提取猪声音主要特征之前需进行去噪和端点检测。

1.3.1 去噪处理

由于猪舍环境中使用通风、调温调湿等设备,以及金属互相碰撞声等,会使采集到的声音信号中含有噪音,因此要消除噪声信号对样本特征参数提取的影响。试验用窗函数法设计了FIR低通滤波器实现滤波的目的。

本试验选用汉宁窗(升余弦窗),其计算公式如式(1)所示。

(1)

式中:w(n)——汉宁窗;

n——滤波器阶数;

N——窗函数长度。

得到声音信号的时域波形后,最常用的步骤是快速傅里叶变换,以获得声音信号的频谱特征[11]。

设计FIR低通滤波器,并给定其性能指标,对猪声音信号进行去噪处理,得到去噪后波形图,并与原始波形图对比,分析去噪情况。其计算公式如式(2)所示。

(2)

式中:x(n)——输入;

h(k)——FIR低通滤波器滤波系数;

y(n)——滤波处理后的信号;

C——FIR低通滤波器的抽头数;

C-1——FIR低通滤波器的阶数。

图2为基于FIR低通滤波器处理猪声音样本前后对比图,通过滤波前后的波形比较,猪声音样本的去噪效果明显,波形几乎没有失真。

(a) 咳嗽声原始波形图

1.3.2 端点检测

人工切割的声音数据无法准确地找出声音的起始和声音的终止,端点检测的目的就是去除静音的部分,最后得到有效的声音内容。

本文采用短时能量和短时平均过零率的双阈值算法进行语音端点检测,这种算法可以准确地确定声音样本中有效信号的起始和结束的位置,将有效的声音信号从环境噪声中分离出来,加快预处理时间,提高效率[12]。猪声音端点检测如图3所示。经过分帧处理得到第a帧的声音信号设为Ya(m),其短时能量计算如式(3)所示。

(a) 猪咳嗽声端点检测图

(3)

式中:E——短时能量;

A——窗长;

v——分帧后的总帧数。

经过分帧处理得到第a帧声音信号Ya(m)的短时平均过零率(一帧信号的波形通过水平轴的次数),其计算如式(4)所示。

(4)

式中:Z——短时平均过零率;

2 猪声音的特征参数提取

经过预处理之后得到了理想状态的猪声音数据,为了将声音信号转换为计算机能够有效处理的语音特征向量,对声音数据进行特征参数的提取。梅尔频率倒谱系数(Mel Frequency Cepstral Coefficients,MFCC)是声音识别中最广泛的频域特征参数之一。

Mel倒谱系数的分析是以人类听觉为基础,并根据人类听觉试验的结果来分析声音的频谱特性[13-14]。Mel倒谱系数具有计算简单、识别性能好、抗噪能力强等优点[15]。MFCC提取流程如图4所示。

图4 MFCC特征提取流程

1) 分帧加窗。声音信号是一种瞬态、非周期、离散性大的信号,它由谐波成分和瞬态分量成分组成,但短时间内可以看做是稳定的、连续的信号,声音分析的基础就是短时分析[16]。因此可以把声音信号分割为以帧为单位的短段信号,每一短段为一帧(一帧为1/12 s),要把完整的声音信号进行多段分帧操作。

(5)

式中:B——窗长。

一般信号帧为20~40 ms,这里取25 ms。以猪咳嗽声为例:猪咳嗽声频率在4 000~8 000 Hz之间,这就要求信号帧的长度为0.025×8 000=200个采样点。帧移=10 ms(共计80个从采样点)。

2) 快速傅里叶变换。将具有时域特性的声音信号转化为频域特性,观察能量分布。采用D点快速傅里叶变换得到每帧的频谱,D=512。其计算如式(6)所示。

(6)

3) 计算梅尔滤波器能量。通过快速傅里叶变换得到了声音信号每一帧的频谱能量Yi(p),经滤波器组的计算求出Mel滤波器的能量,本文选择三角滤波器组,其计算如式(7)所示。

(7)

式中:Hm(p)——Mel频率滤波器组;

N——快速傅里叶变换的点数;

Si(m)——第i帧声音信号第p条谱线经过第m个梅尔滤波器后的能量。

4) 计算每个滤波器组输出的对数能量。在离散余弦变换之前需要计算和分析每个三角滤波器组输出的对数能量H(m),其计算如式(8)所示。

(8)

式中:M——三角滤波器个数。

5) 离散余弦变换。将上述的滤波器组输出对数能量带入离散余弦变换C(n),求出L阶的梅尔频率倒谱系数参数,这里滤波器个数Q取最大值24,L=12。其计算如式(9)所示。

n=1,2,…,L

(9)

最终梅尔频率倒谱系数的维度为12维,特征图如图5所示。

图5 猪咳嗽声MFCC特征图

3 猪咳嗽声识别与分析

3.1 BP神经网络猪咳嗽声识别模型

BP神经网络的原理是利用反向传播算法(信息向前传递,误差反向传递)来不断调整整个网络的权值和阈值,以减小误差的平方和,使输出值和期望输出值接近[18]。BP神经网络模型包括3个部分:输入层、隐含层和输出层。图6为单隐层BP神经网络的结构。

图6 单隐层BP神经网络结构示意图

BP神经网络建立时隐含层数的选取对猪咳嗽声识别率有着重要的影响。隐含层数目的选取目前没有稳定的方案。如果隐含层数过多,就会增加训练的时间,模型复杂化,效率降低。如果隐含层数过少又无法反映复杂的映射关系。为了解决上述问题,本文采用单隐层BP神经网络,同时增加隐含层节点数的方法。

把维梅尔频率倒谱系数作为输入,输入层节点选择梅尔频率倒谱系数的维数设为12,隐层节点数设为10,输出为声音标签,输出层节点设为1。本文在Windows 10系统下,利用MATLAB软件建立了12-10-1三层BP神经网络结构,如图7所示。

图7 BP神经网络模型结构

3.2 BP神经网络猪咳嗽声识别模型训练

在对BP神经网络训练之前,为了加快BP神经网络的快速收敛,防止奇异样本(与有效输入样本相比较,相差特别大或者相差特别小的样本向量)影响试验结果,需对猪声音数据进行归一化处理,将表达式之间进行转换,把有量纲表达式全部转换为无量纲表达式[19]。本文采用max-min归一化方法。其计算如式(10)所示。

(10)

式中:Xj——归一化之后的输入数据;

Xmax——归一化之前输入数据的最大值;

Xmin——归一化之前输入数据的最小值。

通过激活函数的比较,本文选择sigmoid为激活函数,初始权值赋值是随机的,每次声音数据训练的结果不同,所以设置最大训练次数为1 000次。其计算如式(11)所示。

(11)

设X1,X2,…,Xj为神经元的输入,W1,W2,…,Wj为连接权值,Wj调节各个输入量的占重比。神经元的净输入由线性加权求和,计算如式(12)所示。

(12)

把神经元的净输入和阈值相比较,再通过sigmoid激活函数处理就能得到神经元的输出。其计算如式(13)所示。

yj=f(Netin-θj)

(13)

式中:θj——神经元的阈值。

设第一个输入值为θ,权值为-1,简化上述公式如式(14)所示。

yj=f(Netin)

(14)

式中:f——sigmoid激活函数。

Netin中w0=0,X0=θj。

预测结果的误差本文用最小二乘法表示,其计算如式(15)所示。

(15)

式中:l——输出神经元阈值。

在试验中建立的BP神经网络有d个输入神经元,q个隐含神经元,l个输出神经元,因此有q个隐含神经元阈值,l个输出神经元阈值。所以要使预测结果的误差缩小,需要调整(d+l+1)q+l各参数的值,一步步缩小Ek。

迭代结束后完成对BP神经网络的训练,然后对猪声音样本中测试集进行识别。

3.3 猪咳嗽声识别结果分析

本文采用两个指标对试验结果进行分析:猪咳嗽声音识别率(识别出的猪咳嗽声音样本占测试集中猪咳嗽声音样本总数的百分比)、猪非咳嗽声识别率(识别出的猪非咳嗽声音样本占测试集中猪非咳嗽声样本总数的百分比)。本文采用五折交叉验证(5-fold cross-validation)的方法来测试识别的准确性,步骤如下:(1)将猪声音数据集平均分为5组;(2)选取1组作为测试集,另外4组作为训练集;(3)重复步骤(2)5次,每一次选取的训练集不同,结果如表1所示。

表1 五折交叉验证结果

通过五折交叉验证结果可知,5组猪咳嗽声音识别率和猪非咳嗽声音识别率平均值分别为85.33%和86.24%,均在85%以上,说明本文采用BP神经网络模型来识别猪咳嗽声是有效的。表1中第2组数据猪咳嗽声音识别率为88.52%,猪非咳嗽声音识别率为87.11%,为效果最佳试验组。

4 结论

1) 以树莓派连接四麦克风阵列作为猪声音采集设备,满足连续采样的功能和精度,能快速、稳定的获取所需要的猪声音样本。

2) 提出基于BP神经网络模型来识别猪咳嗽声的方法,采用FIR滤波器对猪声音样本进行去噪,通过快速傅里叶变换等处理提取Mel倒谱系数,把Mel倒谱系数进行归一化处理,进行BP神经网络的训练。通过5-fold cross-validation的验证方法验证结果,得到五组猪咳嗽声音识别率和猪非咳嗽声音识别率,平均识别率在85%以上。

3) 本文以长白猪为试验对象,种类单一,同时采样环境较好,对于其他种类的猪声音识别效果有待验证,这也是后期猪声音识别算法的研究方向。

猜你喜欢

咳嗽声识别率滤波器
浅谈有源滤波器分析及仿真
有一种声音,在记忆深处
爸爸的咳嗽声
CIC插值滤波器的研究
“咳咳咳”的咳嗽声
档案数字化过程中OCR技术的应用分析
基于PCA与MLP感知器的人脸图像辨识技术
科技文档中数学表达式的结构分析与识别
人工智能现状和发展
不同意