Example #1
0
void MelBanks::ProcessFrame(float *inp_frame, float *ret_features)
{

	// preprocessing in the time domain
	if(z_mean_source)
        {
           sSubtractAverage(vector_size, inp_frame);
        }

        if(preem_coef != 0.0f)
        {
	   sPreemphasisBW(vector_size, inp_frame, preem_coef);
        }

	sMultVect(vector_size, inp_frame, hamming);

	// FFT
	sSet(fft_vector_size, FFT_real, 0.0f);
	sSet(fft_vector_size, FFT_imag, 0.0f);
	sCopy(vector_size, FFT_real, inp_frame);
	cComplex22N(fft_vector_size, FFT_real, FFT_imag, FFT_vector + 1);
	FFT_vector[0] = 0.0f;

	cFour1(FFT_vector, fft_vector_size, -1);

	c2N2Complex(fft_vector_size_2, FFT_vector + 1, FFT_real, FFT_imag);

	cPower(fft_vector_size_2, FFT_real, FFT_imag);
	//sSqrt(MB_FFTVECTORSIZE_2, FFTReal);

	// Get logarithms of energies in critical bands
	_mbApply(mel_banks, FFT_real, out_en, false);

        if(take_log)
        {
	   sLn(nbanks, out_en);
        }
        sCopy(nbanks, ret_features, out_en);
}
Example #2
0
void MelBanks::Init()
{  
  if(initialized)
    return;
    
  // get wector size which is power of two 
  fft_vector_size = 1;
  while(fft_vector_size < vector_size)
    fft_vector_size *= 2;
  
  fft_vector_size_2 = fft_vector_size / 2; 
    
	input_vector = 0;
	input_vector_pos = 0;
	first_frame = true;

	// space for one waveform frame
	frame = new float [vector_size];
	frame_backup = new float [vector_size];
	frame_pos = 0;

	// coefficients of hamming window
	hamming = new float[vector_size];
	sSet(vector_size, hamming, 1.0f);
	sWindow_Hamming(vector_size, hamming);

	// space for FFT
	FFT_vector = new float [2 * fft_vector_size + 1];     // real + imag + not used entry
	FFT_real = new float [fft_vector_size];
	FFT_imag = new float [fft_vector_size];

        if(nbanks_full == -1)
        {
           nbanks_full = nbanks;
        }    

        out_en = new float [nbanks_full];

	// calculate mel-bank
	mel_banks = _mbInit(nbanks_full, fft_vector_size, sample_freq, lo_freq, hi_freq, 0);   


  initialized = true;
}
Example #3
0
CString cryptoRandomUserPassword (int iChars, DWORD dwFlags)

//	cryptoRandomUserPassword
//
//	Generates a random password for a user (e.g., when reseting a password).

	{
	if (iChars <= 0)
		return NULL_STR;

	//	Put together a large string of possible characters based on the flags.

	CString sSet(MAX_SET_SIZE);
	char *pSet = sSet.GetParsePointer();
	char *pPos = pSet;

	if (dwFlags & CRYPTOPASS_MIXED_CASE)
		{
		char *pSrc = g_AlphaMixed_set;
		char *pSrcEnd = pSrc + sizeof(g_AlphaMixed_set) - 1;
		while (pSrc < pSrcEnd)
			*pPos++ = *pSrc++;
		}
	else
		{
		char *pSrc = g_Alpha_set;
		char *pSrcEnd = pSrc + sizeof(g_Alpha_set) - 1;
		while (pSrc < pSrcEnd)
			*pPos++ = *pSrc++;
		}

	if (dwFlags & CRYPTOPASS_NUMBERS)
		{
		char *pSrc = g_Numbers_set;
		char *pSrcEnd = pSrc + sizeof(g_Numbers_set) - 1;
		while (pSrc < pSrcEnd)
			*pPos++ = *pSrc++;
		}

	if (dwFlags & CRYPTOPASS_SYMBOLS)
		{
		char *pSrc = g_Symbols_set;
		char *pSrcEnd = pSrc + sizeof(g_Symbols_set) - 1;
		while (pSrc < pSrcEnd)
			*pPos++ = *pSrc++;
		}

	int iSetSize = (int)(pPos - pSet);

	//	Now generate a password of the appropriate number of characters

	CString sPassword(iChars);
	pPos = sPassword.GetParsePointer();
	char *pPosEnd = pPos + iChars;
	while (pPos < pPosEnd)
		{
		unsigned int dwRnd;
		rand_s(&dwRnd);
		*pPos++ = pSet[dwRnd % iSetSize];
		}

	//	Done

	return sPassword;
	}