From 96a32415ab43377cf1575bd3f4f2980f58028209 Mon Sep 17 00:00:00 2001 From: Determinant Date: Fri, 14 Aug 2015 11:51:42 +0800 Subject: add implementation for kaldi io (by ymz) --- kaldi_io/Makefile | 45 + kaldi_io/example/kaldi_io_example.lua | 8 + kaldi_io/example/swb_baseline.lua | 193 + kaldi_io/example/swb_baseline_basic.lua | 157 + kaldi_io/init.c | 8 + kaldi_io/init.lua | 47 + kaldi_io/kaldi.mk | 70 + kaldi_io/kaldi_io-scm-1.rockspec | 36 + kaldi_io/src/cwrapper_kaldi.cpp | 111 + kaldi_io/src/cwrapper_kaldi.h | 29 + kaldi_io/src/init.c | 106 + kaldi_io/src/kaldi/base/io-funcs-inl.h | 219 + kaldi_io/src/kaldi/base/io-funcs.h | 231 + kaldi_io/src/kaldi/base/kaldi-common.h | 41 + kaldi_io/src/kaldi/base/kaldi-error.h | 153 + kaldi_io/src/kaldi/base/kaldi-math.h | 346 ++ kaldi_io/src/kaldi/base/kaldi-types.h | 64 + kaldi_io/src/kaldi/base/kaldi-utils.h | 157 + kaldi_io/src/kaldi/base/timer.h | 83 + kaldi_io/src/kaldi/hmm/hmm-topology.h | 172 + kaldi_io/src/kaldi/hmm/hmm-utils.h | 295 ++ kaldi_io/src/kaldi/hmm/posterior.h | 214 + kaldi_io/src/kaldi/hmm/transition-model.h | 345 ++ kaldi_io/src/kaldi/hmm/tree-accu.h | 69 + kaldi_io/src/kaldi/itf/clusterable-itf.h | 97 + kaldi_io/src/kaldi/itf/context-dep-itf.h | 80 + kaldi_io/src/kaldi/itf/decodable-itf.h | 123 + kaldi_io/src/kaldi/itf/online-feature-itf.h | 105 + kaldi_io/src/kaldi/itf/optimizable-itf.h | 51 + kaldi_io/src/kaldi/itf/options-itf.h | 49 + kaldi_io/src/kaldi/matrix/cblas-wrappers.h | 491 ++ kaldi_io/src/kaldi/matrix/compressed-matrix.h | 179 + kaldi_io/src/kaldi/matrix/jama-eig.h | 924 ++++ kaldi_io/src/kaldi/matrix/jama-svd.h | 531 ++ kaldi_io/src/kaldi/matrix/kaldi-blas.h | 132 + kaldi_io/src/kaldi/matrix/kaldi-gpsr.h | 166 + kaldi_io/src/kaldi/matrix/kaldi-matrix-inl.h | 62 + kaldi_io/src/kaldi/matrix/kaldi-matrix.h | 983 ++++ kaldi_io/src/kaldi/matrix/kaldi-vector-inl.h | 58 + kaldi_io/src/kaldi/matrix/kaldi-vector.h | 585 +++ kaldi_io/src/kaldi/matrix/matrix-common.h | 100 + kaldi_io/src/kaldi/matrix/matrix-functions-inl.h | 56 + kaldi_io/src/kaldi/matrix/matrix-functions.h | 235 + kaldi_io/src/kaldi/matrix/matrix-lib.h | 37 + kaldi_io/src/kaldi/matrix/optimization.h | 248 + kaldi_io/src/kaldi/matrix/packed-matrix.h | 197 + kaldi_io/src/kaldi/matrix/sp-matrix-inl.h | 42 + kaldi_io/src/kaldi/matrix/sp-matrix.h | 524 ++ kaldi_io/src/kaldi/matrix/srfft.h | 132 + kaldi_io/src/kaldi/matrix/tp-matrix.h | 131 + kaldi_io/src/kaldi/tree/build-tree-questions.h | 133 + kaldi_io/src/kaldi/tree/build-tree-utils.h | 324 ++ kaldi_io/src/kaldi/tree/build-tree.h | 250 + kaldi_io/src/kaldi/tree/cluster-utils.h | 291 ++ kaldi_io/src/kaldi/tree/clusterable-classes.h | 158 + kaldi_io/src/kaldi/tree/context-dep.h | 166 + kaldi_io/src/kaldi/tree/event-map.h | 365 ++ kaldi_io/src/kaldi/tree/tree-renderer.h | 84 + kaldi_io/src/kaldi/util/basic-filebuf.h | 1065 ++++ kaldi_io/src/kaldi/util/common-utils.h | 31 + kaldi_io/src/kaldi/util/const-integer-set-inl.h | 88 + kaldi_io/src/kaldi/util/const-integer-set.h | 95 + kaldi_io/src/kaldi/util/edit-distance-inl.h | 189 + kaldi_io/src/kaldi/util/edit-distance.h | 63 + kaldi_io/src/kaldi/util/hash-list-inl.h | 183 + kaldi_io/src/kaldi/util/hash-list.h | 140 + kaldi_io/src/kaldi/util/kaldi-holder-inl.h | 800 +++ kaldi_io/src/kaldi/util/kaldi-holder.h | 207 + kaldi_io/src/kaldi/util/kaldi-io-inl.h | 45 + kaldi_io/src/kaldi/util/kaldi-io.h | 264 + kaldi_io/src/kaldi/util/kaldi-pipebuf.h | 90 + kaldi_io/src/kaldi/util/kaldi-table-inl.h | 2246 ++++++++ kaldi_io/src/kaldi/util/kaldi-table.h | 459 ++ kaldi_io/src/kaldi/util/parse-options.h | 264 + kaldi_io/src/kaldi/util/simple-io-funcs.h | 56 + kaldi_io/src/kaldi/util/simple-options.h | 112 + kaldi_io/src/kaldi/util/stl-utils.h | 327 ++ kaldi_io/src/kaldi/util/table-types.h | 137 + kaldi_io/src/kaldi/util/text-utils.h | 169 + kaldi_io/src/kaldi/util/timer.h | 27 + kaldi_io/src/test.c | 48 + kaldi_io/src/tools/ATLAS/include/atlas_altivec.h | 27 + kaldi_io/src/tools/ATLAS/include/atlas_asm.h | 411 ++ kaldi_io/src/tools/ATLAS/include/atlas_aux.h | 785 +++ .../src/tools/ATLAS/include/atlas_cblascalias.h | 40 + .../src/tools/ATLAS/include/atlas_cblasdalias.h | 39 + .../src/tools/ATLAS/include/atlas_cblassalias.h | 39 + .../src/tools/ATLAS/include/atlas_cblastypealias.h | 9 + .../src/tools/ATLAS/include/atlas_cblaszalias.h | 40 + kaldi_io/src/tools/ATLAS/include/atlas_enum.h | 55 + kaldi_io/src/tools/ATLAS/include/atlas_f77.h | 83 + kaldi_io/src/tools/ATLAS/include/atlas_f77blas.h | 849 +++ kaldi_io/src/tools/ATLAS/include/atlas_f77wrap.h | 1088 ++++ kaldi_io/src/tools/ATLAS/include/atlas_fopen.h | 40 + kaldi_io/src/tools/ATLAS/include/atlas_kern3.h | 110 + kaldi_io/src/tools/ATLAS/include/atlas_kernel2.h | 5408 ++++++++++++++++++++ kaldi_io/src/tools/ATLAS/include/atlas_kernel3.h | 1393 +++++ kaldi_io/src/tools/ATLAS/include/atlas_lapack.h | 239 + kaldi_io/src/tools/ATLAS/include/atlas_level1.h | 127 + kaldi_io/src/tools/ATLAS/include/atlas_level2.h | 267 + kaldi_io/src/tools/ATLAS/include/atlas_level3.h | 181 + kaldi_io/src/tools/ATLAS/include/atlas_lvl2.h | 294 ++ kaldi_io/src/tools/ATLAS/include/atlas_lvl3.h | 512 ++ kaldi_io/src/tools/ATLAS/include/atlas_misc.h | 416 ++ kaldi_io/src/tools/ATLAS/include/atlas_mv.h | 45 + kaldi_io/src/tools/ATLAS/include/atlas_pkblas.h | 569 ++ kaldi_io/src/tools/ATLAS/include/atlas_prefetch.h | 197 + kaldi_io/src/tools/ATLAS/include/atlas_ptalias1.h | 60 + kaldi_io/src/tools/ATLAS/include/atlas_ptalias2.h | 80 + kaldi_io/src/tools/ATLAS/include/atlas_ptalias3.h | 43 + kaldi_io/src/tools/ATLAS/include/atlas_ptlevel3.h | 284 + kaldi_io/src/tools/ATLAS/include/atlas_ptlvl3.h | 389 ++ kaldi_io/src/tools/ATLAS/include/atlas_ptmisc.h | 410 ++ kaldi_io/src/tools/ATLAS/include/atlas_r1.h | 39 + kaldi_io/src/tools/ATLAS/include/atlas_rblas3.h | 474 ++ kaldi_io/src/tools/ATLAS/include/atlas_refalias1.h | 59 + kaldi_io/src/tools/ATLAS/include/atlas_refalias2.h | 79 + kaldi_io/src/tools/ATLAS/include/atlas_refalias3.h | 43 + kaldi_io/src/tools/ATLAS/include/atlas_reflevel1.h | 421 ++ kaldi_io/src/tools/ATLAS/include/atlas_reflevel2.h | 788 +++ kaldi_io/src/tools/ATLAS/include/atlas_reflevel3.h | 374 ++ kaldi_io/src/tools/ATLAS/include/atlas_reflvl2.h | 3184 ++++++++++++ kaldi_io/src/tools/ATLAS/include/atlas_reflvl3.h | 2292 +++++++++ kaldi_io/src/tools/ATLAS/include/atlas_refmisc.h | 367 ++ kaldi_io/src/tools/ATLAS/include/atlas_tst.h | 909 ++++ kaldi_io/src/tools/ATLAS/include/cblas.h | 596 +++ kaldi_io/src/tools/ATLAS/include/cblas_test.h | 542 ++ kaldi_io/src/tools/ATLAS/include/clapack.h | 149 + .../tools/ATLAS/include/contrib/ATL_gemv_ger_SSE.h | 188 + kaldi_io/src/tools/ATLAS/include/contrib/Make.ext | 39 + .../src/tools/ATLAS/include/contrib/SSE3Dnow.h | 709 +++ .../src/tools/ATLAS/include/contrib/camm_dpa.h | 1626 ++++++ .../src/tools/ATLAS/include/contrib/camm_pipe3.h | 295 ++ .../src/tools/ATLAS/include/contrib/camm_scale.h | 215 + .../src/tools/ATLAS/include/contrib/camm_strat1.h | 2982 +++++++++++ .../src/tools/ATLAS/include/contrib/camm_tpipe.h | 331 ++ .../src/tools/ATLAS/include/contrib/camm_util.h | 508 ++ kaldi_io/src/tools/ATLAS/include/f77wrap_lapack.h | 91 + .../src/tools/openfst/include/fst/accumulator.h | 745 +++ kaldi_io/src/tools/openfst/include/fst/add-on.h | 306 ++ kaldi_io/src/tools/openfst/include/fst/arc-map.h | 1146 +++++ kaldi_io/src/tools/openfst/include/fst/arc.h | 307 ++ kaldi_io/src/tools/openfst/include/fst/arcfilter.h | 99 + kaldi_io/src/tools/openfst/include/fst/arcsort.h | 217 + kaldi_io/src/tools/openfst/include/fst/bi-table.h | 532 ++ kaldi_io/src/tools/openfst/include/fst/cache.h | 861 ++++ kaldi_io/src/tools/openfst/include/fst/closure.h | 155 + .../src/tools/openfst/include/fst/compact-fst.h | 1438 ++++++ kaldi_io/src/tools/openfst/include/fst/compat.h | 131 + .../src/tools/openfst/include/fst/complement.h | 338 ++ .../src/tools/openfst/include/fst/compose-filter.h | 542 ++ kaldi_io/src/tools/openfst/include/fst/compose.h | 728 +++ kaldi_io/src/tools/openfst/include/fst/concat.h | 246 + kaldi_io/src/tools/openfst/include/fst/config.h | 12 + kaldi_io/src/tools/openfst/include/fst/connect.h | 319 ++ kaldi_io/src/tools/openfst/include/fst/const-fst.h | 497 ++ .../src/tools/openfst/include/fst/determinize.h | 1015 ++++ kaldi_io/src/tools/openfst/include/fst/dfs-visit.h | 205 + .../src/tools/openfst/include/fst/difference.h | 189 + kaldi_io/src/tools/openfst/include/fst/edit-fst.h | 779 +++ kaldi_io/src/tools/openfst/include/fst/encode.h | 599 +++ .../src/tools/openfst/include/fst/epsnormalize.h | 73 + kaldi_io/src/tools/openfst/include/fst/equal.h | 124 + .../src/tools/openfst/include/fst/equivalent.h | 275 + .../src/tools/openfst/include/fst/expanded-fst.h | 189 + .../tools/openfst/include/fst/expectation-weight.h | 142 + .../include/fst/extensions/far/compile-strings.h | 304 ++ .../openfst/include/fst/extensions/far/create.h | 87 + .../openfst/include/fst/extensions/far/equal.h | 99 + .../openfst/include/fst/extensions/far/extract.h | 140 + .../tools/openfst/include/fst/extensions/far/far.h | 532 ++ .../openfst/include/fst/extensions/far/farlib.h | 31 + .../openfst/include/fst/extensions/far/farscript.h | 273 + .../openfst/include/fst/extensions/far/info.h | 128 + .../openfst/include/fst/extensions/far/main.h | 43 + .../include/fst/extensions/far/print-strings.h | 138 + .../openfst/include/fst/extensions/far/stlist.h | 305 ++ .../openfst/include/fst/extensions/far/sttable.h | 371 ++ .../include/fst/extensions/ngram/bitmap-index.h | 183 + .../include/fst/extensions/ngram/ngram-fst.h | 934 ++++ .../openfst/include/fst/extensions/ngram/nthbit.h | 46 + .../src/tools/openfst/include/fst/factor-weight.h | 475 ++ kaldi_io/src/tools/openfst/include/fst/flags.h | 242 + .../src/tools/openfst/include/fst/float-weight.h | 601 +++ kaldi_io/src/tools/openfst/include/fst/fst-decl.h | 124 + kaldi_io/src/tools/openfst/include/fst/fst.h | 949 ++++ kaldi_io/src/tools/openfst/include/fst/fstlib.h | 153 + .../tools/openfst/include/fst/generic-register.h | 159 + kaldi_io/src/tools/openfst/include/fst/heap.h | 206 + kaldi_io/src/tools/openfst/include/fst/icu.h | 116 + kaldi_io/src/tools/openfst/include/fst/intersect.h | 172 + .../src/tools/openfst/include/fst/interval-set.h | 381 ++ kaldi_io/src/tools/openfst/include/fst/invert.h | 125 + .../tools/openfst/include/fst/label-reachable.h | 565 ++ .../openfst/include/fst/lexicographic-weight.h | 151 + kaldi_io/src/tools/openfst/include/fst/lock.h | 100 + kaldi_io/src/tools/openfst/include/fst/log.h | 66 + .../tools/openfst/include/fst/lookahead-filter.h | 698 +++ .../tools/openfst/include/fst/lookahead-matcher.h | 812 +++ kaldi_io/src/tools/openfst/include/fst/map.h | 121 + .../src/tools/openfst/include/fst/mapped-file.h | 83 + .../src/tools/openfst/include/fst/matcher-fst.h | 359 ++ kaldi_io/src/tools/openfst/include/fst/matcher.h | 1205 +++++ kaldi_io/src/tools/openfst/include/fst/minimize.h | 591 +++ .../src/tools/openfst/include/fst/mutable-fst.h | 378 ++ .../src/tools/openfst/include/fst/pair-weight.h | 280 + kaldi_io/src/tools/openfst/include/fst/partition.h | 305 ++ .../src/tools/openfst/include/fst/power-weight.h | 159 + .../src/tools/openfst/include/fst/product-weight.h | 115 + kaldi_io/src/tools/openfst/include/fst/project.h | 148 + .../src/tools/openfst/include/fst/properties.h | 460 ++ kaldi_io/src/tools/openfst/include/fst/prune.h | 339 ++ kaldi_io/src/tools/openfst/include/fst/push.h | 175 + kaldi_io/src/tools/openfst/include/fst/queue.h | 938 ++++ .../src/tools/openfst/include/fst/randequivalent.h | 135 + kaldi_io/src/tools/openfst/include/fst/randgen.h | 712 +++ .../src/tools/openfst/include/fst/random-weight.h | 348 ++ kaldi_io/src/tools/openfst/include/fst/rational.h | 330 ++ kaldi_io/src/tools/openfst/include/fst/register.h | 133 + kaldi_io/src/tools/openfst/include/fst/relabel.h | 528 ++ .../src/tools/openfst/include/fst/replace-util.h | 550 ++ kaldi_io/src/tools/openfst/include/fst/replace.h | 1453 ++++++ kaldi_io/src/tools/openfst/include/fst/reverse.h | 91 + kaldi_io/src/tools/openfst/include/fst/reweight.h | 146 + kaldi_io/src/tools/openfst/include/fst/rmepsilon.h | 600 +++ .../src/tools/openfst/include/fst/rmfinalepsilon.h | 107 + .../src/tools/openfst/include/fst/script/arcsort.h | 49 + .../tools/openfst/include/fst/script/arg-packs.h | 240 + .../src/tools/openfst/include/fst/script/closure.h | 41 + .../openfst/include/fst/script/compile-impl.h | 216 + .../src/tools/openfst/include/fst/script/compile.h | 92 + .../src/tools/openfst/include/fst/script/compose.h | 63 + .../src/tools/openfst/include/fst/script/concat.h | 54 + .../src/tools/openfst/include/fst/script/connect.h | 45 + .../src/tools/openfst/include/fst/script/convert.h | 49 + .../src/tools/openfst/include/fst/script/decode.h | 46 + .../tools/openfst/include/fst/script/determinize.h | 68 + .../tools/openfst/include/fst/script/difference.h | 67 + .../openfst/include/fst/script/disambiguate.h | 68 + .../tools/openfst/include/fst/script/draw-impl.h | 234 + .../src/tools/openfst/include/fst/script/draw.h | 114 + .../src/tools/openfst/include/fst/script/encode.h | 58 + .../openfst/include/fst/script/epsnormalize.h | 44 + .../src/tools/openfst/include/fst/script/equal.h | 45 + .../tools/openfst/include/fst/script/equivalent.h | 47 + .../tools/openfst/include/fst/script/fst-class.h | 382 ++ .../openfst/include/fst/script/fstscript-decl.h | 35 + .../tools/openfst/include/fst/script/fstscript.h | 154 + .../tools/openfst/include/fst/script/info-impl.h | 325 ++ .../src/tools/openfst/include/fst/script/info.h | 48 + .../tools/openfst/include/fst/script/intersect.h | 65 + .../src/tools/openfst/include/fst/script/invert.h | 43 + .../src/tools/openfst/include/fst/script/map.h | 123 + .../tools/openfst/include/fst/script/minimize.h | 45 + .../tools/openfst/include/fst/script/print-impl.h | 149 + .../src/tools/openfst/include/fst/script/print.h | 86 + .../src/tools/openfst/include/fst/script/project.h | 43 + .../src/tools/openfst/include/fst/script/prune.h | 153 + .../src/tools/openfst/include/fst/script/push.h | 70 + .../openfst/include/fst/script/randequivalent.h | 105 + .../src/tools/openfst/include/fst/script/randgen.h | 76 + .../tools/openfst/include/fst/script/register.h | 120 + .../src/tools/openfst/include/fst/script/relabel.h | 102 + .../src/tools/openfst/include/fst/script/replace.h | 62 + .../src/tools/openfst/include/fst/script/reverse.h | 42 + .../tools/openfst/include/fst/script/reweight.h | 53 + .../tools/openfst/include/fst/script/rmepsilon.h | 211 + .../tools/openfst/include/fst/script/script-impl.h | 206 + .../openfst/include/fst/script/shortest-distance.h | 250 + .../openfst/include/fst/script/shortest-path.h | 190 + .../src/tools/openfst/include/fst/script/symbols.h | 20 + .../tools/openfst/include/fst/script/synchronize.h | 42 + .../src/tools/openfst/include/fst/script/text-io.h | 51 + .../src/tools/openfst/include/fst/script/topsort.h | 40 + .../src/tools/openfst/include/fst/script/union.h | 42 + .../src/tools/openfst/include/fst/script/verify.h | 40 + .../openfst/include/fst/script/weight-class.h | 223 + .../tools/openfst/include/fst/shortest-distance.h | 348 ++ .../src/tools/openfst/include/fst/shortest-path.h | 501 ++ .../tools/openfst/include/fst/signed-log-weight.h | 367 ++ kaldi_io/src/tools/openfst/include/fst/slist.h | 61 + .../openfst/include/fst/sparse-power-weight.h | 225 + .../openfst/include/fst/sparse-tuple-weight.h | 640 +++ kaldi_io/src/tools/openfst/include/fst/state-map.h | 605 +++ .../tools/openfst/include/fst/state-reachable.h | 198 + .../src/tools/openfst/include/fst/state-table.h | 481 ++ kaldi_io/src/tools/openfst/include/fst/statesort.h | 97 + .../src/tools/openfst/include/fst/string-weight.h | 560 ++ kaldi_io/src/tools/openfst/include/fst/string.h | 271 + .../tools/openfst/include/fst/symbol-table-ops.h | 91 + .../src/tools/openfst/include/fst/symbol-table.h | 537 ++ .../src/tools/openfst/include/fst/synchronize.h | 457 ++ .../tools/openfst/include/fst/test-properties.h | 250 + kaldi_io/src/tools/openfst/include/fst/topsort.h | 112 + .../src/tools/openfst/include/fst/tuple-weight.h | 332 ++ kaldi_io/src/tools/openfst/include/fst/types.h | 38 + .../src/tools/openfst/include/fst/union-find.h | 110 + kaldi_io/src/tools/openfst/include/fst/union.h | 185 + kaldi_io/src/tools/openfst/include/fst/util.h | 437 ++ .../src/tools/openfst/include/fst/vector-fst.h | 731 +++ kaldi_io/src/tools/openfst/include/fst/verify.h | 126 + kaldi_io/src/tools/openfst/include/fst/visit.h | 284 + kaldi_io/src/tools/openfst/include/fst/weight.h | 179 + kaldi_io/tools/kaldi_to_nerv.cpp | 109 + speech_utils/init.lua | 8 +- 305 files changed, 96503 insertions(+), 2 deletions(-) create mode 100644 kaldi_io/Makefile create mode 100644 kaldi_io/example/kaldi_io_example.lua create mode 100644 kaldi_io/example/swb_baseline.lua create mode 100644 kaldi_io/example/swb_baseline_basic.lua create mode 100644 kaldi_io/init.c create mode 100644 kaldi_io/init.lua create mode 100644 kaldi_io/kaldi.mk create mode 100644 kaldi_io/kaldi_io-scm-1.rockspec create mode 100644 kaldi_io/src/cwrapper_kaldi.cpp create mode 100644 kaldi_io/src/cwrapper_kaldi.h create mode 100644 kaldi_io/src/init.c create mode 100644 kaldi_io/src/kaldi/base/io-funcs-inl.h create mode 100644 kaldi_io/src/kaldi/base/io-funcs.h create mode 100644 kaldi_io/src/kaldi/base/kaldi-common.h create mode 100644 kaldi_io/src/kaldi/base/kaldi-error.h create mode 100644 kaldi_io/src/kaldi/base/kaldi-math.h create mode 100644 kaldi_io/src/kaldi/base/kaldi-types.h create mode 100644 kaldi_io/src/kaldi/base/kaldi-utils.h create mode 100644 kaldi_io/src/kaldi/base/timer.h create mode 100644 kaldi_io/src/kaldi/hmm/hmm-topology.h create mode 100644 kaldi_io/src/kaldi/hmm/hmm-utils.h create mode 100644 kaldi_io/src/kaldi/hmm/posterior.h create mode 100644 kaldi_io/src/kaldi/hmm/transition-model.h create mode 100644 kaldi_io/src/kaldi/hmm/tree-accu.h create mode 100644 kaldi_io/src/kaldi/itf/clusterable-itf.h create mode 100644 kaldi_io/src/kaldi/itf/context-dep-itf.h create mode 100644 kaldi_io/src/kaldi/itf/decodable-itf.h create mode 100644 kaldi_io/src/kaldi/itf/online-feature-itf.h create mode 100644 kaldi_io/src/kaldi/itf/optimizable-itf.h create mode 100644 kaldi_io/src/kaldi/itf/options-itf.h create mode 100644 kaldi_io/src/kaldi/matrix/cblas-wrappers.h create mode 100644 kaldi_io/src/kaldi/matrix/compressed-matrix.h create mode 100644 kaldi_io/src/kaldi/matrix/jama-eig.h create mode 100644 kaldi_io/src/kaldi/matrix/jama-svd.h create mode 100644 kaldi_io/src/kaldi/matrix/kaldi-blas.h create mode 100644 kaldi_io/src/kaldi/matrix/kaldi-gpsr.h create mode 100644 kaldi_io/src/kaldi/matrix/kaldi-matrix-inl.h create mode 100644 kaldi_io/src/kaldi/matrix/kaldi-matrix.h create mode 100644 kaldi_io/src/kaldi/matrix/kaldi-vector-inl.h create mode 100644 kaldi_io/src/kaldi/matrix/kaldi-vector.h create mode 100644 kaldi_io/src/kaldi/matrix/matrix-common.h create mode 100644 kaldi_io/src/kaldi/matrix/matrix-functions-inl.h create mode 100644 kaldi_io/src/kaldi/matrix/matrix-functions.h create mode 100644 kaldi_io/src/kaldi/matrix/matrix-lib.h create mode 100644 kaldi_io/src/kaldi/matrix/optimization.h create mode 100644 kaldi_io/src/kaldi/matrix/packed-matrix.h create mode 100644 kaldi_io/src/kaldi/matrix/sp-matrix-inl.h create mode 100644 kaldi_io/src/kaldi/matrix/sp-matrix.h create mode 100644 kaldi_io/src/kaldi/matrix/srfft.h create mode 100644 kaldi_io/src/kaldi/matrix/tp-matrix.h create mode 100644 kaldi_io/src/kaldi/tree/build-tree-questions.h create mode 100644 kaldi_io/src/kaldi/tree/build-tree-utils.h create mode 100644 kaldi_io/src/kaldi/tree/build-tree.h create mode 100644 kaldi_io/src/kaldi/tree/cluster-utils.h create mode 100644 kaldi_io/src/kaldi/tree/clusterable-classes.h create mode 100644 kaldi_io/src/kaldi/tree/context-dep.h create mode 100644 kaldi_io/src/kaldi/tree/event-map.h create mode 100644 kaldi_io/src/kaldi/tree/tree-renderer.h create mode 100644 kaldi_io/src/kaldi/util/basic-filebuf.h create mode 100644 kaldi_io/src/kaldi/util/common-utils.h create mode 100644 kaldi_io/src/kaldi/util/const-integer-set-inl.h create mode 100644 kaldi_io/src/kaldi/util/const-integer-set.h create mode 100644 kaldi_io/src/kaldi/util/edit-distance-inl.h create mode 100644 kaldi_io/src/kaldi/util/edit-distance.h create mode 100644 kaldi_io/src/kaldi/util/hash-list-inl.h create mode 100644 kaldi_io/src/kaldi/util/hash-list.h create mode 100644 kaldi_io/src/kaldi/util/kaldi-holder-inl.h create mode 100644 kaldi_io/src/kaldi/util/kaldi-holder.h create mode 100644 kaldi_io/src/kaldi/util/kaldi-io-inl.h create mode 100644 kaldi_io/src/kaldi/util/kaldi-io.h create mode 100644 kaldi_io/src/kaldi/util/kaldi-pipebuf.h create mode 100644 kaldi_io/src/kaldi/util/kaldi-table-inl.h create mode 100644 kaldi_io/src/kaldi/util/kaldi-table.h create mode 100644 kaldi_io/src/kaldi/util/parse-options.h create mode 100644 kaldi_io/src/kaldi/util/simple-io-funcs.h create mode 100644 kaldi_io/src/kaldi/util/simple-options.h create mode 100644 kaldi_io/src/kaldi/util/stl-utils.h create mode 100644 kaldi_io/src/kaldi/util/table-types.h create mode 100644 kaldi_io/src/kaldi/util/text-utils.h create mode 100644 kaldi_io/src/kaldi/util/timer.h create mode 100644 kaldi_io/src/test.c create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_altivec.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_asm.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_aux.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_cblascalias.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_cblasdalias.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_cblassalias.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_cblastypealias.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_cblaszalias.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_enum.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_f77.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_f77blas.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_f77wrap.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_fopen.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_kern3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_kernel2.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_kernel3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_lapack.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_level1.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_level2.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_level3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_lvl2.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_lvl3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_misc.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_mv.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_pkblas.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_prefetch.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_ptalias1.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_ptalias2.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_ptalias3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_ptlevel3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_ptlvl3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_ptmisc.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_r1.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_rblas3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_refalias1.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_refalias2.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_refalias3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_reflevel1.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_reflevel2.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_reflevel3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_reflvl2.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_reflvl3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_refmisc.h create mode 100644 kaldi_io/src/tools/ATLAS/include/atlas_tst.h create mode 100644 kaldi_io/src/tools/ATLAS/include/cblas.h create mode 100644 kaldi_io/src/tools/ATLAS/include/cblas_test.h create mode 100644 kaldi_io/src/tools/ATLAS/include/clapack.h create mode 100644 kaldi_io/src/tools/ATLAS/include/contrib/ATL_gemv_ger_SSE.h create mode 100644 kaldi_io/src/tools/ATLAS/include/contrib/Make.ext create mode 100644 kaldi_io/src/tools/ATLAS/include/contrib/SSE3Dnow.h create mode 100644 kaldi_io/src/tools/ATLAS/include/contrib/camm_dpa.h create mode 100644 kaldi_io/src/tools/ATLAS/include/contrib/camm_pipe3.h create mode 100644 kaldi_io/src/tools/ATLAS/include/contrib/camm_scale.h create mode 100644 kaldi_io/src/tools/ATLAS/include/contrib/camm_strat1.h create mode 100644 kaldi_io/src/tools/ATLAS/include/contrib/camm_tpipe.h create mode 100644 kaldi_io/src/tools/ATLAS/include/contrib/camm_util.h create mode 100644 kaldi_io/src/tools/ATLAS/include/f77wrap_lapack.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/accumulator.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/add-on.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/arc-map.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/arc.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/arcfilter.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/arcsort.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/bi-table.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/cache.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/closure.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/compact-fst.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/compat.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/complement.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/compose-filter.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/compose.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/concat.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/config.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/connect.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/const-fst.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/determinize.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/dfs-visit.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/difference.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/edit-fst.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/encode.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/epsnormalize.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/equal.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/equivalent.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/expanded-fst.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/expectation-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/compile-strings.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/create.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/equal.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/extract.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/far.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/farlib.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/farscript.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/info.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/main.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/print-strings.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/stlist.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/far/sttable.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/ngram/bitmap-index.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/ngram/ngram-fst.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/extensions/ngram/nthbit.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/factor-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/flags.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/float-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/fst-decl.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/fst.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/fstlib.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/generic-register.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/heap.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/icu.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/intersect.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/interval-set.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/invert.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/label-reachable.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/lexicographic-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/lock.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/log.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/lookahead-filter.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/lookahead-matcher.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/map.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/mapped-file.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/matcher-fst.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/matcher.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/minimize.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/mutable-fst.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/pair-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/partition.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/power-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/product-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/project.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/properties.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/prune.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/push.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/queue.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/randequivalent.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/randgen.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/random-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/rational.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/register.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/relabel.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/replace-util.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/replace.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/reverse.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/reweight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/rmepsilon.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/rmfinalepsilon.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/arcsort.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/arg-packs.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/closure.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/compile-impl.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/compile.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/compose.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/concat.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/connect.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/convert.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/decode.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/determinize.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/difference.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/disambiguate.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/draw-impl.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/draw.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/encode.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/epsnormalize.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/equal.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/equivalent.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/fst-class.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/fstscript-decl.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/fstscript.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/info-impl.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/info.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/intersect.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/invert.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/map.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/minimize.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/print-impl.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/print.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/project.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/prune.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/push.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/randequivalent.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/randgen.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/register.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/relabel.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/replace.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/reverse.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/reweight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/rmepsilon.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/script-impl.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/shortest-distance.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/shortest-path.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/symbols.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/synchronize.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/text-io.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/topsort.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/union.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/verify.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/script/weight-class.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/shortest-distance.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/shortest-path.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/signed-log-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/slist.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/sparse-power-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/sparse-tuple-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/state-map.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/state-reachable.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/state-table.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/statesort.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/string-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/string.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/symbol-table-ops.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/symbol-table.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/synchronize.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/test-properties.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/topsort.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/tuple-weight.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/types.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/union-find.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/union.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/util.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/vector-fst.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/verify.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/visit.h create mode 100644 kaldi_io/src/tools/openfst/include/fst/weight.h create mode 100644 kaldi_io/tools/kaldi_to_nerv.cpp diff --git a/kaldi_io/Makefile b/kaldi_io/Makefile new file mode 100644 index 0000000..59393cf --- /dev/null +++ b/kaldi_io/Makefile @@ -0,0 +1,45 @@ +.PHONY: kaldi +SHELL := /bin/bash +BUILD_DIR := $(CURDIR)/build +INC_PATH := $(LUA_BINDIR)/../include/ +OBJS := init.o src/cwrapper_kaldi.o src/init.o +LIBS := libkaldiio.so +LUA_LIBS := init.lua +INCLUDE := -I $(LUA_INCDIR) -I $(INC_PATH) -DLUA_USE_APICHECK + +SUBDIR := src +OBJ_DIR := $(BUILD_DIR)/objs +LUA_DIR := $(INST_LUADIR)/kaldi_io +KALDIINCLUDE := -I src/tools/ATLAS/include/ -I src/kaldi/ -I src/tools/openfst/include/ + +OBJS := $(addprefix $(OBJ_DIR)/,$(OBJS)) +LIBS := $(addprefix $(INST_LIBDIR)/,$(LIBS)) +OBJ_SUBDIR := $(addprefix $(OBJ_DIR)/,$(SUBDIR)) +LUA_SUBDIR := $(addprefix $(LUA_DIR)/,$(SUBDIR)) +LUA_LIBS := $(addprefix $(LUA_DIR)/,$(LUA_LIBS)) +LIB_PATH := $(LUA_BINDIR)/../lib + +build: $(OBJ_DIR) $(OBJ_SUBDIR) $(OBJS) $(OBJ_DIR)/src/test +install: $(LUA_DIR) $(LUA_SUBDIR) $(LUA_LIBS) $(LIBS) + +include kaldi.mk + +KL := /home/stuymf/kaldi-trunk/src/feat/kaldi-feat.a /home/stuymf/kaldi-trunk/src/matrix/kaldi-matrix.a /home/stuymf/kaldi-trunk/src/base/kaldi-base.a /home/stuymf/kaldi-trunk/src/util/kaldi-util.a /home/stuymf/kaldi-trunk/src/hmm/kaldi-hmm.a /home/stuymf/kaldi-trunk/src/tree/kaldi-tree.a /usr/lib/libatlas.so.3 /usr/lib/libf77blas.so.3 /usr/lib/libcblas.so.3 /usr/lib/liblapack_atlas.so.3 + + +$(OBJ_DIR) $(LUA_DIR) $(OBJ_SUBDIR) $(LUA_SUBDIR): + -mkdir -p $@ +$(LUA_DIR)/%.lua: %.lua + cp $< $@ +$(LIBS): $(OBJ_DIR)/src/cwrapper_kaldi.o $(OBJ_DIR)/init.o $(OBJ_DIR)/src/init.o + gcc -shared -o $@ $(OBJ_DIR)/src/cwrapper_kaldi.o $(OBJ_DIR)/init.o $(OBJ_DIR)/src/init.o -lstdc++ -Wl,-rpath=$(LIB_PATH) -L$(LIB_PATH) -lnervcore -lluaT $(KL) + g++ -o $@ -c $< -DHAVE_ATLAS $(KALDIINCLUDE) -g -fPIC $(INCLUDE) -DKALDI_DOUBLEPRECISION=0 -msse2 -DHAVE_POSIX_MEMALIGN +$(OBJ_DIR)/src/cwrapper_kaldi.o: src/cwrapper_kaldi.cpp + g++ -o $@ -c $< -DHAVE_ATLAS $(KALDIINCLUDE) -g -fPIC $(INCLUDE) -DKALDI_DOUBLEPRECISION=0 -msse2 -DHAVE_POSIX_MEMALIGN +$(OBJ_DIR)/src/test: $(OBJ_DIR)/src/cwrapper_kaldi.o $(OBJ_DIR)/src/test.o + gcc -o $@ $^ -Wl,-rpath=$(LIB_PATH) -L$(LIB_PATH) $(INCLUDE) $(KALDIINCLUDE) -lnervcore -Wl,-rpath=$(LUA_LIBDIR) -L$(LUA_LIBDIR) -lluajit-5.1 -lstdc++ -lm $(KL) +$(OBJ_DIR)/%.o: %.c + gcc -o $@ -c $< -g $(INCLUDE) -fPIC +clean: + -rm $(OBJ_DIR)/src/*.o + diff --git a/kaldi_io/example/kaldi_io_example.lua b/kaldi_io/example/kaldi_io_example.lua new file mode 100644 index 0000000..8fd068a --- /dev/null +++ b/kaldi_io/example/kaldi_io_example.lua @@ -0,0 +1,8 @@ +require 'kaldi_io' + +frm_ext = 5 +feat_repo = nerv.KaldiFeatureRepo("ark:/slfs6/users/ymz09/kaldi/src/featbin/copy-feats scp:/slfs6/users/ymz09/swb_ivec/train_bp.scp ark:- |") + +feat_utter = feat_repo:cur_utter(true) +print(feat_utter) + diff --git a/kaldi_io/example/swb_baseline.lua b/kaldi_io/example/swb_baseline.lua new file mode 100644 index 0000000..8b1e122 --- /dev/null +++ b/kaldi_io/example/swb_baseline.lua @@ -0,0 +1,193 @@ +require 'kaldi_io' +gconf = {lrate = 0.8, wcost = 1e-6, momentum = 0.9, + cumat_type = nerv.CuMatrixFloat, + mmat_type = nerv.MMatrixFloat, + frm_ext = 5, + tr_scp = "ark:/slfs6/users/ymz09/kaldi/src/featbin/copy-feats scp:/slfs6/users/ymz09/swb_ivec/train_bp.scp ark:- |", + cv_scp = "ark:/slfs6/users/ymz09/kaldi/src/featbin/copy-feats scp:/slfs6/users/ymz09/swb_ivec/train_cv.scp ark:- |", + initialized_param = {"/slfs6/users/ymz09/swb_ivec/swb_init.nerv", + "/slfs6/users/ymz09/swb_ivec/swb_global_transf.nerv"}, + debug = false} + +function make_layer_repo(param_repo) + local layer_repo = nerv.LayerRepo( + { + -- global transf + ["nerv.BiasLayer"] = + { + blayer1 = {{bias = "bias1"}, {dim_in = {429}, dim_out = {429}}}, + blayer2 = {{bias = "bias2"}, {dim_in = {429}, dim_out = {429}}} + }, + ["nerv.WindowLayer"] = + { + wlayer1 = {{window = "window1"}, {dim_in = {429}, dim_out = {429}}}, + wlayer2 = {{window = "window2"}, {dim_in = {429}, dim_out = {429}}} + }, + -- biased linearity + ["nerv.AffineLayer"] = + { + affine0 = {{ltp = "affine0_ltp", bp = "affine0_bp"}, + {dim_in = {429}, dim_out = {2048}}}, + affine1 = {{ltp = "affine1_ltp", bp = "affine1_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine2 = {{ltp = "affine2_ltp", bp = "affine2_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine3 = {{ltp = "affine3_ltp", bp = "affine3_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine4 = {{ltp = "affine4_ltp", bp = "affine4_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine5 = {{ltp = "affine5_ltp", bp = "affine5_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine6 = {{ltp = "affine6_ltp", bp = "affine6_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine7 = {{ltp = "affine7_ltp", bp = "affine7_bp"}, + {dim_in = {2048}, dim_out = {3001}}} + }, + ["nerv.SigmoidLayer"] = + { + sigmoid0 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid1 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid2 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid3 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid4 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid5 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid6 = {{}, {dim_in = {2048}, dim_out = {2048}}} + }, + ["nerv.SoftmaxCELayer"] = -- softmax + ce criterion layer for finetune output + { + ce_crit = {{}, {dim_in = {3001, 1}, dim_out = {1}, compressed = true}} + }, + ["nerv.SoftmaxLayer"] = -- softmax for decode output + { + softmax = {{}, {dim_in = {3001}, dim_out = {3001}}} + } + }, param_repo, gconf) + + layer_repo:add_layers( + { + ["nerv.DAGLayer"] = + { + global_transf = {{}, { + dim_in = {429}, dim_out = {429}, + sub_layers = layer_repo, + connections = { + ["[1]"] = "blayer1[1]", + ["blayer1[1]"] = "wlayer1[1]", + ["wlayer1[1]"] = "blayer2[1]", + ["blayer2[1]"] = "wlayer2[1]", + ["wlayer2[1]"] = "[1]" + } + }}, + main = {{}, { + dim_in = {429}, dim_out = {3001}, + sub_layers = layer_repo, + connections = { + ["[1]"] = "affine0[1]", + ["affine0[1]"] = "sigmoid0[1]", + ["sigmoid0[1]"] = "affine1[1]", + ["affine1[1]"] = "sigmoid1[1]", + ["sigmoid1[1]"] = "affine2[1]", + ["affine2[1]"] = "sigmoid2[1]", + ["sigmoid2[1]"] = "affine3[1]", + ["affine3[1]"] = "sigmoid3[1]", + ["sigmoid3[1]"] = "affine4[1]", + ["affine4[1]"] = "sigmoid4[1]", + ["sigmoid4[1]"] = "affine5[1]", + ["affine5[1]"] = "sigmoid5[1]", + ["sigmoid5[1]"] = "affine6[1]", + ["affine6[1]"] = "sigmoid6[1]", + ["sigmoid6[1]"] = "affine7[1]", + ["affine7[1]"] = "[1]" + } + }} + } + }, param_repo, gconf) + + layer_repo:add_layers( + { + ["nerv.DAGLayer"] = + { + ce_output = {{}, { + dim_in = {429, 1}, dim_out = {1}, + sub_layers = layer_repo, + connections = { + ["[1]"] = "main[1]", + ["main[1]"] = "ce_crit[1]", + ["[2]"] = "ce_crit[2]", + ["ce_crit[1]"] = "[1]" + } + }}, + softmax_output = {{}, { + dim_in = {429}, dim_out = {3001}, + sub_layers = layer_repo, + connections = { + ["[1]"] = "main[1]", + ["main[1]"] = "softmax[1]", + ["softmax[1]"] = "[1]" + } + }} + } + }, param_repo, gconf) + + return layer_repo +end + +function get_network(layer_repo) + return layer_repo:get_layer("ce_output") +end + +function get_decode_network(layer_repo) + return layer_repo:get_layer("softmax_output") +end + +function get_global_transf(layer_repo) + return layer_repo:get_layer("global_transf") +end + +function make_readers(feature_rspecifier, layer_repo) + return { + {reader = nerv.KaldiReader(gconf, + { + id = "main_scp", + feature_rspecifier = feature_rspecifier, + frm_ext = gconf.frm_ext, + mlfs = { + phone_state = { + targets_rspecifier = "ark:/slfs6/users/ymz09/kaldi/src/bin/ali-to-pdf /slfs6/users/ymz09/swb_ivec/final.mdl \"ark:gunzip -c /slfs6/users/ymz09/swb_ivec/ali.*.gz |\" ark:- | /slfs6/users/ymz09/kaldi/src/bin/ali-to-post ark:- ark:- |", + format = "map" + } + }, + global_transf = layer_repo:get_layer("global_transf") + }), + data = {main_scp = 429, phone_state = 1}} + } +end + +function make_buffer(readers) + return nerv.SGDBuffer(gconf, + { + buffer_size = gconf.buffer_size, + randomize = gconf.randomize, + readers = readers + }) +end + +function get_input_order() + return {"main_scp", "phone_state"} +end + +function get_accuracy(layer_repo) + local ce_crit = layer_repo:get_layer("ce_crit") + return ce_crit.total_correct / ce_crit.total_frames * 100 +end + +function print_stat(layer_repo) + local ce_crit = layer_repo:get_layer("ce_crit") + nerv.info("*** training stat begin ***") + nerv.printf("cross entropy:\t\t%.8f\n", ce_crit.total_ce) + nerv.printf("correct:\t\t%d\n", ce_crit.total_correct) + nerv.printf("frames:\t\t\t%d\n", ce_crit.total_frames) + nerv.printf("err/frm:\t\t%.8f\n", ce_crit.total_ce / ce_crit.total_frames) + nerv.printf("accuracy:\t\t%.3f%%\n", get_accuracy(layer_repo)) + nerv.info("*** training stat end ***") +end diff --git a/kaldi_io/example/swb_baseline_basic.lua b/kaldi_io/example/swb_baseline_basic.lua new file mode 100644 index 0000000..e6c8145 --- /dev/null +++ b/kaldi_io/example/swb_baseline_basic.lua @@ -0,0 +1,157 @@ +require 'kaldi_io' +gconf = {lrate = 0.8, wcost = 1e-6, momentum = 0.9, + cumat_type = nerv.CuMatrixFloat, + mmat_type = nerv.MMatrixFloat, + frm_ext = 5, + tr_rspecifier = "ark:/slfs6/users/ymz09/kaldi/src/featbin/copy-feats scp:/slfs6/users/ymz09/swb_ivec/train_bp.scp ark:- |", + cv_rspecifier = "ark:/slfs6/users/ymz09/kaldi/src/featbin/copy-feats scp:/slfs6/users/ymz09/swb_ivec/train_cv.scp ark:- |", + initialized_param = {"/slfs6/users/ymz09/swb_ivec/swb_init.nerv", + "/slfs6/users/ymz09/swb_ivec/swb_global_transf.nerv"}, + debug = false} + +function make_sublayer_repo(param_repo) + return nerv.LayerRepo( + { + -- global transf + ["nerv.BiasLayer"] = + { + blayer1 = {{bias = "bias1"}, {dim_in = {429}, dim_out = {429}}}, + blayer2 = {{bias = "bias2"}, {dim_in = {429}, dim_out = {429}}} + }, + ["nerv.WindowLayer"] = + { + wlayer1 = {{window = "window1"}, {dim_in = {429}, dim_out = {429}}}, + wlayer2 = {{window = "window2"}, {dim_in = {429}, dim_out = {429}}} + }, + -- biased linearity + ["nerv.AffineLayer"] = + { + affine0 = {{ltp = "affine0_ltp", bp = "affine0_bp"}, + {dim_in = {429}, dim_out = {2048}}}, + affine1 = {{ltp = "affine1_ltp", bp = "affine1_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine2 = {{ltp = "affine2_ltp", bp = "affine2_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine3 = {{ltp = "affine3_ltp", bp = "affine3_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine4 = {{ltp = "affine4_ltp", bp = "affine4_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine5 = {{ltp = "affine5_ltp", bp = "affine5_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine6 = {{ltp = "affine6_ltp", bp = "affine6_bp"}, + {dim_in = {2048}, dim_out = {2048}}}, + affine7 = {{ltp = "affine7_ltp", bp = "affine7_bp"}, + {dim_in = {2048}, dim_out = {3001}}} + }, + ["nerv.SigmoidLayer"] = + { + sigmoid0 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid1 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid2 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid3 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid4 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid5 = {{}, {dim_in = {2048}, dim_out = {2048}}}, + sigmoid6 = {{}, {dim_in = {2048}, dim_out = {2048}}} + }, + ["nerv.SoftmaxCELayer"] = + { + ce_crit = {{}, {dim_in = {3001, 1}, dim_out = {1}, compressed = true}} + } + }, param_repo, gconf) +end + +function make_layer_repo(sublayer_repo, param_repo) + return nerv.LayerRepo( + { + ["nerv.DAGLayer"] = + { + global_transf = {{}, { + dim_in = {429}, dim_out = {429}, + sub_layers = sublayer_repo, + connections = { + ["[1]"] = "blayer1[1]", + ["blayer1[1]"] = "wlayer1[1]", + ["wlayer1[1]"] = "blayer2[1]", + ["blayer2[1]"] = "wlayer2[1]", + ["wlayer2[1]"] = "[1]" + } + }}, + main = {{}, { + dim_in = {429, 1}, dim_out = {1}, + sub_layers = sublayer_repo, + connections = { + ["[1]"] = "affine0[1]", + ["affine0[1]"] = "sigmoid0[1]", + ["sigmoid0[1]"] = "affine1[1]", + ["affine1[1]"] = "sigmoid1[1]", + ["sigmoid1[1]"] = "affine2[1]", + ["affine2[1]"] = "sigmoid2[1]", + ["sigmoid2[1]"] = "affine3[1]", + ["affine3[1]"] = "sigmoid3[1]", + ["sigmoid3[1]"] = "affine4[1]", + ["affine4[1]"] = "sigmoid4[1]", + ["sigmoid4[1]"] = "affine5[1]", + ["affine5[1]"] = "sigmoid5[1]", + ["sigmoid5[1]"] = "affine6[1]", + ["affine6[1]"] = "sigmoid6[1]", + ["sigmoid6[1]"] = "affine7[1]", + ["affine7[1]"] = "ce_crit[1]", + ["[2]"] = "ce_crit[2]", + ["ce_crit[1]"] = "[1]" + } + }} + } + }, param_repo, gconf) +end + +function get_network(layer_repo) + return layer_repo:get_layer("main") +end + +function make_readers(feature_rspecifier, layer_repo) + return { + {reader = nerv.KaldiReader(gconf, + { + id = "main_scp", + feature_rspecifier = feature_rspecifier, + frm_ext = gconf.frm_ext, + mlfs = { + phone_state = { + targets_rspecifier = "ark:/slfs6/users/ymz09/kaldi/src/bin/ali-to-pdf /slfs6/users/ymz09/swb_ivec/final.mdl \"ark:gunzip -c /slfs6/users/ymz09/swb_ivec/ali.*.gz |\" ark:- | /slfs6/users/ymz09/kaldi/src/bin/ali-to-post ark:- ark:- |", + format = "map" + } + }, + global_transf = layer_repo:get_layer("global_transf") + }), + data = {main_scp = 429, phone_state = 1}} + } +end + +function make_buffer(readers) + return nerv.SGDBuffer(gconf, + { + buffer_size = gconf.buffer_size, + randomize = gconf.randomize, + readers = readers + }) +end + +function get_input_order() + return {"main_scp", "phone_state"} +end + +function get_accuracy(sublayer_repo) + local ce_crit = sublayer_repo:get_layer("ce_crit") + return ce_crit.total_correct / ce_crit.total_frames * 100 +end + +function print_stat(sublayer_repo) + local ce_crit = sublayer_repo:get_layer("ce_crit") + nerv.info("*** training stat begin ***") + nerv.printf("cross entropy:\t\t%.8f\n", ce_crit.total_ce) + nerv.printf("correct:\t\t%d\n", ce_crit.total_correct) + nerv.printf("frames:\t\t\t%d\n", ce_crit.total_frames) + nerv.printf("err/frm:\t\t%.8f\n", ce_crit.total_ce / ce_crit.total_frames) + nerv.printf("accuracy:\t\t%.3f%%\n", get_accuracy(sublayer_repo)) + nerv.info("*** training stat end ***") +end diff --git a/kaldi_io/init.c b/kaldi_io/init.c new file mode 100644 index 0000000..fe2f967 --- /dev/null +++ b/kaldi_io/init.c @@ -0,0 +1,8 @@ +#include "../nerv/common.h" +#include + +extern void kaldi_io_init(lua_State *L); +int luaopen_libkaldiio(lua_State *L) { + kaldi_io_init(L); + return 1; +} diff --git a/kaldi_io/init.lua b/kaldi_io/init.lua new file mode 100644 index 0000000..0ad3a60 --- /dev/null +++ b/kaldi_io/init.lua @@ -0,0 +1,47 @@ +require 'libkaldiio' +require 'speech_utils' +local KaldiReader = nerv.class("nerv.KaldiReader", "nerv.DataReader") + +function KaldiReader:__init(global_conf, reader_conf) + self.feat_id = reader_conf.id + self.frm_ext = reader_conf.frm_ext + self.gconf = global_conf + self.global_transf = reader_conf.global_transf + self.debug = global_conf.debug + if self.debug == nil then + self.debug = false + end + self.feat_repo = nerv.KaldiFeatureRepo(reader_conf.feature_rspecifier) + + self.lab_repo = {} + for id, mlf_spec in pairs(reader_conf.mlfs) do + self.lab_repo[id] = nerv.KaldiLabelRepo(mlf_spec.targets_rspecifier, + mlf_spec.format) + end +end + +function KaldiReader:get_data() + if self.feat_repo:is_end() then + return nil + end + local res = {} + -- read Kaldi feature + local feat_utter = self.feat_repo:cur_utter(self.debug) + -- global transf + local transformed = nerv.speech_utils.global_transf(feat_utter, + self.global_transf, self.frm_ext, 0, self.gconf) + res[self.feat_id] = transformed + -- add corresponding labels + for id, repo in pairs(self.lab_repo) do + local lab_utter = repo:get_utter(self.feat_repo, + self.frm_ext, + transformed:nrow(), + self.debug) + res[id] = lab_utter + --print(lab_utter) + end + -- move the pointer to next + self.feat_repo:next() + collectgarbage("collect") + return res +end diff --git a/kaldi_io/kaldi.mk b/kaldi_io/kaldi.mk new file mode 100644 index 0000000..4a397f0 --- /dev/null +++ b/kaldi_io/kaldi.mk @@ -0,0 +1,70 @@ +# This file was generated using the following command: +# ./configure + +# Rules that enable valgrind debugging ("make valgrind") + +valgrind: .valgrind + +.valgrind: + echo -n > valgrind.out + for x in $(TESTFILES); do echo $$x>>valgrind.out; valgrind ./$$x >/dev/null 2>> valgrind.out; done + ! ( grep 'ERROR SUMMARY' valgrind.out | grep -v '0 errors' ) + ! ( grep 'definitely lost' valgrind.out | grep -v -w 0 ) + rm valgrind.out + touch .valgrind + + +CONFIGURE_VERSION := 2 +OPENFSTLIBS = -L/slwork/users/wd007/src/kaldi/tools/openfst/lib -lfst +OPENFSTLDFLAGS = -Wl,-rpath=/slwork/users/wd007/src/kaldi/tools/openfst/lib +FSTROOT = /slwork/users/wd007/src/kaldi/tools/openfst +ATLASINC = /slwork/users/wd007/src/kaldi/tools/ATLAS/include +ATLASLIBS = -L/usr/lib -llapack -lcblas -latlas -lf77blas +# You have to make sure ATLASLIBS is set... + +ifndef FSTROOT +$(error FSTROOT not defined.) +endif + +ifndef ATLASINC +$(error ATLASINC not defined.) +endif + +ifndef ATLASLIBS +$(error ATLASLIBS not defined.) +endif + + +CXXFLAGS = -msse -msse2 -Wall -I.. \ + -fPIC \ + -DKALDI_DOUBLEPRECISION=0 -DHAVE_POSIX_MEMALIGN \ + -Wno-sign-compare -Wno-unused-local-typedefs -Winit-self \ + -DHAVE_EXECINFO_H=1 -rdynamic -DHAVE_CXXABI_H \ + -DHAVE_ATLAS -I$(ATLASINC) \ + -I$(FSTROOT)/include \ + $(EXTRA_CXXFLAGS) \ + -g # -O0 -DKALDI_PARANOID + +ifeq ($(KALDI_FLAVOR), dynamic) +CXXFLAGS += -fPIC +endif + +LDFLAGS = -rdynamic $(OPENFSTLDFLAGS) +LDLIBS = $(EXTRA_LDLIBS) $(OPENFSTLIBS) $(ATLASLIBS) -lm -lpthread -ldl +CC = g++ +CXX = g++ +AR = ar +AS = as +RANLIB = ranlib + +#Next section enables CUDA for compilation +CUDA = true +CUDATKDIR = /usr/local/cuda + +CUDA_INCLUDE= -I$(CUDATKDIR)/include +CUDA_FLAGS = -g -Xcompiler -fPIC --verbose --machine 64 -DHAVE_CUDA + +CXXFLAGS += -DHAVE_CUDA -I$(CUDATKDIR)/include +CUDA_LDFLAGS += -L$(CUDATKDIR)/lib64 -Wl,-rpath,$(CUDATKDIR)/lib64 +CUDA_LDLIBS += -lcublas -lcudart #LDLIBS : The libs are loaded later than static libs in implicit rule + diff --git a/kaldi_io/kaldi_io-scm-1.rockspec b/kaldi_io/kaldi_io-scm-1.rockspec new file mode 100644 index 0000000..7c9f8d8 --- /dev/null +++ b/kaldi_io/kaldi_io-scm-1.rockspec @@ -0,0 +1,36 @@ +package = "kaldi_io" +version = "scm-1" +source = { + url = "https://github.com/Nerv-SJTU/nerv-speech.git" +} +description = { + summary = "Kaldi I/O support (Kaldi I/O wrapper) for Nerv", + detailed = [[ + ]], + homepage = "https://github.com/Nerv-SJTU/nerv-speech", + license = "BSD" +} +dependencies = { + "nerv >= scm-1", + "lua >= 5.1" +} +build = { + type = "make", + build_variables = { + CFLAGS="$(CFLAGS)", + LIBFLAG="$(LIBFLAG)", + LUA_LIBDIR="$(LUA_LIBDIR)", + LUA_BINDIR="$(LUA_BINDIR)", + LUA_INCDIR="$(LUA_INCDIR)", + INST_PREFIX="$(PREFIX)", + LUA="$(LUA)", + }, + install_variables = { + LUA_BINDIR="$(LUA_BINDIR)", + INST_PREFIX="$(PREFIX)", + INST_BINDIR="$(BINDIR)", + INST_LIBDIR="$(LIBDIR)", + INST_LUADIR="$(LUADIR)", + INST_CONFDIR="$(CONFDIR)", + }, +} diff --git a/kaldi_io/src/cwrapper_kaldi.cpp b/kaldi_io/src/cwrapper_kaldi.cpp new file mode 100644 index 0000000..3dd055f --- /dev/null +++ b/kaldi_io/src/cwrapper_kaldi.cpp @@ -0,0 +1,111 @@ +#include +#include "kaldi/base/kaldi-common.h" +#include "kaldi/hmm/posterior.h" +#include "kaldi/util/table-types.h" +typedef kaldi::BaseFloat BaseFloat; + +extern "C" { +#include "cwrapper_kaldi.h" +#include "string.h" +#include "assert.h" +#include "nerv/common.h" + + extern Matrix *nerv_matrix_host_float_create(long nrow, long ncol, Status *status); + extern Matrix *nerv_matrix_host_double_create(long nrow, long ncol, Status *status); + + struct KaldiFeatureRepo { + kaldi::SequentialBaseFloatMatrixReader* feature_reader; + string utt; + }; + + KaldiFeatureRepo *kaldi_feature_repo_new(const char *feature_rspecifier) { + KaldiFeatureRepo *repo = new KaldiFeatureRepo(); + repo->feature_reader = new kaldi::SequentialBaseFloatMatrixReader(string(feature_rspecifier)); + return repo; + } + + Matrix *kaldi_feature_repo_read_utterance(KaldiFeatureRepo *repo, lua_State *L, int debug) { + Matrix *mat; /* nerv implementation */ + + repo->utt = repo->feature_reader->Key(); + kaldi::Matrix kmat = repo->feature_reader->Value(); + + int n = kmat.NumRows(); + int m = kmat.NumCols(); + Status status; + assert(sizeof(BaseFloat) == sizeof(float)); + if(sizeof(BaseFloat) == sizeof(float)) + mat = nerv_matrix_host_float_create(n, m, &status); + else if(sizeof(BaseFloat) == sizeof(double)) + mat = nerv_matrix_host_double_create(n, m, &status); + NERV_LUA_CHECK_STATUS(L, status); + size_t stride = mat->stride; + if (debug) + fprintf(stderr, "[kaldi] feature: %s %d %d\n", repo->utt.c_str(), n, m); + + for (int i = 0; i < n; i++) + { + const BaseFloat *row = kmat.RowData(i); + BaseFloat *nerv_row = (BaseFloat *)((char *)mat->data.f + i * stride); + /* use memmove to copy the row, since KaldiLib uses compact storage *