bool SpeechRec::ProcessOnline(void *inpSig, int sigNBytes, bool lastFrame) { if(!ConvertWaveformFormat(waveFormat, inpSig, sigNBytes, &waveform, &waveformLen)) return false; actualParams->AddWaveform(waveform, waveformLen); while(actualParams->GetFeatures(params + bunchIdx * actualParams->GetNParams())) { // minima thresholds etc. FrameBasedNormalization(params + bunchIdx * actualParams->GetNParams(), actualParams->GetNParams()); // initial interval based mean and variance normalization Norm.ProcessFrame(actualParams->GetNParams(), params + bunchIdx * actualParams->GetNParams()); lastParamVector = bunchIdx; bunchIdx++; if(bunchIdx == bunchSize) { if(mTrapsEnabled) { TR.CalcFeaturesBunched(params, posteriors, bunchSize); // this function is split into two parts just becasuse of saving in off-line mode int j; for(j = 0; j < bunchSize * TR.GetNumOuts(); j++) posteriors[j] = (*postSoftFunc)(posteriors[j], postSoftArg1, postSoftArg2, postSoftArg3); for(j = 0; j < bunchSize * TR.GetNumOuts(); j++) posteriors[j] = (*decSoftFunc)(posteriors[j], decSoftArg1, decSoftArg2, decSoftArg3); int i; for(i = 0; i < bunchSize; i++) { if(TR.GetDelay() >= TR.GetTrapShift()) // Initialization of TRAPS - skip half of the trap length DE->ProcessFrame(posteriors + i * TR.GetNumOuts()); } } else { int i; for(i = 0; i < bunchSize; i++) { DE->ProcessFrame(params + i * actualParams->GetNParams()); } } bunchIdx = 0; } } if(lastFrame) ProcessTail(); return true; }
void Process444Quarter(softidct* p,int x,int y) { ProcessHead(p,x,y); SetPtr444(p,x,y,2); ProcessTail(p,x,y); }
void Process444Half(softidct* p,int x,int y) { ProcessHead(p,x,y); SetPtr444(p,x,y,1); ProcessTail(p,x,y); }