aihot  2017-04-27 08:03:28  OpenCV |   查看评论   
short calOneFrameACF(vector<short> wavFrame, int sampleRate)  
  • {  
  •     vector<float> acf;  
  •     acf.empty();  
  •   
  •     // 计算ACF
  •     for (int k = 0; k < wavFrame.size(); k++)  
  •     {  
  •         float sum = 0.0;  
  •         for (int i = 0; i < wavFrame.size() - k; i++)  
  •         {  
  •             sum = sum + wavFrame[i] * wavFrame[ i + k ];  
  •         }  
  •         acf.push_back(sum);  
  •     }  
  •   
  •     // 找到最大的一个
  •     float max(-999);  
  •     int index = 0;  
  •     for (int k = 0; k < wavFrame.size(); k++)  
  •     {  
  •         if (k > 25 && acf[k] > max)  
  •         {  
  •             max = acf[k];  
  •             index = k;  
  •         }  
  •     }  
  •     return (short)sampleRate / index;  
  • }  
  •   
  • int main()  
  • {  
  •     const char *wavFile = "bofang.wav";      
  •     vector<short> data;  
  •     int nodesPerFrame = 400;  
  •   
  •   
  •     /************* 将数据写入文件部分开始 ***************/  
  •     fstream writeFile;  
  •     writeFile.open("statistics.txt", ios::out);  
  •     /************* 将数据写入文件部分结束 ***************/  
  •  

    除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自语音信号处理之(二)基音周期估计(Pitch Detection)

    留言与评论(共有 0 条评论)
       
    验证码:
    [lianlun]1[/lianlun]