diff options
Diffstat (limited to 'kaldi_io/tools')
-rw-r--r-- | kaldi_io/tools/kaldi_to_nerv.cpp | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/kaldi_io/tools/kaldi_to_nerv.cpp b/kaldi_io/tools/kaldi_to_nerv.cpp index 1edb0f2..0282b7c 100644 --- a/kaldi_io/tools/kaldi_to_nerv.cpp +++ b/kaldi_io/tools/kaldi_to_nerv.cpp @@ -8,26 +8,30 @@ char token[1024]; char output[1024]; double mat[4096][4096]; int main(int argc, char **argv) { + FILE *fin; std::ofstream fout; - fout.open(argv[1]); + assert(argc == 3); + fin = fopen(argv[1], "r"); + fout.open(argv[2]); + assert(fin != NULL); int cnt = 0; bool shift; - while (scanf("%s", token) != EOF) + while (fscanf(fin, "%s", token) != EOF) { int nrow, ncol; int i, j; if (strcmp(token, "<AffineTransform>") == 0) { double lrate, blrate, mnorm; - scanf("%d %d", &ncol, &nrow); - scanf("%s %lf %s %lf %s %lf", + fscanf(fin, "%d %d", &ncol, &nrow); + fscanf(fin, "%s %lf %s %lf %s %lf", token, &lrate, token, &blrate, token, &mnorm); - scanf("%s", token); + fscanf(fin, "%s", token); assert(*token == '['); printf("%d %d\n", nrow, ncol); for (j = 0; j < ncol; j++) for (i = 0; i < nrow; i++) - scanf("%lf", mat[i] + j); + fscanf(fin, "%lf", mat[i] + j); long base = fout.tellp(); sprintf(output, "%16d", 0); fout << output; @@ -47,13 +51,13 @@ int main(int argc, char **argv) { sprintf(output, "[%13lu]\n", length); fout << output; fout.seekp(0, std::ios_base::end); - scanf("%s", token); + fscanf(fin, "%s", token); assert(*token == ']'); - if (scanf("%s", token) == 1 && *token == '[') + if (fscanf(fin, "%s", token) == 1 && *token == '[') { base = fout.tellp(); for (j = 0; j < ncol; j++) - scanf("%lf", mat[0] + j); + fscanf(fin, "%lf", mat[0] + j); sprintf(output, "%16d", 0); fout << output; sprintf(output, "{type=\"nerv.BiasParam\",id=\"affine%d_bp\"}\n", @@ -76,14 +80,14 @@ int main(int argc, char **argv) { strcmp(token, "<Rescale>") == 0) { double lrate, blrate, mnorm; - scanf("%d %d", &ncol, &ncol); - scanf("%s %lf", + fscanf(fin, "%d %d", &ncol, &ncol); + fscanf(fin, "%s %lf", token, &lrate); - scanf("%s", token); + fscanf(fin, "%s", token); assert(*token == '['); printf("%d\n", ncol); for (j = 0; j < ncol; j++) - scanf("%lf", mat[0] + j); + fscanf(fin, "%lf", mat[0] + j); long base = fout.tellp(); sprintf(output, "%16d", 0); fout << output; @@ -101,7 +105,7 @@ int main(int argc, char **argv) { sprintf(output, "[%13lu]\n", length); fout << output; fout.seekp(0, std::ios_base::end); - scanf("%s", token); + fscanf(fin, "%s", token); assert(*token == ']'); } } |