Sclite (SCTK) установить, файл не распознан, формат файла не распознан, Cygwin

В настоящее время я пытаюсь установить NIST sclite, который является частью SCTK 2.4.0 ( github или более новая версия). Я пытаюсь установить на Cygwin в bash, Установка выполняется с использованием make,


Что я сделал

Я сделал каталог для установки и перешел в этот каталог

mkdir sctk2.4.0
cd sctk2.4.0

(Возможно, вам понадобится $ cd /path/to/dir/sctk2.4.0.)

Я клонировал проект из github

git clone https://github.com/chinshr/sctk.git

перешел в базовую папку

cd sctk

затем я начал следовать инструкциям в INSTALL файл.

Бег

make config

работал нормально, но после набора текста

make all

Я получил вывод, который следует

(mkdir -p bin)
(cd src; make all)
make[1]: Entering directory '/cygdrive/c/David/programs/sctk2.4.0/sctk/src'
(cd asclite; make all)
make[2]: Entering directory '/cygdrive/c/David/programs/sctk2.4.0/sctk/src/asclite'
(cd core; make all)
make[3]: Entering directory '/cygdrive/c/David/programs/sctk2.4.0/sctk/src/asclite/core'
g++ -o asclite -g -Os  alignment.o segment.o sgml_reportgenerator.o alignedsegmentiterator.o reportgenerator.o speechset.o segmentsgroup.o logger.o tokenalignment.o sgml_generic_reportgenerator.o recording.o statistics.o compressedlevenshteinmatrix.o segmentor.o id.o trntrn_segmentor.o linestyle_inputparser.o inputparser.o levenshteinmatrix.o levenshtein.o uemfilter.o speakermatch.o spkrautooverlap.o graphalignedsegment.o rawsys_reportgenerator.o graphalignedtoken.o timedobject.o stt_scorer.o aligner.o arraylevenshteinmatrix.o graph.o main.o trn_inputparser.o alignedspeech.o token.o alignedsegment.o graph_coordinate.o rttm_inputparser.o scorer.o properties.o ctmstmrttm_segmentor.o filter.o speech.o alignedspeechiterator.o stm_inputparser.o checker.o ctm_inputparser.o lzma/LzFind.o lzma/LzmaEnc.o lzma/Alloc.o lzma/LzmaLib.o lzma/LzmaDec.o -lm
alignment.o: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
make[3]: *** [makefile:62: asclite] Error 1
make[3]: Leaving directory '/cygdrive/c/David/programs/sctk2.4.0/sctk/src/asclite/core'
make[2]: *** [makefile:12: all] Error 2
make[2]: Leaving directory '/cygdrive/c/David/programs/sctk2.4.0/sctk/src/asclite'
make[2]: *** [makefile:12: all] Error 2
make[2]: Leaving directory '/cygdrive/c/David/programs/sctk2.4.0/sctk/src'
make: *** [makefile:20: all] Error 2

Я посмотрел на этот пост, но я определил, что alignment.o Файл не поврежден. На всякий случай я попробовал несколько make clean и даже повторно клонировал проект из github, но я все еще получаю ту же ошибку.

Может кто-нибудь помочь мне завершить эту установку или хотя бы перейти к следующему шагу?


Сведения о системе

$ uname -a
CYGWIN_NT-6.1 CAP-D-ENG-INT3 2.10.0(0.325/5/3) 2018-02-02 15:16 x86_64 Cygwin
$ bash --version
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin) ...
$ gcc --version
gcc (GCC) 6.4.0 ...
$ g++ --version
g++ (GCC) 6.4.0 ...
$ make --version
GNU Make 4.2.1
Built for x86_64-unknown-cygwin ...
$ systeminfo | sed -n 's/^OS\ *//p'
Name:                   Microsoft Windows 7 Enterprise
Version:                6.1.7601 Service Pack 1 Build 7601
Manufacturer:           Microsoft Corporation
Configuration:          Member Workstation
Build Type:             Multiprocessor Free

Заметка

Я спрашиваю об этой проблеме, а затем даю ответ на свой вопрос. (Мне нравится, что Stackru позволяет нам это делать.) Надеюсь, это облегчит людям помощь в решении проблем, с которыми я столкнулся в процессе установки.

Следующая проблема, с которой я столкнулся, обсуждается здесь. Вы можете увидеть эту следующую проблему в ответе на эту проблему.

2 ответа

Решение

(Смотрите мой комментарий под вопросом для kaldi решение.)

Решение этой проблемы было в README, как решения часто бывают. Примечание. Была еще одна проблема, возникшая после ее решения. Смотрите в нижней части этого ответа для помощи с этим.

Вот команда, которую я использовал, чтобы получить соответствующую информацию из README,

cat README | tail -13

и вот уместная информация


                       64 bits Compilation

With big alignments, sctk needs to be compiled in 64 bits.
By default, the C/C++ software are compiled in 32 bits with the options (-Os)
but can be compiled in 64 bits, -m64 is added to the CFLAGS variable in:
src/asclite/core/makefile
src/asclite/test/makefile
src/rfilter1/makefile
src/sclite/makefile
Example of CFLAGS:
For OSX 10.4+: -fast -m64 -arch x86_64 -arch ppc64

Итак, я пошел в makefile в списке (кроме rfilter1 см. ниже) и там поменял код, заменив каждый -Os с -m64, Делайте это ТОЛЬКО для make-файлов, которые перечислены. Я приведу пример для одного из перечисленных файлов, но учтите, что вам придется сделать это для остальных.

cd sctk
vim src/asclite/core/makefile

Когда файл был открыт, я нашел строку:

CFLAGS = -g -Os

который я изменил на

CFLAGS = -g -m64

(нажал " i " попасть внутрь INSERT режим, внес изменения, нажал " Esc ", затем нажал" :wq "(Написать и выйти), а затем" Enter ")

Я сделал изменения во всех перечисленных файлах, КРОМЕ src/rfilter1/makefile потому что этот файл не имел -Os в этом. Это оказалось важным, так как установка не работала бы, если бы я вообще изменил этот файл.

После этого я побежал make clean, но я не бегал make config потому что это отменило бы изменения, которые мы только что сделали. Я пошел прямо к:

make all

Это возвращает нас туда, где мы были раньше.

Эта проблема была решена, но была другая проблема:

In file included from main.cpp:20:0:
recording.h:122:36: error: template argument 2 is invalid
         map<string, Filter::Filter*> filters;
                                    ^
recording.h:122:36: error: template argument 4 is invalid

о котором я спросил здесь.

Это более простое решение.

Вот подробности о том, что я назвал kaldi Решение ". Сейчас это просто список команд без подробностей. Как показано здесь, эти команды установят sclite-2.4.10 каталог под $HOME (~) каталог:

$ cd
$ git clone https://github.com/kaldi-asr/kaldi.git
$ cd kaldi/tools
$ extras/check_dependencies.sh
$ make -j $(nproc --all)
$ cp -R sctk-2.4.10 ~/
$ cd
$ rm -rf kaldi
$ cd sctk-2.4.10/
$ cp $HOME/.bashrc "${HOME}/.bashrc.$(date +%Y%m%d-%H%M%S).bak"
$ echo -e "\n\n## Allow access to sclite, rfilter, etc" >> $HOME/.bashrc
$ echo 'export PATH='"$(pwd)/bin"':$PATH' >> $HOME/.bashrc
$ source ~/.bashrc

Посмотрите этот вопрос / ответ для деталей о том, как использовать его в Windows.

ЕЩЕ ЛЕГКОЕ РЕШЕНИЕ - Воспользуйтесь преимуществами новой отредактированной версииsclite

Это на тот случай, если кто-то найдет здесь ответ полезным. Я знаю, что здесь нет голосов, но я только что получил трофей, в котором говорится, что это мой первый вопрос, на который нужно набрать 1000 просмотров, поэтому я обновлю свой ответ, чтобы показать самый простой способ добиться цели.

TL;DR

https://www.nist.gov/itl/iad/mig/tools

https://github.com/usnistgov/SCTK

% cd /the/dir/where/i/want/to/install
% git clone https://github.com/usnistgov/SCTK.git
% cd SCTK

Из git master README (цитируется) с некоторыми комментариями, которые я добавил.

% make config

% sed -i 's#[-]Os#-m64#g' src/asclite/core/makefile

% sed -i 's#[-]Os#-m64#g' src/asclite/test/makefile

% sed -i 's#[-]Os#-m64#g' src/sclite/makefile

% make clean

% ## Possible edit to the `rfilter1 makefile`, which are
% ## described at the end of the answer but were not necessary
% ## for me.

% make all

% make check

% make install

% make doc

Я также добавляю каталог исполняемых файлов в свой PATH и сделать документацию доступной через man команда.

% pwd
/the/dir/where/i/want/to/install/SCTK
% # back up your `.bashrc`
% cp $HOME/.bashrc "${HOME}/.bashrc.$(date +%Y%m%d-%H%M%S).bak"
% # persistent path changes
% echo -e "\n\n## Allow access to sclite, rfilter, etc" >> $HOME/.bashrc
% # your machine might use something other than `export` for this. CHECK!
% echo 'export PATH='"$(pwd)/bin"':$PATH' >> $HOME/.bashrc
% # make changes availabel this session
% source ~/.bashrc
% # man stuff
% cd doc
% cp -r ./* /usr/man/man1

КОНЕЦ РАЗДЕЛА TL;DR


Детали

С тех пор, как я опубликовал это в мае 2018 года, в программное обеспечение, наконец, были внесены некоторые обновления:

Я разместил свой вопрос в мае 2018 года, а обновления были сделаны осенью 2018 года. Они частично решают проблемы, с которыми я столкнулся здесь, но некоторая информация в README и немного makefiles здесь полезно отметить.

Проблема с 32- на 64-битную версию (изменение -Os к -m64, как это было сделано выше) можно было найти через README.

% cat -n README.md | grep -A 4 "64 bits Compilation"
    61  **64 bits Compilation**:
    62  With big alignments, sctk needs to be compiled in 64 bits. By default, the C/C++ software are compiled in 32 bits with the options (`-Os`) but can be compiled in 64 bits. To do so, `-m64` is added to the CFLAGS variable in `src/asclite/core/makefile`, `src/asclite/test/makefile`, `src/rfilter1/makefile` and `src/sclite/makefile`.
    63
    64  Example of `CFLAGS` for OSX 10.4+: `-fast -m64 -arch x86_64 -arch ppc64`
    65

Вот строка 62 с переносом слов

При больших выравниваниях sctk нужно компилировать в 64 бита. По умолчанию программное обеспечение C/C++ скомпилировано в 32 бита с параметрами (-Os), но может быть скомпилирован в 64 бита. Для этого-m64 добавляется в переменную CFLAGS в src/asclite/core/makefile, src/asclite/test/makefile, src/rfilter1/makefile а также src/sclite/makefile.

Поскольку не было -Os в src/rfilter1/makefile, Я не вносил никаких изменений.

Мне удалось без проблем завершить установку (включая отсутствие неудачных тестов). Вот моя системная информация.

$ uname -a
CYGWIN_NT-10.0 MyMachine 3.0.7(0.338/5/3) 2019-04-30 18:08 x86_64 Cygwin
$ bash --version | head -n 1
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
$ gcc --version | head -n 1
gcc (GCC) 7.4.0
$ g++ --version | head -n 1
g++ (GCC) 7.4.0
$ make --version | head -n 2
GNU Make 4.2.1
Built for x86_64-unknown-cygwin
$ systeminfo | sed -n 's/^OS\ *//p'
Name:                   Microsoft Windows 10 Enterprise
Version:                10.0.17134 N/A Build 17134
Manufacturer:           Microsoft Corporation
Configuration:          Member Workstation
Build Type:             Multiprocessor Free

Однако похоже, что некоторые другие люди, пытающиеся скомпилироватьCygwinбыли проблемы. Вот еще информация изREADME

% grep "Special Note to Cygwin users" README.md
*Special Note to Cygwin users:* it has been reported that compilation of `rfilter1` can fail in some case, please read the OPTIONS part of the `rfilter1/makefile` and adapt accordingly before retrying compilation.

Что ж, давайте посмотрим на makefile за rfilter1, и посмотрите, что некоторым из вас может понадобиться сделать.

% head -n 15 src/rfilter1/makefile | tail -7
###########################   Options for compilation  #########################
#######  If you have an very new version of GCC, the strcmp* family of functions
#######  is included in the distribution.  Changing the value of OPTIONS to
#######  be blank will diable the use of supplied versions of these functions.
#######  In particular, this behavior has been noted on some versions of cygwin
OPTIONS=-DNEED_STRCMP=1 $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)

Итак, если у вас есть rfilter1 проблемы с компиляцией, измените строку без комментариев на

OPTIONS= $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)

Другие вопросы по тегам