Example #1
0
bool asr(speechrecog::Command::Request  &req,
         speechrecog::Command::Response &res)
{
	const char *login_config    = "appid = 55b1aeb0"; //登录参数
	UserData asr_data; 
	int ret                     = 0 ;
	char c;

	ret = MSPLogin(NULL, NULL, login_config); //第一个参数为用户名,第二个参数为密码,传NULL即可,第三个参数是登录参数
	if (MSP_SUCCESS != ret) {
		printf("登录失败:%d\n", ret);
		goto exit;
	}

	memset(&asr_data, 0, sizeof(UserData));
	printf("构建离线识别语法网络...\n");
	ret = build_grammar(&asr_data);  //第一次使用某语法进行识别,需要先构建语法网络,获取语法ID,之后使用此语法进行识别,无需再次构建
	if (MSP_SUCCESS != ret) {
		printf("构建语法调用失败!\n");
		goto exit;
	}
	while (1 != asr_data.build_fini)
		usleep(300 * 1000);
	if (MSP_SUCCESS != asr_data.errcode)
		goto exit;
	printf("离线识别语法网络构建完成,开始识别...\n");	
	ret = run_asr(&asr_data);
	if (MSP_SUCCESS != ret) {
		printf("离线语法识别出错: %d \n", ret);
		goto exit;
	}

/////////////////////////////将识别结果rec_rslt传递给trigger//////////////////////////////////////////

         res.command=rec_rslt;
         if(flag1)
           res.command=tmpt1;
         if(flag2)
           res.command=tmpt2;
  

exit:
	MSPLogout();
	return true;

}
Example #2
0
int main()
{
    grammar* g = build_grammar("grammar/simple.txt");

    gaussian_cluster* sil = g->hmms[10];
    gaussian_cluster* one = g->hmms[1];
    gaussian_cluster* two = g->hmms[2];
    (void) sil; (void) one; (void) two;

    //Print out params in matrix
    /*
    for(int j = 0; j < CEPSTRUM_DIMENSION; j++)
    {
        for(int i = 0; i < sil->num_clusters; i++)
            printf("%f ",sil->params[i]->means.values[j]);
        printf("\n");
    }
    printf("\n\n");
    */
    for(int j = 0; j < CEPSTRUM_DIMENSION; j++)
    {
        for(int i = 0; i < one->num_clusters; i++)
            printf("%f ",one->params[i]->means.values[j]);
        printf("\n");
    }
    printf("\n\n");
    /*
    for(int j = 0; j < CEPSTRUM_DIMENSION; j++)
    {
        for(int i = 0; i < two->num_clusters; i++)
            printf("%f ",two->params[i]->means.values[j]);
        printf("\n");
    }
    */

    /*
    //Append models
    gaussian_cluster* cat = malloc(sizeof(gaussian_cluster));
    cat->params = calloc(25,sizeof(single_gaussian_params*));
    cat->stationary_probs = calloc(25,sizeof(double));
    cat->transition_probs = calloc(25,sizeof(double));
    cat->num_clusters = 25;

    gaussian_cluster* wordone = g->hmms[8];
    gaussian_cluster* wordtwo = g->hmms[4];
    for(int i = 0; i < 5; i++)
    {
        cat->params[i] = sil->params[i];
        cat->params[i+5] = wordone->params[i];
        cat->params[i+10] = sil->params[i];
        cat->params[i+15] = wordtwo->params[i];
        cat->params[i+20] = sil->params[i];

        cat->stationary_probs[i] = sil->stationary_probs[i];
        cat->stationary_probs[i+5] = wordone->stationary_probs[i];
        cat->stationary_probs[i+10] = sil->stationary_probs[i];
        cat->stationary_probs[i+15] = wordtwo->stationary_probs[i];
        cat->stationary_probs[i+20] = sil->stationary_probs[i];

        cat->transition_probs[i] = sil->transition_probs[i];
        cat->transition_probs[i+5] = wordone->transition_probs[i];
        cat->transition_probs[i+10] = sil->transition_probs[i];
        cat->transition_probs[i+15] = wordtwo->transition_probs[i];
        cat->transition_probs[i+20] = sil->transition_probs[i];
    }

    //Read in test
    feature_vectors* test = features_from_file("analysis/eightfour-40.out");

    //Score
    dtw_t* trellis = *get_gaussian_trellis(test, &cat, 1, false, .1);
    while(!dtw_fill_next_col(trellis));
    dtw_print_struct(trellis);
    */

    return 0;
}