Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.239.150.167] |
|
Сообщ.
#1
,
|
|
|
Не так давно узнал о существовании проекта CMU Sphinx, который решает многие вопросы в распознавании слитной речи, а так же позволяет в короткие сроки разработать полноценную систему распознавания голосовых команд. Важными, для меня, деталями Sphinx являются: открытость исходного кода, применение C++, а также поддержка целочисленных вычислений, что является огромным достоинством при аппаратной реализации системы. После изучения многочисленных веток форума посвященных Sphinx многие вопросы прояснились, однако на практике возникли некоторые сложности... В надежде разобраться в них, вкратце опишу возникшие вопросы.
В начале, была сделана небольшая грамматика (цифры от 1 до 10) и словарь транскрипций. Акустическая модель msu_ru_nsh.cd_cont_1000_8gau_16000. Все прекрасно работало! На следующем шаге была собрана целочисленная версия библиотеки. В файлах конфигурации config.h и sphinx_config.h добавлена директива #define FIXED_POINT 1 При компиляции ошибок не возникло, однако при тестировании распознавание пропало. Причем время декодирования значительно возросло (~2 секунды). Так же увеличился вывод при работе декодера. Вот вывод программы (HelloWorld из PocketSphinx с прикрученной звукозаписью) для слов "один", "два", "три". Current configuration: [NAME] [DEFLT] [VALUE] -agc none none -agcthresh 2.0 2.000000e+000 -alpha 0.97 9.700000e-001 -ceplen 13 13 -cmn current current -cmninit 8.0 8.0 -dither no yes -doublebw no no -feat 1s_c_d_dd 1s_c_d_dd -frate 100 100 -input_endian little little -lda -ldadim 0 0 -lifter 0 0 -logspec no no -lowerf 133.33334 1.333333e+002 -ncep 13 13 -nfft 512 512 -nfilt 40 40 -remove_dc no no -round_filters yes yes -samprate 16000 1.600000e+004 -seed -1 -1 -smoothspec no no -svspec -transform legacy legacy -unit_area yes yes -upperf 6855.4976 6.855498e+003 -varnorm no no -verbose no no -warp_params -warp_type inverse_linear inverse_linear -wlen 0.025625 2.560000e-002 INFO: acmod.c(246): Parsed model-specific feature parameters from C:\Program Fil es (x86)\sphinx\pocketsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont _1000_8gau_16000/feat.params INFO: fe_interface.c(299): You are using the internal mechanism to generate the seed. INFO: feat.c(713): Initializing feature stream to type: '1s_c_d_dd', ceplen=13, CMN='current', VARNORM='no', AGC='none' INFO: cmn.c(142): mean[0]= 12.00, mean[1..12]= 0.0 INFO: mdef.c(517): Reading model definition: C:\Program Files (x86)\sphinx\pocke tsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1000_8gau_16000/mdef INFO: bin_mdef.c(179): Allocating 113108 * 8 bytes (883 KiB) for CD tree INFO: tmat.c(205): Reading HMM transition probability matrices: C:\Program Files (x86)\sphinx\pocketsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1 000_8gau_16000/transition_matrices INFO: acmod.c(121): Attempting to use SCHMM computation module INFO: ms_gauden.c(198): Reading mixture gaussian parameter: C:\Program Files (x8 6)\sphinx\pocketsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1000_ 8gau_16000/means INFO: ms_gauden.c(292): 1153 codebook, 1 feature, size: INFO: ms_gauden.c(294): 8x39 INFO: ms_gauden.c(198): Reading mixture gaussian parameter: C:\Program Files (x8 6)\sphinx\pocketsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1000_ 8gau_16000/variances INFO: ms_gauden.c(292): 1153 codebook, 1 feature, size: INFO: ms_gauden.c(294): 8x39 INFO: ms_gauden.c(354): 879 variance values floored INFO: acmod.c(123): Attempting to use PTHMM computation module INFO: ms_gauden.c(198): Reading mixture gaussian parameter: C:\Program Files (x8 6)\sphinx\pocketsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1000_ 8gau_16000/means INFO: ms_gauden.c(292): 1153 codebook, 1 feature, size: INFO: ms_gauden.c(294): 8x39 INFO: ms_gauden.c(198): Reading mixture gaussian parameter: C:\Program Files (x8 6)\sphinx\pocketsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1000_ 8gau_16000/variances INFO: ms_gauden.c(292): 1153 codebook, 1 feature, size: INFO: ms_gauden.c(294): 8x39 INFO: ms_gauden.c(354): 879 variance values floored INFO: ptm_mgau.c(792): Number of codebooks exceeds 256: 1153 INFO: acmod.c(125): Falling back to general multi-stream GMM computation INFO: ms_gauden.c(198): Reading mixture gaussian parameter: C:\Program Files (x8 6)\sphinx\pocketsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1000_ 8gau_16000/means INFO: ms_gauden.c(292): 1153 codebook, 1 feature, size: INFO: ms_gauden.c(294): 8x39 INFO: ms_gauden.c(198): Reading mixture gaussian parameter: C:\Program Files (x8 6)\sphinx\pocketsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1000_ 8gau_16000/variances INFO: ms_gauden.c(292): 1153 codebook, 1 feature, size: INFO: ms_gauden.c(294): 8x39 INFO: ms_gauden.c(354): 879 variance values floored INFO: ms_senone.c(149): Reading senone mixture weights: C:\Program Files (x86)\s phinx\pocketsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1000_8gau _16000/mixture_weights INFO: ms_senone.c(200): Truncating senone logs3(pdf) values by 10 bits INFO: ms_senone.c(207): Not transposing mixture weights in memory INFO: ms_senone.c(266): Read mixture weights for 1153 senones: 1 features x 8 co dewords INFO: ms_senone.c(320): Mapping senones to individual codebooks INFO: ms_mgau.c(141): The value of topn: 4 INFO: dict.c(317): Allocating 4136 * 20 bytes (80 KiB) for word entries INFO: dict.c(332): Reading main dictionary: C:\Program Files (x86)\sphinx\pocket sphinx\voxforge-ru-0.2\etc\andky_words_tr.dic INFO: dict.c(211): Allocated 0 KiB for strings, 0 KiB for phones INFO: dict.c(335): 36 words read INFO: dict.c(341): Reading filler dictionary: C:\Program Files (x86)\sphinx\pock etsphinx\voxforge-ru-0.2\model_parameters\msu_ru_nsh.cd_cont_1000_8gau_16000/noi sedict INFO: dict.c(211): Allocated 0 KiB for strings, 0 KiB for phones INFO: dict.c(344): 4 words read INFO: dict2pid.c(396): Building PID tables for dictionary INFO: dict2pid.c(404): Allocating 51^3 * 2 bytes (259 KiB) for word-initial trip hones INFO: dict2pid.c(131): Allocated 31416 bytes (30 KiB) for word-final triphones INFO: dict2pid.c(195): Allocated 31416 bytes (30 KiB) for single-phone word trip hones INFO: fsg_search.c(145): FSG(beam: -1080, pbeam: -1080, wbeam: -634; wip: -26, p ip: 0) INFO: jsgf.c(581): Defined rule: PUBLIC <command.command> INFO: fsg_model.c(215): Computing transitive closure for null transitions INFO: fsg_model.c(270): 0 null transitions added INFO: fsg_model.c(421): Adding silence transitions for <sil> to FSG INFO: fsg_model.c(441): Added 11 silence word transitions INFO: fsg_model.c(421): Adding silence transitions for <sil> to FSG INFO: fsg_model.c(441): Added 11 silence word transitions INFO: fsg_search.c(366): Added 0 alternate word transitions INFO: fsg_lextree.c(108): Allocated 1144 bytes (1 KiB) for left and right contex t phones INFO: fsg_lextree.c(253): 47 HMM nodes in lextree (20 leaves) INFO: fsg_lextree.c(255): Allocated 5076 bytes (4 KiB) for all lextree nodes INFO: fsg_lextree.c(258): Allocated 2160 bytes (2 KiB) for lextree leafnodes Нажмите ПРОБЕЛ, чтобы сказать фразу, а затем отпустите Говорите... Запись завершена (38400 байт), идет распознавание... INFO: cmn.c(175): CMN: 7.73 -0.56 0.01 0.17 -0.18 0.03 -0.14 -0.06 -0.07 -0. 11 -0.03 -0.12 -0.05 INFO: fsg_search.c(1032): 119 frames, 5299 HMMs (44/fr), 11236 senones (94/fr), 2905 history entries (24/fr) INFO: fsg_search.c(1417): Start node chetyre.0:17:118 INFO: fsg_search.c(1417): Start node vosem'.0:14:118 INFO: fsg_search.c(1417): Start node devjat'.0:14:118 INFO: fsg_search.c(1417): Start node odin.0:11:118 INFO: fsg_search.c(1417): Start node shest'.0:11:118 INFO: fsg_search.c(1417): Start node dva.0:8:118 INFO: fsg_search.c(1417): Start node tri.0:8:118 INFO: fsg_search.c(1417): Start node pjat'.0:8:118 INFO: fsg_search.c(1417): Start node sem'.0:8:118 INFO: fsg_search.c(1456): End node <sil>.18:20:118 (-408) INFO: fsg_search.c(1456): End node chetyre.0:17:118 (-260) INFO: fsg_search.c(1456): End node <sil>.15:17:118 (-408) INFO: fsg_search.c(1456): End node <sil>.15:17:118 (-408) INFO: fsg_search.c(1456): End node <sil>.12:14:118 (-408) INFO: fsg_search.c(1456): End node <sil>.12:14:118 (-408) INFO: fsg_search.c(1456): End node vosem'.0:14:118 (-204) INFO: fsg_search.c(1456): End node devjat'.0:14:118 (-198) INFO: fsg_search.c(1456): End node odin.0:11:118 (-180) INFO: fsg_search.c(1456): End node <sil>.9:11:118 (-408) INFO: fsg_search.c(1456): End node <sil>.9:11:118 (-408) INFO: fsg_search.c(1456): End node <sil>.9:11:118 (-408) INFO: fsg_search.c(1456): End node shest'.0:11:118 (-197) INFO: fsg_search.c(1456): End node <sil>.9:11:118 (-408) INFO: fsg_search.c(1456): End node <sil>.9:11:118 (-408) INFO: fsg_search.c(1456): End node dva.0:8:118 (-142) INFO: fsg_search.c(1456): End node tri.0:8:118 (-134) INFO: fsg_search.c(1456): End node pjat'.0:8:118 (-168) INFO: fsg_search.c(1456): End node sem'.0:8:118 (-158) INFO: fsg_search.c(1680): lattice start node <s>.0 end node </s>.119 INFO: ps_lattice.c(1365): Normalizer P(O) = alpha(</s>:119:119) = 12799 INFO: ps_lattice.c(1403): Joint P(O,S) = -6860 P(S|O) = -19659 tri Probability: -19659 Нажмите ПРОБЕЛ, чтобы сказать фразу, а затем отпустите Говорите... Запись завершена (25600 байт), идет распознавание... INFO: cmn.c(175): CMN: 9.25 0.09 -0.02 0.02 -0.42 0.00 -0.12 -0.12 -0.16 -0. 17 -0.01 -0.06 -0.08 INFO: fsg_search.c(1032): 79 frames, 3419 HMMs (43/fr), 7316 senones (92/fr), 18 25 history entries (23/fr) INFO: fsg_search.c(1417): Start node chetyre.0:17:78 INFO: fsg_search.c(1417): Start node vosem'.0:14:78 INFO: fsg_search.c(1417): Start node devjat'.0:14:78 INFO: fsg_search.c(1417): Start node odin.0:11:78 INFO: fsg_search.c(1417): Start node shest'.0:11:78 INFO: fsg_search.c(1417): Start node dva.0:8:78 INFO: fsg_search.c(1417): Start node tri.0:8:78 INFO: fsg_search.c(1417): Start node pjat'.0:8:78 INFO: fsg_search.c(1417): Start node sem'.0:8:78 INFO: fsg_search.c(1456): End node <sil>.18:20:78 (-408) INFO: fsg_search.c(1456): End node chetyre.0:17:78 (-260) INFO: fsg_search.c(1456): End node <sil>.15:17:78 (-408) INFO: fsg_search.c(1456): End node <sil>.15:17:78 (-408) INFO: fsg_search.c(1456): End node <sil>.12:14:78 (-408) INFO: fsg_search.c(1456): End node <sil>.12:14:78 (-408) INFO: fsg_search.c(1456): End node vosem'.0:14:78 (-204) INFO: fsg_search.c(1456): End node devjat'.0:14:78 (-198) INFO: fsg_search.c(1456): End node odin.0:11:78 (-180) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node shest'.0:11:78 (-197) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node dva.0:8:78 (-142) INFO: fsg_search.c(1456): End node tri.0:8:78 (-134) INFO: fsg_search.c(1456): End node pjat'.0:8:78 (-168) INFO: fsg_search.c(1456): End node sem'.0:8:78 (-158) INFO: fsg_search.c(1680): lattice start node <s>.0 end node </s>.79 INFO: ps_lattice.c(1365): Normalizer P(O) = alpha(</s>:79:79) = 12799 INFO: ps_lattice.c(1403): Joint P(O,S) = -6860 P(S|O) = -19659 tri Probability: -19659 Нажмите ПРОБЕЛ, чтобы сказать фразу, а затем отпустите Говорите... Запись завершена (25600 байт), идет распознавание... INFO: cmn.c(175): CMN: 8.45 -0.58 0.01 0.35 -0.24 -0.02 -0.09 -0.10 -0.05 -0. 19 -0.12 -0.09 -0.04 INFO: fsg_search.c(1032): 79 frames, 3419 HMMs (43/fr), 7316 senones (92/fr), 18 25 history entries (23/fr) INFO: fsg_search.c(1417): Start node chetyre.0:17:78 INFO: fsg_search.c(1417): Start node vosem'.0:14:78 INFO: fsg_search.c(1417): Start node devjat'.0:14:78 INFO: fsg_search.c(1417): Start node odin.0:11:78 INFO: fsg_search.c(1417): Start node shest'.0:11:78 INFO: fsg_search.c(1417): Start node dva.0:8:78 INFO: fsg_search.c(1417): Start node tri.0:8:78 INFO: fsg_search.c(1417): Start node pjat'.0:8:78 INFO: fsg_search.c(1417): Start node sem'.0:8:78 INFO: fsg_search.c(1456): End node <sil>.18:20:78 (-408) INFO: fsg_search.c(1456): End node chetyre.0:17:78 (-260) INFO: fsg_search.c(1456): End node <sil>.15:17:78 (-408) INFO: fsg_search.c(1456): End node <sil>.15:17:78 (-408) INFO: fsg_search.c(1456): End node <sil>.12:14:78 (-408) INFO: fsg_search.c(1456): End node <sil>.12:14:78 (-408) INFO: fsg_search.c(1456): End node vosem'.0:14:78 (-204) INFO: fsg_search.c(1456): End node devjat'.0:14:78 (-198) INFO: fsg_search.c(1456): End node odin.0:11:78 (-180) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node shest'.0:11:78 (-197) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node <sil>.9:11:78 (-408) INFO: fsg_search.c(1456): End node dva.0:8:78 (-142) INFO: fsg_search.c(1456): End node tri.0:8:78 (-134) INFO: fsg_search.c(1456): End node pjat'.0:8:78 (-168) INFO: fsg_search.c(1456): End node sem'.0:8:78 (-158) INFO: fsg_search.c(1680): lattice start node <s>.0 end node </s>.79 INFO: ps_lattice.c(1365): Normalizer P(O) = alpha(</s>:79:79) = 12799 INFO: ps_lattice.c(1403): Joint P(O,S) = -6860 P(S|O) = -19659 tri Probability: -19659 При каждом распознавании, независимо, от произнесенного слова, декодер выдает один и то же результат. Такое ощущение, что ошибка где-то на поверхности. Первым делом я убедился, что запись происходит корректно (16 kHz, 16 bit, mono). Пробовал менять порядок байт, не помогло. Проверял извлечение MFCC с помощью sphinx_fe для для обеих версий библиотеки. Результаты выглядят вполне адекватными, расхождение коэффициентов около 1% или меньше. Может быть у кого-то возникала подобная проблема? В чем может быть ошибка? |
Сообщ.
#2
,
|
|
|
Попробовал подключить отладочный вывод при работе декодера и, на сколько я могу судить, при использовании целочисленной сборки все HMM дают очень близкие оценки правдоподобия, что заставляет алгоритм исследовать все варианты слов. В то время как сборка с плавающей точкой рассматривает наиболее вероятные пути.
Вот выборка из отладочной печати при использовании сборки с плавающей точкой. INFO: cmn.c(175): CMN: 11,79 -0,19 0,09 0,09 -0,32 0,05 -0,29 -0,10 -0,25 -0,49 -0,27 -0,27 -0,05 INFO: fsg_search.c(554): [ 0] 10 HMM; bestscr: -39 INFO: fsg_search.c(554): [ 1] 10 HMM; bestscr: -55 INFO: fsg_search.c(554): [ 2] 10 HMM; bestscr: -77 INFO: fsg_search.c(554): [ 3] 19 HMM; bestscr: -91 INFO: fsg_search.c(554): [ 4] 19 HMM; bestscr: -101 INFO: fsg_search.c(554): [ 5] 19 HMM; bestscr: -117 INFO: fsg_search.c(554): [ 6] 22 HMM; bestscr: -136 INFO: fsg_search.c(554): [ 7] 24 HMM; bestscr: -195 INFO: fsg_search.c(554): [ 8] 25 HMM; bestscr: -258 INFO: fsg_search.c(554): [ 9] 25 HMM; bestscr: -303 INFO: fsg_search.c(554): [ 10] 26 HMM; bestscr: -354 INFO: fsg_search.c(554): [ 11] 29 HMM; bestscr: -404 INFO: fsg_search.c(554): [ 12] 29 HMM; bestscr: -498 INFO: fsg_search.c(554): [ 13] 32 HMM; bestscr: -585 INFO: fsg_search.c(554): [ 14] 35 HMM; bestscr: -620 INFO: fsg_search.c(554): [ 15] 37 HMM; bestscr: -645 INFO: fsg_search.c(554): [ 16] 37 HMM; bestscr: -690 INFO: fsg_search.c(554): [ 17] 37 HMM; bestscr: -722 INFO: fsg_search.c(554): [ 18] 38 HMM; bestscr: -789 INFO: fsg_search.c(554): [ 19] 40 HMM; bestscr: -839 INFO: fsg_search.c(554): [ 20] 40 HMM; bestscr: -883 INFO: fsg_search.c(554): [ 21] 39 HMM; bestscr: -887 INFO: fsg_search.c(554): [ 22] 36 HMM; bestscr: -891 INFO: fsg_search.c(554): [ 23] 35 HMM; bestscr: -895 INFO: fsg_search.c(554): [ 24] 33 HMM; bestscr: -905 INFO: fsg_search.c(554): [ 25] 30 HMM; bestscr: -909 INFO: fsg_search.c(554): [ 26] 28 HMM; bestscr: -960 INFO: fsg_search.c(554): [ 27] 26 HMM; bestscr: -1030 INFO: fsg_search.c(554): [ 28] 25 HMM; bestscr: -1105 INFO: fsg_search.c(554): [ 29] 26 HMM; bestscr: -1157 INFO: fsg_search.c(554): [ 30] 25 HMM; bestscr: -1160 INFO: fsg_search.c(554): [ 31] 18 HMM; bestscr: -1171 INFO: fsg_search.c(554): [ 32] 16 HMM; bestscr: -1188 INFO: fsg_search.c(554): [ 33] 13 HMM; bestscr: -1201 INFO: fsg_search.c(554): [ 34] 11 HMM; bestscr: -1226 INFO: fsg_search.c(554): [ 35] 11 HMM; bestscr: -1272 INFO: fsg_search.c(554): [ 36] 12 HMM; bestscr: -1277 INFO: fsg_search.c(554): [ 37] 11 HMM; bestscr: -1299 INFO: fsg_search.c(554): [ 38] 12 HMM; bestscr: -1334 INFO: fsg_search.c(554): [ 39] 12 HMM; bestscr: -1337 INFO: fsg_search.c(554): [ 40] 11 HMM; bestscr: -1340 INFO: fsg_search.c(554): [ 41] 10 HMM; bestscr: -1343 INFO: fsg_search.c(554): [ 42] 10 HMM; bestscr: -1353 INFO: fsg_search.c(554): [ 43] 10 HMM; bestscr: -1358 INFO: fsg_search.c(554): [ 44] 9 HMM; bestscr: -1371 INFO: fsg_search.c(554): [ 45] 6 HMM; bestscr: -1376 INFO: fsg_search.c(554): [ 46] 6 HMM; bestscr: -1384 INFO: fsg_search.c(554): [ 47] 6 HMM; bestscr: -1398 INFO: fsg_search.c(554): [ 48] 6 HMM; bestscr: -1403 INFO: fsg_search.c(554): [ 49] 4 HMM; bestscr: -1409 INFO: fsg_search.c(554): [ 50] 4 HMM; bestscr: -1416 INFO: fsg_search.c(554): [ 51] 4 HMM; bestscr: -1423 INFO: fsg_search.c(554): [ 52] 5 HMM; bestscr: -1447 INFO: fsg_search.c(554): [ 53] 5 HMM; bestscr: -1523 INFO: fsg_search.c(554): [ 54] 5 HMM; bestscr: -1560 INFO: fsg_search.c(554): [ 55] 5 HMM; bestscr: -1618 INFO: fsg_search.c(554): [ 56] 5 HMM; bestscr: -1621 INFO: fsg_search.c(554): [ 57] 5 HMM; bestscr: -1633 INFO: fsg_search.c(554): [ 58] 5 HMM; bestscr: -1634 INFO: fsg_search.c(554): [ 59] 5 HMM; bestscr: -1635 INFO: fsg_search.c(554): [ 60] 4 HMM; bestscr: -1636 INFO: fsg_search.c(554): [ 61] 4 HMM; bestscr: -1637 INFO: fsg_search.c(554): [ 62] 4 HMM; bestscr: -1670 INFO: fsg_search.c(554): [ 63] 4 HMM; bestscr: -1703 INFO: fsg_search.c(554): [ 64] 4 HMM; bestscr: -1742 INFO: fsg_search.c(554): [ 65] 4 HMM; bestscr: -1784 INFO: fsg_search.c(554): [ 66] 4 HMM; bestscr: -1873 INFO: fsg_search.c(554): [ 67] 4 HMM; bestscr: -1970 INFO: fsg_search.c(554): [ 68] 4 HMM; bestscr: -2061 INFO: fsg_search.c(554): [ 69] 4 HMM; bestscr: -2131 INFO: fsg_search.c(554): [ 70] 4 HMM; bestscr: -2132 INFO: fsg_search.c(554): [ 71] 4 HMM; bestscr: -2132 INFO: fsg_search.c(554): [ 72] 3 HMM; bestscr: -2136 INFO: fsg_search.c(554): [ 73] 3 HMM; bestscr: -2136 INFO: fsg_search.c(554): [ 74] 3 HMM; bestscr: -2136 INFO: fsg_search.c(554): [ 75] 3 HMM; bestscr: -2136 INFO: fsg_search.c(554): [ 76] 3 HMM; bestscr: -2136 INFO: fsg_search.c(554): [ 77] 3 HMM; bestscr: -2136 INFO: fsg_search.c(554): [ 78] 3 HMM; bestscr: -2138 INFO: fsg_search.c(554): [ 79] 2 HMM; bestscr: -2138 А это выборка из отладочной печати при использовании сборки с фиксированной точкой. INFO: cmn.c(175): CMN: 11,78 -0,19 0,09 0,09 -0,32 0,05 -0,29 -0,10 -0,25 -0,49 -0,27 -0,27 -0,05 INFO: fsg_search.c(554): [ 0] 10 HMM; bestscr: -27 INFO: fsg_search.c(554): [ 1] 10 HMM; bestscr: -28 INFO: fsg_search.c(554): [ 2] 10 HMM; bestscr: -29 INFO: fsg_search.c(554): [ 3] 19 HMM; bestscr: -30 INFO: fsg_search.c(554): [ 4] 19 HMM; bestscr: -31 INFO: fsg_search.c(554): [ 5] 19 HMM; bestscr: -32 INFO: fsg_search.c(554): [ 6] 28 HMM; bestscr: -33 INFO: fsg_search.c(554): [ 7] 28 HMM; bestscr: -34 INFO: fsg_search.c(554): [ 8] 28 HMM; bestscr: -35 INFO: fsg_search.c(554): [ 9] 38 HMM; bestscr: -36 INFO: fsg_search.c(554): [ 10] 38 HMM; bestscr: -37 INFO: fsg_search.c(554): [ 11] 38 HMM; bestscr: -38 INFO: fsg_search.c(554): [ 12] 43 HMM; bestscr: -39 INFO: fsg_search.c(554): [ 13] 43 HMM; bestscr: -40 INFO: fsg_search.c(554): [ 14] 43 HMM; bestscr: -41 INFO: fsg_search.c(554): [ 15] 46 HMM; bestscr: -42 INFO: fsg_search.c(554): [ 16] 46 HMM; bestscr: -43 INFO: fsg_search.c(554): [ 17] 46 HMM; bestscr: -44 INFO: fsg_search.c(554): [ 18] 47 HMM; bestscr: -45 INFO: fsg_search.c(554): [ 19] 47 HMM; bestscr: -46 INFO: fsg_search.c(554): [ 20] 47 HMM; bestscr: -47 INFO: fsg_search.c(554): [ 21] 47 HMM; bestscr: -48 INFO: fsg_search.c(554): [ 22] 47 HMM; bestscr: -49 INFO: fsg_search.c(554): [ 23] 47 HMM; bestscr: -50 INFO: fsg_search.c(554): [ 24] 47 HMM; bestscr: -51 INFO: fsg_search.c(554): [ 25] 47 HMM; bestscr: -52 INFO: fsg_search.c(554): [ 26] 47 HMM; bestscr: -53 INFO: fsg_search.c(554): [ 27] 47 HMM; bestscr: -54 INFO: fsg_search.c(554): [ 28] 47 HMM; bestscr: -55 INFO: fsg_search.c(554): [ 29] 47 HMM; bestscr: -56 INFO: fsg_search.c(554): [ 30] 47 HMM; bestscr: -57 INFO: fsg_search.c(554): [ 31] 47 HMM; bestscr: -58 INFO: fsg_search.c(554): [ 32] 47 HMM; bestscr: -59 INFO: fsg_search.c(554): [ 33] 47 HMM; bestscr: -60 INFO: fsg_search.c(554): [ 34] 47 HMM; bestscr: -61 INFO: fsg_search.c(554): [ 35] 47 HMM; bestscr: -62 INFO: fsg_search.c(554): [ 36] 47 HMM; bestscr: -63 INFO: fsg_search.c(554): [ 37] 47 HMM; bestscr: -64 INFO: fsg_search.c(554): [ 38] 47 HMM; bestscr: -65 INFO: fsg_search.c(554): [ 39] 47 HMM; bestscr: -66 INFO: fsg_search.c(554): [ 40] 47 HMM; bestscr: -67 INFO: fsg_search.c(554): [ 41] 47 HMM; bestscr: -68 INFO: fsg_search.c(554): [ 42] 47 HMM; bestscr: -69 INFO: fsg_search.c(554): [ 43] 47 HMM; bestscr: -70 INFO: fsg_search.c(554): [ 44] 47 HMM; bestscr: -71 INFO: fsg_search.c(554): [ 45] 47 HMM; bestscr: -72 INFO: fsg_search.c(554): [ 46] 47 HMM; bestscr: -73 INFO: fsg_search.c(554): [ 47] 47 HMM; bestscr: -74 INFO: fsg_search.c(554): [ 48] 47 HMM; bestscr: -75 INFO: fsg_search.c(554): [ 49] 47 HMM; bestscr: -76 INFO: fsg_search.c(554): [ 50] 47 HMM; bestscr: -77 INFO: fsg_search.c(554): [ 51] 47 HMM; bestscr: -78 INFO: fsg_search.c(554): [ 52] 47 HMM; bestscr: -79 INFO: fsg_search.c(554): [ 53] 47 HMM; bestscr: -80 INFO: fsg_search.c(554): [ 54] 47 HMM; bestscr: -81 INFO: fsg_search.c(554): [ 55] 47 HMM; bestscr: -82 INFO: fsg_search.c(554): [ 56] 47 HMM; bestscr: -83 INFO: fsg_search.c(554): [ 57] 47 HMM; bestscr: -84 INFO: fsg_search.c(554): [ 58] 47 HMM; bestscr: -85 INFO: fsg_search.c(554): [ 59] 47 HMM; bestscr: -86 INFO: fsg_search.c(554): [ 60] 47 HMM; bestscr: -87 INFO: fsg_search.c(554): [ 61] 47 HMM; bestscr: -88 INFO: fsg_search.c(554): [ 62] 47 HMM; bestscr: -89 INFO: fsg_search.c(554): [ 63] 47 HMM; bestscr: -90 INFO: fsg_search.c(554): [ 64] 47 HMM; bestscr: -91 INFO: fsg_search.c(554): [ 65] 47 HMM; bestscr: -92 INFO: fsg_search.c(554): [ 66] 47 HMM; bestscr: -93 INFO: fsg_search.c(554): [ 67] 47 HMM; bestscr: -94 INFO: fsg_search.c(554): [ 68] 47 HMM; bestscr: -95 INFO: fsg_search.c(554): [ 69] 47 HMM; bestscr: -96 INFO: fsg_search.c(554): [ 70] 47 HMM; bestscr: -97 INFO: fsg_search.c(554): [ 71] 47 HMM; bestscr: -98 INFO: fsg_search.c(554): [ 72] 47 HMM; bestscr: -99 INFO: fsg_search.c(554): [ 73] 47 HMM; bestscr: -100 INFO: fsg_search.c(554): [ 74] 47 HMM; bestscr: -101 INFO: fsg_search.c(554): [ 75] 47 HMM; bestscr: -102 INFO: fsg_search.c(554): [ 76] 47 HMM; bestscr: -103 INFO: fsg_search.c(554): [ 77] 47 HMM; bestscr: -104 INFO: fsg_search.c(554): [ 78] 47 HMM; bestscr: -105 INFO: fsg_search.c(554): [ 79] 47 HMM; bestscr: -106 В обоих случаях распознавался один и тот же файл с одной командой. Может быть саму акустическую модель нужно как-то подготовить, перед использованием со сборкой с целочисленной арифметикой? |
Сообщ.
#3
,
|
|
|
Нашел так же, что причиной неработоспособности декодера является то, что все эмиссионные вероятности, вычисляемые целочисленной сборкой, равны нулю:
//SSID 0 1 2 (0) SENSCR 0 0 0 //SCORES -337 -362 -536870912 -536870912 //HISTID 0 0 -1 -1 //SSID 393 395 397 (1326) SENSCR 0 0 0 //SCORES -28 -39 -536870912 -536870912 //HISTID 0 0 -1 -1 //SSID 1070 1080 1086 (4086) SENSCR 0 0 0 //SCORES -30 -35 -536870912 -536870912 //HISTID 0 0 -1 -1 В то время, как в сборке с плавающей точкой все нормально: //SSID 0 1 2 (0) SENSCR -48 -24 -27 //SCORES -385 -410 -536870912 -536870912 //HISTID 0 0 -1 -1 //SSID 393 395 397 (1326) SENSCR -114 -189 -300 //SCORES -142 -153 -536870912 -536870912 //HISTID 0 0 -1 -1 //SSID 1070 1080 1086 (4086) SENSCR -191 -140 -126 //SCORES -221 -226 -536870912 -536870912 //HISTID 0 0 -1 -1 Теперь нужно найти, где вычисляются эмисионные вероятности. |
Сообщ.
#4
,
|
|
|
Проблема устранена! Причина в том, что библиотека была неправильно сконфигурирована. Проект библиотеки SphinxBase видит файлы конффигурации в директории include\win32:
"C:\Program Files (x86)\Sphinx\sphinxbase\include\win32\config.h" "C:\Program Files (x86)\Sphinx\sphinxbase\include\win32\sphinx_config.h" В данные файлы я и добавлял директиву FIXED_POINT. Проект библиотеки PocketSphinx видит файл конффигурации в директории include: "C:\Program Files (x86)\Sphinx\sphinxbase\include\sphinx_config.h" В нем оставалась конфигурация по-умолчанию. Таким образом, библиотека SphinxBase собралась как целочисленная, а PocketSphinx - с плавающей точкой. При вычислении гауссов (ms_gauden.c) возникала ошибка. После добавления директивы FIXED_POINT в файл конфигурации PocketSphinx ошибка устранилась. |