分享

一阶高通滤波器的实现

 为幸福而奋斗66 2015-07-14

    语音识别的预处理阶段,要使语音通过一个一阶高通滤波器,其主要目的是为了抵消声门脉冲及唇边辐射引起的高端频谱幅度下降,提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱,以便于频谱分析或声道参数分析。通俗的说,预加重部分就是设计高通滤波器:

    H(z) = 1 - a*z(-1) (z的-1次方) 

    其中系数 a 介于0.9 - 1.0 之间。

    把这个系数函数转换成输入与输出之间的差分方程的关系,那就是:y(n) = x(n) - a*(n-1)

 

C++ 预处理代码实现

  1. void Sensory::preEmphasize(Wave &wave)  
  2. {  
  3.     int i;  
  4.     double *preEmphasizedata;  
  5.     preEmphasizedata = wave.getPreData(wave);  
  6.     for(i=wave.getHits(wave);i>0;i--)  
  7.     {  
  8.         preEmphasizedata[i] = preEmphasizedata[i] - PRE_EMPH_FAC * preEmphasizedata[i-1];  
  9.     }  
  10.     preEmphasizedata[0] = (double)(1.0 - PRE_EMPH_FAC) * preEmphasizedata[0];  
  11. }  

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多