带VoxForge的CMU Sphinx完全无法识别单词 - 为什么?

时间:2013-11-06 14:38:14

标签: cmusphinx

我正在尝试设置VoxForge 0.4英语声学模型 - 如https://stackoverflow.com/a/8699337/519995中所述(但适用于Raw配置而非XML)。当我切换到VoxForge时,我的错误率 up 达到100%!

我得到的结果与输入声音完全不同。

我想我配置错了,但我无法弄清楚是什么。

以下是我所做的修改(从RawHelloNGram.java演示开始)。

VOX_FORGE为假时,一切都运行正常,当它确实无法识别时。

this.modelLoader = new Sphinx3Loader(
            VOX_FORGE ? 
                  "file:"+PROJECT_DIR+"/voxforge-en-0.4/model_parameters/voxforge_en_sphinx.cd_cont_5000"
                : "resource:/WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz",
            "mdef",
            "",
            logMath,
            unitManager,
            0.0f,
            1e-7f,
            0.0001f,
            true);

    this.model = new TiedStateAcousticModel(modelLoader, unitManager, true);


// changed parameters of mel-Filter
 this.melFilterBank = new MelFrequencyFilterBank(
        VOX_FORGE ? 200.0  : 130.0,     // minFreq,
        VOX_FORGE ? 3500.0 : 6800.0,    // maxFreq,
        VOX_FORGE ? 31     : 40         // numberFilters
    );

 if (VOX_FORGE) {
    this.featureTransform = new FeatureTransform(
                modelLoader
    );
 }

...
... later at the end of the pipeline setup
if (VOX_FORGE) {
    pipeline.add(featureTransform);
}

为了完整性 - 这是我正在使用的整个配置:https://gist.github.com/Iftahh/7336283

1 个答案:

答案 0 :(得分:3)

Voxforge使用标准的mel filterbank参数(参见feat.params)。

-nfilt 40
-lowerf 133.333334
-upperf 6855.4976

无需将melfilterbank设置为200/3500/31