声事件识别之谱质心特征研究

一、       特征参数介绍

谱质心(Spectral Centroid)是描述音色属性的重要物理参数之一,是频率成分的重心,是在一定频率范围内通过能量加权平均的频率,其单位是Hz。它是声音信号的频率分布和能量分布的重要信息。在主观感知领域,谱质心描述了声音的明亮度,具有阴暗、低沉品质的声音倾向有较多低频内容,谱质心相对较低,具有明亮、欢快品质的多数集中在高频,谱质心相对较高。该参数常用于对乐器声色的分析研究。

二、       特征参数计算方法

谱质心就是基于能量分布的频率一阶矩,能够反映信号中主谐波的基频值的特性:

声事件识别之谱质心特征研究_第1张图片

式中:f为信号频率;E(n)为连续时域信号x(t)短时傅里叶变化后对应频率的谱能量。

三、MATLAB程序

clear all
clf
close all
% 频谱质心的提取 %  
NFFT=1024
filepath='C:\Users\lifangzu\Desktop\car_whistle\'
wavname='car_horn12'
wavpostfix='.wav'
filename=strcat(filepath,wavname,wavpostfix)
pngpostfix='.png'
pngname=strcat(filepath,wavname,pngpostfix)
[x fs]=audioread('C:\Users\lifangzu\Desktop\test20180524\high.wav');%读取音频信号 x为信号样本,fs信号采样频率 
xx=double(x); %强制类型转换为 浮点型
%判断并合并单双声道%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if size(xx,2)>1
    xx=xx(:,1);
end

%%%%%%%%%%%%%%%%%%%%%%%%%绘制时频特征图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure (1)
spectrogram(xx,1048,512,1048,fs);
%%%%%%%%%%%%%%%%%%%%%%%%%%语音信号分帧%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
xx=enframe(xx,NFFT,512);%对xx1024点分为一帧
disp(size(xx,1))
%计算每帧的MFCC参数  
for i=1:size(xx,1)  
    y=xx(i,:); %提取每一帧的信号
    s=y'.*hamming(NFFT);  
    t=fft(s,NFFT)/NFFT;%FFT快速傅里叶变换 
    t=t(1:NFFT/2+1,1);
    t=2*(abs(t).^2);
    f = (fs/2*linspace(0,1,NFFT/2+1))';
    size(f)
    if sum(t)
        spec=sum(t.*f)/sum(t);
    else
        spec=0
    end
    m(i,:)=spec; %size(m)=[帧数,12]
end 
[a,b]=size(m)
Max=max(m)/2
Ave_Sum=sum(m)
Ave_Sum=num2str(Ave_Sum)
text=strcat('平均谱质心为',Ave_Sum)
%画出每帧的谱质心
fig=figure
plot(m)
xlabel('帧数')
ylabel('谱质心')
%text(m/2,m/2,strcat('平均谱质心为',Ave_Sum))
legend(text)
% print(fig,'-dpng',pngname)

个人经验总结,若有错误请批评指正。

 

你可能感兴趣的:(声学特征总结)