/* 上传用户词表 */ int upload_userwords() { char* userwords = NULL; unsigned int len = 0; unsigned int read_len = 0; FILE* fp = NULL; int ret = -1; fp = fopen("userwords1.txt", "rb"); if (NULL == fp) { printf("\nopen [userwords.txt] failed! \n"); goto upload_exit; } fseek(fp, 0, SEEK_END); len = ftell(fp); //获取音频文件大小 fseek(fp, 0, SEEK_SET); userwords = (char*)malloc(len + 1); if (NULL == userwords) { printf("\nout of memory! \n"); goto upload_exit; } read_len = fread((void*)userwords, 1, len, fp); //读取用户词表内容 if (read_len != len) { printf("\nread [userwords.txt] failed!\n"); goto upload_exit; } userwords[len] = '\0'; MSPUploadData("userwords", userwords, len, "sub = uup, dtt = userword", &ret); //上传用户词表 if (MSP_SUCCESS != ret) { printf("\nMSPUploadData failed ! errorCode: %d \n", ret); goto upload_exit; } upload_exit: if (NULL != fp) { fclose(fp); fp = NULL; } if (NULL != userwords) { free(userwords); userwords = NULL; } return ret; }
int get_grammar_id( int upload) { int ret = MSP_SUCCESS; const char * sessionID = NULL; char UserData[MAX_KEYWORD_LEN]; unsigned int len = 0; const char* testID = NULL; FILE *fp = NULL; memset(UserData, 0, MAX_KEYWORD_LEN); if (0 == upload) { strcpy(GrammarID, "e7eb1a443ee143d5e7ac52cb794810fe"); //65bc94965a076ecaf6ea79899bebc534 //这个ID是我上传之后记录下来的。语法上传之后永久保存在服务器上,所以不要反复上传同样的语法 return 0; } //如果想要重新上传语法,传入参数upload置为TRUE,就可以走下面的上传语法流程 fp = fopen("asr_keywords_utf8.txt", "rb");//关键字列表文件必须是utf8格式 if (fp == NULL) { printf("keyword file cannot open\n"); return -1; } len = (unsigned int)fread(UserData, 1, MAX_KEYWORD_LEN, fp); UserData[len] = 0; fclose(fp); testID = MSPUploadData("userword", UserData, len, "dtt = userword, sub = asr", &ret);// sub 参数必需,否则返回空串 if(ret != MSP_SUCCESS) { printf("UploadData with errorCode: %d \n", ret); return ret; } memcpy((void*)GrammarID, testID, strlen(testID)); printf("*************************************************************\n"); printf("GrammarID: \"%s\" \n", GrammarID);//将获得的GrammarID输出到屏幕上 printf("*************************************************************\n"); return 0; }
int get_grammar_id(char* grammar_id, unsigned int id_len) { FILE* fp = NULL; char* grammar = NULL; unsigned int grammar_len = 0; unsigned int read_len = 0; const char* ret_id = NULL; unsigned int ret_id_len = 0; int ret = -1; if (NULL == grammar_id) goto grammar_exit; fp = fopen("gm_continuous_digit.abnf", "rb"); if (NULL == fp) { printf("\nopen grammar file failed!\n"); goto grammar_exit; } fseek(fp, 0, SEEK_END); grammar_len = ftell(fp); //获取语法文件大小 fseek(fp, 0, SEEK_SET); grammar = (char*)malloc(grammar_len + 1); if (NULL == grammar) { printf("\nout of memory!\n"); goto grammar_exit; } read_len = fread((void *)grammar, 1, grammar_len, fp); //读取语法内容 if (read_len != grammar_len) { printf("\nread grammar error!\n"); goto grammar_exit; } grammar[grammar_len] = '\0'; ret_id = MSPUploadData("usergram", grammar, grammar_len, "dtt = abnf, sub = asr", &ret); //上传语法 if (MSP_SUCCESS != ret) { printf("\nMSPUploadData failed, error code: %d.\n", ret); goto grammar_exit; } ret_id_len = strlen(ret_id); if (ret_id_len >= id_len) { printf("\nno enough buffer for grammar_id!\n"); goto grammar_exit; } strncpy(grammar_id, ret_id, ret_id_len); printf("grammar_id: \"%s\" \n", grammar_id); //下次可以直接使用该ID,不必重复上传语法。 grammar_exit: if (NULL != fp) { fclose(fp); fp = NULL; } if (NULL!= grammar) { free(grammar); grammar = NULL; } return ret; }