我目前正在尝试安装NIST' sclite
,它是SCTK 2.4.0(github或newer version)的一部分。我正在Cygwin
的{{1}}上尝试安装。安装使用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
然后我开始按照INSTALL
文件中的说明进行操作。
运行
cd sctk
工作正常,但在输入后
make config
我得到了
之后的输出make all
我已查看this SO post,但我已确定(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
注意
我问这个问题,然后回答我自己的问题。 (我喜欢StackOverflow允许我们这样做。)希望这将使人们更容易帮助我解决我在安装中遇到的问题。
讨论了我遇到的下一个问题here。你可以在这个问题的答案中看到下一个问题。
答案 0 :(得分:0)
(请参阅$ 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
解决方案问题的评论。)
此问题的解决方案位于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
。仅对列出的makefile执行此操作。我将举例说明其中一个列出的文件,但请注意,您必须为其他文件执行此操作。
-m64
当文件打开时,我找到了一行:
cd sctk
vim src/asclite/core/makefile
我改为
CFLAGS = -g -Os
(按下" CFLAGS = -g -m64
"进入i
模式,进行更改,按下" INSERT
",然后按& #34; Esc
"(写入和退出)后跟" :wq
")
我在所有列出的文件中进行了更改Enter
,因为该文件中没有src/rfilter1/makefile
。这最终变得很重要,因为如果我根本没有更改此文件,安装将无法正常工作。
完成此操作后,我运行-Os
,但我没有运行make clean
,因为这会撤消我们刚才所做的更改。我直接去了:
make config
这让我们超越了以前的状态。
此问题得到了解决,但还有另一个问题:
make all
我问过here。
答案 1 :(得分:0)
这是“ EASIER”解决方案。
以下是我所谓的“ 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上使用它的详细信息,请参见this问题/答案。
答案 2 :(得分:0)
更简便的解决方案-利用sclite
的新的编辑版本
以防有人发现此处的答案有用。我知道这里没有投票,但是我只是拿了一个奖杯告诉我这是我的第一个获得1000次观看的问题,因此我将更新答案以显示完成工作的最简单方法。
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自述文件(带引号)中加上了一些评论。
% 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
自从我于2018年5月发布此内容以来,终于对该软件进行了一些更新:
我于2018年5月发布了问题,并于2018年秋季进行了更新。这些更新部分地解决了我在这里遇到的问题,但是README
和一些makefiles
中的某些信息是在这里有用的提示。
可以通过-Os
找到32到64位的问题(将-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 ++软件使用选项(-Os
)以32位编译,但是可以以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
的{{1}},看看其中一些人可能需要做些什么。
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