您现在的位置:首页 >> 语音处理 >> 内容

基于扩展卡尔曼滤波EKF的语音信号基音估计算法matlab仿真

时间:2023/5/7 22:22:52 点击:

  核心提示:A866,包括程序操作录像...

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168