运行Kaldi yesno实例时version `GLIBCXX_3.4.21' not found的原因_grep: exp/mono0a/decode_test_yesno/wer_*: no such -程序员宅基地

技术标签: ASR  NLP  机器学习  Kaldi  人工智能  语音识别  

最近开始倒腾Kaldi走了一些弯路,一心想在Windows上摸索,编译神马的都OK,最后却拦在了Kaldi最核心、最重要的脚本上;由于Windows下对软连接支持不好(甚至说是完全不能),放弃!!!转为linux(这个才是与国际接轨的)下:


Linux下也是经历了很多曲折,什么GCC版本过低等等~~~~今天的话题是利用升级后的GCC编译完成Kaldi程式后,脚本运行时出现的“version `GLIBCXX_3.4.21' not found”问题:

arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by arpa2fst)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by arpa2fst)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by arpa2fst)
arpa2fst: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-lm.so)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-lm.so)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-lm.so)
arpa2fst: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-lm.so)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-lm.so)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-util.so)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-util.so)
arpa2fst: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-matrix.so)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-base.so)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst/lib/libfst.so.7)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst/lib/libfst.so.7)
arpa2fst: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/houwenbin/kaldi-master/tools/openfst/lib/libfst.so.7)
arpa2fst: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst/lib/libfst.so.7)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by fstisstochastic)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by fstisstochastic)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by fstisstochastic)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-fstext.so)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-fstext.so)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-fstext.so)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-util.so)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-util.so)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-matrix.so)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/src/lib/libkaldi-base.so)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst/lib/libfst.so.7)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst/lib/libfst.so.7)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/houwenbin/kaldi-master/tools/openfst/lib/libfst.so.7)
fstisstochastic: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst/lib/libfst.so.7)
fstcompile: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by fstcompile)
fstcompile: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstcompile: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstcompile: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstcompile: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstcompile: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstcompile: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstcompile: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstarcsort: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by fstarcsort)
fstarcsort: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstarcsort: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstarcsort: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstarcsort: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstarcsort: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstarcsort: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstarcsort: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstcompose: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by fstcompose)
fstcompose: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstcompose: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstcompose: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstcompose: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstcompose: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstcompose: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstcompose: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstinfo: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by fstinfo)
fstinfo: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstinfo: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstinfo: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfstscript.so.7)
fstinfo: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstinfo: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstinfo: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)
fstinfo: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/houwenbin/kaldi-master/tools/openfst-1.6.2/lib/libfst.so.7)

命令一查,确实是:

[houwenbin@localhost s5]$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

想了想,由于GCC升级缘故造成的:参考拷贝到/usr/lib64/....更改软连接指向最新的:

[houwenbin@localhost s5]$ cp /usr/local/gcc-4.9.4/lib64/libstdc++.so.6.0.20 /usr/lib64/
cp: cannot create regular file `/usr/lib64/libstdc++.so.6.0.20': Permission denied
[houwenbin@localhost s5]$ sudo cp /usr/local/gcc-4.9.4/lib64/libstdc++.so.6.0.20 /usr/lib64/
[sudo] password for houwenbin: 
[houwenbin@localhost s5]$ 
[houwenbin@localhost s5]$ rm -f /usr/lib64/libstdc++.so.6
rm: cannot remove `/usr/lib64/libstdc++.so.6': Permission denied
[houwenbin@localhost s5]$ sudo rm -f /usr/lib64/libstdc++.so.6
[houwenbin@localhost s5]$ 
[houwenbin@localhost s5]$ sudo ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6
[houwenbin@localhost s5]$ 
[houwenbin@localhost s5]$ ll /usr/lib64/libstdc*
lrwxrwxrwx 1 root root      30 Nov 27 01:48 /usr/lib64/libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.20
-rwxr-xr-x 1 root root  989840 May 10  2016 /usr/lib64/libstdc++.so.6.0.13
-rwxr-xr-x 1 root root 6779708 Nov 27 01:44 /usr/lib64/libstdc++.so.6.0.20
[houwenbin@localhost s5]$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH


再运行yesno例子:发现还是有问题,但不是

[houwenbin@localhost s5]$ ./run.sh 
--2017-11-27 02:00:42--  http://www.openslr.org/resources/1/waves_yesno.tar.gz
Resolving www.openslr.org... 46.101.158.64
Connecting to www.openslr.org|46.101.158.64|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4703754 (4.5M) [application/x-gzip]
Saving to: `waves_yesno.tar.gz.1'


100%[===========================================================================================>] 4,703,754    317K/s   in 18s     


2017-11-27 02:01:01 (253 KB/s) - `waves_yesno.tar.gz.1' saved [4703754/4703754]


waves_yesno/
waves_yesno/1_0_0_0_0_0_1_1.wav
waves_yesno/1_1_0_0_1_0_1_0.wav
waves_yesno/1_0_1_1_1_1_0_1.wav
waves_yesno/1_1_1_1_0_1_0_0.wav
waves_yesno/0_0_1_1_1_0_0_0.wav
waves_yesno/0_1_1_1_1_1_1_1.wav
waves_yesno/0_1_0_1_1_1_0_0.wav
waves_yesno/1_0_1_1_1_0_1_0.wav
waves_yesno/1_0_0_1_0_1_1_1.wav
waves_yesno/0_0_1_0_1_0_0_0.wav
waves_yesno/0_1_0_1_1_0_1_0.wav
waves_yesno/0_0_1_1_0_1_1_0.wav
waves_yesno/1_0_0_0_1_0_0_1.wav
waves_yesno/1_1_0_1_1_1_1_0.wav
waves_yesno/0_0_1_1_1_1_0_0.wav
waves_yesno/1_1_0_0_1_1_1_0.wav
waves_yesno/0_0_1_1_0_1_1_1.wav
waves_yesno/1_1_0_1_0_1_1_0.wav
waves_yesno/0_1_0_0_0_1_1_0.wav
waves_yesno/0_0_0_1_0_0_0_1.wav
waves_yesno/0_0_1_0_1_0_1_1.wav
waves_yesno/0_0_1_0_0_0_1_0.wav
waves_yesno/1_1_0_1_1_0_0_1.wav
waves_yesno/0_1_1_1_0_1_0_1.wav
waves_yesno/0_1_1_1_0_0_0_0.wav
waves_yesno/README~
waves_yesno/0_1_0_0_0_1_0_0.wav
waves_yesno/1_0_0_0_0_0_0_1.wav
waves_yesno/1_1_0_1_1_0_1_1.wav
waves_yesno/1_1_0_0_0_0_0_1.wav
waves_yesno/1_0_0_0_0_0_0_0.wav
waves_yesno/0_1_1_1_1_0_1_0.wav
waves_yesno/0_0_1_1_0_1_0_0.wav
waves_yesno/1_1_1_0_0_0_0_1.wav
waves_yesno/1_0_1_0_1_0_0_1.wav
waves_yesno/0_1_0_0_1_0_1_1.wav
waves_yesno/0_0_1_1_1_1_1_0.wav
waves_yesno/1_1_0_0_0_1_1_1.wav
waves_yesno/0_1_1_1_0_0_1_0.wav
waves_yesno/1_1_0_1_0_1_0_0.wav
waves_yesno/1_1_1_1_1_1_1_1.wav
waves_yesno/0_0_1_0_1_0_0_1.wav
waves_yesno/1_1_1_1_0_0_1_0.wav
waves_yesno/0_0_1_1_1_0_0_1.wav
waves_yesno/0_1_0_1_0_0_0_0.wav
waves_yesno/1_1_1_1_1_0_0_0.wav
waves_yesno/README
waves_yesno/0_1_1_0_0_1_1_1.wav
waves_yesno/0_0_1_0_0_1_1_0.wav
waves_yesno/1_1_0_0_1_0_1_1.wav
waves_yesno/1_1_1_0_0_1_0_1.wav
waves_yesno/0_0_1_0_0_1_1_1.wav
waves_yesno/0_0_1_1_0_0_0_1.wav
waves_yesno/1_0_1_1_0_1_1_1.wav
waves_yesno/1_1_1_0_1_0_1_0.wav
waves_yesno/1_1_1_0_1_0_1_1.wav
waves_yesno/0_1_0_0_1_0_1_0.wav
waves_yesno/1_1_1_0_0_1_1_1.wav
waves_yesno/0_1_1_0_0_1_1_0.wav
waves_yesno/0_0_0_1_0_1_1_0.wav
waves_yesno/1_1_1_1_1_1_0_0.wav
waves_yesno/0_0_0_0_1_1_1_1.wav
Preparing train and test data
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "zh_CN.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "zh_CN.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "zh_CN.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "zh_CN.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "zh_CN.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "zh_CN.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "zh_CN.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Dictionary preparation succeeded
utils/prepare_lang.sh --position-dependent-phones false data/local/dict <SIL> data/local/lang data/lang
Feature "unicode_strings" is not supported by Perl 5.10.1 at utils/validate_dict_dir.pl line 56
BEGIN failed--compilation aborted at utils/validate_dict_dir.pl line 56.
*Error validating directory data/local/dict*
Preparing language models for test
arpa2fst --disambig-symbol=#0 --read-symbol-table=data/lang_test_tg/words.txt input/task.arpabo data/lang_test_tg/G.fst 
ERROR (arpa2fst[5.2]:Input():kaldi-io.cc:742) Error opening input stream data/lang_test_tg/words.txt


[ Stack-Trace: ]


kaldi::MessageLogger::HandleMessage(kaldi::LogMessageEnvelope const&, char const*)
kaldi::MessageLogger::~MessageLogger()
kaldi::Input::Input(std::string const&, bool*)
main
__libc_start_main
arpa2fst() [0x445939]


fstisstochastic data/lang_test_tg/G.fst 
ERROR (fstisstochastic[5.2]:Input():kaldi-io.cc:742) Error opening input stream data/lang_test_tg/G.fst


[ Stack-Trace: ]


kaldi::MessageLogger::HandleMessage(kaldi::LogMessageEnvelope const&, char const*)
kaldi::MessageLogger::~MessageLogger()
kaldi::Input::Input(std::string const&, bool*)
fst::ReadFstKaldiGeneric(std::string, bool)
main
__libc_start_main
fstisstochastic() [0x446949]


ERROR: SymbolTable::ReadText: Can't open file data/lang_test_tg/words.txt
ERROR: FstHeader::Read: Bad FST header: standard input
ERROR: FstHeader::Read: Bad FST header: standard input
ERROR: FstHeader::Read: Bad FST header: tmpdir.g/empty_words.fst
Succeeded in formatting data.
steps/make_mfcc.sh --nj 1 data/train_yesno exp/make_mfcc/train_yesno mfcc
utils/validate_data_dir.sh: WARNING: you have only one speaker.  This probably a bad idea.
   Search for the word 'bold' in http://kaldi-asr.org/doc/data_prep.html
   for more information.
Feature "unicode_strings" is not supported by Perl 5.10.1 at utils/validate_text.pl line 72
BEGIN failed--compilation aborted at utils/validate_text.pl line 72.
steps/compute_cmvn_stats.sh data/train_yesno exp/make_mfcc/train_yesno mfcc
make_cmvn.sh: no such file data/train_yesno/feats.scp
fix_data_dir.sh: kept all 31 utterances.
fix_data_dir.sh: old files are kept in data/train_yesno/.backup
steps/make_mfcc.sh --nj 1 data/test_yesno exp/make_mfcc/test_yesno mfcc
utils/validate_data_dir.sh: WARNING: you have only one speaker.  This probably a bad idea.
   Search for the word 'bold' in http://kaldi-asr.org/doc/data_prep.html
   for more information.
Feature "unicode_strings" is not supported by Perl 5.10.1 at utils/validate_text.pl line 72
BEGIN failed--compilation aborted at utils/validate_text.pl line 72.
steps/compute_cmvn_stats.sh data/test_yesno exp/make_mfcc/test_yesno mfcc
make_cmvn.sh: no such file data/test_yesno/feats.scp
fix_data_dir.sh: kept all 31 utterances.
fix_data_dir.sh: old files are kept in data/test_yesno/.backup
steps/train_mono.sh --nj 1 --cmd utils/run.pl --totgauss 400 data/train_yesno data/lang exp/mono0a
cat: data/lang/oov.int: No such file or directory
mkgraph.sh: expected data/lang_test_tg/L.fst to exist
steps/decode.sh --nj 1 --cmd utils/run.pl exp/mono0a/graph_tgpr data/test_yesno exp/mono0a/decode_test_yesno
decode.sh: no such file data/test_yesno/split1/1/feats.scp
grep: exp/mono0a/decode_test_yesno/wer_*: No such file or directory
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "zh_CN.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

紧接着上面的错误信息:

1、首先解决locale相关的问题:

修改~/.bashrc

在最底部添加 LC_ALL="C" 所以可以这样运行

qifa@ts-server:~$ echo "export LC_ALL=\"C\"">>~/.bashrc
qifa@ts-server:~$ source ~/.bashrc


2、解决Feature "unicode_strings" is not supported by Perl 5.10.1可以看出是版本不支持这个feature:http://perldoc.perl.org/feature.html#The-'unicode_strings'-feature

This feature is available starting with Perl 5.12; was almost fully implemented in Perl 5.14; and extended in Perl 5.16 to cover quotemeta; and extended further in Perl 5.26 to cover the range operator.

那就升级Perl版本了:


最终结果:

[houwenbin@localhost perl-5.26.1]$ sudo rm -rf /usr/bin/per
perl        perl5.10.1  perlbug     perldoc     perlivp     perlthanks  perror      
[houwenbin@localhost perl-5.26.1]$ sudo rm -rf /usr/bin/perl
[houwenbin@localhost perl-5.26.1]$ 
[houwenbin@localhost perl-5.26.1]$ 
[houwenbin@localhost perl-5.26.1]$ sudo ln -s /usr/local/perl/bin/perl /usr/bin/perl
[houwenbin@localhost perl-5.26.1]$ 
[houwenbin@localhost perl-5.26.1]$ perl -v

This is perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux

Copyright 1987-2017, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

[houwenbin@localhost perl-5.26.1]$ 
[houwenbin@localhost perl-5.26.1]$ cd ~/kaldi-master/egs/yesno/s5/
[houwenbin@localhost s5]$ 
[houwenbin@localhost s5]$ ./run.sh 
Preparing train and test data
Dictionary preparation succeeded
utils/prepare_lang.sh --position-dependent-phones false data/local/dict <SIL> data/local/lang data/lang
Checking data/local/dict/silence_phones.txt ...
--> reading data/local/dict/silence_phones.txt
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> data/local/dict/silence_phones.txt is OK

Checking data/local/dict/optional_silence.txt ...
--> reading data/local/dict/optional_silence.txt
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> data/local/dict/optional_silence.txt is OK

Checking data/local/dict/nonsilence_phones.txt ...
--> reading data/local/dict/nonsilence_phones.txt
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> data/local/dict/nonsilence_phones.txt is OK

Checking disjoint: silence_phones.txt, nonsilence_phones.txt
--> disjoint property is OK.

Checking data/local/dict/lexicon.txt
--> reading data/local/dict/lexicon.txt
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> data/local/dict/lexicon.txt is OK

Checking data/local/dict/extra_questions.txt ...
--> data/local/dict/extra_questions.txt is empty (this is OK)
--> SUCCESS [validating dictionary directory data/local/dict]

**Creating data/local/dict/lexiconp.txt from data/local/dict/lexicon.txt
fstaddselfloops data/lang/phones/wdisambig_phones.int data/lang/phones/wdisambig_words.int 
prepare_lang.sh: validating output directory
utils/validate_lang.pl data/lang
Checking data/lang/phones.txt ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> data/lang/phones.txt is OK

Checking words.txt: #0 ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> data/lang/words.txt is OK

Checking disjoint: silence.txt, nonsilence.txt, disambig.txt ...
--> silence.txt and nonsilence.txt are disjoint
--> silence.txt and disambig.txt are disjoint
--> disambig.txt and nonsilence.txt are disjoint
--> disjoint property is OK

Checking sumation: silence.txt, nonsilence.txt, disambig.txt ...
--> summation property is OK

Checking data/lang/phones/context_indep.{txt, int, csl} ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> 1 entry/entries in data/lang/phones/context_indep.txt
--> data/lang/phones/context_indep.int corresponds to data/lang/phones/context_indep.txt
--> data/lang/phones/context_indep.csl corresponds to data/lang/phones/context_indep.txt
--> data/lang/phones/context_indep.{txt, int, csl} are OK

Checking data/lang/phones/nonsilence.{txt, int, csl} ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> 2 entry/entries in data/lang/phones/nonsilence.txt
--> data/lang/phones/nonsilence.int corresponds to data/lang/phones/nonsilence.txt
--> data/lang/phones/nonsilence.csl corresponds to data/lang/phones/nonsilence.txt
--> data/lang/phones/nonsilence.{txt, int, csl} are OK

Checking data/lang/phones/silence.{txt, int, csl} ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> 1 entry/entries in data/lang/phones/silence.txt
--> data/lang/phones/silence.int corresponds to data/lang/phones/silence.txt
--> data/lang/phones/silence.csl corresponds to data/lang/phones/silence.txt
--> data/lang/phones/silence.{txt, int, csl} are OK

Checking data/lang/phones/optional_silence.{txt, int, csl} ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> 1 entry/entries in data/lang/phones/optional_silence.txt
--> data/lang/phones/optional_silence.int corresponds to data/lang/phones/optional_silence.txt
--> data/lang/phones/optional_silence.csl corresponds to data/lang/phones/optional_silence.txt
--> data/lang/phones/optional_silence.{txt, int, csl} are OK

Checking data/lang/phones/disambig.{txt, int, csl} ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> 2 entry/entries in data/lang/phones/disambig.txt
--> data/lang/phones/disambig.int corresponds to data/lang/phones/disambig.txt
--> data/lang/phones/disambig.csl corresponds to data/lang/phones/disambig.txt
--> data/lang/phones/disambig.{txt, int, csl} are OK

Checking data/lang/phones/roots.{txt, int} ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> 3 entry/entries in data/lang/phones/roots.txt
--> data/lang/phones/roots.int corresponds to data/lang/phones/roots.txt
--> data/lang/phones/roots.{txt, int} are OK

Checking data/lang/phones/sets.{txt, int} ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> 3 entry/entries in data/lang/phones/sets.txt
--> data/lang/phones/sets.int corresponds to data/lang/phones/sets.txt
--> data/lang/phones/sets.{txt, int} are OK

Checking data/lang/phones/extra_questions.{txt, int} ...
Checking optional_silence.txt ...
--> reading data/lang/phones/optional_silence.txt
--> data/lang/phones/optional_silence.txt is OK

Checking disambiguation symbols: #0 and #1
--> data/lang/phones/disambig.txt has "#0" and "#1"
--> data/lang/phones/disambig.txt is OK

Checking topo ...

Checking word-level disambiguation symbols...
--> data/lang/phones/wdisambig.txt exists (newer prepare_lang.sh)
Checking data/lang/oov.{txt, int} ...
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
--> 1 entry/entries in data/lang/oov.txt
--> data/lang/oov.int corresponds to data/lang/oov.txt
--> data/lang/oov.{txt, int} are OK

--> data/lang/L.fst is olabel sorted
--> data/lang/L_disambig.fst is olabel sorted
--> SUCCESS [validating lang directory data/lang]
Preparing language models for test
arpa2fst --disambig-symbol=#0 --read-symbol-table=data/lang_test_tg/words.txt input/task.arpabo data/lang_test_tg/G.fst 
LOG (arpa2fst[5.2]:Read():arpa-file-parser.cc:98) Reading \data\ section.
LOG (arpa2fst[5.2]:Read():arpa-file-parser.cc:153) Reading \1-grams: section.
LOG (arpa2fst[5.2]:RemoveRedundantStates():arpa-lm-compiler.cc:359) Reduced num-states from 1 to 1
fstisstochastic data/lang_test_tg/G.fst 
1.20397 1.20397
Succeeded in formatting data.
steps/make_mfcc.sh --nj 1 data/train_yesno exp/make_mfcc/train_yesno mfcc
utils/validate_data_dir.sh: WARNING: you have only one speaker.  This probably a bad idea.
   Search for the word 'bold' in http://kaldi-asr.org/doc/data_prep.html
   for more information.
Checking data/train_yesno/text ...
--> reading data/train_yesno/text
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
utils/validate_data_dir.sh: Successfully validated data-directory data/train_yesno
steps/make_mfcc.sh: [info]: no segments file exists: assuming wav.scp indexed by utterance.
Succeeded creating MFCC features for train_yesno
steps/compute_cmvn_stats.sh data/train_yesno exp/make_mfcc/train_yesno mfcc
Succeeded creating CMVN stats for train_yesno
fix_data_dir.sh: kept all 31 utterances.
fix_data_dir.sh: old files are kept in data/train_yesno/.backup
steps/make_mfcc.sh --nj 1 data/test_yesno exp/make_mfcc/test_yesno mfcc
utils/validate_data_dir.sh: WARNING: you have only one speaker.  This probably a bad idea.
   Search for the word 'bold' in http://kaldi-asr.org/doc/data_prep.html
   for more information.
Checking data/test_yesno/text ...
--> reading data/test_yesno/text
--> text seems to be UTF-8 or ASCII, checking whitespaces
--> text contains only allowed whitespaces
utils/validate_data_dir.sh: Successfully validated data-directory data/test_yesno
steps/make_mfcc.sh: [info]: no segments file exists: assuming wav.scp indexed by utterance.
It seems not all of the feature files were successfully processed (29 != 31);
consider using utils/fix_data_dir.sh data/test_yesno
Less than 95% the features were successfully generated.  Probably a serious error.
steps/compute_cmvn_stats.sh data/test_yesno exp/make_mfcc/test_yesno mfcc
Succeeded creating CMVN stats for test_yesno
fix_data_dir.sh: kept 29 utterances out of 31
fix_data_dir.sh: old files are kept in data/test_yesno/.backup
steps/train_mono.sh --nj 1 --cmd utils/run.pl --totgauss 400 data/train_yesno data/lang exp/mono0a
steps/train_mono.sh: Initializing monophone system.
steps/train_mono.sh: Compiling training graphs
steps/train_mono.sh: Aligning data equally (pass 0)
steps/train_mono.sh: Pass 1
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 2
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 3
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 4
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 5
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 6
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 7
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 8
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 9
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 10
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 11
steps/train_mono.sh: Pass 12
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 13
steps/train_mono.sh: Pass 14
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 15
steps/train_mono.sh: Pass 16
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 17
steps/train_mono.sh: Pass 18
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 19
steps/train_mono.sh: Pass 20
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 21
steps/train_mono.sh: Pass 22
steps/train_mono.sh: Pass 23
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 24
steps/train_mono.sh: Pass 25
steps/train_mono.sh: Pass 26
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 27
steps/train_mono.sh: Pass 28
steps/train_mono.sh: Pass 29
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 30
steps/train_mono.sh: Pass 31
steps/train_mono.sh: Pass 32
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 33
steps/train_mono.sh: Pass 34
steps/train_mono.sh: Pass 35
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 36
steps/train_mono.sh: Pass 37
steps/train_mono.sh: Pass 38
steps/train_mono.sh: Aligning data
steps/train_mono.sh: Pass 39
steps/diagnostic/analyze_alignments.sh --cmd utils/run.pl data/lang exp/mono0a
steps/diagnostic/analyze_alignments.sh: see stats in exp/mono0a/log/analyze_alignments.log
1 warnings in exp/mono0a/log/update.*.log
exp/mono0a: nj=1 align prob=-81.88 over 0.05h [retry=0.0%, fail=0.0%] states=11 gauss=371
steps/train_mono.sh: Done training monophone system in exp/mono0a
tree-info exp/mono0a/tree 
tree-info exp/mono0a/tree 
fsttablecompose data/lang_test_tg/L_disambig.fst data/lang_test_tg/G.fst 
fstminimizeencoded 
fstpushspecial 
fstdeterminizestar --use-log=true 
fstisstochastic data/lang_test_tg/tmp/LG.fst 
0.534295 0.533859
[info]: LG not stochastic.
fstcomposecontext --context-size=1 --central-position=0 --read-disambig-syms=data/lang_test_tg/phones/disambig.int --write-disambig-syms=data/lang_test_tg/tmp/disambig_ilabels_1_0.int data/lang_test_tg/tmp/ilabels_1_0.11399 
fstisstochastic data/lang_test_tg/tmp/CLG_1_0.fst 
0.534295 0.533859
[info]: CLG not stochastic.
make-h-transducer --disambig-syms-out=exp/mono0a/graph_tgpr/disambig_tid.int --transition-scale=1.0 data/lang_test_tg/tmp/ilabels_1_0 exp/mono0a/tree exp/mono0a/final.mdl 
fsttablecompose exp/mono0a/graph_tgpr/Ha.fst data/lang_test_tg/tmp/CLG_1_0.fst 
fstminimizeencoded 
fstdeterminizestar --use-log=true 
fstrmsymbols exp/mono0a/graph_tgpr/disambig_tid.int 
fstrmepslocal 
fstisstochastic exp/mono0a/graph_tgpr/HCLGa.fst 
0.5342 -0.000422432
HCLGa is not stochastic
add-self-loops --self-loop-scale=0.1 --reorder=true exp/mono0a/final.mdl 
steps/decode.sh --nj 1 --cmd utils/run.pl exp/mono0a/graph_tgpr data/test_yesno exp/mono0a/decode_test_yesno
decode.sh: feature type is delta
steps/diagnostic/analyze_lats.sh --cmd utils/run.pl exp/mono0a/graph_tgpr exp/mono0a/decode_test_yesno
steps/diagnostic/analyze_lats.sh: see stats in exp/mono0a/decode_test_yesno/log/analyze_alignments.log
Overall, lattice depth (10,50,90-percentile)=(1,1,2) and mean=1.2
steps/diagnostic/analyze_lats.sh: see stats in exp/mono0a/decode_test_yesno/log/analyze_lattice_depth_stats.log
local/score.sh --cmd utils/run.pl data/test_yesno exp/mono0a/graph_tgpr exp/mono0a/decode_test_yesno
local/score.sh: scoring with word insertion penalty=0.0,0.5,1.0
%WER 0.00 [ 0 / 232, 0 ins, 0 del, 0 sub ] exp/mono0a/decode_test_yesno/wer_10_0.0

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/houwenbin1986/article/details/78642192

智能推荐

SSD1306显示屏--躲避类游戏_proteus躲避游戏-程序员宅基地

文章浏览阅读654次。SSD1306显示屏–躲避类游戏要求:​ 使用Arduino控制OLED显示屏SSD1306(proteus中搜索UG-2864HSWEG01),再连接几个按钮。观察下面视频中的游戏,在Arduino上编程实现相同效果:效果视频注:题目来自HBUE的硬件编程考题,本代码仍有缺陷,显示器闪动较严重,且不够简洁。此代码电路仅供学习交流使用,转载使用时请注明来处。/*SOFTWARE: Proteus 8 ProfessionalCSDN: 空白之子公众号:硬核开发(正在建设中)*/#i_proteus躲避游戏

Intellij IEAD上创建java web项目并且部署到tomcat上_如何把iead中的web配置到tomcat服务器的目录下-程序员宅基地

文章浏览阅读411次。具体操作步骤:打开idea,创建一个java web项目输入项目名称,指定项目路径在src文件下面创java文件导入Tomcat的两个jar包Artifacts 操作配置web.xml文件配置Tomcat开启tomcat*本次教程用idea2019版的创建的 *打开idea,创建一个java web项目必须勾选Web Application输入项目名称,指定项目路径在src文件下面创..._如何把iead中的web配置到tomcat服务器的目录下

volatile关键字 C++与Java的区别_c++ 和 java volatile-程序员宅基地

文章浏览阅读2.5k次。volatilevolatile这个单词在英文之中的意思是:易变的,不稳定的的含义。在Java中也有volatile关键字,Java之中volatile的作用是:确保内存可见性:读写变量具有全局有序性,保证当前线程读到的值是内存中最新的,而不是缓存中的值。但是volatile关键字并不保证线程读写变量的相对顺序,所以适用场景有限。禁止指令重排序:指令重排序是JVM为了提高运行程序的效率,..._c++ 和 java volatile

Python 命令行工具 argparse 模块使用详解_parser = argparse.argumentparser()-程序员宅基地

文章浏览阅读822次。先来介绍一把最基本的用法import argparseparser = argparse.ArgumentParser()parser.parse_args()在执行 parse_args() 之前,所有追加到命令行的参数都不会生效,生效了之后的默认情况类似于这样:设置默认参数函数:import argparseparser = argparse.Argum..._parser = argparse.argumentparser()

iOS 调用相机,获取相册,截取头像_ios 调用相机 截图-程序员宅基地

文章浏览阅读1.7k次。iOS 调用相机,获取相册,截取头像前言应用经常需要使用到用户提供的图像。iOS提供了两种方式:UIImagePickerController和资产库:(asset library)。UIImagePickerController提供了导航相册和照片的模态用户界面,适合在应用没有特殊的照片浏览和选择需求(即Apple提供的风格就能满足要求)时使用;资产库提供了全面的照片和相册访问功能,适合在图像导航_ios 调用相机 截图

使用Bootstrap制作简单的旅游主页-程序员宅基地

文章浏览阅读464次。页面效果代码:需要导入bootstrapt文件,解压至项目中。下载地址:https://v3.bootcss.com/getting-started/#download<!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8"> <..._使用bootstrap制作旅游网站

随便推点

使用Java操作PDF文档-程序员宅基地

文章浏览阅读553次。1.文档内容的基本格式设置 示例代码:package com.yan.exc;import java.awt.Color;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import javax.swing.JO..._java com.lowagie.text.pdf.pdfreader 第三张第四章的时候方向反了

SpringBoot系列一:入门_:spring boot可以把web应用程 序变为可自执行的jar文件这句话正确吗-程序员宅基地

文章浏览阅读358次。SpringBoot提供了一种新的编程范式,能在最小的阻力下开发Spring应用程序,有了它你可以敏捷地开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功夫,甚至完全不用配置。_:spring boot可以把web应用程 序变为可自执行的jar文件这句话正确吗

让我们来认识一下信号与系统的关系_身边信号作用于系统的例子-程序员宅基地

文章浏览阅读2.2k次。第一课什么是卷积卷积有什么用什么是傅利叶变换什么是拉普拉斯变换引子很多朋友和我一样,工科电子类专业,学了一堆信号方面的课,什么都没学懂,背了公式考了试,然后毕业了。先说"卷积有什么用"这个问题。(有人抢答,"卷积"是为了学习"信号与系统"这门课的后续章节而存在的。我大吼一声,把他拖出去枪毙!)讲一个故事:张三刚刚应聘到了一个电子产品公司做测试人员,他没有学过"信号与系统"这门课程。一天,他拿到了一个产品,开发人员告诉他,产品有一个输入端,有一个输出端,有限的输入信号只会产生有_身边信号作用于系统的例子

云计算和虚拟化技术_云计算与虚拟化技术-程序员宅基地

文章浏览阅读6.3k次,点赞8次,收藏58次。# 写于2021.04.10# 本文为学习笔记,用的ppt是陈羽中教授版,侵删# 笔记只为交流,入门小白,有错望留言纠正# 总结不易 望赞鼓励1. 大数据和云计算1.1 大数据现象是怎么形成的?形成 人用的多了 产生数据设备多了大数据时代导致数据有以下特点:1.2 云计算有哪些特点?超大规模虚拟化高可靠性通用性高可伸缩性按需服务极其廉价1.3 云计算你找服务类型可分为哪几类?1.4 云计算技术体系结构可分为哪几层?资源池和管理中间件层为云计算技术的_云计算与虚拟化技术

《3D数学基础:图形与游戏开发 》_3d数学基础图形与游戏开发 博客-程序员宅基地

文章浏览阅读2.7k次。1,什么是欧拉角?2,万向锁是一种什么现象?3,游戏动画中遇到万向锁时会发生什么?4,怎样解决万向锁这个问题? 一,什么是欧拉角? 用一句话说,欧拉角就是物体绕坐标系三个坐标轴(x,y,z轴)的旋转角度。在这里,坐标系可以是世界坐标系,也可以是物体坐标系,旋转顺序也是任意的,可以是xyz,xzy,yxz,zxy,yzx,zyx中的任何一种,_3d数学基础图形与游戏开发 博客

推流工具_link.hostname.av_len 0-程序员宅基地

文章浏览阅读1.4k次。一 大家有用过librtmp可曾遇到一个比较头疼的问题向某家视频云推送视频的时候,需要指定域名,但是又想指定接入服务器ip。librtmp里面自己给解析了域名,看看源码实现。RTMP_Connect(RTMP *r, RTMPPacket *cp, unsigned int *outip, unsigned int *selfPort){//fix the problem of when rtmp..._link.hostname.av_len 0

推荐文章

热门文章

相关标签