summaryrefslogtreecommitdiff
path: root/htk_io/tools/tnet_to_nerv.c
diff options
context:
space:
mode:
authorDeterminant <[email protected]>2015-06-25 12:56:45 +0800
committerDeterminant <[email protected]>2015-06-25 12:56:45 +0800
commita74183ddb4ab8383bfe214b3745eb8a0a99ee47a (patch)
treed5e69cf8c4c2db2e3a4722778352fc3c95953bb2 /htk_io/tools/tnet_to_nerv.c
parentb6301089cde20f4c825c7f5deaf179082aad63da (diff)
let HTK I/O implementation be a single package
Diffstat (limited to 'htk_io/tools/tnet_to_nerv.c')
-rw-r--r--htk_io/tools/tnet_to_nerv.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/htk_io/tools/tnet_to_nerv.c b/htk_io/tools/tnet_to_nerv.c
new file mode 100644
index 0000000..f781236
--- /dev/null
+++ b/htk_io/tools/tnet_to_nerv.c
@@ -0,0 +1,57 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+char token[1024];
+double mat[4096][4096];
+int main() {
+ FILE *fout = fopen("converted.nerv", "w");
+ int cnt = 0;
+ while (scanf("%s", token) != EOF)
+ {
+ int nrow, ncol;
+ int i, j;
+ if (strcmp(token, "<biasedlinearity>") == 0)
+ {
+ scanf("%d %d", &ncol, &nrow);
+ scanf("%s %d %d", token, &ncol, &nrow);
+ printf("%d %d\n", nrow, ncol);
+ for (j = 0; j < ncol; j++)
+ for (i = 0; i < nrow; i++)
+ scanf("%lf", mat[i] + j);
+ off_t base = ftello(fout);
+ fprintf(fout, "%16d", 0);
+ fprintf(fout, "{type=\"nerv.LinearTransParam\",id=\"affine%d_ltp\"}\n",
+ cnt);
+ fprintf(fout, "%d %d\n", nrow, ncol);
+ for (i = 0; i < nrow; i++)
+ {
+ for (j = 0; j < ncol; j++)
+ fprintf(fout, "%.8f ", mat[i][j]);
+ fprintf(fout, "\n");
+ }
+ size_t length = ftello(fout) - base;
+ fseeko(fout, base, SEEK_SET);
+ fprintf(fout, "[%13lu]\n", length);
+ fseeko(fout, 0, SEEK_END);
+ if (scanf("%s %d", token, &ncol) == 2 && *token == 'v')
+ {
+ base = ftello(fout);
+ for (j = 0; j < ncol; j++)
+ scanf("%lf", mat[0] + j);
+ fprintf(fout, "%16d", 0);
+ fprintf(fout, "{type=\"nerv.BiasParam\",id=\"affine%d_bp\"}\n",
+ cnt);
+ fprintf(fout, "1 %d\n", nrow, ncol);
+ for (j = 0; j < ncol; j++)
+ fprintf(fout, "%.8f ", mat[0][j]);
+ fprintf(fout, "\n");
+ length = ftello(fout) - base;
+ fseeko(fout, base, SEEK_SET);
+ fprintf(fout, "[%13lu]\n", length);
+ cnt++;
+ fseeko(fout, 0, SEEK_END);
+ }
+ }
+ }
+ return 0;
+}