windows-nt/Source/XPSP1/NT/enduser/speech/tts/truetalk/backend/synthunit.h
2020-09-26 16:20:57 +08:00

75 lines
1.8 KiB
C++

/******************************************************************************
* SynthUnit.h *
*-------------*
*
*------------------------------------------------------------------------------
* Copyright (C) 1996 Entropic, Inc
* Copyright (C) 2000 Microsoft Corporation Date: 03/02/00
* All Rights Reserved
*
********************************************************************* PACOG ***/
#ifndef __SYNTHUNIT_H_
#define __SYNTHUNIT_H_
#include <vector>
struct Epoch;
struct NewF0Struct;
class CSynth
{
friend class CTips;
friend class CSpeakerData;
public:
CSynth(int iSampFreq);
~CSynth();
int LpcAnalysis (int iSampFreq, int iOrder);
int FindPrecedent ();
int NextBuffer (CTips* pTips);
void GetNewF0 (std::vector<NewF0Struct>* pvNewF0, double* pdTime, double* pdRunTime );
protected:
double* GetDurbinCoef(double* data, int nData);
void FreeLpcCoef();
short ClipData (double x);
int m_iSampFreq;
// Read from the input files
double m_dRunTimeLimit;
double m_dGain; // Gain to aply to the whole segment
// Read from the database
char m_pszChunkName[256];
int m_iNumSamples;
double* m_pdSamples;
int m_iNumEpochs;
Epoch* m_pEpochs;
// Computed for synthesis
double* m_pdSynEpochs; // Synthesis epoch track
int* m_piMapping;
int m_iNumSynEpochs;
// For lpc synthesis
double** m_ppdLpcCoef;
int m_iLpcOrder;
//While synthesizing, tracks current epoch
int m_iCurrentPeriod;
int m_iRepetitions;
int m_iInvert;
// For Wave Concatenation Synth
double m_dF0Ratio;
};
#endif