Ошибка установки Kaldi на Ubuntu 16.04

Привет, я пытаюсь установить инструментарий Kaldi для распознавания речи на Ubuntu 16.04. Я выполнил инструкции в файле INSTALL.

(1) перейти к инструментам / и следовать инструкциям INSTALL.

Последовательная процедура в файле INSTALL в инструментах и ​​получила следующий вывод,

$ extras / check_dependencies.sh

../tools/extras/check_dependencies.sh: all OK.

и выполнены без ошибок. Вот несколько последних строк в случае, если вы хотите взглянуть

$ make

 rm -f openfst ln -s openfst-1.6.1 openfst Warning: IRSTLM is not installed by default anymore. If you need IRSTLM Warning: use the script extras/install_irstlm.sh All done OK. 

Теперь я перешел к следующему шагу

(2) перейдите к src / и следуйте инструкциям INSTALL.

в папке src, выполните configure со следующим выходом

$ ./configure

Configuring ... Backing up kaldi.mk to kaldi.mk.bak ... Checking compiler g++-4.9 ... Checking OpenFst library in /home/xxx/Downloads/kaldi/tools/openfst ... Doing OS specific configurations ... On Linux: Checking for linear algebra header files ... Using ATLAS as the linear algebra library. Successfully configured for Debian/Ubuntu Linux [dynamic libraries] with ATLASLIBS =/usr/lib/libatlas.so.3 /usr/lib/libf77blas.so.3 /usr/lib/libcblas.so.3 /usr/lib/liblapack_atlas.so.3 CUDA will not be used! If you have already installed cuda drivers and cuda toolkit, try using --cudatk-dir=... option. Note: this is only relevant for neural net experiments Info: configuring Kaldi not to link with Speex (don't worry, it's only needed if you intend to use 'compress-uncompress-speex', which is very unlikely) SUCCESS To compile: make clean -j; make depend -j; make -j ... or eg -j 10, instead of -j, to use a specified number of CPUs debug mode enabled... + exit 0

$ make depend также выполняется без ошибок. Но когда я выполняю make, я получаю следующую ошибку (я не копирую все, потому что он очень длинный, если кто-то хочет, чтобы я мог опубликовать полный вывод)

$ make

 make[2]: Entering directory '/home/srinivas/Downloads/kaldi/src/online2' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/home/srinivas/Downloads/kaldi/src/online2' make -C bin make[2]: Entering directory '/home/srinivas/Downloads/kaldi/src/bin' g++-4.9 -Wl,-rpath=/home/srinivas/Downloads/kaldi/tools/openfst/lib -rdynamic align-equal.o ../decoder/kaldi-decoder.a ../lat/kaldi-lat.a ../lm/kaldi-lm.a ../fstext/kaldi-fstext.a ../hmm/kaldi-hmm.a ../transform/kaldi-transform.a ../gmm/kaldi-gmm.a ../tree/kaldi-tree.a ../util/kaldi-util.a ../thread/kaldi-thread.a ../matrix/kaldi-matrix.a ../base/kaldi-base.a /home/srinivas/Downloads/kaldi/tools/openfst/lib/libfst.so /usr/lib/libatlas.so.3 /usr/lib/libf77blas.so.3 /usr/lib/libcblas.so.3 /usr/lib/liblapack_atlas.so.3 -lm -lpthread -ldl -o align-equal align-equal.o: In function `fst::internal::FstImpl<fst::ArcTpl<fst::TropicalWeightTpl > >::WriteFstHeader(fst::Fst<fst::ArcTpl<fst::TropicalWeightTpl > > const&, std::ostream&, fst::FstWriteOptions const&, int, std::string const&, unsigned long, fst::FstHeader*)': /home/srinivas/Downloads/kaldi/tools/openfst/include/fst/fst.h:745: undefined reference to `fst::FstHeader::Write(std::ostream&, std::string const&) const' ../decoder/kaldi-decoder.a(training-graph-compiler.o): In function `fst::internal::FstImpl<fst::ReverseArc<fst::ArcTpl<fst::TropicalWeightTpl > > >::WriteFstHeader(fst::Fst<fst::ReverseArc<fst::ArcTpl<fst::TropicalWeightTpl > > > const&, std::ostream&, fst::FstWriteOptions const&, int, std::string const&, unsigned long, fst::FstHeader*)': /home/srinivas/Downloads/kaldi/tools/openfst/include/fst/fst.h:745: undefined reference to `fst::FstHeader::Write(std::ostream&, std::string const&) const' ../decoder/kaldi-decoder.a(training-graph-compiler.o): In function `fst::internal::FstImpl<fst::ArcTpl<fst::LogWeightTpl > >::WriteFstHeader(fst::Fst<fst::ArcTpl<fst::LogWeightTpl > > const&, std::ostream&, fst::FstWriteOptions const&, int, std::string const&, unsigned long, fst::FstHeader*)': /home/srinivas/Downloads/kaldi/tools/openfst/include/fst/fst.h:745: undefined reference to `fst::FstHeader::Write(std::ostream&, std::string const&) const' ../fstext/kaldi-fstext.a(kaldi-fst-io.o): In function `fst::ReadFstKaldi(std::string)': /home/srinivas/Downloads/kaldi/src/fstext/kaldi-fst-io.cc:34: undefined reference to `fst::FstHeader::Read(std::istream&, std::string const&, bool)' /home/srinivas/Downloads/kaldi/src/fstext/kaldi-fst-io.cc:37: undefined reference to `fst::FstReadOptions::FstReadOptions(std::string const&, fst::FstHeader const*, fst::SymbolTable const*, fst::SymbolTable const*)' ../fstext/kaldi-fstext.a(kaldi-fst-io.o): In function `fst::internal::FstImpl<fst::ArcTpl<fst::TropicalWeightTpl > >::ReadHeader(std::istream&, fst::FstReadOptions const&, int, fst::FstHeader*)': /home/srinivas/Downloads/kaldi/tools/openfst/include/fst/fst.h:796: undefined reference to `fst::FstHeader::Read(std::istream&, std::string const&, bool)' collect2: error: ld returned 1 exit status : recipe for target 'align-equal' failed make[2]: *** [align-equal] Error 1 make[2]: Leaving directory '/home/srinivas/Downloads/kaldi/src/bin' Makefile:142: recipe for target 'bin' failed make[1]: *** [bin] Error 2 make[1]: Leaving directory '/home/srinivas/Downloads/kaldi/src' Makefile:35: recipe for target 'all' failed make: *** [all] Error 2 

Я даже вручную искал библиотеки, и они присутствуют в местоположении ../tools/openfst. Я даже пробовал установку системы openfst, но ничего не получилось. Любая помощь будет назначена. Спасибо!

    Шринивас

    Я также использую ubuntu 16.04 LTS, и я бы предложил вам ознакомиться с этим сайтом и выполнить пошаговую процедуру. Я думаю, это решит вашу проблему.

    http://jrmeyer.github.io/kaldi/2016/01/26/Installing-Kaldi.html

    Я решил это с помощью g ++ – 5. Ubuntu 16.04 по умолчанию использует g ++ – 5 для предварительно установленных пакетов, и когда я пытаюсь скомпилировать Kaldi с g ++ – 4.9 и ссылаюсь на пакеты Ubuntu, которые использовали g ++ – 5, компоновщик вызывал неопределенные ссылки. Я столкнулся с аналогичной проблемой с другими библиотеками

    Чтобы решить любые такие ошибки, я всегда выполнял следующие действия:

    • используйте g ++ – 4.8 для компиляции источника kaldi.
    • добавьте общий флаг в команду configure, например CXX = g ++ – 4.8 ./configure –shared
    • перед созданием в каталоге src также можно сделать зависимости, например, sudo make зависит от CXX = g ++ – 4.8
    • используйте права root при создании, а также добавьте директиву g ++ – 4.8 к своей команде, например, sudo make CXX = g ++ – 4.8
    • после этого скомпилируйте онлайн-расширения, используя sudo make ext CXX = g ++ – 4.8

    надеюсь, это решит ваши проблемы.

    Вы действительно можете использовать g ++ – 5 для компиляции kaldi. Тогда он не будет поддерживать cuda, так как Ubuntu 16.04 поставляется с cuda 7.5, который не подлежит обсуждению с gcc 5.

    Чтобы построить с поддержкой CUDA от ubuntu 16.04:

     sudo apt-get install nvidia-cuda-dev nvidia-cuda-toolkit libcupti-dev g++-4.8 cd tools; make CXX=g++-4.8 cd src; CXX=g++-4.8 ./configure --shared && make-j8