首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sphinx4 - IllegalArgumentException

Sphinx4 - IllegalArgumentException
EN

Stack Overflow用户
提问于 2014-09-04 04:33:59
回答 1查看 207关注 0票数 1

我已经创建了运行Sphinx4所需的所有文件(语言模型、字典和声学模型)。但是当我在Eclipse中运行它时,抛出了以下异常:

代码语言:javascript
复制
00:16:12.707 INFO unitManager          CI Unit: AE
00:16:12.713 INFO unitManager          CI Unit: AH
00:16:12.714 INFO unitManager          CI Unit: B
00:16:12.714 INFO unitManager          CI Unit: EY
00:16:12.715 INFO unitManager          CI Unit: F
00:16:12.715 INFO unitManager          CI Unit: IY
00:16:12.716 INFO unitManager          CI Unit: JH
00:16:12.716 INFO unitManager          CI Unit: L
00:16:12.717 INFO unitManager          CI Unit: M
00:16:12.722 INFO autoCepstrum         Cepstrum component auto-configured as follows: autoCepstrum {MelFrequencyFilterBank, DiscreteCosineTransform}
00:16:12.853 INFO dictionary           Loading dictionary from: file:Alphabets/tutorial/alphabets/etc/alphabets.dic
00:16:12.853 INFO dictionary           Loading filler dictionary from: file:Alphabets/tutorial/alphabets/model_parameters/alphabets.ci_cont/noisedict
00:16:12.854 INFO acousticModelLoader  Loading tied-state acoustic model from: file:Alphabets/tutorial/alphabets/model_parameters/alphabets.ci_cont
00:16:12.854 INFO acousticModelLoader  Pool means Entries: 30
00:16:12.855 INFO acousticModelLoader  Pool variances Entries: 30
00:16:12.855 INFO acousticModelLoader  Pool transition_matrices Entries: 10
00:16:12.855 INFO acousticModelLoader  Pool senones Entries: 30
00:16:12.855 INFO acousticModelLoader  Pool mixture_weights Entries: 30
00:16:12.856 INFO acousticModelLoader  Pool senones Entries: 30
00:16:12.856 INFO acousticModelLoader  Context Independent Unit Entries: 10
00:16:12.856 INFO acousticModelLoader  HMM Manager: 10 hmms
00:16:12.860 INFO acousticModel        CompositeSenoneSequences: 0
00:16:12.861 INFO largeTrigramModel    Loading n-gram language model from: file:Alphabets/tutorial/alphabets/etc/alphabets.lm.dmp
00:16:12.867 INFO largeTrigramModel    1-grams: 3
00:16:12.867 INFO largeTrigramModel    2-grams: 1
00:16:12.867 INFO largeTrigramModel    3-grams: 1
00:16:13.094 INFO lexTreeLinguist      Max CI Units 11
00:16:13.095 INFO lexTreeLinguist      Unit table size 1331
Exception in thread "main" java.lang.IllegalArgumentException
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:111)
    at edu.cmu.sphinx.linguist.WordSequence.getWord(WordSequence.java:179)
    at edu.cmu.sphinx.linguist.language.ngram.large.LargeNGramModel.getNGramProbDepth(LargeNGramModel.java:409)
    at edu.cmu.sphinx.linguist.language.ngram.large.LargeNGramModel.getNGramProbDepth(LargeNGramModel.java:412)
    at edu.cmu.sphinx.linguist.language.ngram.large.LargeNGramModel.getNGramProbDepth(LargeNGramModel.java:412)
    at edu.cmu.sphinx.linguist.language.ngram.large.LargeNGramModel.getProbDepth(LargeNGramModel.java:393)
    at edu.cmu.sphinx.linguist.lextree.LexTreeLinguist$LexTreeState.createWordStateArc(LexTreeLinguist.java:720)
    at edu.cmu.sphinx.linguist.lextree.LexTreeLinguist$LexTreeWordState.getSuccessors(LexTreeLinguist.java:1491)
    at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.collectSuccessorTokens(WordPruningBreadthFirstSearchManager.java:635)
    at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.growBranches(WordPruningBreadthFirstSearchManager.java:387)
    at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.localStart(WordPruningBreadthFirstSearchManager.java:359)
    at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.startRecognition(WordPruningBreadthFirstSearchManager.java:262)
    at edu.cmu.sphinx.decoder.Decoder.decode(Decoder.java:62)
    at edu.cmu.sphinx.recognizer.Recognizer.recognize(Recognizer.java:109)
    at edu.cmu.sphinx.recognizer.Recognizer.recognize(Recognizer.java:125)
    at edu.cmu.sphinx.api.AbstractSpeechRecognizer.getResult(AbstractSpeechRecognizer.java:50)
    at Main.main(Main.java:30)

这是我正在运行的程序,正如官方网站上所说的:

代码语言:javascript
复制
import java.io.IOException;
import java.util.Scanner;

import edu.cmu.sphinx.api.Configuration;
import edu.cmu.sphinx.api.LiveSpeechRecognizer;
import edu.cmu.sphinx.api.SpeechResult;

public class Main {

    public static void main(String[] args) {

        Configuration configuration = new Configuration();

        configuration
                .setAcousticModelPath("Alphabets/tutorial/alphabets/model_parameters/alphabets.ci_cont");

        configuration.setDictionaryPath("Alphabets/tutorial/alphabets/etc/alphabets.dic");

        configuration
                .setLanguageModelPath("Alphabets/tutorial/alphabets/etc/alphabets.lm.dmp");

        LiveSpeechRecognizer recognizer = null;
        try {
            recognizer = new LiveSpeechRecognizer(configuration);
        } catch (IOException e) {
            e.printStackTrace();
        }
        recognizer.startRecognition(true);

        SpeechResult result = recognizer.getResult();

        recognizer.stopRecognition();

        System.out.println(result.getHypothesis());
        result.getLattice().dumpDot("lattice.dot", "lattice");

    }
}

非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2014-09-08 03:48:05

您的语言模型/Alphabets/tutorial/alphabets/etc/alphabets.lm.dmp是text arpa格式,但您向其添加了dmp扩展名。此手动编辑会混淆识别器。要解决此问题,请将alphabets.lm.dmp重命名为不带dmp扩展名的alphabets.lm,并在代码中编辑该名称。只需使用

configuration.setLanguageModelPath("Alphabets/tutorial/alphabets/etc/alphabets.lm");

你也没有足够的数据来训练模型,你的模型是不会工作的。有大量的数据用于训练是必须的。您可以在声学模型培训教程中找到详细信息

http://cmusphinx.sourceforge.net/wiki/tutorialam

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25653146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档