/**
* Copyright 2007 DFKI GmbH.
* All Rights Reserved. Use is subject to license terms.
*
* This file is part of MARY TTS.
*
* MARY TTS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package marytts.signalproc.adaptation.codebook;
/**
* Wrapper for parameters of weighted codebook mapping procedure
*
* @author Oytun Türk
*/
public class WeightedCodebookMapperParams {
public int numBestMatches; // Number of best matches in codebook
public int distanceMeasure; // Distance measure for comparing source training and transformation features
public static int LSF_INVERSE_HARMONIC_DISTANCE = 1;
public static int LSF_INVERSE_HARMONIC_DISTANCE_SYMMETRIC = 2;
public static int LSF_EUCLIDEAN_DISTANCE = 3;
public static int LSF_MAHALANOBIS_DISTANCE = 4;
public static int LSF_ABSOLUTE_VALUE_DISTANCE = 5;
public static int DEFAULT_DISTANCE_MEASURE = LSF_INVERSE_HARMONIC_DISTANCE;
public double alphaForSymmetric; // Weighting factor for using weights of two lsf vectors in distance computation relatively.
// The range is [0.0,1.0]
public static double MIN_ALPHA_FOR_SYMMETRIC = 0.0;
public static double MAX_ALPHA_FOR_SYMMETRIC = 1.0f;
public int weightingMethod; // Method for weighting best codebook matches
public static int EXPONENTIAL_HALF_WINDOW = 1;
public static int TRIANGLE_HALF_WINDOW = 2;
public static int DEFAULT_WEIGHTING_METHOD = EXPONENTIAL_HALF_WINDOW;
public double weightingSteepness; // Steepness of weighting function in range [MIN_STEEPNESS, MAX_STEEPNESS]
public static double MIN_STEEPNESS = 0.0; // All weights are equal
public static double MAX_STEEPNESS = 10.0; // Best codebook weight is very large as compared to remaining
public static double DEFAULT_WEIGHTING_STEEPNESS = 1.0;
// //Mean and variance of a specific distance measure can be optionally kept in the follwoing
// two parameters for z-normalization
public double distanceMean;
public double distanceVariance;
public static final double DEFAULT_DISTANCE_MEAN = 0.0;
public static final double DEFAULT_DISTANCE_VARIANCE = 1.0;
public double freqRange; // Frequency range to be considered around center freq when matching LSFs (note that center freq is
// estimated automatically as the middle of most closest LSFs)
public static final double DEFAULT_FREQ_RANGE_FOR_LSF_MATCH = 5000.0;
public int lpOrder; // Linear prediction oreder
public WeightedCodebookMapperParams() {
distanceMeasure = DEFAULT_DISTANCE_MEASURE;
weightingMethod = DEFAULT_WEIGHTING_METHOD;
weightingSteepness = DEFAULT_WEIGHTING_STEEPNESS;
distanceMean = DEFAULT_DISTANCE_MEAN;
distanceVariance = DEFAULT_DISTANCE_VARIANCE;
freqRange = DEFAULT_FREQ_RANGE_FOR_LSF_MATCH;
}
public WeightedCodebookMapperParams(WeightedCodebookMapperParams w) {
numBestMatches = w.numBestMatches;
distanceMeasure = w.distanceMeasure;
alphaForSymmetric = w.alphaForSymmetric;
weightingMethod = w.weightingMethod;
weightingSteepness = w.weightingSteepness;
distanceMean = w.distanceMean;
distanceVariance = w.distanceVariance;
lpOrder = w.lpOrder;
freqRange = w.freqRange;
}
}