Exemple #1
0
/** 
 * <JA>
 * 認識結果に対して必要なアラインメントを全て実行する.
 * 
 * @param r [i/o] 認識処理インスタンス
 * @param param [in] 入力特徴ベクトル列
 * </JA>
 * <EN>
 * Do required forced alignment for the recognition results
 * 
 * @param r [i/o] recognition process instance
 * @param param [in] input parameter vectors
 * </EN>
 * @callgraph
 * @callergraph
 */
void
do_alignment_all(RecogProcess *r, HTK_Param *param)
{
  int n;
  Sentence *s;
  SentenceAlign *now, *prev;

  for(n = 0; n < r->result.sentnum; n++) {
    s = &(r->result.sent[n]);
    /* do forced alignment if needed */
    if (r->config->annotate.align_result_word_flag) {
      now = result_align_new();
      word_align(s->word, s->word_num, param, now, r);
      if (s->align == NULL) s->align = now;
      else prev->next = now;
      prev = now;
    }
    if (r->config->annotate.align_result_phoneme_flag) {
      now = result_align_new();
      phoneme_align(s->word, s->word_num, param, now, r);
      if (s->align == NULL) s->align = now;
      else prev->next = now;
      prev = now;
    }
    if (r->config->annotate.align_result_state_flag) {
      now = result_align_new();
      state_align(s->word, s->word_num, param, now, r);
      if (s->align == NULL) s->align = now;
      else prev->next = now;
      prev = now;
    }
  }
} 
Exemple #2
0
void push_frame(int sz_b) {
  sz_b = word_align(sz_b);
  if (top != NULL && have_space(sz_b+sizeof(void*))) { // can continue with current region
    //printf("push frame in page\n");
    *((void **)top->alloc_ptr) = top->frame_ptr;
    top->frame_ptr = top->alloc_ptr;
    top->alloc_ptr = (void *)((unsigned long)top->alloc_ptr + WORD_SZB);
  } else {
    //printf("push frame on new page\n");
    add_page(sz_b,0);
  }
}
Exemple #3
0
void
vtln_alpha(Recog *recog, RecogProcess *r)
{
    Sentence *s;
    float alpha, alpha_bgn, alpha_end;
    float max_alpha;
    LOGPROB max_score;
    PROCESS_AM *am;
    MFCCCalc *mfcc;
    SentenceAlign *align;

    s = &(r->result.sent[0]);
    align = result_align_new();

    max_score = LOG_ZERO;

    printf("------------ begin VTLN -------------\n");

    mfcc = r->am->mfcc;

    alpha_bgn = mfcc->para->vtln_alpha - VTLN_RANGE;
    alpha_end = mfcc->para->vtln_alpha + VTLN_RANGE;

    for(alpha = alpha_bgn; alpha <= alpha_end; alpha += VTLN_STEP) {
        mfcc->para->vtln_alpha = alpha;
        if (InitFBank(mfcc->wrk, mfcc->para) == FALSE) {
            jlog("ERROR: VTLN: InitFBank() failed\n");
            return;
        }
        if (wav2mfcc(recog->speech, recog->speechlen, recog) == FALSE) {
            jlog("ERROR: VTLN: wav2mfcc() failed\n");
            return;
        }
        outprob_prepare(&(r->am->hmmwrk), mfcc->param->samplenum);
        word_align(s->word, s->word_num, mfcc->param, align, r);
        printf("%f: %f\n", alpha, align->allscore);
        if (max_score < align->allscore) {
            max_score = align->allscore;
            max_alpha = alpha;
        }
    }
    printf("MAX: %f: %f\n", max_alpha, max_score);
    mfcc->para->vtln_alpha = max_alpha;
    if (InitFBank(mfcc->wrk, mfcc->para) == FALSE) {
        jlog("ERROR: VTLN: InitFBank() failed\n");
        return;
    }

    printf("------------ end VTLN -------------\n");

    result_align_free(align);

}
Exemple #4
0
void *stack_alloc(int sz_b) {
  assert(top != NULL);
  sz_b = word_align(sz_b);
 retry: if (have_space(sz_b)) { // can continue with current region
    void *res = top->alloc_ptr;
    //printf("allocated %d bytes\n", sz_b);
    top->alloc_ptr = (void *)((unsigned long)top->alloc_ptr + sz_b);
    return res;
  } else {
    //printf("adding page on demand\n");
    add_page(sz_b,1);
    goto retry;
  }
}
Exemple #5
0
static void *malloc_base() {
    static Chunk b = NULL;
    if (!b) {
        b = sbrk(word_align(sizeof(struct chunk)));
        if (b == (void*) -1) {
            _exit(127);
        }
        b->next = NULL;
        b->prev = NULL;
        b->size = 0;
        b->free = 0;
        b->data = NULL;
    }
    return b;
}
Exemple #6
0
static
struct chunk* get_base(void) 
{
  static struct chunk *base = NULL;

  if (base == NULL) 
   {
    if ((base = sbrk(word_align(sizeof(struct chunk)))) != (void *)-1)
     {
      base->next = NULL;
      base->prev = NULL;
      base->size = 0;
      base->free = 0;
      //base->data = NULL;
     }
   }
  return base;
}
Exemple #7
0
void *malloc(size_t size)
{

  if (size == 0 )
   return NULL;
  size_t lenght = word_align(size);
  struct chunk *c = find_chunk(size);

  if(c->next==NULL)
   {
    if (extend_heap(c,lenght) == 0)
     return NULL;
   }
  else
   {
    c->next->free = 0;
   }
  return (&c->next->data);

}
Exemple #8
0
void *malloc(size_t size) {
    if (!size) return NULL;
    size_t length = word_align(size + sizeof(struct chunk));
    Chunk prev = NULL;
    Chunk c = malloc_chunk_find(size, &prev);
    if (!c) {
        Chunk newc = sbrk(length);
        if (newc == (void*) -1) {
            return NULL;
        }
        newc->next = NULL;
        newc->prev = prev;
        newc->size = length - sizeof(struct chunk);
        newc->data = newc + 1;
        prev->next = newc;
        c = newc;
    } else if (length + sizeof(size_t) < c->size) {
        malloc_split_next(c, length);
    }
    c->free = 0;
    return c->data;
}
void cTumkwsjSink::juAlignPass1Keywords(RecogProcess *r, HTK_Param *param)
{
//  int n;
  Sentence *s;
  SentenceAlign *now;//, *prev;


  s = &(r->result.pass1);
  /* do forced alignment if needed */
  if ((r->config->annotate.align_result_word_flag)&&(s->word_num>0)) {
    //now = result_align_new();
    //if (s->align == NULL) 
      now = result_align_new(); //else now = s->align;
    word_align(s->word, s->word_num, param, now, r);
    if (s->align == NULL) //result_align_free(s->align);
      s->align = now;
    else {
      result_align_free(s->align);
      s->align = now;
    }
//    else prev->next = now;
//    prev = now;
  }
}