【特征提取】基于matlab共振峰估计【含Matlab源码 550期】

一、简介

共振峰是指在声音的频谱中能量相对集中的一些区域,共振峰不但是音质的决定因素,而且反映了声道(共振腔)的物理特征。

元音和响辅音声谱包络曲线上的峰巅位置。共振峰的本义是指声腔的共鸣频率。在元音和响辅音的产生中,声源谱经过声腔的调制,原来谐波振幅不再随频率的升高而依次递减,而是有的加强,有的减弱,形成有起伏的新的包络曲线,曲线峰巅位置的频率值和声腔共鸣频率是一致的。就元音来说,头三个共振峰对其音色有质的规定性;其中头两个共振峰对舌位的高低前后特别敏感,声学元音图就是根据这两个共振峰的频率值绘制的。共振峰三维语图上表现为能量集中的横杠 。

共振峰是反映声道谐振特性的重要特征,它代表了发音信息的最直接的来源,而且人在语音感知中利用了共振峰信息。所以共振峰是语音信号处理中非常重要的特征参数,已经广泛地用作语音识别的主要特征和语音编码传输的基本信息。共振峰信息包含在频率包络之中,因此共振峰参数提取的关键是估计自然语音频谱包络,一般认为谱包络中的最大值就是共振峰。

共振峰产生的原理及其在音质上的体现

共振峰的分布位置是建立在声音产生媒介的共鸣物理结构基础上的(Resonant Physical Structure)。

无论是人声还是乐器,它们的声音特性都源自两个因素,一个是发声系统,如人的声带或乐器的振动簧片,另一个是共鸣系统。乐器不同的共鸣系统使其在一定频域中的分音的振幅得以突出,这样,这些区域就产生了这个乐器所特有的共振峰值,这些共振峰值同共鸣体的大小、形状的材料密切相关。由于一件乐器的结构是稳定的,因此在一件乐器发出的所有音调中,不论基频如何,都会表现出相同的共振峰值,只不过其显著性有强有弱罢了。这就可以帮助我们解释为什么在很多的乐器中,同一乐器所发出的不同音调具有相同的音质。

在语音声学中,人声也同样受自身生理如鼻孔、咽腔、口腔大小的影响有自身的共振峰区 。通过利用这些共鸣空间的形状和大小不同的变化(例如改变咽喉、嘴形),我们就能改变声音的共振峰。我们之所以能够区分不同的人声、元音,主要也是依靠它们的共振峰分布的位置。

1 什么是共振峰及共振峰的作用
  前面讲过语音的激励模型,当声门周期脉冲激励信号通过声道时,会在声道内引起共振作用(这个过程在语音产生模型中叫做声道模型),从而产生一组共振频率,这组共振频率就被称为共振峰(频率),通常认为,语音谱包络中的几个极大值就是共振峰频率。准确的检测共振峰频率和带宽,有利于区分不同韵母,从于提高对语音语义的识别度。

2 共振峰估计的困难
(1)虚假共振峰的存在。
(2)相邻共振峰频率离的比较近时难以区分
(3)高音调语音的提取有一定困难。
总之,跟基音周期估计一样,目前尚没有一个完全准确的估计方法。

3 共振峰估计预处理
(1)预加重。目的是为了对去除口唇辐射的影响,便于对声道响应进行分析。
(2)端点检测。目的跟基音周期估计一样,不需要对静音段的语音做分析。

4 共振峰估计的方法
(1)倒谱法。
  对语音做倒谱处理可以把激励信号与声道响应分离出来,然后去掉激励信号,之后再做傅里叶变换,就可以得到声道响应的包络线,对包络上寻找极大值,就是相应的共振峰频率。
(2)LPC法
  由于通过线性预测我们可以求出一组预测系数,根据这组系数和全极点声道响应模型进行FFT变换,就可以得到声道传递函数的功率谱,再通过计算得到相应的极大值,就可以得到对应的共振峰频率
(3)HHT法
  这个方法还没有细看,具体步骤还不详,主要是通过经验模态分解(EMD)和希尔伯特变换来求信号的幅值,频率、相位。

二、源代码

%实倒谱法共振峰估计
clear all; clc; close all;

waveFile='C4_3_y.wav';               % 设置文件名
[x, fs, nbits]=wavread(waveFile);                 % 读入一帧数据
u=filter([1 -.99],1,x);                                   % 预加重
wlen=length(u);                                          % 帧长
cepstL=6;                                                   % 倒频率上窗函数的宽度
wlen2=wlen/2;               
freq=(0:wlen2-1)*fs/wlen;                          % 计算频域的频率刻度
u2=u.*hamming(wlen);		                      % 信号加窗函数
U=fft(u2);                                                 % 按式(4-26)计算
U_abs=log(abs(U(1:wlen2)));                     % 按式(4-27)计算
 [Val,Loc,spect]=Formant_Cepst(u2,cepstL);       % 计算出共振峰频率
FRMNT=freq(Loc);                                 % 计算出共振峰频率
subplot(211)
plot(freq,U_abs,'k'); 
xlabel('频率/Hz'); ylabel('幅值/dB');
title('(a)信号对数谱X\_i(k)')
axis([0 4000 -6 2]); grid;
subplot(212)
plot(freq,spect,'k','linewidth',2); 
%LPC内插法的共振峰估计
clear all; clc; close all;

fle='C4_3_y.wav';                            % 指定文件名
[x,fs]=wavread(fle);                        % 读入一帧语音信号 
u=filter([1 -.99],1,x);                     % 预加重
wlen=length(u);                             % 帧长
p=12;                                       % LPC阶数
freq=(0:256)*fs/512;                        % 频率刻度

[F,Bw,pp,U]=Formant_Interpolation(u,p,fs);          %LPC内插法求共振峰
plot(freq,U,'k');
title('声道传递函数功率谱曲线');
xlabel('频率/Hz'); ylabel('幅值');
ll=length(F);                             % 共振峰个数
for k=1 : ll
    line([F(k) F(k)],[0 pp(k)],'color','k','linestyle','-.');    
end
% LPC求根法的共振峰估计
 clc; close all;

fle='C4_3_y.wav';                            % 指定文件名
[xx,fs]=audioread(fle);                       % 读入一帧语音信号

u=filter([1 -.99],1,xx);                    % 预加重
wlen=length(u);                             % 帧长
p=12;                                       % LPC阶数
n_frmnt=4;                                  % 取四个共振峰
freq=(0:256)*fs/512;                        % 频率刻度
df=fs/512;                                  % 频率分辨率

[F,Bw,U]=Formant_Root(u,p,fs,n_frmnt);
plot(freq,U,'k');
title('声道传递函数功率谱曲线');
xlabel('频率/Hz'); ylabel('幅值/dB');
p1=length(F);                              % 在共振峰处画线
m=floor(F/df);
pp=U(m);                                    %共振峰幅度
for k=1 : p1
    line([F(k) F(k)],[-5 pp(k)],'color','k','linestyle','-.');
end


三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、备注

完整代码或者代写添加QQ 1564658423
往期回顾>>>>>>
【特征提取】基于matlab小波变换的音频水印嵌入提取【含Matlab源码 053期】
【语音处理】基于matlab GUI语音信号处理【含Matlab源码 290期】
【语音采集】基于matlab GUI语音信号采集【含Matlab源码 291期】
【语音调制】基于matlab GUI语音幅度调制【含Matlab源码 292期】
【语音合成】基于matlab GUI语音合成【含Matlab源码 293期】
【语音加密】基于matlab GUI语音信号加密解密【含Matlab源码 295期】
【语音增强】基于matlab小波变换的语音增强【含Matlab源码 296期】
【语音识别】基于matlab GUI语音基频识别【含Matlab源码 294期】
【语音增强】基于matlab GUI维纳滤波之语音增强【含Matlab源码 298期】
【语音处理】基于matlab GUI语音信号处理【含Matlab源码 299期】
【信号处理】基于matlab的语音信号频谱分析仪【含Matlab源码 325期】
【调制信号】基于matlab GUI数字调制信号仿真【含Matlab源码 336期】
【情感识别】基于matlab BP神经网络的语音情感识别【含Matlab源码 349期】
【语音隐写】基于matlab小波变换的量化音频数字水印【含Matlab源码 351期】
【特征提取】基于matlab音频水印嵌入与提取【含Matlab源码 350期】
【语音去噪】基于matlab低通和自适应滤波去噪【含Matlab源码 352期】
【情感识别】基于matlab GUI语音情感分类识别【含Matlab源码 354期】
【基础处理】基于matlab语音信号的预处理【含Matlab源码 364期】
【语音识别】基于matlab 傅立叶变换0-9的数字语音识别【含Matlab源码 384期】
【语音识别】基于matlab GUI DTW的0-9数字语音识别【含Matlab源码 385期】
【语音播放】基于matlab GUI MP3设计【含Matlab源码 425期】
【语音处理】基于人耳掩蔽效应的语音增强算法信噪比计算【含Matlab源码 428期】
【语音去噪】基于matlab谱减法去噪【含Matlab源码 429期】
【语音识别】基于matlab带动量项的BP神经网络语音识别【含Matlab源码 430期】
【语音隐写】基于matlab LSB语音隐藏【含Matlab源码 431期】
【语音识别】基于matlab男女声识别【含Matlab源码 452期】
【语音处理】基于matlab语音加噪和降噪处理【含Matlab源码 473期】
【语音去噪】基于matlab最小二乘法(LMS)自适应滤波器【含Matlab源码 481期】
【语音增强】基于matlab谱减法、最小均方和维纳滤波语音增强【含Matlab源码 482期】
【通信】基于matlab GUI数字频带(ASK、PSK、QAM)调制仿真 【含Matlab源码 483期】
【信号处理】基于matlab心电信号ECG滤波处理【含Matlab源码 484期】
【语音播报】基于matlab语音播报【含Matlab源码 507期】
【信号处理】基于matlab小波变换脑电信号特征提取【含Matlab源码 511期】
【语音处理】基于matlab GUI双音多频(DTMF)信号检测【含Matlab源码 512期】
【语音隐写】基于matlab LSB实现语音信号的数字水印【含Matlab源码 513期】
【语音增强】基于matlab匹配滤波器的语音识别【含Matlab源码 514期】
【语音处理】基于matlab GUI语音时域频域频谱图分析【含Matlab源码 527期】
【语音去噪】基于matlab LMS、RLS算法语音去噪【含Matlab源码 528期】
【语音去噪】基于matlab LMS谱减法语音去噪【含Matlab源码 529期】
【语音去噪】基于matlab 软阈值、硬阈值、折中阈值语音去噪【含Matlab源码 530期】
【语音识别】基于matlab特定人的语音识别分辨【含Matlab源码 534期】
【语音去噪】基于matlab小波软阈值语音降噪【含Matlab源码 531期】
【语音去噪】基于matlab小波硬阈值语音降噪【含Matlab源码 532期】
【语音识别】基于matlab MFCC和SVM的特定人性别识别【含Matlab源码 533期】
【语音识别】基于MFCC的GMM语音识别【含Matlab源码 535期】
【语音识别】基于matlab VQ特定人孤立词语音识别【含Matlab源码 536期】
【语音识别】基于matlab GUI声纹识别【含Matlab源码 537期】
【采集读写】基于matlab语音采集与读写【含Matlab源码 538期】
【语音编辑】基于matlab语音编辑【含Matlab源码 539期】
【语音模型】基于matlab语音信号数学模型【含Matlab源码 540期】
【语音响度】基于matlab语音声强与响度【含Matlab源码 541期】
【情感识别】基于matlab K近邻分类算法的语音情感识别【含Matlab源码 542期】
【情感识别】基于matlab支持向量机(SVM)的语音情感识别【含Matlab源码 543期】
【情感识别】基于神经网络的语音情感识别【含Matlab源码 544期】
【声源定位】基于matlab不同空间谱估计的声源定位算法比较【含Matlab源码 545期】
【声源定位】基于matlab不同信噪比下的麦克风接收信号【含Matlab源码 546期】
【声源定位】基于matlab单声源双麦克风的房间冲激响应【含Matlab源码 547期】
【声源定位】基于matlab广义互相关的声源定位【含Matlab源码 548期】
【声源定位】基于matlab阵列流形矩阵的信号显示【含Matlab源码 549期】

猜你喜欢

转载自blog.csdn.net/TIQCmatlab/article/details/114972064