chenkui164 / FastASR

这是一个用C++实现ASR推理的项目,它依赖很少,安装也很简单,推理速度很快,在树莓派4B等ARM平台也可以流畅的运行。 支持的模型是由Google的Transformer模型中优化而来,数据集是开源wenetspeech(10000+小时)或阿里私有数据集(60000+小时), 所以识别效果也很好,可以媲美许多商用的ASR软件。
Apache License 2.0
472 stars 72 forks source link

make error #31

Closed v-yunbin closed 1 year ago

v-yunbin commented 1 year ago

[ 90%] Built target PyFastASR [ 92%] Building CXX object examples/CMakeFiles/paddlespeech_stream.dir/paddlespeech_stream.cpp.o [ 93%] Linking CXX executable paddlespeech_stream CMakeFiles/paddlespeech_stream.dir/paddlespeech_stream.cpp.o: In functionmain': paddlespeech_stream.cpp:(.text+0x1a7): undefined reference to std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' paddlespeech_stream.cpp:(.text+0x1da): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' paddlespeech_stream.cpp:(.text+0x239): undefined reference to std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' paddlespeech_stream.cpp:(.text+0x2c1): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' paddlespeech_stream.cpp:(.text+0x2e9): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' paddlespeech_stream.cpp:(.text+0x2fd): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ../lib/libfastasr.a(ModelImp.cpp.o): In function paddlespeech::ModelImp::ModelImp(char const*, int)': ModelImp.cpp:(.text+0x96): undefined reference tostd::__cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)' ModelImp.cpp:(.text+0xc5): undefined reference to `std::cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, std::allocator const&)' ModelImp.cpp:(.text+0xee): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ModelImp.cpp:(.text+0x11d): undefined reference tostd::__cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, std::allocator const&)' ModelImp.cpp:(.text+0x146): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ModelImp.cpp:(.text+0x161): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::c_str() const' ModelImp.cpp:(.text+0x185): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const' ModelImp.cpp:(.text+0x358): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ModelImp.cpp:(.text+0x367): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ModelImp.cpp:(.text+0x376): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ModelImp.cpp:(.text+0x3ba): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ModelImp.cpp:(.text+0x3df): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ../lib/libfastasr.a(ModelImp.cpp.o):ModelImp.cpp:(.text+0x464): more undefined references to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' follow ../lib/libfastasr.a(ModelImp.cpp.o): In functionkaldi2::ModelImp::ModelImp(char const, int)': ModelImp.cpp:(.text+0x6e): undefined reference to `std::__cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, std::allocator const&)' ModelImp.cpp:(.text+0x97): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' ModelImp.cpp:(.text+0xc6): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ModelImp.cpp:(.text+0xe1): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ModelImp.cpp:(.text+0x113): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, std::allocator const&)' ModelImp.cpp:(.text+0x139): undefined reference to `std::__cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, std::allocator const&)' ModelImp.cpp:(.text+0x15f): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ModelImp.cpp:(.text+0x177): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ModelImp.cpp:(.text+0x192): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const' ModelImp.cpp:(.text+0x1ef): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::c_str() const' ModelImp.cpp:(.text+0x300): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ModelImp.cpp:(.text+0x30f): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ModelImp.cpp:(.text+0x326): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ModelImp.cpp:(.text+0x346): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ModelImp.cpp:(.text+0x374): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ../lib/libfastasr.a(ModelImp.cpp.o):ModelImp.cpp:(.text+0x391): more undefined references tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' follow ../lib/libfastasr.a(ModelImp.cpp.o): In function kaldi2::ModelImp::forward_chunk[abi:cxx11](float*, int, int)': ModelImp.cpp:(.text+0x8dd): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, std::allocator const&)' ../lib/libfastasr.a(ModelImp.cpp.o): In function kaldi2::ModelImp::rescoring[abi:cxx11]()': ModelImp.cpp:(.text+0x950): undefined reference tostd::__cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, std::allocator const&)' ../lib/libfastasr.a(Vocab.cpp.o): In function Vocab::Vocab(char const*)': Vocab.cpp:(.text+0x52): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string()' Vocab.cpp:(.text+0x67): undefined reference to std::basic_ios<char, std::char_traits<char> >::operator bool() const' Vocab.cpp:(.text+0x84): undefined reference tostd::basic_istream<char, std::char_traits >& std::getline<char, std::char_traits, std::allocator >(std::basic_istream<char, std::char_traits >&, std::cxx11::basic_string<char, std::char_traits, std::allocator >&)' Vocab.cpp:(.text+0x99): undefined reference to std::basic_ios<char, std::char_traits<char> >::operator bool() const' Vocab.cpp:(.text+0xc7): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' Vocab.cpp:(.text+0xea): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ../lib/libfastasr.a(Vocab.cpp.o): In functionVocab::vector2string[abi:cxx11](std::vector<int, std::allocator >)': Vocab.cpp:(.text+0x181): undefined reference to `std::cxx11::basic_stringstream<char, std::char_traits, std::allocator >::basic_stringstream(std::_Ios_Openmode)' Vocab.cpp:(.text+0x203): undefined reference to std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' Vocab.cpp:(.text+0x235): undefined reference tostd::cxx11::basic_stringstream<char, std::char_traits, std::allocator >::str() const' Vocab.cpp:(.text+0x245): undefined reference to `std::cxx11::basic_stringstream<char, std::char_traits, std::allocator >::~basic_stringstream()' Vocab.cpp:(.text+0x259): undefined reference to std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream()' ../lib/libfastasr.a(Vocab.cpp.o): In functionvoid gnu_cxx::new_allocator<std::cxx11::basic_string<char, std::char_traits, std::allocator > >::construct<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&>(std::cxx11::basic_string<char, std::char_traits, std::allocator >*, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': Vocab.cpp:(.text._ZN9gnu_cxx13new_allocatorINSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE9constructIS6_JRKS6_EEEvPTDpOT0[_ZN9gnu_cxx13new_allocatorINSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE9constructIS6_JRKS6_EEEvPTDpOT0]+0x43): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ../lib/libfastasr.a(Vocab.cpp.o): In functionvoid gnu_cxx::new_allocator<std::cxx11::basic_string<char, std::char_traits, std::allocator > >::destroy<std::cxx11::basic_string<char, std::char_traits, std::allocator > >(std::cxx11::basic_string<char, std::char_traits, std::allocator >)': Vocab.cpp:(.text._ZN9gnu_cxx13new_allocatorINSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE7destroyIS6EEvPT[_ZN9gnu_cxx13new_allocatorINSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE7destroyIS6EEvPT]+0x18): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ../lib/libfastasr.a(Vocab.cpp.o): In functionvoid std::_Destroy<std::cxx11::basic_string<char, std::char_traits, std::allocator > >(std::cxx11::basic_string<char, std::char_traits, std::allocator >)': Vocab.cpp:(.text._ZSt8_DestroyINSt7cxx1112basic_stringIcSt11chartraitsIcESaIcEEEEvPT[_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11chartraitsIcESaIcEEEEvPT]+0x14): undefined reference to `std::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ../lib/libfastasr.a(Vocab.cpp.o): In function void std::_Construct<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)': Vocab.cpp:(.text._ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_[_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_]+0x38): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(std::cxx11::basic_string<char, std::char_traits, std::allocator >&&)' ../lib/libfastasr.a(util.cpp.o): In function `pathAppend(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': util.cpp:(.text+0x381): undefined reference to `std::cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' util.cpp:(.text+0x38d): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::length() const' util.cpp:(.text+0x3a0): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::operator[](unsigned long) const' util.cpp:(.text+0x3bf): undefined reference to `std::cxx11::basic_string<char, std::char_traits, std::allocator >::operator+=(char)' util.cpp:(.text+0x3fb): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' util.cpp:(.text+0x40c): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ../lib/libfastasr.a(util.cpp.o): In function `std::__cxx11::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': util.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7cxx1112basic_stringIT_T0_T1_EERKS8SA[_ZStplIcSt11char_traitsIcESaIcEENSt7cxx1112basic_stringIT_T0_T1_EERKS8SA]+0x24): undefined reference to `std::cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' util.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7cxx1112basic_stringIT_T0_T1_EERKS8SA[_ZStplIcSt11char_traitsIcESaIcEENSt7cxx1112basic_stringIT_T0_T1_EERKS8SA]+0x37): undefined reference to `std::cxx11::basic_string<char, std::char_traits, std::allocator >::append(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' util.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7cxx1112basic_stringIT_T0_T1_EERKS8SA[_ZStplIcSt11char_traitsIcESaIcEENSt7cxx1112basic_stringIT_T0_T1_EERKS8SA]+0x48): undefined reference to `std::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' ../third_party/webrtc/libwebrtcvad.a(checks.cc.o): In function (anonymous namespace)::AppendFormat(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, char const*, ...)': checks.cc:(.text+0xeb): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::size() const' checks.cc:(.text+0x117): undefined reference to `std::cxx11::basic_string<char, std::char_traits, std::allocator >::resize(unsigned long)' checks.cc:(.text+0x13c): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)' ../third_party/webrtc/libwebrtcvad.a(checks.cc.o): In functionrtc::webrtc_checks_impl::ParseArg(va_list_tag (*) [1], rtc::webrtc_checks_impl::CheckArgType const**, std::cxx11::basic_string<char, std::char_traits, std::allocator >)': checks.cc:(.text+0x51d): undefined reference to `std::__cxx11::basic_string<char, std::char_traits, std::allocator >::append(char const)' checks.cc:(.text+0x577): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' checks.cc:(.text+0x5ec): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::append(char const)' ../third_party/webrtc/libwebrtcvad.a(checks.cc.o): In function `rtc::webrtc_checks_impl::FatalLog(char const, int, char const, rtc::webrtc_checks_impl::CheckArgType const, ...)': checks.cc:(.text+0x6a4): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()' checks.cc:(.text+0x713): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string()' checks.cc:(.text+0x722): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()' checks.cc:(.text+0x789): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::c_str() const' checks.cc:(.text+0x79b): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const' checks.cc:(.text+0x7cb): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' checks.cc:(.text+0x7da): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' checks.cc:(.text+0x7f2): undefined reference tostd::cxx11::basic_string<char, std::char_traits, std::allocator >::append(char const*)' checks.cc:(.text+0x827): undefined reference to `std::cxx11::basic_string<char, std::char_traits, std::allocator >::c_str() const' checks.cc:(.text+0x885): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' checks.cc:(.text+0x894): undefined reference tostd::__cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()' checks.cc:(.text+0x8a8): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' collect2: error: ld returned 1 exit status make[2]: *** [examples/CMakeFiles/paddlespeech_stream.dir/build.make:99: examples/paddlespeech_stream] Error 1 make[1]: *** [CMakeFiles/Makefile2:238: examples/CMakeFiles/paddlespeech_stream.dir/all] Error 2

chenkui164 commented 1 year ago

看报错应该是C++11链接不上,编译的环境是什么?GCC和G++的版本是多少?

v-yunbin commented 1 year ago

看报错应该是C++11链接不上,编译的环境是什么?GCC和G++的版本是多少?

linux环境Centos 7.9 ,g++和gcc都是8.2.0,

csukuangfj commented 1 year ago

试试命令行加个

g++ -D _GLIBCXX_USE_CXX11_ABI=0

_GLIBCXX_USE_CXX11_ABI 要么都用0, 要么都用1

chenkui164 commented 1 year ago

根据这篇文章https://www.cnblogs.com/lukybee/p/11846889.html, 试试增加个宏定义, cmake -DFASTASR_BUILD_PYTHON_MODULE=ON -D_GLIBCXX_USE_CXX11_ABI=1 .. 目前也就只能这样试试了

v-yunbin commented 1 year ago

根据这篇文章https://www.cnblogs.com/lukybee/p/11846889.html, 试试增加个宏定义, cmake -DFASTASR_BUILD_PYTHON_MODULE=ON -D_GLIBCXX_USE_CXX11_ABI=1 .. 目前也就只能这样试试了

找到原因了 openblas我用gcc4.8.5编译的,我把gcc切换到4.8.5,make成功了。然而使用python程序解码的时候报错。。:

Audio time is 4.9968125s. len is 79949.
Segmentation fault (core dumped)
chenkui164 commented 1 year ago

看一下在文件夹models/k2_rnnt2_cli/ 下面是否有模型权重文件wenet_params.bin,没有的话需要根据教程“k2_rnnt2预训练模型下载”章节转换一下,也可以从百度网盘下载转换好的模型 百度网盘: https://pan.baidu.com/s/1irtnZthexSjQlRF6F8jRPQ 提取码: 5it6

v-yunbin commented 1 year ago

看一下在文件夹models/k2_rnnt2_cli/ 下面是否有模型权重文件wenet_params.bin,没有的话需要根据教程“k2_rnnt2预训练模型下载”章节转换一下,也可以从百度网盘下载转换好的模型 百度网盘: https://pan.baidu.com/s/1irtnZthexSjQlRF6F8jRPQ 提取码: 5it6

可以了不好意思,模型路径没放对,kaldi2后续会增加online解码吗,我看k2更新了online模型 luomingshuang/icefall_asr_wenetspeech_pruned_transducer_stateless5_streaming

chenkui164 commented 1 year ago

可能不太会增加了,整个推理过程是纯手动实现的,从仿真到C++的实现,一个模型要花一个多月的时间,最近本职工作任务比较重,抽不出太多时间来弄了

v-yunbin commented 1 year ago

可能不太会增加了,整个推理过程是纯手动实现的,从仿真到C++的实现,一个模型要花一个多月的时间,最近本职工作任务比较重,抽不出太多时间来弄了

行吧,我关了