Hi,
I'm working with python 3.5.2, and I am using a virtualenv to run kaldi_io. I'm trying to use this sample:
import kaldi_io
ark_scp_output='ark:| copy-feats --compress=true ark:- ark,scp:data/feats2.ark,data/feats2.scp'
with kaldi_io.open_or_fd(ark_scp_output,'wb') as f:for key,mat in dict.iteritems():
kaldi_io.write_mat(f, mat, key=key)
My dict is a csv file, such that the first column is utt-id, and the 2nd column is the feature. This feature is in a 2-D (1x1) numpy matrix format. I have 2 problems:
a) In using key, string type is not supported. Since that is an optional argument, I just didn't pass it. But I know it will be important.
b) In using open_or_fd, I'm getting the following error:
RROR (copy-feats[5.4.176~1-be967]:Read():kaldi-matrix.cc:1616) Failed to read matrix from stream. : Expected "[", got "��
[ Stack-Trace: ]
kaldi::MessageLogger::HandleMessage(kaldi::LogMessageEnvelope const&, char const*)
kaldi::MessageLogger::~MessageLogger()
kaldi::Matrix::Read(std::istream&, bool, bool)
kaldi::KaldiObjectHolder<kaldi::Matrix >::Read(std::istream&)
kaldi::SequentialTableReaderArchiveImpl<kaldi::KaldiObjectHolder<kaldi::Matrix > >::Next()
kaldi::SequentialTableReaderArchiveImpl<kaldi::KaldiObjectHolder<kaldi::Matrix > >::Open(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)
kaldi::SequentialTableReader<kaldi::KaldiObjectHolder<kaldi::Matrix > >::Open(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)
kaldi::SequentialTableReader<kaldi::KaldiObjectHolder<kaldi::Matrix > >::SequentialTableReader(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)
main
__libc_start_main
_start
WARNING (copy-feats[5.4.1761-be967]:Read():util/kaldi-holder-inl.h:84) Exception caught reading Table object.
WARNING (copy-feats[5.4.1761-be967]:Next():util/kaldi-table-inl.h:574) Object read failed, reading archive standard input
WARNING (copy-feats[5.4.1761-be967]:Open():util/kaldi-table-inl.h:521) Error beginning to read archive file (wrong filename?): standard input
ERROR (copy-feats[5.4.1761-be967]:SequentialTableReader():util/kaldi-table-inl.h:860) Error constructing TableReader: rspecifier is ark:-
[ Stack-Trace: ]
kaldi::MessageLogger::HandleMessage(kaldi::LogMessageEnvelope const&, char const*)
kaldi::MessageLogger::~MessageLogger()
kaldi::SequentialTableReader<kaldi::KaldiObjectHolder<kaldi::Matrix > >::SequentialTableReader(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)
main
__libc_start_main
_start
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/usr/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/home/ayushi/Projects_2018/non_native_perception/data/recordings_edited/kaldi-io/kaldi_io/kaldi_io/kaldi_io.py", line 82, in cleanup
raise SubprocessFailed('cmd %s returned %d !' % (cmd,ret))
kaldi_io.kaldi_io.SubprocessFailed: cmd copy-feats --print-args=false ark:- ark,scp:/home/ayushi/Tools/kaldi/egs/nn_perception/data/train/feats.ark,/home/ayushi/Tools/kaldi/egs/nn_perception/data/train/feats.scp returned 255 !
Am I doing something wrong?