1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJialpxr
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
基音是语音信号的基本频率成分,它决定了语音的音调和声音的音高。在语音信号处理中,基音估计是一个重要的任务,它可以用于语音合成、语音识别、语音增强等应用。扩展卡尔曼滤波(Extended Kalman Filter, EKF)是一种用于非线性系统的滤波方法,它可以用于基音的估计。
4.部分源码
..............................................................
%pitch tracking
for ii=2:size(datass,2)
%基于先前估计的均值一步预测
One_step_state=F*(state(:,ii-1));
P_OneStep(:,:,ii)=F*P(:,:,ii-1)*F'+C*Q*C';
H=cos((B*One_step_state)'+pha')*G-(G*One_step_state)'*diag(sin(B*One_step_state+pha))*(B);
O_covariance=(H*P_OneStep(:,:,ii)*H'+R);
% Kalman gain
K=P_OneStep(:,:,ii)*H'*O_covariance^(-1);
% 计算一步预测残差
h=(G*One_step_state)'*cos(B*One_step_state+pha);
correction_factor=K*(datass(:,ii)-h);
state(:,ii)= One_step_state+correction_factor;
P(:,:,ii) = P_OneStep(:,:,ii)-K*H*P_OneStep(:,:,ii);
end
%卡尔曼平滑器;
N=size(datass,2);
pitch(:,N) = state(:,N);
P_upS(:,:,N) = P(:,:,N);
for k = (N-1):-1:1
%计算除最后一个步骤外的所有步骤的预测步骤
sgain = (P(:,:,k)*F')/(F*P(:,:,k)*F' + C*Q*C');
pitch(:,k) = state(:,k) + sgain*(pitch(:,k+1) - F*(state(:,k)));
P_upS(:,:,k) = P(:,:,k)+ sgain*(P_upS(:,:,k+1) - P_OneStep(:,:,k+1))*sgain';
end
end
A866