3

我正在尝试使 wsj 模型适应我的 4 个单词,我创建了一个 bash 文件并且我尝试了近 20 次,但是当我运行并说“停止”时,它失败了 90%。这是我的 bash 文件,请告诉我,我做错了什么还是需要更多地训练它,比如 100 次?

#!/bin/bash

for i in {1..4}
do 
       fn=`printf arctic_%04d $i`; 
       read sent; echo $sent; 
       rec -r 16000 -e signed-integer -b 16 -c 1 $fn.wav 2>/dev/null; 
done < arctic20.txt

sphinx_fe -argfile Model/feat.params \
   -samprate 16000 -c arctic20.fileids -di . -do . \
   -ei wav -eo mfc -mswav yes



bw/bw \
   -hmmdir Model \
   -moddeffn Model/mdef \
   -ts2cbfn .cont. \
   -feat 1s_c_d_dd \
   -cmn current \
   -agc none \
   -dictfn arctic20.dic \
   -ctlfn arctic20.fileids \
   -lsnfn arctic20.transcription \
   -accumdir .



cp -a Model/* Model.adapted

map_adapt/map_adapt \
    -meanfn Model/means \
    -varfn Model/variances \
    -mixwfn Model/mixture_weights \
    -tmatfn Model/transition_matrices \
    -accumdir . \
    -mapmeanfn Model.adapted/means \
    -mapvarfn Model.adapted/variances \
    -mapmixwfn Model.adapted/mixture_weights \
    -maptmatfn Model.adapted/transition_matrices

cp -r Model.adapted/* ~/NetBeansProjects/sphinx4-1.0beta6/models/acoustic/wsj


cp -r Model.adapted/* Model

我一遍又一遍地运行它比我清理和构建项目,并运行 helloworld 演示,我在那里修改了 .gram 文件。顺便说一句:<s> stop</s> (arctic_0001) <s> left</s> (arctic_0002) <s> right</s> (arctic_0003) <s> go</s> (arctic_0004) 我加了空格所以这里它不读为代码这里字典和文件ID也可以

谢谢

PS感谢dariusz,但它仍然不起作用

4

2 回答 2

1

你根本不应该使用 MAP。MAP 自适应需要大量的自适应数据,因为它会修改模型中的所有参数。您将有更好的机会使用 MLLR,它在 sphinx 中可用,这里是教程:http ://cmusphinx.sourceforge.net/wiki/tutorialadapt

于 2013-10-03T15:10:14.033 回答
1

很难确定在如此复杂的过程中发生了什么。

您应该做的是设置一个可重复的测试用例并用它来验证您的进度。它应该包含至少 100 个测试句子(在你的情况下是单词)。它可以用 sphinx 完成,请参阅此链接

只有在您准备好测试后,才能继续对声学模型或语法进行更改。将您所做的每个更改与原始(未修改的模型)准确性进行比较。然后你就会知道哪些步骤是好的,哪些是坏的。

另一件事是训练数据——我可能是错的,但我认为这么短的单字音频文件并不是适应模型的最佳选择。我建议使用更长的文件,即使这意味着多次重复同一个词。只需确保您说的数量准确,并在单词之间留出清晰的空格。

于 2013-10-01T11:16:17.857 回答