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

    Установил через npm "node-gyp", скопировал туда binding.gyp файл, запускаю

    ExpandedWrap disabled
      node-gyp --python=python2.7 configure


    Выдает ошибку, что-то про pkg-config (как пользоваться данной программой, не могу понять).

    user posted image

    Оч. надеюсь на помощь!

    Эта тема была разделена из темы "Работа с CMU Sphinx"
      Для чего в папке "pocketsphinx" и "sphinxbase" файлы *.pc.in, при компиляции этих проектов не создаются файлы *.pc. Делаю все из под Windows.

      Я так понимаю при компиляции, должна создаваться директория "lib/pkgconfig", но её нет.
        По Windows сборка пока не поддерживается, pkg-config работает только в Linux. Можно использовать Linux или необходимо изменить binding.gyp, чтобы прописать необходимые пути и библиотеки без pkg-config.
          Николай, а что содержат переменные: --cflags, --libs в binding.gyp?
          Сообщение отредактировано: webmax -
            --libs это библиотеки, в вашем случае это pocketsphinx.lib и sphinxbase.lib. Нужно прописать полный путь:

            ExpandedWrap disabled
                    libraries': [
                      '-l<(pocketsphinx_root)/bin/Release/libpocketsphinx.lib',
                    ],


            --cflags это путь к заголовочным файлом, что-то вроде


            ExpandedWrap disabled
                     'include_dirs': [
                      '<(pocketsphinx_root)/include',
                    ],


            --datadir это путь к swig файлам (.i) расширение.

            Для сборки нужно установить последний swig (3.0.7).
              К сожалению пока с ошибками.

              wrap_sb.cpp не может подключить cmd_ln.h

              user posted image

              Прикреплённый файлПрикреплённый файлbinding.gyp (1,84 Кбайт, скачиваний: 238)
                Переменная с указанием пути поиска должна называться include_dirs, в linux cflags. Если правильно указать путь, заголовочный файл найдётся.
                  Точно, спасибо. Столкнулся с очередными ошибками :(

                  Уже посещает мысль установить linux, но все-же пока не сдаюсь. Надеюсь на очередную помощь!

                  После того, как исправил на "include_dirs", выдало следующую ошибку:

                  user posted image

                  Скопировал файл "sphinx_config.h" из "include/win32" в "include", запустил:

                  user posted image.

                  Может через Visual Studio компилирую не так? Через VC 2012 делаю:

                  user posted image
                  Сообщение отредактировано: webmax -
                    Цитата
                    Скопировал файл "sphinx_config.h" из "include/win32" в "include", запустил:


                    Лучше include/win32 было в include_dirs добавить.

                    По поводу ошибок, Вам нужно выложить файлы sb.cpp и ps.cpp, не очень понятно что там происходит. Убедитесь, что используете последнюю версию с github, а не более старую версию.

                    Добавлено
                    Нужно отучаться постить ошибки в картинках, текст вывода можно написать как текст. Так его легче искать и читать тоже.
                      Выкладываю sb.cpp файл, а ps.cpp не успел скомпилироваться.

                      sb.cpp

                      По поводу скринов, понял, не повторится.
                      Сообщение отредактировано: webmax -
                        Из sb.cpp видно, что Вы используете старую версию.

                        Нужно скачать zip с github https://github.com/cmusphinx/sphinxbase, кнопка "Download ZIP".
                          Скомпилировал последнюю версию, предыдущая ошибка пропала, но появилась туча новых и с непонятной мне кодировкой. Пробовал кодировку менять через "chcp" 65001, 1251, 866, не помогает.

                          Скрин

                          ExpandedWrap disabled
                            gyp info spawn args [ 'build/binding.sln',
                            gyp info spawn args   '/clp:Verbosity=minimal',
                            gyp info spawn args   '/nologo',
                            gyp info spawn args   '/p:Configuration=Debug;Platform=x64' ]
                            Сборка проектов в этом решении по одному. Чтобы включить параллельную сборку, добавьте параметр "/m".
                              Creating sphinxbase wrapper
                              wrap_sb.cpp
                            c:\program files\nodejs\node_modules\npm\bin\node-gyp-bin\sb.cpp(1201): warning C4311: приведение типов: усечение указа
                            теля из "void *" в "long" [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                            c:\program files\nodejs\node_modules\npm\bin\node-gyp-bin\sb.cpp(1201): warning C4302: приведение типов: усечение из "v
                            oid *" в "long" [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                            c:\program files\nodejs\node_modules\npm\bin\node-gyp-bin\sb.cpp(1539): warning C4267: аргумент: преобразование из "siz
                            e_t" в "int"; возможна потеря данных [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxpro
                            j]
                            c:\program files\nodejs\node_modules\npm\bin\node-gyp-bin\sb.cpp(1652): warning C4244: =: преобразование "int64_t" в "i
                            nt", возможна потеря данных [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                            c:\program files\nodejs\node_modules\npm\bin\node-gyp-bin\sb.cpp(1715): warning C4267: аргумент: преобразование из "siz
                            e_t" в "int"; возможна потеря данных [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxpro
                            j]
                            c:\program files\nodejs\node_modules\npm\bin\node-gyp-bin\sb.cpp(1843): warning C4244: аргумент: преобразование "int32"
                             в "float32", возможна потеря данных [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxpro
                            j]
                            c:\program files\nodejs\node_modules\npm\bin\node-gyp-bin\sb.cpp(1895): warning C4267: аргумент: преобразование из "siz
                            e_t" в "int32"; возможна потеря данных [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxp
                            roj]
                              win_delay_load_hook.c
                                 ╤ючфрхЄё  сшсышюЄхър C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\Debug\SphinxBase.lib ш юс·хъЄ
                               C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\Debug\SphinxBase.exp
                            wrap_sb.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы __imp_cmd_ln_free_r т ЇєэъЎшш "void __cdecl delete_
                            Config(struct cmd_ln_s *)" (?delete_Config@@YAXPEAUcmd_ln_s@@@Z) [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp
                            -bin\build\SphinxBase.vcxproj]
                            wrap_sb.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы __imp_cmd_ln_str_r т ЇєэъЎшш "char const * __cdecl
                            Config_get_string(struct cmd_ln_s *,char const *)" (?Config_get_string@@YAPEBDPEAUcmd_ln_s@@PEBD@Z) [C:\Program Files\n
                            odejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                            wrap_sb.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы __imp_cmd_ln_int_r т ЇєэъЎшш "bool __cdecl Config_g
                            et_boolean(struct cmd_ln_s *,char const *)" (?Config_get_boolean@@YA_NPEAUcmd_ln_s@@PEBD@Z) [C:\Program Files\nodejs\no
                            de_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                            wrap_sb.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы __imp_cmd_ln_float_r т ЇєэъЎшш "double __cdecl Conf
                            ig_get_float(struct cmd_ln_s *,char const *)" (?Config_get_float@@YANPEAUcmd_ln_s@@PEBD@Z) [C:\Program Files\nodejs\nod
                            e_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                            wrap_sb.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы __imp_cmd_ln_set_str_r т ЇєэъЎшш "void __cdecl Conf
                            ig_set_string(struct cmd_ln_s *,char const *,char const *)" (?Config_set_string@@YAXPEAUcmd_ln_s@@PEBD1@Z) [C:\Program
                            Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                            wrap_sb.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы __imp_cmd_ln_set_str_extra_r т ЇєэъЎшш "void __cdec
                            l Config_set_string_extra(struct cmd_ln_s *,char const *,char const *)" (?Config_set_string_extra@@YAXPEAUcmd_ln_s@@PEB
                            D1@Z) [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                            wrap_sb.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы __imp_cmd_ln_set_int_r т ЇєэъЎшш "void __cdecl Conf
                            ig_set_boolean(struct cmd_ln_s *,char const *,bool)" (?Config_set_boolean@@YAXPEAUcmd_ln_s@@PEBD_N@Z) [C:\Program Files
                            \nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                            wrap_sb.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы __imp_cmd_ln_set_float_r т ЇєэъЎшш "void __cdecl Co


                          Добавлено
                          эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы - неразрешенный внешний символ, что еще за ошибка...
                            Это если VS 2015 использовать, а если 2012 использовать, то пишет что не найден stdbool.h файл.
                              stdbool.h можно свой создать, эта тема широко обсуждается в интернете.

                              А по поводу __imp, идёт сборка с dll символами по умолчанию, подробности в pocketsphinx_exports.h и sphinxbase_exports.h. Можно отредактировать эти файлы, чтобы не использовалось dllimport или попробовать определить define в binging.gyp:


                              ExpandedWrap disabled
                                   defines: ['SPHINXBASE_EXPORTS']
                                   defines: ['POCKETSPHINX_EXPORTS']


                              если не поможет:

                              ExpandedWrap disabled
                                defines: ['__MINGW32__']


                              тогда dllspec не будет применяться.
                                Пробовал константы определять, редактировал binging.gyp и sphinxbase_exports.h, ничего не помогает.

                                Ошибка LNK2001: неразрешенный внешний символ __cdecl fsd_model_add_silence (и др. функции)

                                Скрин

                                ExpandedWrap disabled
                                    win_delay_load_hook.c
                                       ╤ючфрхЄё  сшсышюЄхър C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\Release\SphinxBase.lib ш юс·хъЄ C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\Release\Sp
                                    hinxBase.exp
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""int __cdecl fsg_model_add_silence(struct fsg_model_s *,char const *,int,float)" (?fsg_model_add_silence@@YAHPEAUfsg_model_s@@PEBDHM@Z)"
                                  [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""int __cdecl fsg_model_tag_trans_add(struct fsg_model_s *,int,int,int,int)" (?fsg_model_tag_trans_add@@YAHPEAUfsg_model_s@@HHHH@Z)" [C:\P
                                  rogram Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""int __cdecl fsg_model_word_id(struct fsg_model_s *,char const *)" (?fsg_model_word_id@@YAHPEAUfsg_model_s@@PEBD@Z)" [C:\Program Files\no
                                  dejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""struct fsg_model_s * __cdecl fsg_model_readfile(char const *,struct logmath_s *,float)" (?fsg_model_readfile@@YAPEAUfsg_model_s@@PEBDPEA
                                  Ulogmath_s@@M@Z)" [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""int __cdecl fsg_model_free(struct fsg_model_s *)" (?fsg_model_free@@YAHPEAUfsg_model_s@@@Z)" [C:\Program Files\nodejs\node_modules\npm\b
                                  in\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""int __cdecl fsg_model_add_alt(struct fsg_model_s *,char const *,char const *)" (?fsg_model_add_alt@@YAHPEAUfsg_model_s@@PEBD1@Z)" [C:\Pr
                                  ogram Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""void __cdecl fsg_model_trans_add(struct fsg_model_s *,int,int,int,int)" (?fsg_model_trans_add@@YAXPEAUfsg_model_s@@HHHH@Z)" [C:\Program
                                  Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""struct fsg_model_s * __cdecl fsg_model_init(char const *,struct logmath_s *,float,int)" (?fsg_model_init@@YAPEAUfsg_model_s@@PEBDPEAUlog
                                  math_s@@MH@Z)" [C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""int __cdecl fsg_model_null_trans_add(struct fsg_model_s *,int,int,int)" (?fsg_model_null_trans_add@@YAHPEAUfsg_model_s@@HHH@Z)" [C:\Prog
                                  ram Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""int __cdecl fsg_model_word_add(struct fsg_model_s *,char const *)" (?fsg_model_word_add@@YAHPEAUfsg_model_s@@PEBD@Z)" [C:\Program Files\
                                  nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  wrap_sb.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""void __cdecl fsg_model_writefile(struct fsg_model_s *,char const *)" (?fsg_model_writefile@@YAXPEAUfsg_model_s@@PEBD@Z)" [C:\Program Fil
                                  es\nodejs\node_modules\npm\bin\node-gyp-bin\build\SphinxBase.vcxproj]
                                  C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\build\Release\SphinxBase.node : fatal error LNK1120: эхЁрчЁх°хээ√ї тэх°эшї ¤ыхьхэЄют: 11 [C:\Program Files\nodejs\node_modules\npm\bin\nod
                                  e-gyp-bin\build\SphinxBase.vcxproj]
                                  gyp ERR! build error
                                  gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
                                  gyp ERR! stack     at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:270:23)
                                  gyp ERR! stack     at emitTwo (events.js:87:13)
                                  gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
                                  gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
                                  gyp ERR! System Windows_NT 10.0.10240
                                  gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "--python=python2.7" "rebuild"
                                  gyp ERR! cwd C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin
                                  gyp ERR! node -v v5.4.0
                                  gyp ERR! node-gyp -v v3.0.3
                                  gyp ERR! not ok
                                  Если комментировать
                                  ExpandedWrap disabled
                                    %include fsg_model.i

                                  в файле "sphinxbase.i", то ошибка пропадает.
                                    Нашел в чем проблема: удалил windows, установил Ubuntu и ошибка пропала, установка прошла "как по маслу".
                                      Исправил ошибку с fsg, теперь и под Win должно работать, если обновиться.
                                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                      0 пользователей:


                                      Рейтинг@Mail.ru
                                      [ Script execution time: 0,0581 ]   [ 18 queries used ]   [ Generated: 19.04.24, 04:25 GMT ]