summaryrefslogtreecommitdiff
path: root/kaldi_io/tools/kaldi_to_nerv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kaldi_io/tools/kaldi_to_nerv.cpp')
-rw-r--r--kaldi_io/tools/kaldi_to_nerv.cpp32
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 == ']');
}
}