mlpg
Functions
-
int main(int argc, char *argv[])
mlpg [ option ] [ infile ]
-l int
length of vector \((1 \le M + 1)\)
-m int
order of vector \((0 \le M)\)
-s int
number of past frames \((0 \le S)\)
-q int
input format
0
\(\boldsymbol{\mu}\), \(\boldsymbol{\varSigma}\)1
\(\boldsymbol{\mu}\), \(\boldsymbol{\varSigma}^{-1}\)2
\(\boldsymbol{\mu\varSigma}^{-1}\), \(\boldsymbol{\varSigma}^{-1}\)
-d double+
delta coefficients
-D str
filename of double-type delta coefficients
-r int+
width of 1st (and 2nd) regression coefficients
-magic double
magic number
-R int
mode
0
recursive (Kalman filter)1
non-recursive (Cholesky decomposition)
infile str
double-type mean and variance parameter sequence
stdout
double-type static parameter sequence
See also
-
class RecursiveMaximumLikelihoodParameterGeneration : public sptk::InputSourceInterface
Estimate the maximum likelihood parameters from the means and the diagonal covariances of Gaussian distributions.
The input is the sequence of the mean and the diagnoal covariance of \(M\)-th order static and \(DM\)-th order dynamic feature components:
\[ \begin{array}{ccccc} \boldsymbol{\mu}_1, & \boldsymbol{\varSigma}_1, & \ldots, & \boldsymbol{\mu}_T, & \boldsymbol{\varSigma}_T, \end{array} \]where\[\begin{split}\begin{eqnarray} \boldsymbol{\mu}_t &=& \left[ \begin{array}{cccc} \boldsymbol{\mu}_t^{(0)}, & \boldsymbol{\mu}_t^{(1)}, & \ldots, & \boldsymbol{\mu}_t^{(D)} \end{array} \right] \\ \boldsymbol{\varSigma}_t &=& \left[ \begin{array}{cccc} \boldsymbol{\varSigma}_t^{(0)}, & \boldsymbol{\varSigma}_t^{(1)}, & \ldots, & \boldsymbol{\varSigma}_t^{(D)} \end{array} \right]. \end{eqnarray}\end{split}\]The output is the sequence of the \(M\)-th order smoothed static feature components:\[ \begin{array}{cccc} \boldsymbol{c}_1, & \boldsymbol{c}_2, & \ldots, & \boldsymbol{c}_T. \end{array} \]The impelemented algorithm is based on a recursive manner using Kalman filter. The algorithm does not require entire mean and varaiance parameter sequence, but intorduces approximation error. The amount of approximation error is controlled by a parameter, \(S\).
Public Functions
-
RecursiveMaximumLikelihoodParameterGeneration(int num_order, int num_past_frame, const std::vector<std::vector<double>> &window_coefficients, InputSourceInterface *input_source)
- Parameters:
num_order – [in] Order of coefficients, \(M\).
num_past_frame – [in] Number of past frames, \(S\).
window_coefficients – [in] Window coefficients. e.g.) { {-0.5, 0.0, 0.5}, {1.0, -2.0, 1.0} }
input_source – [in] Static and dynamic components sequence.
-
inline int GetNumOrder() const
- Returns:
Order of coefficients.
-
inline int GetNumPastFrame() const
- Returns:
Number of past frames.
-
inline virtual int GetSize() const override
- Returns:
Output size.
-
inline virtual bool IsValid() const override
- Returns:
True if this object is valid.
-
virtual bool Get(std::vector<double> *smoothed_static_parameters) override
- Parameters:
smoothed_static_parameters – [out] Smoothed static parameters.
- Returns:
True on success, false on failure.
-
RecursiveMaximumLikelihoodParameterGeneration(int num_order, int num_past_frame, const std::vector<std::vector<double>> &window_coefficients, InputSourceInterface *input_source)
-
class NonrecursiveMaximumLikelihoodParameterGeneration
Estimate the maximum likelihood parameters from the means and the diagonal covariances of Gaussian distributions.
The input is the sequence of the mean and the diagnoal covariance of \(M\)-th order static and \(DM\)-th order dynamic feature components:
\[ \begin{array}{ccccc} \boldsymbol{\mu}_1, & \boldsymbol{\varSigma}_1, & \ldots, & \boldsymbol{\mu}_T, & \boldsymbol{\varSigma}_T, \end{array} \]where\[\begin{split}\begin{eqnarray} \boldsymbol{\mu}_t &=& \left[ \begin{array}{cccc} \boldsymbol{\mu}_t^{(0)}, & \boldsymbol{\mu}_t^{(1)}, & \ldots, & \boldsymbol{\mu}_t^{(D)} \end{array} \right] \\ \boldsymbol{\varSigma}_t &=& \left[ \begin{array}{cccc} \boldsymbol{\varSigma}_t^{(0)}, & \boldsymbol{\varSigma}_t^{(1)}, & \ldots, & \boldsymbol{\varSigma}_t^{(D)} \end{array} \right]. \end{eqnarray}\end{split}\]The output is the sequence of the \(M\)-th order smoothed static feature components:\[ \begin{array}{cccc} \boldsymbol{c}_1, & \boldsymbol{c}_2, & \ldots, & \boldsymbol{c}_T. \end{array} \]Public Functions
-
NonrecursiveMaximumLikelihoodParameterGeneration(int num_order, const std::vector<std::vector<double>> &window_coefficients, bool use_magic_number, double magic_number = 0.0)
- Parameters:
num_order – [in] Order of coefficients, \(M\).
window_coefficients – [in] Window coefficients. e.g.) { {-0.5, 0.0, 0.5}, {1.0, -2.0, 1.0} }
use_magic_number – [in] Whether to use magic number.
magic_number – [in] A magic number represents a discrete symbol.
-
inline int GetNumOrder() const
- Returns:
Order of coefficients.
-
inline double GetMagicNumber() const
- Returns:
Magic number.
-
inline bool IsValid() const
- Returns:
True if this object is valid.
-
bool Run(const std::vector<std::vector<double>> &mean_vectors, const std::vector<std::vector<double>> &variance_vectors, std::vector<std::vector<double>> *smoothed_static_parameters) const
- Parameters:
mean_vectors – [in] Mean vector sequence. The shape is \([T, DM]\).
variance_vectors – [in] Variance vector sequence. The shape is \([T, DM]\).
smoothed_static_parameters – [out] Smoothed static parameters.
- Returns:
True on success, false on failure.
-
bool Run(const std::vector<std::vector<double>> &mean_vectors, const std::vector<SymmetricMatrix> &covariance_matrices, std::vector<std::vector<double>> *smoothed_static_parameters) const
- Parameters:
mean_vectors – [in] Mean vector sequence. The shape is \([T, DM]\).
covariance_matrices – [in] Covariance matrix sequence. The shape is \([T, DM, DM]\).
smoothed_static_parameters – [out] Smoothed static parameters.
- Returns:
True on success, false on failure.
-
NonrecursiveMaximumLikelihoodParameterGeneration(int num_order, const std::vector<std::vector<double>> &window_coefficients, bool use_magic_number, double magic_number = 0.0)