void PLPCoefs::ProcessFrame(float *pInpFrame, float *pOutFrame) { MelBanks::ProcessFrame(pInpFrame, mpEnergies); //float a[] = {6.728697e+005, 9.397764e+005, 1.477376e+006, 2.738733e+005, 4.895320e+004, 8.109916e+004, 9.704898e+004, 2.696904e+004, 4.563343e+004, 2.192602e+005, 4.360400e+005, 6.248051e+005, 2.641279e+005, 5.159555e+004, 4.087839e+004, 5.961117e+004, 1.200557e+005, 4.983299e+004, 2.235987e+004, 2.777589e+004, 4.005698e+004, 2.035172e+004, 3.305208e+004, 6.939732e+004}; //sCopy(24, mpEnergies, a); int nbanks = GetNBanks(); // limit energies sLowerFloor(nbanks, mpEnergies, 1.0f); // apply equal laudness curve sMultVect(nbanks, mpEnergies, mpEqualLaudnessCurve); // compression of energies sPower(nbanks, mpEnergies, mCompressFactor); // duplicate the first and the last value sShiftRight(nbanks + 1, mpEnergies, 1); mpEnergies[0] = mpEnergies[1]; mpEnergies[nbanks + 1] = mpEnergies[nbanks]; // IDCT ApplyLinTransform(mppIDFTBases, mLPCOrder + 1, GetNBanks() + 2, mpEnergies, mpAutocorrCoefs); // autocerrelation -> LPC float gain = sDurbin(mpAutocorrCoefs, mpLPC, mpTmp, mLPCOrder); assert(gain > 0.0f); // LPC -> cepstrum sLPC2Cepstrum(mLPCOrder, mpLPC, mpCepst); // calculate C0 mpCepst[mLPCOrder] = -logf(1.0f/gain); // appply liftering window if(mCepstralLifter != 0.0f) { sMultVect(mLPCOrder, mpCepst, mpLifteringWindow); } // cepstral scaling if(mCepstralScale != 1.0f) { sMultiplication(mLPCOrder + 1, mpCepst, mCepstralScale); } sCopy((mAddC0 ? mLPCOrder + 1 : mLPCOrder), pOutFrame, mpCepst); }
void CDuergarDwarfReference::SetPower() { m_sPower[0] = sPower(-30,0); //0-9 m_sPower[1] = sPower(-20,0); //10-19 m_sPower[2] = sPower(-10,0); //20-29 m_sPower[3] = sPower(0,0); //30-39 m_sPower[4] = sPower(0,0); //40-49 m_sPower[5] = sPower(0,0); //50-59 m_sPower[6] = sPower(0,0); //60-69 m_sPower[7] = sPower(0,0); //70-79 m_sPower[8] = sPower(10,0); //80-89 m_sPower[9] = sPower(20,0); //90-99 m_sPower[10] = sPower(30,0); //100-109 m_sPower[11] = sPower(30,0); //110-119 m_sPower[12] = sPower(32,0); //120 }
void CGnomeReference::SetPower() { m_sPower[0] = sPower(0, 1); //0-9 m_sPower[1] = sPower(0, 2); //10-19 m_sPower[2] = sPower(0, 3); //20-29 m_sPower[3] = sPower(0, 4); //30-39 m_sPower[4] = sPower(0, 4); //40-49 m_sPower[5] = sPower(0, 4); //50-59 m_sPower[6] = sPower(0, 4); //60-69 m_sPower[7] = sPower(10, 5); //70-79 m_sPower[8] = sPower(20, 6); //80-89 m_sPower[9] = sPower(30, 7); //90-99 m_sPower[10] = sPower(40, 8); //100-109 m_sPower[11] = sPower(50, 9); //110-119 m_sPower[12] = sPower(55, 10); //120 }