幼年山羊和绵羊寻母叫声信号的对比分析
2016-05-30祁飞武佩宣传忠马彦华邬娟
祁飞 武佩 宣传忠 马彦华 邬娟
摘 要:近年来对于声音信号处理的技术日趋成熟,其中运用Matlab进行声音信号处理的研究和实验越来越多[ 1 ]。本文主要通过Matlab软件建立针对羔羊的寻母声音的分析系统,分别对出生20天的山羊羔和绵羊羔的寻母声音进行多次采集,并对采集的声音信号进行时域分析和频域分析。结果表明:同年龄山羊羔和绵羊羔寻母声音信号所包含的信息存在一定的差异。此分析系统可以扩展为其他不同年龄、种类羊的其他声音信号进行处理和特征值提取等。
关键词:寻母叫声;信号对比分析
内蒙古自治区是以草原畜牧业为主的地区,近年来开始了羊福利化养殖的研究[ 2 ],提出将自动化、人工智能等技术领域与羊养殖技术相融合。
羊声音信号的研究对羊福利化养殖很有意义,不同种类羊在做不同行为活动时所发出的叫声不同,可以通过提取其声音信号中的特征来识别它的行为。
2013年,张彩霞、武佩、宣传忠等人通过Labview对母羊产羔、寻羔、饥饿行为下的声音信号进行处理分析,发现母羊不同行为下的声音信号基频、功率谱等有明显差异[ 4 ]。
2015年,宣传忠,武佩,马彦华等人发表了基于功率谱和共振峰的母羊发声信号识别[ 7 ]的文章,分析了母羊在不同应激行为下的发声信号具有明显差异的特征参数,并采用共振峰参数训练的 BP 网络,其对母羊发声信号的正确识别率为 85.3%,高于利用 AR 功率谱估计参数的 81.0%,当 2 种参数进行组合训练 BP 网络后,其正确识别率可达 93.8%。
2016年,宣传忠,武佩,张丽娜等人又对羊咳嗽声信号进行处理[ 5 ]并且提取特征值进行识别,提出一种改进的梅尔频率倒谱系数(MFCC)。
近些年对于羊声音信号的研究越来越丰富,但是依然存在研究的声音信号类别、羊只种类和年龄较单一等问题。针对这一现状,本文采用MATLAB软件对羔羊声音信号进行分析及特征值提取。
MATLAB软件是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,它本身具有强大的函数功能,可以实现各种算法、创建用户界面。主要应用于图像分析、控制设计、信号处理与通讯、信号检测等领域。
目前基于Matlab的声音信号研究较多,取得的研究结果较为理想。因此文采用Matlab作为开发平台,采用幼年山羊和绵羊寻母叫声信号为实验信号,为日后开发一个针对羊声音信号的自动处理与识别系统,也为日后进一步对更多种类羊的更多应激行为下声音的处理与分析提供了数据基础。
一、声音信号处理技术路线
二、声音信号采集
羊最频繁发出叫声的时期就是第一季度的产羔期,这期间的羊最为活跃爱叫。因此本文选择此期间的山羊羔和绵羊羔寻母的声音作为研究对象,这期间羊声音信号容易采集,为实验提供大量的数据支持,以得到最优的实验结果。本文用录音笔为工具进行声音的采集。
将出生20天的山羊羔、绵羊羔与母羊分开。保证羊声音与其行为符合,采集过程中尽量使实验羊处于无人环境,排除声音内容混入惊吓等其他信息。
为保证数据的可靠性采集时间持续1小时。使用Adobe Audition将采集到的两种声音信号各截取30个样本保存为WAV格式,每个样本时长1s左右。考虑到羊声音信号存在随机性,选取时要剔除数据偏差较大的样本。
三、声音信号时域分析
声音信号的时域波形如下:
时域分析程序如下:
[y,Fs,Nbits]=wavread('文件名.wav');
wavplay(y,Fs);
s1=wavread('文件名.wav');
y=resample(s1,80,441);
t=(0:sigLength-1)/Fs;
figure;plot(t,y);xlabel('Time(s)');
为了能够在matlab当中更好的分析语音信号,将采样频率重新设置为8000,实验证明效果显示明显。
羊声音特征:辨识度高,间歇性且持续时间长,时域特征明显。本文通过时域分析主要获取叫声持续时间、声音间隔时间两个特征值。将声音文件导入Adobe Audition中进行预处理并显示时域波形,两种声音信号分别提取叫声持续时间、声音间隔时间特征值77对,再通过excel数据分析工具进行统计分析。分析结果如下:
其中,绵羊羔(20天)寻母叫声特点如下:
叫声间隔时间在3.11s-12.09s之间,平均7.58s;
声音持续时间0.78s-1.61s之间,平均1.53s;
山羊羔(20天)寻母叫声特点如下:
叫声间隔时间在0.26s-0.97s之间,平均0.56s;
声音持续时间0.32s-0.96s之间,平均0.64s。
山羊羔寻母声音比绵羊羔较为短促,发声频率高。
四、两种声音信号的频谱、功率谱比较
1)本文采用Matlab提供的wavread函数对60个样本进行读取,S1=wavread(‘20山羊羔寻母);wavread函数将信号赋给S1;
本文选取具有代表性的样本分析如下:
2)滤波器主要分为经典滤波器和现代滤波器。从设计方法上主要有FIR和IIR滤波器。根据选频作用主要分为高通滤波器、低通滤波器、带通滤波器和带阻滤波器。Matlab软件设计滤波器有很多种方式,主要通过FDAtool工具箱设计和自带函数设计两种方式实现滤波。
本文选择用Matlab自带的函数编写程序设计滤波器。Matlab自带的滤波器设计函数有:[b,a]=butter(n,wn[,ftype])、[z,p,k]=butter(n,wn[,ftype])、[b,a]=cheby1(n,Rp,wn[,ftype])、[b,a]=ellip(n,Rp,Rs,wn[,ftype])等。
对于山羊羔和绵羊羔声音频率分布虽有差异,但是都处于可听域20-20000Hz之间,并且都属于低频信号。结合所研究的羔羊声音信号的幅频特性较明显的这一特点,因此本文选择用IIR滤波器实现。
IIR滤波器幅频特性精度高并且计算速度快[ 1 ],符合要求;并设计最优幅频特性的Butterworth滤波器对声音信号进行滤波。函数如下:
[n,wn]=buttord(wp,ws,rp,as,‘s);
[z,p,k]=buttap(n);
[bap,aap]=zp2tf(z,p,k);
[b,a]=lp2lp(bap,aap,wn);
[bz,az]=impinvar(b,a,Fs);
设置rp=3,as=15;通过buttord函数确定滤波器阶数和截止频率。
3)功率谱分析方法有直接分析法、间接分析法。
直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序列x(n)真实功率谱的估计。
间接法是先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。对于直接法的功率谱估计,当数据长度N太大时,谱曲线起伏加剧,若N太小,谱的分辨率又不好,因此需要改进。
对直接功率谱改进后的方法主要是分段平均周期图法(Bartlett法)。它通过将信号S1分成互不重叠的P个小段,每小段有m个采样值,则P*m=N,N为信号总长度。对每小段信号进行功率谱估计,然后再取平均作为整个信号的功率谱估计。
功率谱计算如下:
而Welch法对Bartlett法进行了两方面的修正,一是选择适当的窗函数w(n),并再周期图计算前直接加进去,加窗的优点是无论什么样的窗函数均可使谱估计非负。二是在分段时,可使各段之间有重叠,这样会使方差减小。
Matlab实现功率谱分析的方式主要是通过自带函数如:[pxx,pxxc,f]=psd(x,Nfft,window,noverlap,p)、[pxx[,f]]=pmtm(x[,nw,Nfft,fs])、[pxx,f,a]=pmem(x,p,Nfft,fs,xcorr)等。本文主要采用Bartlett法进行功率谱分析。
将两组声音样本读入程序分析,波形如下:
山羊羔寻母声音频率集中,多在1300-1900Hz之间,其他频率范围内未见明显波形。山羊羔寻母声音功率谱波形规整,出现三个明显波峰;
绵羊羔寻母声音频率分散,部分在在694Hz左右、860Hz左右、1040Hz左右、1235Hz左右。少部分能量分布在1606Hz。功率谱波形整体呈下降趋势,能量集中在923Hz、1031Hz左右、少量分布在1676Hz左右。
总结下来,山羊羔寻母声音比绵羊羔寻母声音频率普遍偏高且集中,两种叫声的幅度值大致相同,未见明显区别。对其他样本分析结果同上。
五、两种声音信号的语谱图比较
仅仅通过时域、频率谱分析声音信号所得到的信息还不完整,可能存在死区。
本文对两种声音信号增加了语谱图分析。通过语谱图我们可以观察叫声不同频段的信号强度随时间的变化情况,其纵轴为频率,横轴为时间,任一给定频率成分在给定时刻的强弱用相应点灰度或色调的浓淡来表示,颜色越深表示该点的叫声能量越强[ 9 ]。语谱图中显示了大量的与叫声信号语句特性有关的信息,是一种动态的频谱。
用Matlab实现语谱图方法主要有两种,一种通过软件提供的spectrogram函数直接实现,另一种通过将读入的信号分针加窗,进行能量密度谱计算,对其进行伪色彩显示。
通过实验,本文选择第二种方式。得到的语谱图如下:
语谱图中有主要有横杠(与时间轴平行)竖杠,其中横杠的宽度和强度表示共振峰的带宽和频率[ 10 ]。竖杠表示声音信号的基因频率。从颜色深浅上还可以看出信号的强度,偏红橙色表示信号强度大,蓝色则相反。
山羊羔声音的明显共振峰出现在1500-1766Hz之间,绵羊羔声音的明显共振峰出现在1055-1400Hz和1700Hz左右。可以看到两种声音信号在5000Hz以上都是深蓝色。从语谱图可以更直观的观察到两种声音信号的频率分布。
六、结语与展望
本文通过Matlab软件对两种同年龄羔羊寻母声音信号进行时域、频域和语谱图的分析,实现了通过matlab软件对羔羊声音信号的初次研究。提取了叫声间隔时间、叫声持续时间、功率谱能量分布频率、共振波等特征参数,为进一步搭建基于Matlab的羊声音信号自动识别系统提供了基础。日后可以通过Matlab实现羊声音信号的倒谱分析,提取更可以区分和识别羊不同声音信号的特征值。还可以通过matlab实现三维图像分析羊声音信号。
参考文献:
[1] 陈家焱,陈冬娇,张达响.基于Matlab的声音信号采集与分析处理[J].计算机与现代化,2005,06:91-92+96.
[2] 黄英来.基于动物声音的个体辨认技术的研究[D].东北林业大学,2006.
[3] 郝强,赵河明,张毅,臧旭跃.基于MATLAB的声音采集及去噪音处理方法[J].机电技术,2014,05:49-50.
[4] 张彩霞,武佩,宣传忠等.母羊声音信号处理与识别系统的设计[J].内蒙古农业大学学报(自然科学版),2013,34(5):145-149.
[5] 宣传忠,武佩,张丽娜等.羊咳嗽声的特征参数提取与识别方法[J].农业机械学报,2016,47(3):342-348.
[6] 黄明威.基于matlab的声音采集图形界面的设计和实现[J].电脑知识与技术,2013,19:4527-4528.
[7] 宣传忠,武佩,马彦华等.基于功率谱和共振峰的母羊发声信号识别[J].农业工程学报,2015,31(24):219-224.
[8] 邓华.MATLAB 通信仿真及应用实例详解.北京:人民邮电出版社,2003:1-2.
[9] 刘博.基于MATLAB的语音信号采集和语谱图分析[J].电脑知识与技术,2015,11:177-178.
[10] 李富强,万红,黄俊杰.基于MATLAB的语谱图显示与分析[J].微计算机信息,2005,20:172-174.
作者简介:
祁飞(1991-),女,蒙古族,内蒙古呼和浩特人,在读硕士,研究方向:农业电气化与自动化;
武佩,男,教授,博士生导师,研究方向:农业工程测试与控制。