Engine for Sphinx 3 aligner. More...
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>#include <feat.h>#include <strfuncs.h>#include <s3types.h>#include "mdef.h"#include "tmat.h"#include "dict.h"#include "logs3.h"#include "s3_align.h"Classes | |
| struct | pnode_s |
| struct | plink_s |
| struct | history_s |
| struct | snode_s |
| struct | slink_s |
Macros | |
| #define | ACTIVE_LIST_SIZE_INCR 16380 |
Typedefs | |
| typedef struct pnode_s | pnode_t |
| typedef struct plink_s | plink_t |
| typedef struct history_s | history_t |
| typedef struct snode_s | snode_t |
| typedef struct slink_s | slink_t |
Functions | |
| int32 | align_build_sent_hmm (char *wordstr, int insert_sil) |
| int32 | align_destroy_sent_hmm (void) |
| void | align_sen_active (uint8 *senlist, int32 n_sen) |
| int32 | align_start_utt (char *uttid) |
| int32 | align_frame (int32 *senscr) |
| int32 | align_end_utt (align_stseg_t **stseg_out, align_phseg_t **phseg_out, align_wdseg_t **wdseg_out) |
| int32 | align_init (mdef_t *_mdef, tmat_t *_tmat, dict_t *_dict, cmd_ln_t *_config, logmath_t *_logmath) |
| void | align_free (void) |
Engine for Sphinx 3 aligner.
| #define ACTIVE_LIST_SIZE_INCR 16380 |
A may have links (transitions) to several successor or predecessor nodes. They are captured by a list of the following plink_t type.
SOME ASSUMPTIONS
Assumptions:
Head of list of all history nodes
State DAG structures similar to phone DAG structures.
| int32 align_build_sent_hmm | ( | char * | wordstr, |
| int | insert_sil | ||
| ) |
Build a sentence HMM for the given transcription (wordstr). A two-level DAG is built: phone-level and state-level.
| wordstr | In: Word transcript |
| insert_sil | In: Whether to insert silences/fillers |
References slink_s::node.
| int32 align_destroy_sent_hmm | ( | void | ) |
| int32 align_end_utt | ( | align_stseg_t ** | stseg_out, |
| align_phseg_t ** | phseg_out, | ||
| align_wdseg_t ** | wdseg_out | ||
| ) |
All frames consumed. Trace back best Viterbi state sequence and dump it out.
| stseg_out | Out: list of state segmentation |
| phseg_out | Out: list of phone segmentation |
| wdseg_out | Out: list of word segmentation |
| int32 align_frame | ( | int32 * | senscr | ) |
One frame of Viterbi time alignment.
| senscr | In: array of senone scores this frame |
| void align_free | ( | void | ) |
| int32 align_init | ( | mdef_t * | _mdef, |
| tmat_t * | _tmat, | ||
| dict_t * | _dict, | ||
| cmd_ln_t * | _config, | ||
| logmath_t * | _logmath | ||
| ) |
| void align_sen_active | ( | uint8 * | senlist, |
| int32 | n_sen | ||
| ) |
Flag the active senones.
| senlist | Out: senlist[s] TRUE iff active in frame |
| n_sen | In: Size of senlist[] array |
| int32 align_start_utt | ( | char * | uttid | ) |
Start Viterbi alignment using the sentence HMM previously built. Assumes that each utterance will only be aligned once; state member variables initialized during sentence HMM building.
1.8.14