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)