/**
* 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;
import java.io.IOException;
import javax.sound.sampled.UnsupportedAudioFileException;
import marytts.signalproc.adaptation.BaselineAdaptationSet;
import marytts.signalproc.adaptation.BaselineFeatureExtractor;
import marytts.signalproc.adaptation.BaselinePostprocessor;
import marytts.signalproc.adaptation.BaselinePreprocessor;
import marytts.signalproc.adaptation.BaselineTransformer;
import marytts.signalproc.adaptation.BaselineTransformerParams;
import marytts.util.io.BasenameList;
import marytts.util.string.StringUtils;
/**
*
* Weighted codebook transformation class
*
* @author Oytun Türk
*/
public class WeightedCodebookTransformer extends BaselineTransformer {
public WeightedCodebookTransformerParams params;
public WeightedCodebookTransformer(BaselinePreprocessor pp, BaselineFeatureExtractor fe, BaselinePostprocessor po,
WeightedCodebookTransformerParams pa) {
super(pp, fe, po, (BaselineTransformerParams) pa);
params = new WeightedCodebookTransformerParams(pa);
}
public boolean checkParams() throws IOException {
return super.checkParams();
}
public void run() throws IOException, UnsupportedAudioFileException {
if (checkParams()) {
BaselineAdaptationSet inputSet = getInputSet(params.inputFolder);
if (inputSet == null)
System.out.println("No input files found in " + params.inputFolder);
else {
BaselineAdaptationSet outputSet = getOutputSet(inputSet, params.outputFolder);
transform(inputSet, outputSet);
}
}
}
// Create list of input files
public BaselineAdaptationSet getInputSet(String inputFolder) {
BasenameList b = new BasenameList(inputFolder, BaselineAdaptationSet.WAV_EXTENSION_DEFAULT);
BaselineAdaptationSet inputSet = new BaselineAdaptationSet(b.getListAsVector().size());
for (int i = 0; i < inputSet.items.length; i++)
inputSet.items[i].setFromWavFilename(inputFolder + b.getName(i) + BaselineAdaptationSet.WAV_EXTENSION_DEFAULT);
return inputSet;
}
//
// Create list of output files using input set
public BaselineAdaptationSet getOutputSet(BaselineAdaptationSet inputSet, String outputFolder) {
BaselineAdaptationSet outputSet = null;
outputFolder = StringUtils.checkLastSlash(outputFolder);
if (inputSet != null && inputSet.items != null) {
outputSet = new BaselineAdaptationSet(inputSet.items.length);
for (int i = 0; i < inputSet.items.length; i++)
outputSet.items[i].audioFile = outputFolder + StringUtils.getFileName(inputSet.items[i].audioFile) + "_output"
+ BaselineAdaptationSet.WAV_EXTENSION_DEFAULT;
}
return outputSet;
}
//
}