diff options
author | Determinant <[email protected]> | 2015-06-25 12:56:45 +0800 |
---|---|---|
committer | Determinant <[email protected]> | 2015-06-25 12:56:45 +0800 |
commit | a74183ddb4ab8383bfe214b3745eb8a0a99ee47a (patch) | |
tree | d5e69cf8c4c2db2e3a4722778352fc3c95953bb2 /htk_io/tools | |
parent | b6301089cde20f4c825c7f5deaf179082aad63da (diff) |
let HTK I/O implementation be a single package
Diffstat (limited to 'htk_io/tools')
-rw-r--r-- | htk_io/tools/tnet_to_nerv.c | 57 | ||||
-rw-r--r-- | htk_io/tools/tnet_to_nerv.cpp | 68 |
2 files changed, 125 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; +} diff --git a/htk_io/tools/tnet_to_nerv.cpp b/htk_io/tools/tnet_to_nerv.cpp new file mode 100644 index 0000000..bbfddcf --- /dev/null +++ b/htk_io/tools/tnet_to_nerv.cpp @@ -0,0 +1,68 @@ +#include <cstdio> +#include <fstream> +#include <string> +#include <cstring> +char token[1024]; +char output[1024]; +double mat[4096][4096]; +int main(int argc, char **argv) { + std::ofstream fout; + fout.open(argv[1]); + 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); + long base = fout.tellp(); + sprintf(output, "%16d", 0); + fout << output; + sprintf(output, "{type=\"nerv.LinearTransParam\",id=\"affine%d_ltp\"}\n", + cnt); + fout << output; + sprintf(output, "%d %d\n", nrow, ncol); + fout << output; + for (i = 0; i < nrow; i++) + { + for (j = 0; j < ncol; j++) + fout << mat[i][j] << " "; + fout << std::endl; + } + long length = fout.tellp() - base; + fout.seekp(base); + sprintf(output, "[%13lu]\n", length); + fout << output; + fout.seekp(0, std::ios_base::end); + if (scanf("%s %d", token, &ncol) == 2 && *token == 'v') + { + base = fout.tellp(); + for (j = 0; j < ncol; j++) + scanf("%lf", mat[0] + j); + sprintf(output, "%16d", 0); + fout << output; + sprintf(output, "{type=\"nerv.BiasParam\",id=\"affine%d_bp\"}\n", + cnt); + fout << output; + sprintf(output, "1 %d\n", ncol); + fout << output; + for (j = 0; j < ncol; j++) + fout << mat[0][j] << " "; + fout << std::endl; + length = fout.tellp() - base; + fout.seekp(base); + sprintf(output, "[%13lu]\n", length); + fout << output; + fout.seekp(0, std::ios_base::end); + cnt++; + } + } + } + return 0; +} |