亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pitchdetect.cpp

?? Intel開發(fā)的IPP庫的應(yīng)用實(shí)例
?? CPP
字號(hào):
/*
//
//                  INTEL CORPORATION PROPRIETARY INFORMATION
//     This software is supplied under the terms of a license agreement or
//     nondisclosure agreement with Intel Corporation and may not be copied
//     or disclosed except in accordance with the terms of that agreement.
//          Copyright(c) 1999-2006 Intel Corporation. All Rights Reserved.
//
//     Intel(R) Integrated Performance Primitives Speech Processing Sample for Windows*
//
//  By downloading and installing this sample, you hereby agree that the
//  accompanying Materials are being provided to you under the terms and
//  conditions of the End User License Agreement for the Intel(R) Integrated
//  Performance Primitives product previously accepted by you. Please refer
//  to the file ippEULA.rtf located in the root directory of your Intel(R) IPP
//  product installation for more information.
//
*/

#include <stdio.h>
#include <math.h>
#include <ipps.h>
#include <ippsr.h>
#include "pitchdetect.h"


short *DoFilter(const short *pInputBuffer, int nInLength){
    int i;
    short *pTmp = ippsMalloc_16s(nInLength);
    ippsCopy_16s(pInputBuffer,pTmp,nInLength);
    for(i=0; i < nInLength-4+1;i++){
        pTmp[i]=(pTmp[i]+pTmp[i+1]+pTmp[i+2]+pTmp[i+3])>>2;
    }

    for(i=0; i < nInLength-4+1;i++){
        pTmp[i]=(pTmp[i]+pTmp[i+1]+pTmp[i+2]+pTmp[i+3])>>2;
    }

    for(i=0; i < nInLength-5+1;i++){
        pTmp[i]=(pTmp[i]+pTmp[i+1]+pTmp[i+2]+pTmp[i+3]+pTmp[i+4])/5;
    }

    return pTmp;
}



void DetectSilent(short *pInBuffer,unsigned char *pSilent,int VecSize){
   float thresholdFactor = 0.01f;
   float energyThreshold = 10000000.0f;
   float DynamicEnergyThreshold=0.0f;
   int crossnum = 45;
   int startBCnt=0,stopBCnt=0;
   short *pBuffer = pInBuffer;
   unsigned char *pSilentWork=pSilent;
   float energy = 0.0f;
   ippsDotProd_16s32f(pBuffer,pBuffer,SILDETLEN,&energy);
   int crossrate;

   ippsSignChangeRate_16s(pBuffer,SILDETLEN,&crossrate);

   DynamicEnergyThreshold += energy;
   float threshold = IPP_MAX(DynamicEnergyThreshold*(float)thresholdFactor, (float)crossnum);
   bool voiceFlag = false;
   if ( energy*crossrate > energyThreshold*crossnum )
       ++startBCnt;
   else
       ippsZero_8u(pSilentWork,SILDETLEN>>1);

   pBuffer+=SILDETLEN;
   pSilentWork+=SILDETLEN;
   for(int i=SILDETLEN;i<VecSize-SILDETLEN;pSilentWork+=SILDETLEN,pBuffer+=SILDETLEN,i+=SILDETLEN){
       ippsDotProd_16s32f(pBuffer,pBuffer,SILDETLEN,&energy);
       DynamicEnergyThreshold += energy;

       ippsSignChangeRate_16s(pBuffer,SILDETLEN,&crossrate);
       threshold = IPP_MAX(DynamicEnergyThreshold*(float)thresholdFactor, (float)crossnum);
       if (!voiceFlag){
           if ( energy*crossrate > energyThreshold*crossnum ||  crossrate >= crossnum){
               if (++startBCnt >= STARTBLOCK) {
                   voiceFlag = true;
                   stopBCnt = 0;
               }
           }
           else{
               if (startBCnt<=1)
                   ippsZero_8u(pSilentWork-(SILDETLEN>>1),SILDETLEN);
               else
                   ippsZero_8u(pSilentWork-SILDETLEN*(startBCnt)-(SILDETLEN>>1),SILDETLEN*startBCnt);
               startBCnt = 0;
           }
       }
       else if ( energy*crossrate < threshold*crossnum*2 || crossrate >= crossnum*2 || energy < threshold*2){
           if (++stopBCnt >= STOPBLOCK){
               startBCnt=0;
               voiceFlag=false;
               DynamicEnergyThreshold=0.0f;
           }
       }
       else stopBCnt = 0;
   }

}
int DetectPitch(short *pInBuffer,unsigned char *pSilent,int nInLength,_PitchStruct *pPitch){
   int nMax = (int)MAX_PITCH;
   int nMin = (int)MIN_PITCH;
   int size = (nMax-nMin)*2;
   float *pCoeff = ippsMalloc_32f(size);
   int *pCandidate = ippsMalloc_32s(size);
   unsigned char *pFlag = ippsMalloc_8u(size);
    int nCountCandidate;
    float max,beta;
   int i=0,j=0,k=0;
   int nPitch0=0;
   float threshold;
    bool unvoiced = true;

    for(i=0,j=0; i<nInLength-2*nMax; i+=SAMPLE_SHIFT){
        if(!pSilent[i])continue;
        /* prepare threshold*/
        if (unvoiced)
            threshold = THIGH;
        else
            threshold = (TMIN > TMAX_RATIO * max) ? TMIN : TMAX_RATIO * max;

        /* Find correlation coefficient*/

      ippsCrossCorrCoeffDecim_16s32f( (&pInBuffer[i]), (&pInBuffer[i])+nMax,
         nMax,nMin,pCoeff,STEP);

        /* Find local maximum */
        max = pCoeff[0];
        bool lm=false;
        float Maximum=0.0f;
        nPitch0=0;
        nCountCandidate=0;

		for(k=1; k<(nMax-nMin)/SAMPLE_SHIFT-1; k++){
            if( pCoeff[k] > max )
                max=pCoeff[k];

            if( pCoeff[k] > pCoeff[k-1] )
                lm=true;

            if( pCoeff[k] > Maximum && lm ){
                Maximum = pCoeff[k];
                if (Maximum >= threshold){
                    nPitch0 = nMin+k*SAMPLE_SHIFT;
                }
            }
            if ( nPitch0 != 0 && pCoeff[k+1]<0.0) {
            pFlag[nCountCandidate]=false;
                pCandidate[nCountCandidate++] = nPitch0;
                nPitch0 = 0;
                Maximum = 0.0;
            }
        }

        if(nCountCandidate==0){
            unvoiced=true;
            continue;
        }
        else
            unvoiced = false;

        float coefficient;
        nPitch0 = pCandidate[0];
        int head=0,tail=0;
        bool headflag=true;

        for(k=0;k<nCountCandidate;k++){

            ippsCrossCorrCoeff_16s32f((&pInBuffer[i])+nMax, (&pInBuffer[i])+nMax+pCandidate[k],
                pCandidate[k],&coefficient);

            if(coefficient>threshold){
                nPitch0 = pCandidate[k];
                pFlag[k]=true;
                if(headflag){
                    head = k;
                    headflag=false;
                }
                tail = k;
            }
        }

        if(tail==0)tail = nCountCandidate-1;
        float DPx;
        nPitch0 = pCandidate[head];

     ippsDotProd_16s32f((&pInBuffer[i])+nMax - nPitch0,(&pInBuffer[i])+nMax - nPitch0,
            nPitch0, &DPx );
        for(k=head;k<tail;k++){
            if(pFlag[k]){
                ippsCrossCorrCoeffPartial_16s32f((&pInBuffer[i])+nMax - pCandidate[tail],
                    (&pInBuffer[i])+nMax + pCandidate[k],pCandidate[tail], (float)(DPx),&coefficient);
                if (k == head)
                    Maximum = coefficient;
                else if (coefficient * TDH > Maximum) {
                    nPitch0 = pCandidate[k];
                    Maximum = coefficient;
                    break;
                }
            }
        }

        max = pCoeff[(nPitch0 - nMin)/SAMPLE_SHIFT];
        /* define small region around peak */
        int nPitch1,nPitch2;

        nPitch1 = nPitch0 - 2 * STEP;
        if(nPitch1-nMin<0)nPitch1 = nMin;
        nPitch2 = nPitch0 + 2 * STEP;

        ippsCrossCorrCoeffDecim_16s32f((&pInBuffer[i]),(&pInBuffer[i])+nMax,
            nPitch2,nPitch1,&(pCoeff[nPitch1-nMin]),1);
        int nMaxIdx;

        ippsMaxIndx_32f(pCoeff+nPitch1 - nMin, nPitch2-nPitch1, &max, &nMaxIdx);

        nPitch0 = nPitch1 + 1 + nMaxIdx;

        /* found infinit part of pitch */
        ippsCrossCorrCoeffInterpolation_16s32f((&pInBuffer[i])+nMax - nPitch0, (&pInBuffer[i]) + nMax, nPitch0,
            &beta, &max);

        if(beta<0.0){
            beta=0.0f;
            nPitch0--;
        }
        if(beta>1.0){
            beta=0.0f;
            nPitch0++;
        }
        /* found infinitive part of pitch - beta */
        pPitch->Freq[j] = (float)(nPitch0 + beta);
        pPitch->Frame[j++] = i/SAMPLE_SHIFT;
    }

   ippsFree(pCoeff);

   ippsFree(pCandidate);

   ippsFree(pFlag);

    return j;
}


int PitchDetector(short *pInputBuffer, int nInLength, _PitchStruct *pPitch){
   int i=0, k=0;
   short *pInBuffer = DoFilter(pInputBuffer, nInLength);

   unsigned char *pSilent = ippsMalloc_8u(nInLength);
    ippsSet_8u(1,pSilent,nInLength);

   DetectSilent(pInBuffer,pSilent,nInLength);

   int CountPitch = DetectPitch(pInBuffer,pSilent,nInLength,pPitch);

    ippsFree(pSilent);
    ippsFree(pInBuffer);

    bool flag=false;
    int col=0;
    for(i=0,k=0; i< CountPitch-1;i++){
        if(pPitch->Frame[i]-pPitch->Frame[i+1]==-1){
            flag=true;
            col++;
            pPitch->Frame[k]=pPitch->Frame[i];
            pPitch->Freq[k++]=pPitch->Freq[i];
        }else{
            if(flag && col<100){
                k=k-col;
            }
            col=0;
            flag=false;
        }
    }

    return k;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合av第一页| 国产一区二区成人久久免费影院| 国产电影一区在线| 日韩一区二区三区视频在线观看| 亚洲精品一二三四区| 99天天综合性| 亚洲色图一区二区三区| 成人小视频在线| 国产精品国产三级国产aⅴ原创| 精品一区免费av| 日韩美女一区二区三区| 日韩精品每日更新| 日韩午夜激情av| 成人污视频在线观看| 国产精品激情偷乱一区二区∴| 成人黄色小视频| 亚洲狠狠爱一区二区三区| 欧美日本一道本| 欧美aaa在线| 中文字幕精品三区| 成人蜜臀av电影| 视频在线观看91| 久久丝袜美腿综合| 在线观看www91| 麻豆精品视频在线观看视频| 欧美精品一区二区三区一线天视频 | 精品一区二区三区av| 国产日韩精品一区二区三区在线| hitomi一区二区三区精品| 亚洲综合色视频| 欧美国产日韩亚洲一区| 欧美日韩不卡一区二区| 国产在线麻豆精品观看| 国产乱码一区二区三区| 91香蕉国产在线观看软件| 亚洲精品你懂的| 久久久三级国产网站| 欧美在线视频你懂得| jlzzjlzz亚洲日本少妇| 蜜桃av一区二区三区| 亚洲va韩国va欧美va精品| 国产欧美日韩精品在线| 日韩亚洲欧美成人一区| 懂色av中文一区二区三区| 久久国产尿小便嘘嘘| 亚洲主播在线播放| 亚洲色图丝袜美腿| 国产肉丝袜一区二区| 久久久久久**毛片大全| 日韩欧美国产综合| 欧美不卡在线视频| 日韩一区二区三区在线观看| 在线播放中文字幕一区| 欧美精品久久久久久久多人混战 | 床上的激情91.| 国产成人99久久亚洲综合精品| 精品在线一区二区| 卡一卡二国产精品 | 欧美videos中文字幕| 日韩视频一区二区| 久久精品欧美一区二区三区不卡| 日韩精品一区二区三区中文不卡 | 日本sm残虐另类| 韩国三级在线一区| 91麻豆.com| 91精品久久久久久久91蜜桃| 欧美tickling网站挠脚心| 亚洲精品一区二区在线观看| 国产三级精品视频| 亚洲va在线va天堂| 国产美女视频91| 在线一区二区三区四区| 日韩美一区二区三区| 亚洲欧洲av另类| 免费精品视频最新在线| 成人一级片网址| 欧美福利一区二区| 国产精品卡一卡二卡三| 日本美女一区二区三区视频| 国产一区二区在线免费观看| 色婷婷av久久久久久久| 精品久久久久99| 一区二区三区日韩| 国产黄人亚洲片| 欧美一级高清片| 亚洲午夜精品一区二区三区他趣| 国产黄人亚洲片| 亚洲精品一线二线三线| 亚洲gay无套男同| 色偷偷久久一区二区三区| 2欧美一区二区三区在线观看视频| 一区二区三区91| 色一情一伦一子一伦一区| 国产视频一区二区在线| 国产一区二区h| 欧美精品一区二区高清在线观看| 亚洲线精品一区二区三区八戒| 丁香六月综合激情| 欧美国产视频在线| 成人深夜视频在线观看| 久久久久久夜精品精品免费| 黄色日韩网站视频| 国产亚洲欧美色| 日韩欧美成人一区| 国产精品视频免费看| 成人黄色免费短视频| 综合网在线视频| 一本色道a无线码一区v| 伊人夜夜躁av伊人久久| 91麻豆免费看| 三级久久三级久久久| 精品国产一区二区三区忘忧草| 日本午夜精品一区二区三区电影 | 欧美老肥妇做.爰bbww| 午夜欧美电影在线观看| 日韩欧美一级片| 从欧美一区二区三区| 亚洲一区二区在线免费观看视频| 欧美性大战xxxxx久久久| 蜜臀av一区二区| 国产精品久久久久久久久久久免费看 | 国产精品麻豆99久久久久久| jlzzjlzz亚洲女人18| 日韩福利视频导航| 国产女人水真多18毛片18精品视频| www.亚洲人| 奇米精品一区二区三区四区| 国产精品高清亚洲| 精品少妇一区二区三区视频免付费| 国产不卡视频在线播放| 亚洲成av人影院| 国产精品久久久久毛片软件| 欧美一区二区三区小说| 91在线一区二区三区| 国产麻豆午夜三级精品| 1000精品久久久久久久久| 日本久久精品电影| 波多野结衣在线一区| 麻豆成人久久精品二区三区小说| 成人免费在线视频观看| 欧美激情中文不卡| 久久这里只有精品视频网| 在线播放中文一区| 欧美色综合网站| 欧美色男人天堂| 欧美色窝79yyyycom| 91麻豆精品视频| 99久久精品国产麻豆演员表| 国产成人精品在线看| 国产一区二区三区黄视频| 美腿丝袜一区二区三区| 婷婷国产v国产偷v亚洲高清| 亚洲自拍偷拍麻豆| 亚洲成人av电影在线| 亚洲电影中文字幕在线观看| 亚洲欧美电影院| 亚洲国产精品一区二区尤物区| 伊人夜夜躁av伊人久久| 亚洲午夜国产一区99re久久| 亚洲午夜激情av| 免费欧美日韩国产三级电影| 国内欧美视频一区二区| 国产在线一区二区综合免费视频| 看国产成人h片视频| 国产成人精品三级| 91婷婷韩国欧美一区二区| 在线观看免费一区| 欧美成人一区二区三区| 国产拍揄自揄精品视频麻豆 | 在线综合视频播放| 国产天堂亚洲国产碰碰| 亚洲综合一二区| 国产一区二区在线观看视频| 成人国产一区二区三区精品| 欧美日韩中文国产| 国产香蕉久久精品综合网| 亚洲一区二区三区视频在线播放 | 国产精品久久午夜夜伦鲁鲁| 亚洲伊人伊色伊影伊综合网| 久久国产福利国产秒拍| 色婷婷av一区二区| 精品少妇一区二区三区视频免付费 | 欧美日韩国产一区| 精品国产一区二区三区四区四 | 精品久久久久久最新网址| 最新成人av在线| 美女视频黄免费的久久 | 日韩精品五月天| 欧美自拍偷拍一区| 国产精品不卡视频| 成人黄色一级视频| 久久亚洲免费视频| 精品一区二区综合| 日韩一区国产二区欧美三区| 亚洲尤物视频在线| 在线视频欧美精品| 亚洲精品美国一| 91蜜桃在线免费视频| 亚洲色图视频网站| 色悠悠亚洲一区二区|