На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
  
> Сборка Pocketsphinx fixed-point
    Не так давно узнал о существовании проекта CMU Sphinx, который решает многие вопросы в распознавании слитной речи, а так же позволяет в короткие сроки разработать полноценную систему распознавания голосовых команд. Важными, для меня, деталями Sphinx являются: открытость исходного кода, применение C++, а также поддержка целочисленных вычислений, что является огромным достоинством при аппаратной реализации системы. После изучения многочисленных веток форума посвященных Sphinx многие вопросы прояснились, однако на практике возникли некоторые сложности... В надежде разобраться в них, вкратце опишу возникшие вопросы.

    В начале, была сделана небольшая грамматика (цифры от 1 до 10) и словарь транскрипций. Акустическая модель msu_ru_nsh.cd_cont_1000_8gau_16000. Все прекрасно работало!
    На следующем шаге была собрана целочисленная версия библиотеки. В файлах конфигурации config.h и sphinx_config.h добавлена директива
    ExpandedWrap disabled
      #define FIXED_POINT 1


    При компиляции ошибок не возникло, однако при тестировании распознавание пропало. Причем время декодирования значительно возросло (~2 секунды). Так же увеличился вывод при работе декодера. Вот вывод программы (HelloWorld из PocketSphinx с прикрученной звукозаписью) для слов "один", "два", "три".
    ExpandedWrap disabled
      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% или меньше.

    Может быть у кого-то возникала подобная проблема? В чем может быть ошибка? :unsure:
      Попробовал подключить отладочный вывод при работе декодера и, на сколько я могу судить, при использовании целочисленной сборки все HMM дают очень близкие оценки правдоподобия, что заставляет алгоритм исследовать все варианты слов. В то время как сборка с плавающей точкой рассматривает наиболее вероятные пути.

      Вот выборка из отладочной печати при использовании сборки с плавающей точкой.
      ExpandedWrap disabled
        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


      А это выборка из отладочной печати при использовании сборки с фиксированной точкой.
      ExpandedWrap disabled
        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


      В обоих случаях распознавался один и тот же файл с одной командой.
      Может быть саму акустическую модель нужно как-то подготовить, перед использованием со сборкой с целочисленной арифметикой?
        Нашел так же, что причиной неработоспособности декодера является то, что все эмиссионные вероятности, вычисляемые целочисленной сборкой, равны нулю:
        ExpandedWrap disabled
          //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

        В то время, как в сборке с плавающей точкой все нормально:
        ExpandedWrap disabled
          //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


        Теперь нужно найти, где вычисляются эмисионные вероятности.
          Проблема устранена! Причина в том, что библиотека была неправильно сконфигурирована. Проект библиотеки SphinxBase видит файлы конффигурации в директории include\win32:
          ExpandedWrap disabled
            "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:
          ExpandedWrap disabled
            "C:\Program Files (x86)\Sphinx\sphinxbase\include\sphinx_config.h"


          В нем оставалась конфигурация по-умолчанию. Таким образом, библиотека SphinxBase собралась как целочисленная, а PocketSphinx - с плавающей точкой. При вычислении гауссов (ms_gauden.c) возникала ошибка. После добавления директивы FIXED_POINT в файл конфигурации PocketSphinx ошибка устранилась. :victory:
          Сообщение отредактировано: AndKy -
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0402 ]   [ 14 queries used ]   [ Generated: 21.05.24, 23:10 GMT ]