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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vadsm.c

?? Intel開發的IPP庫的應用實例
?? C
字號:
/*
//
//                  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) 2002-2006 Intel Corporation. All Rights Reserved.
//
//  Intel(R) Integrated Performance Primitives Audio 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.
//
//  Description:
//  This source file contains the implementation of state machine (SM)
//  for the Voice Activity Detector.
//
*/

/* headers */
#include "VADcommon.h"

/* function prototypes */
void SM_UpdateSMParams(VADStateStruct* pState);
void SM_UpdateSMState(SMStruct* pState, int frameNum);

/********************************************************************************
// Name:             SM_GetStateSizeBytes
// Description:      Calculate and return the size in bytes required by the State
//                   Machine (SM) structure.
// Output Arguments:
//                   pNumStateBytes  - return variable holding the calculated state size
//
// Returns:          None
// Notes:
********************************************************************************/
void SM_GetStateSizeBytes(int* pNumStateBytes)
{
    /* size of the SMStruct */
    *pNumStateBytes = sizeof(SMStruct);
}

/********************************************************************************
// Name:            SM_Init
// Description:     Initialize the state machine structure with initial values.
//
// Input Arguments:
//                  frameShiftMsec - frame shift for overlapping frames in msec
// Input/Output Arguments:
//                  pSMState       - pointer to an SM structure to be initialized
//
// Returns:         None
********************************************************************************/
void SM_Init(SMStruct* pSMState, int frameShiftMsec)
{
    /* half the frame shift used to round of the computations of variables */
    int halfFrameShiftMsec = frameShiftMsec/2;

    /* Initialize variables */
    pSMState->cMinOnsetFrames = (ONSET_THRESHOLD_MSEC + halfFrameShiftMsec) / frameShiftMsec;
    pSMState->cMinEnergyHangFrames  = (ENERGY_HANG_THRESH_MSEC + halfFrameShiftMsec) / frameShiftMsec;
    pSMState->cMinPerHangFrames  = (PER_HANG_THRESH_MSEC + halfFrameShiftMsec) / frameShiftMsec;
    pSMState->cUttBegAdjustFrames = (UTT_BEG_ADJUSTMENT_MSEC + halfFrameShiftMsec) / frameShiftMsec;
    pSMState->cOnsetFrames = 0;
    pSMState->cEnergyHangFrames = 0;
    pSMState->cPerHangFrames = 0;
    pSMState->uttHasStartedFlag = 0;
    pSMState->uttHasEndedFlag = 0;
    pSMState->state = SILENCE;
    pSMState->uttEndFrameNum = 0;
    pSMState->uttBegFrameNum = 0;
    pSMState->prevUttEndFrameNum=0;

}

/********************************************************************************
// Name:            SM_UpdateSMState
// Description:     Update the state machine based on energy and periodicity
//
// Input/Output Arguments:
//                  pState - pointer to the VAD state structure
//
// Returns:         None
********************************************************************************/
void SM_UpdateState(VADStateStruct* pState)
{
    /* update state machine parameters based on the energy and periodicity measures */
    SM_UpdateSMParams(pState);

    /* determine state of the VAD */
    SM_UpdateSMState(pState->pSM, pState->frameNum);

    if (pState->pSM->uttHasStartedFlag)
    {
        /* adjust the start frame number by a fixed number of frames */
        pState->pSM->uttBegFrameNum -= pState->pSM->cUttBegAdjustFrames;

        /* prevent over-adjustment */
        if (pState->pSM->uttBegFrameNum <= pState->pSM->prevUttEndFrameNum)
        {
          pState->pSM->uttBegFrameNum = pState->pSM->prevUttEndFrameNum + 1;
        }
    }
    else if (pState->pSM->uttHasEndedFlag)
    {
        /* save the end-of-utterance frame number to use in calculation of history for start of next utterance */
        pState->pSM->prevUttEndFrameNum = pState->frameNum;
    }
}

/********************************************************************************
// Name:            SM_UpdateStateParams
// Description:     Update the energy and periodicity related flags based on the
//                  their values with respect to their thresholds.
//
// Input/Output Arguments:
//                  pState       - pointer to the VADState structure.
//
// Returns:         None
********************************************************************************/
void SM_UpdateSMParams(VADStateStruct* pState)
{
    /*
    // If the current frame energy exceeds the noise threshold, this indicates
    // that speech is present in the current frame.
    */
    if (pState->pEState->energyDB > pState->pEState->noiseThreshDB)
    {
        pState->pSM->energySpeechIsActiveFlag = 1;
    }
    else
    {
        pState->pSM->energySpeechIsActiveFlag = 0;
    }

    /*
    // If the current frame periodicity exceeds the threshold, this indicates
    // that (voiced) speech is present in the current frame.
    */
    if (pState->pPerState->smoothPeriodicityQ15 > PER_SPEECH_THRESHOLD_Q15)
    {
        pState->pSM->perSpeechIsActiveFlag = 1;
    }
    else
    {
        pState->pSM->perSpeechIsActiveFlag = 0;
    }

}

/********************************************************************************
// Name:            SM_UpdateState
// Description:     Update the state of the VAD state machine based on onset and
//                  hang times. The VAD state machine can be in one of the following states
//                  1) SILENCE - No speech is present.
//                               Allowed transitions -
//                               SILENCE -> SILENCE : atleast one of the energy/periodicity
//                                                    flags indicates speech inactivity.
//                               SILENCE -> ONSET   : both energy/periodicity flag indicate
//                                                    speech activity
//
//                  2) ONSET   - Start of an utterance may have been detected.
//                               Allowed transitions -
//                               ONSET -> SPEECH    : both the energy/periodicity flags indicate
//                                                    speech activity in consecutive ONSET_THRESHOLD_MSEC
//                                                    frames. This transition sets the utterance start flag.
//                               ONSET -> SILENCE   : both the energy/periodicity flags are false (do not
//                                                    indicate speech activity) in consecutive
//                                                    ONSET_THRESHOLD_MSEC frames
//                               ONSET -> ONSET     : both energy/periodicity flag indicate
//                                                    speech activity but ONSET_THRESHOLD_MSEC
//                                                    has not been reached

//                  3) SPEECH  - Speech is present.
//                               Allowed transitions -
//                               SPEECH -> HANG     : at least one of energy/periodicity
//                                                    flags do not indicate speech activity
//                               SPEECH -> SPEECH   : both energy/periodicity flag indicate
//                                                    speech activity
//
//                  4) HANG    - End of an utterance may have been detected.
//                               Allowed transitions -
//                               HANG -> SPEECH     : if both energy/periodicity flags indicate
//                                                    speech activity before hang times
//                                                    ENERGY_HANG_THRESH_MSEC or PER_HANG_THRESH_MSEC
//                                                    are completed
//                               HANG -> HANG       : at least one of energy/periodicity
//                                                    flags do not indicate speech activity in consecutive
//                                                    frames but hang time ENERGY_HANG_THRESH_MSEC or
//                                                    PER_HANG_THRESH_MSEC are not yet completed
//                               HANG -> SILENCE    : at least one of energy/periodicity flags do not indicate
//                                                    speech activity in consecutive frames and hang times
//                                                    ENERGY_HANG_THRESH_MSEC or PER_HANG_THRESH_MSEC are
//                                                    is completed. This transition sets the utterance end flag.
// Input Arguments:
//                  frameNum     - current frame number used for setting the start/end frame number.
// Input/Output ARguments:
//                  pState       - pointer to the SM structure.
//
// Returns:         None
********************************************************************************/
void SM_UpdateSMState(SMStruct* pSM, int frameNum)
{

    switch (pSM->state)
    {
        case SILENCE:
            if (pSM->energySpeechIsActiveFlag && pSM->perSpeechIsActiveFlag )
            {
                /* speech onset detected. Transition SILENCE -> ONSET */
                pSM->state = ONSET;
                pSM->cOnsetFrames = 1;
            }
            break;

        case ONSET:
            if (pSM->energySpeechIsActiveFlag && pSM->perSpeechIsActiveFlag )
            {
                /* update number of onset frames */
                (pSM->cOnsetFrames)++;

                if (pSM->cOnsetFrames >= pSM->cMinOnsetFrames)
                {
                    /* utterance start detected. Transition ONSET -> SPEECH */
                    pSM->uttHasStartedFlag = 1;
                    pSM->uttBegFrameNum = frameNum - pSM->cMinOnsetFrames;
                    pSM->state = SPEECH;
                }
            }
            else
            {
                /* False onset. Reset onset frames. Transition ONSET -> SILENCE */
                pSM->state = SILENCE;
                pSM->cOnsetFrames = 0;
            }
            break;

        case SPEECH:
            if (!(pSM->energySpeechIsActiveFlag))
            {
                /* utterance end may have started. Transition SPEECH -> HANG */
                pSM->cEnergyHangFrames=1;
                pSM->state = HANG;
            }

            if (!(pSM->perSpeechIsActiveFlag))
            {
                /* utterance end may have started. Transition SPEECH -> HANG */
                pSM->cPerHangFrames=1;
                pSM->state = HANG;
            }

            break;

        case HANG:
            if (!(pSM->energySpeechIsActiveFlag))
            {
                /* update number of consecutive hang frames based on energy measure */
                (pSM->cEnergyHangFrames)++;
            }
            else
            {
                /* reset to zero since consecutive frames not inactive */
                pSM->cEnergyHangFrames = 0;
            }
            if (!(pSM->perSpeechIsActiveFlag))
            {
                /* update number of consecutive hang frames based on energy measure */
                (pSM->cPerHangFrames)++;
            }
            else
            {
                /* reset to zero since consecutive frames not inactive */
                pSM->cPerHangFrames = 0;
            }
            if ( (pSM->cEnergyHangFrames >= pSM->cMinEnergyHangFrames)
              || (pSM->cPerHangFrames >= pSM->cMinPerHangFrames) )
            {
                /* speech end detected. Transition HANG -> SILENCE */
                pSM->uttEndFrameNum = frameNum - 1;
                pSM->uttHasEndedFlag = 1;
                pSM->cEnergyHangFrames = 0;
                pSM->cPerHangFrames = 0;
                pSM->state = SILENCE;
            }
            else if ((0 == pSM->cEnergyHangFrames)
              && (0 == pSM->cPerHangFrames))
            {
                /*
                // false HANG since both energy/periodicity flags indicate speech activity.
                // Transition HANG -> SPEECH
                */
                pSM->state = SPEECH;
            }
            break;

        default:
            break;
    }
}


/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线观看| 欧美电影免费观看高清完整版在线| 欧美一级xxx| 亚洲美腿欧美偷拍| 国产大陆亚洲精品国产| 一色屋精品亚洲香蕉网站| 不卡的av网站| 国产日韩欧美不卡在线| av电影天堂一区二区在线观看| 欧美激情一区二区| 不卡av免费在线观看| 亚洲综合色在线| 在线一区二区观看| 午夜精品久久久久久久久久久| 日韩欧美你懂的| 国产一区二区三区电影在线观看| 久久综合九色综合欧美就去吻 | 日韩高清不卡一区二区| 3d成人h动漫网站入口| 免费一级片91| 久久免费视频一区| 91激情五月电影| 一个色综合av| 日韩一区二区免费在线观看| 国产成人免费在线| 日韩理论在线观看| 欧美日韩不卡一区二区| 国产很黄免费观看久久| 自拍偷拍亚洲欧美日韩| 91福利视频网站| 国内精品视频666| 亚洲日穴在线视频| 欧美精品18+| 99久久久国产精品| 理论电影国产精品| 国产精品视频在线看| 欧美日韩精品欧美日韩精品一 | 日韩精品一区二区在线| 国产91精品一区二区麻豆网站 | 亚洲成人高清在线| 久久影院午夜片一区| 97精品超碰一区二区三区| 久久se精品一区二区| 欧美激情一区在线观看| 欧美日本在线播放| 91丝袜高跟美女视频| 日韩国产精品久久久| 国产三级精品三级| 日韩欧美在线观看一区二区三区| 成人免费视频播放| 日韩国产欧美一区二区三区| 在线播放国产精品二区一二区四区 | 亚洲欧美偷拍卡通变态| 欧美久久久久免费| 成人激情黄色小说| 亚洲欧美一区二区三区孕妇| 日韩欧美久久一区| av一区二区三区四区| 秋霞av亚洲一区二区三| 国产精品久久久久久久久果冻传媒| 国产日韩欧美a| 日韩二区三区在线观看| 久久综合九色综合欧美就去吻| 亚洲高清免费视频| 91麻豆免费看| 亚洲夂夂婷婷色拍ww47| 不卡在线观看av| 久久久久综合网| 国产很黄免费观看久久| 久久人人超碰精品| 成人综合激情网| 日韩一二三四区| 成人精品gif动图一区| 看片的网站亚洲| 亚洲永久免费av| 最新国产精品久久精品| 91精品欧美综合在线观看最新 | 久久久久久久久久美女| 日韩欧美一区二区在线视频| 在线看不卡av| 欧洲国产伦久久久久久久| 在线观看一区日韩| 色婷婷av一区| av电影天堂一区二区在线| 成人免费视频一区| 成人黄色小视频| 99久久精品99国产精品 | 国产**成人网毛片九色| 久久99精品一区二区三区三区| 免费人成精品欧美精品| 日本美女一区二区三区视频| 五月天久久比比资源色| 亚洲人成在线播放网站岛国| 一区二区三区免费网站| 日韩中文字幕av电影| 国产精品色眯眯| 亚洲美女区一区| 一区二区高清视频在线观看| 亚洲成人1区2区| 国产一区二区三区在线观看免费视频 | 91丨porny丨首页| 色成年激情久久综合| 91精品午夜视频| 精品久久久三级丝袜| 欧美va亚洲va国产综合| 国产真实乱子伦精品视频| 免费观看成人av| 大尺度一区二区| 国产专区欧美精品| 青青草国产精品97视觉盛宴| 国产精品全国免费观看高清| 26uuu亚洲| 欧美日韩高清影院| 另类小说视频一区二区| 日韩国产精品久久久| 精品系列免费在线观看| 8x福利精品第一导航| caoporn国产精品| 欧美影院一区二区| 久久久亚洲精品石原莉奈| 亚洲欧美在线高清| 日日骚欧美日韩| 99久久综合狠狠综合久久| 色视频欧美一区二区三区| 91精品中文字幕一区二区三区| 欧美韩国一区二区| 亚洲久本草在线中文字幕| 午夜精品福利久久久| 国产一区二区免费看| 欧美一区二区三区性视频| 欧美一级专区免费大片| 欧美α欧美αv大片| 国产精品久久久久久妇女6080| 亚洲18女电影在线观看| 国产v综合v亚洲欧| 欧美日韩精品免费观看视频| 久久精品这里都是精品| 日韩高清一区在线| 99视频在线精品| 精品欧美一区二区三区精品久久| 亚洲欧美国产77777| 狠狠色伊人亚洲综合成人| 99久久精品国产观看| 精品国产乱码久久久久久牛牛| 亚洲激情在线激情| 免费看欧美美女黄的网站| 91女人视频在线观看| 欧美精品一区二区在线观看| 亚洲bdsm女犯bdsm网站| 91蝌蚪porny| 欧美精品一区男女天堂| 亚洲国产aⅴ天堂久久| 一本到一区二区三区| 日本一区二区动态图| 日本一道高清亚洲日美韩| 在线中文字幕一区二区| 国产精品国产自产拍高清av| 蜜臀精品一区二区三区在线观看| 欧美日韩国产一级片| 亚洲欧美自拍偷拍| 欧美绝品在线观看成人午夜影视| 国产精品免费视频观看| 欧美日韩激情一区二区| 日韩激情中文字幕| 91精品国产一区二区三区| 亚洲1区2区3区4区| 欧美优质美女网站| 亚洲国产成人va在线观看天堂| 91丝袜美女网| 亚洲一本大道在线| 国产午夜一区二区三区| 亚洲电影一级黄| 一区二区三区av电影 | 国产成人日日夜夜| 国产欧美va欧美不卡在线| 成人污视频在线观看| 中文在线资源观看网站视频免费不卡 | 欧美xxxxxxxxx| 国产aⅴ综合色| 亚洲日本韩国一区| 欧美日韩精品一区二区天天拍小说| 亚洲国产一二三| 欧美一区二区观看视频| 国产综合色产在线精品| 国产欧美日韩不卡| 色视频欧美一区二区三区| 亚洲一区二区不卡免费| 日韩午夜激情av| 成人免费观看男女羞羞视频| 亚洲美女一区二区三区| 制服丝袜激情欧洲亚洲| 精品一二三四区| 中文字幕一区二| 在线免费观看成人短视频| 秋霞影院一区二区| 国产欧美精品区一区二区三区| 色哟哟日韩精品| 精品无人区卡一卡二卡三乱码免费卡 | 欧美亚洲一区二区三区四区| 六月丁香婷婷久久|