Package edu.cmu.sphinx.tools.endpoint

Source Code of edu.cmu.sphinx.tools.endpoint.Segmenter

package edu.cmu.sphinx.tools.endpoint;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;

import edu.cmu.sphinx.frontend.Data;
import edu.cmu.sphinx.frontend.FrontEnd;
import edu.cmu.sphinx.frontend.util.AudioFileDataSource;
import edu.cmu.sphinx.frontend.util.WavWriter;
import edu.cmu.sphinx.util.props.ConfigurationManager;
import edu.cmu.sphinx.util.props.ConfigurationManagerUtils;

public class Segmenter {

    public static void main(String[] argv) throws MalformedURLException,
            IOException {

        String configFile = null;
        String inputFile = null;
        String inputCtl = null;
        String outputFile = null;
        boolean noSplit = false;

        for (int i = 0; i < argv.length; i++) {
            if (argv[i].equals("-c")) {
                configFile = argv[++i];
            }
            if (argv[i].equals("-i")) {
                inputFile = argv[++i];
            }
            if (argv[i].equals("-ctl")) {
                inputCtl = argv[++i];
            }
            if (argv[i].equals("-o")) {
                outputFile = argv[++i];
            }
            if (argv[i].equals("-no-split")) {
                noSplit = Boolean.parseBoolean(argv[i]);
            }
        }

        if ((inputFile == null && inputCtl == null) || outputFile == null) {
            System.out
                    .println("Usage: java  -cp lib/batch.jar:lib/sphinx4.jar edu.cmu.sphinx.tools.endpoint.Segmenter "
                            + "[ -config configFile ] -name frontendName "
                            + "< -i input File -o outputFile | -ctl inputCtl -i inputFolder -o outputFolder >");
            System.exit(1);
        }

        URL configURL;
        if (configFile == null)
            configURL = Segmenter.class.getResource("frontend.config.xml");
        else
            configURL = new File(configFile).toURI().toURL();

        ConfigurationManager cm = new ConfigurationManager(configURL);

        if (noSplit) {
            ConfigurationManagerUtils.setProperty(cm, "wavWriter",
                    "captureUtterances", "false");
        }
        if (inputCtl != null) {
            ConfigurationManagerUtils.setProperty(cm, "wavWriter",
                    "isCompletePath", "true");
        }

        if (inputCtl == null)
            processFile(inputFile, outputFile, cm);
        else
            processCtl(inputCtl, inputFile, outputFile, cm);
    }

    static private void processFile(String inputFile, String outputFile,
            ConfigurationManager cm) throws MalformedURLException, IOException {

        FrontEnd frontend = (FrontEnd) cm.lookup("endpointer");

        AudioFileDataSource dataSource = (AudioFileDataSource) cm
                .lookup("audioFileDataSource");
        System.out.println(inputFile);
        dataSource.setAudioFile(new File(inputFile), null);
        WavWriter wavWriter = (WavWriter) cm.lookup("wavWriter");
        wavWriter.setOutFilePattern(outputFile);

        frontend.initialize();

        Data data = null;
        do {
            data = frontend.getData();
        } while (data != null);
    }

    static private void processCtl(String inputCtl, String inputFolder,
            String outputFolder, ConfigurationManager cm)
            throws MalformedURLException, IOException {

        Scanner scanner = new Scanner(new File(inputCtl));
        while (scanner.hasNext()) {
            String fileName = scanner.next();
            String inputFile = inputFolder + "/" + fileName + ".wav";
            String outputFile = outputFolder + "/" + fileName + ".wav";
            processFile(inputFile, outputFile, cm);
        }
        scanner.close();
    }
}
TOP

Related Classes of edu.cmu.sphinx.tools.endpoint.Segmenter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.