PocketSphinx
0.6
|
Acoustic model structures for PocketSphinx. More...
#include <assert.h>
#include <string.h>
#include <sphinxbase/prim_type.h>
#include <sphinxbase/err.h>
#include <sphinxbase/cmd_ln.h>
#include <sphinxbase/strfuncs.h>
#include <sphinxbase/byteorder.h>
#include <sphinxbase/feat.h>
#include <sphinxbase/bio.h>
#include "cmdln_macro.h"
#include "acmod.h"
#include "s2_semi_mgau.h"
#include "ptm_mgau.h"
#include "ms_mgau.h"
Go to the source code of this file.
Defines | |
#define | WORDS_BIGENDIAN 1 |
#define | MPX_BITVEC_SET(a, h, i) |
#define | NONMPX_BITVEC_SET(a, h, i) |
Functions | |
int | acmod_fe_mismatch (acmod_t *acmod, fe_t *fe) |
int | acmod_feat_mismatch (acmod_t *acmod, feat_t *fcb) |
acmod_t * | acmod_init (cmd_ln_t *config, logmath_t *lmath, fe_t *fe, feat_t *fcb) |
Initialize an acoustic model. | |
void | acmod_free (acmod_t *acmod) |
Finalize an acoustic model. | |
ps_mllr_t * | acmod_update_mllr (acmod_t *acmod, ps_mllr_t *mllr) |
Adapt acoustic model using a linear transform. | |
int | acmod_write_senfh_header (acmod_t *acmod, FILE *logfh) |
Write senone dump file header. | |
int | acmod_set_senfh (acmod_t *acmod, FILE *logfh) |
Start logging senone scores to a filehandle. | |
int | acmod_set_mfcfh (acmod_t *acmod, FILE *logfh) |
Start logging MFCCs to a filehandle. | |
int | acmod_set_rawfh (acmod_t *acmod, FILE *logfh) |
Start logging raw audio to a filehandle. | |
void | acmod_grow_feat_buf (acmod_t *acmod, int nfr) |
int | acmod_set_grow (acmod_t *acmod, int grow_feat) |
Set memory allocation policy for utterance processing. | |
int | acmod_start_utt (acmod_t *acmod) |
Mark the start of an utterance. | |
int | acmod_end_utt (acmod_t *acmod) |
Mark the end of an utterance. | |
int | acmod_process_raw (acmod_t *acmod, int16 const **inout_raw, size_t *inout_n_samps, int full_utt) |
TODO: Set queue length for utterance processing. | |
int | acmod_process_cep (acmod_t *acmod, mfcc_t ***inout_cep, int *inout_n_frames, int full_utt) |
Feed acoustic feature data into the acoustic model for scoring. | |
int | acmod_process_feat (acmod_t *acmod, mfcc_t **feat) |
Feed dynamic feature data into the acoustic model for scoring. | |
int | acmod_set_insenfh (acmod_t *acmod, FILE *senfh) |
Set up a senone score dump file for input. | |
int | acmod_rewind (acmod_t *acmod) |
Rewind the current utterance, allowing it to be rescored. | |
int | acmod_advance (acmod_t *acmod) |
Advance the frame index. | |
int | acmod_write_scores (acmod_t *acmod, int n_active, uint8 const *active, int16 const *senscr, FILE *senfh) |
Write a frame of senone scores to a dump file. | |
int | acmod_read_scores (acmod_t *acmod) |
Read one frame of scores from senone score dump file. | |
mfcc_t ** | acmod_get_frame (acmod_t *acmod, int *inout_frame_idx) |
Get a frame of dynamic feature data. | |
int16 const * | acmod_score (acmod_t *acmod, int *inout_frame_idx) |
Score one frame of data. | |
int | acmod_best_score (acmod_t *acmod, int *out_best_senid) |
Get best score and senone index for current frame. | |
void | acmod_clear_active (acmod_t *acmod) |
Clear set of active senones. | |
void | acmod_activate_hmm (acmod_t *acmod, hmm_t *hmm) |
Activate senones associated with an HMM. | |
int32 | acmod_flags2list (acmod_t *acmod) |
Build active list from. |
Acoustic model structures for PocketSphinx.
Definition in file acmod.c.
#define MPX_BITVEC_SET | ( | a, | |
h, | |||
i | |||
) |
#define NONMPX_BITVEC_SET | ( | a, | |
h, | |||
i | |||
) |
int acmod_advance | ( | acmod_t * | acmod | ) |
Advance the frame index.
This function moves to the next frame of input data. Subsequent calls to acmod_score() will return scores for that frame, until the next call to acmod_advance().
Definition at line 880 of file acmod.c.
References acmod_s::feat_outidx, ps_mgau_s::frame_idx, acmod_s::mgau, acmod_s::n_feat_alloc, acmod_s::n_feat_frame, and acmod_s::output_frame.
mfcc_t** acmod_get_frame | ( | acmod_t * | acmod, |
int * | inout_frame_idx | ||
) |
Get a frame of dynamic feature data.
inout_frame_idx | Input: frame index to get, or NULL to obtain features for the most recent frame. Output: frame index corresponding to this set of features. |
Definition at line 1064 of file acmod.c.
References acmod_s::feat_buf.
acmod_t* acmod_init | ( | cmd_ln_t * | config, |
logmath_t * | lmath, | ||
fe_t * | fe, | ||
feat_t * | fcb | ||
) |
Initialize an acoustic model.
config | a command-line object containing parameters. This pointer is not retained by this object. |
lmath | global log-math parameters. |
fe | a previously-initialized acoustic feature module to use, or NULL to create one automatically. If this is supplied and its parameters do not match those in the acoustic model, this function will fail. This pointer is not retained. |
fe | a previously-initialized dynamic feature module to use, or NULL to create one automatically. If this is supplied and its parameters do not match those in the acoustic model, this function will fail. This pointer is not retained. |
Definition at line 229 of file acmod.c.
References acmod_free(), ACMOD_IDLE, acmod_s::compallsen, acmod_s::config, acmod_s::fcb, acmod_s::fe, acmod_s::feat_buf, acmod_s::framepos, acmod_s::lmath, acmod_s::log_zero, acmod_s::mdef, acmod_s::mfc_buf, acmod_s::n_feat_alloc, acmod_s::n_mfc_alloc, acmod_s::senone_active, acmod_s::senone_active_vec, acmod_s::senone_scores, and acmod_s::state.
Referenced by ps_reinit().
int acmod_process_cep | ( | acmod_t * | acmod, |
mfcc_t *** | inout_cep, | ||
int * | inout_n_frames, | ||
int | full_utt | ||
) |
Feed acoustic feature data into the acoustic model for scoring.
inout_cep | In: Pointer to buffer of features Out: Pointer to next frame to be read |
inout_n_frames | In: Number of frames available Out: Number of frames remaining |
full_utt | If non-zero, this block represents a full utterance and should be processed as such. |
Definition at line 689 of file acmod.c.
References ACMOD_ENDED, ACMOD_PROCESSING, ACMOD_STARTED, acmod_s::fcb, acmod_s::feat_buf, acmod_s::feat_outidx, acmod_s::grow_feat, acmod_s::mfcfh, acmod_s::n_feat_alloc, acmod_s::n_feat_frame, and acmod_s::state.
int acmod_process_feat | ( | acmod_t * | acmod, |
mfcc_t ** | feat | ||
) |
Feed dynamic feature data into the acoustic model for scoring.
Unlike acmod_process_raw() and acmod_process_cep(), this function accepts a single frame at a time. This is because there is no need to do buffering when using dynamic features as input. However, if the dynamic feature buffer is full, this function will fail, so you should either always check the return value, or always pair a call to it with a call to acmod_score().
feat | Pointer to one frame of dynamic features. |
Definition at line 781 of file acmod.c.
References acmod_s::fcb, acmod_s::feat_buf, acmod_s::feat_outidx, acmod_s::grow_feat, acmod_s::n_feat_alloc, and acmod_s::n_feat_frame.
int acmod_process_raw | ( | acmod_t * | acmod, |
int16 const ** | inout_raw, | ||
size_t * | inout_n_samps, | ||
int | full_utt | ||
) |
TODO: Set queue length for utterance processing.
This function allows multiple concurrent passes of search to operate on different parts of the utterance. Feed raw audio data to the acoustic model for scoring.
inout_raw | In: Pointer to buffer of raw samples Out: Pointer to next sample to be read |
inout_n_samps | In: Number of samples available Out: Number of samples remaining |
full_utt | If non-zero, this block represents a full utterance and should be processed as such. |
Definition at line 620 of file acmod.c.
References acmod_s::fe, acmod_s::mfc_buf, acmod_s::mfc_outidx, acmod_s::n_mfc_alloc, acmod_s::n_mfc_frame, and acmod_s::rawfh.
Referenced by ps_process_raw().
int acmod_read_scores | ( | acmod_t * | acmod | ) |
Read one frame of scores from senone score dump file.
Definition at line 991 of file acmod.c.
References acmod_s::feat_outidx, acmod_s::framepos, acmod_s::grow_feat, acmod_s::insenfh, acmod_s::n_feat_alloc, acmod_s::n_feat_frame, acmod_s::n_senone_active, acmod_s::output_frame, and acmod_s::senscr_frame.
Referenced by ps_decode_senscr().
int acmod_rewind | ( | acmod_t * | acmod | ) |
Rewind the current utterance, allowing it to be rescored.
After calling this function, the internal frame index is reset, and acmod_score() will return scores starting at the first frame of the current utterance. Currently, acmod_set_grow() must have been called to enable growing the feature buffer in order for this to work. In the future, senone scores may be cached instead.
Definition at line 858 of file acmod.c.
References acmod_s::feat_outidx, ps_mgau_s::frame_idx, acmod_s::mgau, acmod_s::n_feat_alloc, acmod_s::n_feat_frame, acmod_s::output_frame, and acmod_s::senscr_frame.
int16 const* acmod_score | ( | acmod_t * | acmod, |
int * | inout_frame_idx | ||
) |
Score one frame of data.
inout_frame_idx | Input: frame index to score, or NULL to obtain scores for the most recent frame. Output: frame index corresponding to this set of scores. |
Definition at line 1082 of file acmod.c.
References acmod_flags2list(), acmod_write_scores(), acmod_s::compallsen, acmod_s::feat_buf, acmod_s::framepos, acmod_s::insenfh, acmod_s::mgau, acmod_s::n_senone_active, acmod_s::senfh, acmod_s::senone_active, acmod_s::senone_scores, and acmod_s::senscr_frame.
Referenced by ngram_fwdflat_search(), and ngram_fwdtree_search().
int acmod_set_grow | ( | acmod_t * | acmod, |
int | grow_feat | ||
) |
Set memory allocation policy for utterance processing.
grow_feat | If non-zero, the internal dynamic feature buffer will expand as necessary to encompass any amount of data fed to the model. |
Definition at line 421 of file acmod.c.
References acmod_s::grow_feat, and acmod_s::n_feat_alloc.
Referenced by ps_process_raw(), and ps_reinit().
int acmod_set_insenfh | ( | acmod_t * | acmod, |
FILE * | insenfh | ||
) |
Set up a senone score dump file for input.
insenfh | File handle of dump file |
Definition at line 845 of file acmod.c.
References acmod_s::compallsen, acmod_s::config, acmod_s::insenfh, and acmod_s::n_feat_frame.
Referenced by ps_decode_senscr().
int acmod_set_mfcfh | ( | acmod_t * | acmod, |
FILE * | logfh | ||
) |
Start logging MFCCs to a filehandle.
acmod | Acoustic model object. |
logfh | Filehandle to log to. |
Definition at line 381 of file acmod.c.
References acmod_s::mfcfh.
Referenced by ps_start_utt().
int acmod_set_rawfh | ( | acmod_t * | acmod, |
FILE * | logfh | ||
) |
Start logging raw audio to a filehandle.
acmod | Acoustic model object. |
logfh | Filehandle to log to. |
Definition at line 393 of file acmod.c.
References acmod_s::rawfh.
Referenced by ps_start_utt().
int acmod_set_senfh | ( | acmod_t * | acmod, |
FILE * | senfh | ||
) |
Start logging senone scores to a filehandle.
acmod | Acoustic model object. |
logfh | Filehandle to log to. |
Definition at line 370 of file acmod.c.
References acmod_write_senfh_header(), and acmod_s::senfh.
Referenced by ps_start_utt().
ps_mllr_t* acmod_update_mllr | ( | acmod_t * | acmod, |
ps_mllr_t * | mllr | ||
) |
Adapt acoustic model using a linear transform.
mllr | The new transform to use, or NULL to update the existing transform. The decoder retains ownership of this pointer, so you should not attempt to free it manually. Use ps_mllr_retain() if you wish to reuse it elsewhere. |
Definition at line 345 of file acmod.c.
References acmod_s::mgau, acmod_s::mllr, and ps_mllr_free().
Referenced by ps_update_mllr().