summaryrefslogtreecommitdiff
path: root/tnet_io/cwrapper.cpp
diff options
context:
space:
mode:
authorDeterminant <ted.sybil@gmail.com>2015-06-25 12:56:45 +0800
committerDeterminant <ted.sybil@gmail.com>2015-06-25 12:56:45 +0800
commita74183ddb4ab8383bfe214b3745eb8a0a99ee47a (patch)
treed5e69cf8c4c2db2e3a4722778352fc3c95953bb2 /tnet_io/cwrapper.cpp
parentb6301089cde20f4c825c7f5deaf179082aad63da (diff)
let HTK I/O implementation be a single package
Diffstat (limited to 'tnet_io/cwrapper.cpp')
-rw-r--r--tnet_io/cwrapper.cpp148
1 files changed, 0 insertions, 148 deletions
diff --git a/tnet_io/cwrapper.cpp b/tnet_io/cwrapper.cpp
deleted file mode 100644
index 98ad864..0000000
--- a/tnet_io/cwrapper.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-#include "KaldiLib/Features.h"
-#include "KaldiLib/Labels.h"
-#include "KaldiLib/Common.h"
-#include "KaldiLib/UserInterface.h"
-#include <string>
-#define SNAME "TNET"
-
-extern "C" {
-#include "cwrapper.h"
-#include "string.h"
-#include "../../nerv/common.h"
-
- extern Matrix *nerv_matrix_host_float_create(long nrow, long ncol, Status *status);
-
- struct TNetFeatureRepo {
- TNet::FeatureRepository feature_repo;
- TNet::UserInterface ui;
- bool swap_features;
- int target_kind;
- int deriv_order;
- int* p_deriv_win_lenghts;
- int start_frm_ext;
- int end_frm_ext;
- char* cmn_path;
- char* cmn_file;
- const char* cmn_mask;
- char* cvn_path;
- char* cvn_file;
- const char* cvn_mask;
- const char* cvg_file;
- TNet::Matrix<float> feats_host; /* KaldiLib implementation */
- };
-
- TNetFeatureRepo *tnet_feature_repo_new(const char *p_script, const char *config, int context) {
- TNetFeatureRepo *repo = new TNetFeatureRepo();
- repo->ui.ReadConfig(config);
- repo->swap_features = !repo->ui.GetBool(SNAME":NATURALREADORDER", TNet::IsBigEndian());
- /* load defaults */
- repo->target_kind = repo->ui.GetFeatureParams(&repo->deriv_order,
- &repo->p_deriv_win_lenghts,
- &repo->start_frm_ext, &repo->end_frm_ext,
- &repo->cmn_path, &repo->cmn_file, &repo->cmn_mask,
- &repo->cvn_path, &repo->cvn_file, &repo->cvn_mask,
- &repo->cvg_file, SNAME":", 0);
- repo->start_frm_ext = repo->end_frm_ext = context;
- repo->feature_repo.Init(repo->swap_features,
- repo->start_frm_ext, repo->end_frm_ext, repo->target_kind,
- repo->deriv_order, repo->p_deriv_win_lenghts,
- repo->cmn_path, repo->cmn_mask,
- repo->cvn_path, repo->cvn_mask, repo->cvg_file);
- repo->feature_repo.AddFileList(p_script);
- repo->feature_repo.Rewind();
- return repo;
- }
-
- Matrix *tnet_feature_repo_read_utterance(TNetFeatureRepo *repo, lua_State *L, int debug) {
- Matrix *mat; /* nerv implementation */
- repo->feature_repo.ReadFullMatrix(repo->feats_host);
- std::string utter_str = repo->feature_repo.Current().Logical();
- repo->feats_host.CheckData(utter_str);
- int n = repo->feats_host.Rows();
- int m = repo->feats_host.Cols();
- Status status;
- mat = nerv_matrix_host_float_create(n, m, &status);
- NERV_LUA_CHECK_STATUS(L, status);
- size_t stride = mat->stride;
- if (debug)
- fprintf(stderr, "[tnet] feature: %s %d %d\n", utter_str.c_str(), n, m);
- for (int i = 0; i < n; i++)
- {
- float *row = repo->feats_host.pRowData(i);
- float *nerv_row = (float *)((char *)mat->data.f + i * stride);
- /* use memmove to copy the row, since KaldiLib uses compact storage */
- memmove(nerv_row, row, sizeof(float) * m);
- }
- return mat;
- }
-
- void tnet_feature_repo_next(TNetFeatureRepo *repo) {
- repo->feature_repo.MoveNext();
- }
-
- int tnet_feature_repo_is_end(TNetFeatureRepo *repo) {
- return repo->feature_repo.EndOfList();
- }
-
- size_t tnet_feature_repo_current_samplerate(TNetFeatureRepo *repo) {
- return repo->feature_repo.CurrentHeader().mSamplePeriod;
- }
-
- const char *tnet_feature_repo_current_tag(TNetFeatureRepo *repo) {
- return repo->feature_repo.Current().Logical().c_str();
- }
-
- void tnet_feature_repo_destroy(TNetFeatureRepo *repo) {
- if (repo->cmn_mask)
- free(repo->cmn_path);
- if (repo->cvn_mask)
- free(repo->cvn_path);
- free(repo->p_deriv_win_lenghts);
- delete repo;
- }
-
- struct TNetLabelRepo {
- TNet::LabelRepository label_repo;
- };
-
- TNetLabelRepo *tnet_label_repo_new(const char *mlf, const char *fmt,
- const char *fmt_arg, const char *dir,
- const char *ext) {
- TNetLabelRepo *repo = new TNetLabelRepo();
- repo->label_repo.InitExt(mlf, fmt, fmt_arg, dir, ext);
- /* repo->label_repo.Init(mlf, fmt_arg, dir, ext); */
- return repo;
- }
-
- Matrix *tnet_label_repo_read_utterance(TNetLabelRepo *repo,
- size_t frames,
- size_t sample_rate,
- const char *tag,
- lua_State *L,
- int debug) {
- std::vector<TNet::Matrix<float> > labs_hosts; /* KaldiLib implementation */
- Matrix *mat;
- repo->label_repo.GenDesiredMatrixExt(labs_hosts, frames,
- sample_rate, tag);
- int n = labs_hosts[0].Rows();
- int m = labs_hosts[0].Cols();
- Status status;
- mat = nerv_matrix_host_float_create(n, m, &status);
- NERV_LUA_CHECK_STATUS(L, status);
- size_t stride = mat->stride;
- if (debug)
- fprintf(stderr, "[tnet] label: %s %d %d\n", tag, n, m);
- for (int i = 0; i < n; i++)
- {
- float *row = labs_hosts[0].pRowData(i);
- float *nerv_row = (float *)((char *)mat->data.f + i * stride);
- /* use memmove to copy the row, since KaldiLib uses compact storage */
- memmove(nerv_row, row, sizeof(float) * m);
- }
- return mat;
- }
-
- void tnet_label_repo_destroy(TNetLabelRepo *repo) {
- delete repo;
- }
-}