我正在尝试将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文件。 btw转录: &LT; S取代;停止&lt; / S取代; (arctic_0001) &LT; S取代;左&lt; / S取代; (arctic_0002) &LT; S取代;对&lt; / S取代; (arctic_0003) &LT; S取代;去&lt; / S取代; (arctic_0004) 我添加了空格,所以在这里它不作为代码读取 字典和文件ID也没关系
由于
P.S。感谢dariusz,但它仍然无法正常工作
答案 0 :(得分:1)
很难确定在这样一个复杂的过程中发生了什么。
您应该做的是设置可重复的测试用例并使用它来验证您的进度。它应该包含至少100个测试句子(在您的情况下,单词)。可以使用sphinx see this link
来完成只有在准备好测试后,才能继续更改声学模型或语法。将您所做的每项更改与原始(未修改的模型)精度进行比较。然后你会知道哪些步骤是好的,哪些是坏的。
另一个问题是训练数据 - 我可能错了,但我认为这样短的单字音频文件不适合调整模型。我建议使用更长的文件,即使这意味着重复多次相同的单词。只要确保你说得恰到好处,并在单词之间留出清晰的空格。
答案 1 :(得分:1)
你根本不应该使用MAP。 MAP适应需要更大量的适应数据,因为它修改了模型中的所有参数。你将有更好的机会使用MLLR,可以在sphinx中使用,这里是教程:http://cmusphinx.sourceforge.net/wiki/tutorialadapt