cmusphinx / sphinxtrain

Acoustic model trainer for CMU Sphinx
Other
178 stars 112 forks source link

sphinx3_align not available #13

Closed abuccts closed 6 years ago

abuccts commented 7 years ago

sphinx3_align is used for force aligning in scripts/11.force_align/force_align.pl, scripts/11.force_align/slave_align.pl, etc. But sphinx3_align itself is not available in sphinxtrain after sphinx3, and there doesn't exist any good approach to get it (Building old version sphinx3 with old version sphinxbase meets many other problems).

Any good ideas to solve this problem? And I think stating it clearly in wiki/tutorialam will be better.

nshmyrev commented 7 years ago

Good approach is to checkout latest sphinx3 from subversion and build, it should work.

Feel free to help to port sphinx3_align to pocketsphinx.

danielhyt2 commented 6 years ago

I downloaded sphinx3 (v3.7) from subversion and follow the README file. However, on the "make" step, it always fails.

lextree.c: In function ‘fillertree_init’: lextree.c:285:71: error: macro "E_DEBUG" passed 3 arguments, but takes just 2 dict_wordstr(dict, i), fillpen(kbc->fillpen, i)); ^ lextree.c:284:13: error: ‘E_DEBUG’ undeclared (first use in this function) E_DEBUG("Filler word %s prob %d\n", ^ lextree.c:284:13: note: each undeclared identifier is reported only once for each function it appears in lextree.c: In function ‘lextree_build’: lextree.c:461:54: error: macro "E_DEBUG" passed 4 arguments, but takes just 2 dict_wordstr(dict, wid), wid, prob); ^ lextree.c:460:9: error: ‘E_DEBUG’ undeclared (first use in this function) E_DEBUG("%s wid %d prob %d\n", ^ lextree.c: In function ‘lextree_utt_end’: lextree.c:938:13: warning: variable ‘mdef’ set but not used [-Wunused-but-set-variable] mdef_t *mdef; ^ lextree.c: In function ‘lextree_enter’: lextree.c:1142:77: error: macro "E_DEBUG" passed 5 arguments, but takes just 2 inscore, ln->prob, thresh, hmm_in_score(&ln->hmm)); ^ lextree.c:1141:17: error: ‘E_DEBUG’ undeclared (first use in this function) E_DEBUG("entering non-leaf root node with %d + %d >= (thresh %d score %d)\n", ^ lextree.c:1104:13: warning: variable ‘tmat’ set but not used [-Wunused-but-set-variable] tmat_t *tmat; ^ lextree.c:1102:17: warning: variable ‘n_st’ set but not used [-Wunused-but-set-variable] int32 n_ci, n_st, n_rc; ^ lextree.c:1102:11: warning: variable ‘n_ci’ set but not used [-Wunused-but-set-variable] int32 n_ci, n_st, n_rc; ^ lextree.c: In function ‘lextree_hmm_eval’: lextree.c:1260:17: warning: variable ‘d2p’ set but not used [-Wunused-but-set-variable] dict2pid_t *d2p; ^ lextree.c:1256:24: warning: variable ‘n_st’ set but not used [-Wunused-but-set-variable] int32 best, wbest, n_st; ^ lextree.c: In function ‘lextree_hmm_propagate_non_leaves’: lextree.c:1406:33: error: macro "E_DEBUG" passed 5 arguments, but takes just 2 cf, th, pth, wth); ^ lextree.c:1405:5: error: ‘E_DEBUG’ undeclared (first use in this function) E_DEBUG("lextree_hmm_propagate_non_leaves: cf %d th %d pth %d wth %d\n", ^ lextree.c:1413:72: error: macro "E_DEBUG" passed 3 arguments, but takes just 2 E_DEBUG("Looking at node %d of %d\n", i, lextree->n_alloc_node); ^ lextree.c:1418:78: error: macro "E_DEBUG" passed 5 arguments, but takes just 2 ln->wid, dict_wordstr(dict, ln->wid), ln->rc, ln->ssid); ^ lextree.c:1426:79: error: macro "E_DEBUG" passed 3 arguments, but takes just 2 E_DEBUG("Activating (%d >= %d)\n", hmm_bestscore(&ln->hmm), th); ^ lextree.c:1431:80: error: macro "E_DEBUG" passed 3 arguments, but takes just 2 E_DEBUG("Deactivating (%d < %d)\n", hmm_bestscore(&ln->hmm), th); ^ lextree.c:1441:77: error: macro "E_DEBUG" passed 3 arguments, but takes just 2 E_DEBUG("Propagating (%d >= %d)\n", hmm_out_score(&ln->hmm), pth); ^ lextree.c:1480:86: error: macro "E_DEBUG" passed 5 arguments, but takes just 2 hmm_out_score(&ln->hmm), ln2->prob, ln->prob, newscore); ^ lextree.c:1494:61: error: macro "E_DEBUG" requires 2 arguments, but only 1 given E_DEBUG(" entering this node\n"); ^ lextree.c:1520:43: error: macro "E_DEBUG" passed 6 arguments, but takes just 2 ln2->children); ^ lextree.c:1383:17: warning: variable ‘n_st’ set but not used [-Wunused-but-set-variable] int32 n_ci, n_st, n_rc; ^ lextree.c:1383:11: warning: variable ‘n_ci’ set but not used [-Wunused-but-set-variable] int32 n_ci, n_st, n_rc; ^ lextree.c:1375:13: warning: variable ‘tmat’ set but not used [-Wunused-but-set-variable] tmat_t *tmat; ^ lextree.c: In function ‘lextree_hmm_propagate_leaves’: lextree.c:1613:68: error: macro "E_DEBUG" passed 3 arguments, but takes just 2 E_DEBUG("lextree_hmm_propagate_leaves: cf %d wth %d\n", cf, wth); ^ lextree.c:1613:5: error: ‘E_DEBUG’ undeclared (first use in this function) E_DEBUG("lextree_hmm_propagate_leaves: cf %d wth %d\n", cf, wth); ^ lextree.c:1634:58: error: macro "E_DEBUG" passed 3 arguments, but takes just 2 hmm_out_score(&ln->hmm) - ln->prob); ^ Makefile:449: recipe for target 'lextree.lo' failed make[3]: *** [lextree.lo] Error 1 make[3]: Leaving directory '/home/pi/sphinx3/src/libs3decoder/libsearch' Makefile:476: recipe for target 'all-recursive' failed make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory '/home/pi/sphinx3/src/libs3decoder' Makefile:361: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/home/pi/sphinx3/src' Makefile:499: recipe for target 'all-recursive' failed make: *** [all-recursive] Error 1

nshmyrev commented 6 years ago

@danielhyt2 you need sphinxbase from subversion or from github too

danielhyt2 commented 6 years ago

Hi nshmyrev,

Thank you for your reply. Actually before installing sphinx3, I've installed sphinxbase, pocketsphinx and sphinxtrain version 5prealpha. I've also successfully run sphinxtrain.

The reason I install sphinx3 is for the $CFG_FORCEDALIGN feature in sphinx_train.cfg. I've tried this sphinx3 on 3 different machines (EC2, RPi, Windows 10 Ubuntu). All were failed.

I even have tried to install on version sphinxbase 0.8 and still get the same error. Anyway, I'll try your advice to install sphinxbase from svn.

danielhyt2 commented 6 years ago

Hi nshmyrev,

Installing from svn did the trick, despite getting another error. Thank you anyway!

FarhanAhmad4473 commented 6 years ago

I was getting the same error " Skipped: No sphinx3_align(.exe) found in /usr/local/libexec/sphinxtrain " After reading this thread I downloaded and installed sphinxbase and sphinx3 and then copied sphinx3_align file to the required directory i.e. " /usr/local/libexec/sphinxtrain " But still I am getting the same error i.e. " Skipped: No sphinx3_align(.exe) found in /usr/local/libexec/sphinxtrain " How can I solve this problem? I want force alignment!!!

FarhanAhmad4473 commented 6 years ago

I had not given permission of executable to sphinx3_align file , thats why it was giving the same error! I solved this! But now I got this error and force alignment is failed:

Can you tell me why I am getting this error?

Phase 5: Running force alignment in 1 parts Force alignment starting: (1 of 1) 0% Failed in part 1 MODULE: 12 Force-aligning data for VTLN Skipped: $ST::CFG_VTLN set to 'no' in sphinx_train.cfg MODULE: 20 Training Context Independent models Phase 1: Cleaning up directories: accumulator...logs...qmanager...models... Phase 2: Copy initialize from falign model Phase 3: Forward-Backward Baum welch starting for 1 Gaussian(s), iteration: 1 (1 of 1) 0% ERROR: This step had 1 ERROR messages and 0 WARNING messages. Please check the log file for details. ERROR: Training failed in iteration 1