【问题标题】:how to use cmu sphinx segmenter class如何使用 cmu sphinx 分段器类
【发布时间】:2014-10-18 03:18:25
【问题描述】:

我正在尝试使用 cmu sphinx 中的分段器类来获取在声音文件中识别语音的时间。但是,我似乎无法让它编译和运行。为了使用分段器,是否需要先配置一些东西?抱歉,我是 CMU Sphinx 的新手。

------------------------------------这是分段器的代码---- --------------------------

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();
    }
}

--------------这是我尝试编译时的错误---------- ------------------

ant -f C:\Users\Gerard\Documents\NetBeansProjects\sphinx4-5prealpha\nbproject\ide-file-targets.xml -Drun.class=edu.cmu.sphinx.tools.endpoint.Segmenter run-selected- sphinx4 中的文件 在 sphinx4 中运行选定文件:

用法:java -cp lib/batch.jar:lib/sphinx4.jar edu.cmu.sphinx.tools.endpoint.Segmenter [ -config configFile ] -name frontendName

C:\Users\Gerard\Documents\NetBeansProjects\sphinx4-5prealpha\nbproject\ide-file-targets.xml:38:Java 返回:1 构建失败(总时间:0 秒)

------------这是 ide-file-targets.xml 第 38 行------------ ----------------------

java classname="${run.class}" failonerror="true" fork="true"

【问题讨论】:

    标签: cmusphinx


    【解决方案1】:

    常见情况见TranscriberDemo。如果您需要对长音频进行时间对齐,请参阅AlignerDemo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2016-12-07
      相关资源
      最近更新 更多