Example #1
0
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;
}
Example #2
0
void Process444Quarter(softidct* p,int x,int y)
{
	ProcessHead(p,x,y);
	SetPtr444(p,x,y,2);
	ProcessTail(p,x,y);
}
Example #3
0
void Process444Half(softidct* p,int x,int y)
{
	ProcessHead(p,x,y);
	SetPtr444(p,x,y,1);
	ProcessTail(p,x,y);
}