libsent/include/sent/mfcc.h

MFCC計算のための定義. [詳細]

#include <sent/stddefs.h>
#include <sent/htk_defs.h>
#include <ctype.h>
mfcc.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

データ構造

struct  Value
 mfcc configuration parameter values [詳細]
struct  FBankInfo
 Workspace for filterbank analysis. [詳細]
struct  DeltaBuf
 Cycle buffer for delta computation. [詳細]

マクロ定義

#define DEF_SMPPERIOD   625
 DEBUG: define if you want to enable debug messages for sin/cos table operation.
#define DEF_FRAMESIZE   400
 Default Window size in samples, similar to WINDOWSIZE in HTK (unit is different).
#define DEF_FFTNUM   512
 Number of FFT steps.
#define DEF_FRAMESHIFT   160
 Default frame shift length in samples.
#define DEF_PREENPH   0.97
 Default pre-emphasis coefficient, corresponds to PREEMCOEF in HTK.
#define DEF_MFCCDIM   12
 Default number of MFCC dimension, corresponds to NUMCEPS in HTK.
#define DEF_CEPLIF   22
 Default cepstral Liftering coefficient, corresponds to CEPLIFTER in HTK.
#define DEF_FBANK   24
 Default number of filterbank channels, corresponds to NUMCHANS in HTK.
#define DEF_DELWIN   2
 Default delta window size, corresponds to DELTAWINDOW in HTK.
#define DEF_ACCWIN   2
 Default acceleration window size, corresponds to ACCWINDOW in HTK.
#define DEF_SILFLOOR   50.0
 Default energy silence floor in dBs, corresponds to SILFLOOR in HTK.
#define DEF_ESCALE   1.0
 Default scaling coefficient of log energy, corresponds to ESCALE in HTK.
#define DEF_SSALPHA   2.0
 Default alpha coefficient for spectral subtraction.
#define DEF_SSFLOOR   0.5
 Default flooring coefficient for spectral subtraction.
#define VALUE_VERSION   1
 Integer version number of Value, for embedding.

関数

void WMP_calc_init (Value para, float **bf, int *bflen)
void WMP_calc (float *mfcc, float *bf, Value para, float *ssbuf)
void WMP_calc_fin (float *bf)
void make_costbl_hamming (int framesize)
void make_fft_table (int n)
void make_costbl_makemfcc (int fbank_num, int mfcc_dim)
void make_sintbl_wcep (int lifter, int mfcc_dim)
FBankInfo InitFBank (Value para)
void FreeFBank (FBankInfo fb)
void Hamming (float *wave, int framesize)
void PreEmphasise (float *wave, Value para)
float Mel (int k, float fres)
void FFT (float *xRe, float *xIm, int p)
void MakeFBank (float *wave, double *fbank, FBankInfo info, Value para, float *ssbuf)
void MakeMFCC (double *fbank, float *mfcc, Value para)
float CalcC0 (double *fbank, Value para)
float CalcLogRawE (float *wave, int framesize)
void ZMeanFrame (float *wave, int framesize)
void WeightCepstrum (float *mfcc, Value para)
int Wav2MFCC (SP16 *wave, float **mfcc, Value para, int nSamples, float *ssbuf, int ssbuflen)
void Delta (float **c, int frame, Value para)
void Accel (float **c, int frame, Value para)
void NormaliseLogE (float **c, int frame_num, Value para)
void CMN (float **mfcc, int frame_num, int dim)
void WMP_init (Value para, float **bf, float *ssbuf, int ssbuflen)
DeltaBufWMP_deltabuf_new (int veclen, int windowlen)
void WMP_deltabuf_free (DeltaBuf *db)
void WMP_deltabuf_prepare (DeltaBuf *db)
boolean WMP_deltabuf_proceed (DeltaBuf *db, float *new_mfcc)
boolean WMP_deltabuf_flush (DeltaBuf *db)
void CMN_realtime_init (int dimension, float weight)
void CMN_realtime_prepare ()
void CMN_realtime (float *mfcc, int dim)
void CMN_realtime_update ()
boolean CMN_load_from_file (char *filename, int dim)
boolean CMN_save_to_file (char *filename)
void energy_max_init ()
void energy_max_prepare (Value *para)
LOGPROB energy_max_normalize (LOGPROB f, Value *para)
float * new_SS_load_from_file (char *filename, int *slen)
float * new_SS_calculate (SP16 *wave, int wavelen, Value para, int *slen)
void undef_para (Value *para)
void make_default_para (Value *para)
void make_default_para_htk (Value *para)
void apply_para (Value *dst, Value *src)
boolean htk_config_file_parse (char *HTKconffile, Value *para)
void calc_para_from_header (Value *para, short param_type, short vec_size)
void put_para (Value *para)

説明

MFCC計算のための定義.

作者:
Akinobu LEE
日付:
Fri Feb 11 03:40:52 2005

このファイルには,音声波形データからMFCC形式の特徴量ベクトル系列を 計算するための構造体の定義およびデフォルト値が含まれています. デフォルト値は Julius とともに配布されている音響モデルで使用している 値であり,HTKのデフォルトとは値が異なる部分がありますので注意して下さい.

参照:
libsent/src/wav2mfcc/wav2mfcc.c
libsent/src/wav2mfcc/wav2mfcc-pipe.c
julius/wav2mfcc.c
julius/realtime-1stpass.c
Revision
1.8

mfcc.h で定義されています。


マクロ定義

#define DEF_SMPPERIOD   625

DEBUG: define if you want to enable debug messages for sin/cos table operation.

Default sampling period in 100ns (625 = 16kHz)

mfcc.h50 行で定義されています。


関数

void WMP_calc_init ( Value  para,
float **  bf,
int *  bflen 
)

Initialize calculation functions and work areas.

引数:
para [in] configuration parameters
bf [out] returns pointer to newly allocated window buffer
bflen [out] length of bf

mfcc-core.c605 行で定義されています。

参照元 WMP_init().

void WMP_calc ( float *  mfcc,
float *  bf,
Value  para,
float *  ssbuf 
)

Calculate MFCC and log energy for one frame. Perform spectral subtraction if ssbuf is specified.

引数:
mfcc [out] buffer to hold the resulting MFCC vector
bf [i/o] work area for FFT
para [in] configuration parameters
ssbuf [in] noise spectrum, or NULL if not using spectral subtraction

mfcc-core.c632 行で定義されています。

参照元 RealTimePipeLine(), と Wav2MFCC().

void WMP_calc_fin ( float *  bf  ) 

Free work area for MFCC computation

引数:
bf [in] window buffer previously allocated by WMP_calc_init()

mfcc-core.c674 行で定義されています。

参照元 Wav2MFCC().

void make_costbl_hamming ( int  framesize  ) 

Generate table for hamming window.

引数:
framesize [in] window size

mfcc-core.c63 行で定義されています。

参照元 InitFBank(), と new_SS_calculate().

void make_fft_table ( int  n  ) 

Build tables for FFT.

引数:
n [in] 2^n = FFT point

mfcc-core.c94 行で定義されています。

参照元 InitFBank(), と new_SS_calculate().

void make_costbl_makemfcc ( int  fbank_num,
int  mfcc_dim 
)

Generate table for DCT operation to make mfcc from fbank.

引数:
fbank_num [in] number of filer banks
mfcc_dim [in] number of dimensions in MFCC

mfcc-core.c127 行で定義されています。

参照元 InitFBank().

void make_sintbl_wcep ( int  lifter,
int  mfcc_dim 
)

Generate table for weighing cepstrum.

引数:
lifter [in] cepstral liftering coefficient
mfcc_dim [in] number of dimensions in MFCC

mfcc-core.c165 行で定義されています。

参照元 InitFBank().

FBankInfo InitFBank ( Value  para  ) 

Build filterbank information and generate tables for MFCC comptutation.

引数:
para [in] configuration parameters
戻り値:
the generated filterbank information.

mfcc-core.c211 行で定義されています。

参照元 WMP_calc_init().

void FreeFBank ( FBankInfo  fb  ) 

Free FBankInfo.

引数:
fb [in] filterbank information

mfcc-core.c305 行で定義されています。

参照元 WMP_calc_fin().

void Hamming ( float *  wave,
int  framesize 
)

Apply hamming window.

引数:
wave [i/o] waveform data in the current frame
framesize [in] frame size

mfcc-core.c375 行で定義されています。

参照元 new_SS_calculate(), と WMP_calc().

void PreEmphasise ( float *  wave,
Value  para 
)

Apply pre-emphasis filter.

引数:
wave [i/o] waveform data in the current frame
para [in] configuration parameters

mfcc-core.c360 行で定義されています。

参照元 new_SS_calculate(), と WMP_calc().

float Mel ( int  k,
float  fres 
)

Return mel-frequency.

引数:
k [in] channel number of filter bank
fres [in] constant value computed by "1.0E7 / (para.smp_period * fb.fftN * 700.0)"
戻り値:
the mel frequency.

mfcc-core.c199 行で定義されています。

参照元 InitFBank().

void FFT ( float *  xRe,
float *  xIm,
int  p 
)

Apply FFT

引数:
xRe [i/o] real part of waveform
xIm [i/o] imaginal part of waveform
p [in] 2^p = FFT point

mfcc-core.c396 行で定義されています。

参照元 MakeFBank(), と new_SS_calculate().

void MakeFBank ( float *  wave,
double *  fbank,
FBankInfo  fb,
Value  para,
float *  ssbuf 
)

Convert wave -> (spectral subtraction) -> mel-frequency filterbank

引数:
wave [in] waveform data in the current frame
fbank [out] the resulting mel-frequency filterbank
fb [in] filterbank information
para [in] configuration parameters
ssbuf [in] noise spectrum, or NULL if not apply subtraction

mfcc-core.c450 行で定義されています。

参照元 WMP_calc().

void MakeMFCC ( double *  fbank,
float *  mfcc,
Value  para 
)

Apply DCT to filterbank to make MFCC.

引数:
fbank [in] filterbank
mfcc [out] output MFCC vector
para [in] configuration parameters

mfcc-core.c528 行で定義されています。

参照元 WMP_calc().

float CalcC0 ( double *  fbank,
Value  para 
)

Calculate 0'th cepstral coefficient.

引数:
fbank [in] filterbank
para [in] configuration parameters
戻り値:

mfcc-core.c510 行で定義されています。

参照元 WMP_calc().

float CalcLogRawE ( float *  wave,
int  framesize 
)

Calculate Log Raw Energy.

引数:
wave [in] waveform data in the current frame
framesize [in] frame size
戻り値:
the calculated log raw energy.

mfcc-core.c341 行で定義されています。

参照元 WMP_calc().

void ZMeanFrame ( float *  wave,
int  framesize 
)

Remove DC offset per frame

引数:
wave [i/o] waveform data in the current frame
framesize [in] frame size

mfcc-core.c322 行で定義されています。

参照元 new_SS_calculate(), と WMP_calc().

void WeightCepstrum ( float *  mfcc,
Value  para 
)

Re-scale cepstral coefficients.

引数:
mfcc [i/o] a MFCC vector
para [in] configuration parameters

mfcc-core.c562 行で定義されています。

参照元 WMP_calc().

int Wav2MFCC ( SP16 wave,
float **  mfcc,
Value  para,
int  nSamples,
float *  ssbuf,
int  ssbuflen 
)

Convert wave data to MFCC. Also does spectral subtraction if ssbuf specified.

引数:
wave [in] waveform data
mfcc [out] buffer to store the resulting MFCC parameter vector [t][0..veclen-1], should be already allocated
para [in] configuration parameters
nSamples [in] length of waveform data
ssbuf [in] buffer that holds noise spectrum to be subtracted from input, or NULL if not use spectral subtraction
ssbuflen [in] length of above, ignored when ssbuf is NULL
戻り値:
the number of processed frames.

wav2mfcc-buffer.c56 行で定義されています。

参照元 new_wav2mfcc().

void Delta ( float **  c,
int  frame,
Value  para 
)

Calculate delta coefficients

引数:
c [i/o] MFCC vectors, in which the delta coeff. will be appended.
frame [in] number of frames
para [in] configuration parameters

wav2mfcc-buffer.c140 行で定義されています。

参照元 Wav2MFCC().

void Accel ( float **  c,
int  frame,
Value  para 
)

Calculate acceleration coefficients.

引数:
c [i/o] MFCC vectors, in which the delta coeff. will be appended.
frame [in] number of frames
para [in] configuration parameters

wav2mfcc-buffer.c188 行で定義されています。

参照元 Wav2MFCC().

void NormaliseLogE ( float **  mfcc,
int  frame_num,
Value  para 
)

Normalise log energy

引数:
mfcc [i/o] array of MFCC vectors
frame_num [in] number of frames
para [in] configuration parameters

wav2mfcc-buffer.c108 行で定義されています。

参照元 Wav2MFCC().

void CMN ( float **  mfcc,
int  frame_num,
int  dim 
)

Cepstrum Mean Normalization (buffered) Cepstral mean will be computed within the given MFCC vectors.

引数:
mfcc [i/o] array of MFCC vectors
frame_num [in] number of frames
dim [in] total dimension of MFCC vectors

wav2mfcc-buffer.c227 行で定義されています。

参照元 Wav2MFCC().

void WMP_init ( Value  para,
float **  bf,
float *  ssbuf,
int  ssbuflen 
)

initialize and setup buffers for a MFCC computataion.

引数:
para [in] configuration parameters
bf [out] pointer to the entry point of workspace for FFT
ssbuf [in] noise spectrum, or NULL if not using spectral subtraction
ssbuflen [in] length of above, ignoredwhen ssbuf is NULL

wav2mfcc-pipe.c57 行で定義されています。

参照元 RealTimeInit(), と Wav2MFCC().

DeltaBuf* WMP_deltabuf_new ( int  veclen,
int  windowlen 
)

Allocate a new delta cycle buffer.

引数:
veclen [in] length of a vector
windowlen [in] window width for computing delta
戻り値:
pointer to newly allocated delta cycle buffer structure.

wav2mfcc-pipe.c83 行で定義されています。

参照元 RealTimeInit().

void WMP_deltabuf_free ( DeltaBuf db  ) 

Destroy the delta cycle buffer.

引数:
db [i/o] delta cycle buffer

wav2mfcc-pipe.c110 行で定義されています。

void WMP_deltabuf_prepare ( DeltaBuf db  ) 

Reset and clear the delta cycle buffer.

引数:
db [i/o] delta cycle buffer

wav2mfcc-pipe.c128 行で定義されています。

参照元 RealTimePipeLinePrepare().

boolean WMP_deltabuf_proceed ( DeltaBuf db,
float *  new_mfcc 
)

Store the given MFCC vector into the delta cycle buffer, and compute the latest delta coefficients.

引数:
db [i/o] delta cycle buffer
new_mfcc [in] MFCC vector
戻り値:
TRUE if next delta coeff. computed, in that case it is saved in db->delta[], or FALSE if delta is not yet computed by short of data.

wav2mfcc-pipe.c187 行で定義されています。

参照元 RealTimeParam(), と RealTimePipeLine().

boolean WMP_deltabuf_flush ( DeltaBuf db  ) 

Flush the delta cycle buffer the delta coefficients left in the cycle buffer.

引数:
db [i/o] delta cycle buffer
戻り値:
TRUE if next delta coeff. computed, in that case it is saved in db->delta[], or FALSE if all delta computation has been flushed and no data is available.

wav2mfcc-pipe.c229 行で定義されています。

参照元 RealTimeParam().

void CMN_realtime_init ( int  dimension,
float  weight 
)

Initialize MAP-CMN at startup.

引数:
dimension [in] vector dimension
weight [in] initial cepstral mean weight

wav2mfcc-pipe.c290 行で定義されています。

参照元 RealTimeInit().

void CMN_realtime_prepare (  ) 

Prepare for MAP-CMN at start of each input

wav2mfcc-pipe.c317 行で定義されています。

参照元 RealTimePipeLinePrepare().

void CMN_realtime ( float *  mfcc,
int  dim 
)

Perform MAP-CMN for incoming MFCC vectors

引数:
mfcc [in] MFCC vector
dim [in] dimension

wav2mfcc-pipe.c332 行で定義されています。

参照元 RealTimeParam(), と RealTimePipeLine().

void CMN_realtime_update (  ) 

Update initial cepstral mean from previous utterances for next input.

wav2mfcc-pipe.c360 行で定義されています。

参照元 RealTimeCMNUpdate().

boolean CMN_load_from_file ( char *  filename,
int  dim 
)

Load CMN parameter from file. If the number of MFCC dimension in the file does not match the specified one, an error will occur.

引数:
filename [in] file name
dim [in] required number of MFCC dimensions
戻り値:
TRUE on success, FALSE on failure.

wav2mfcc-pipe.c460 行で定義されています。

参照元 RealTimeInit().

boolean CMN_save_to_file ( char *  filename  ) 

Save the current CMN vector to a file.

引数:
filename [in] filename to save the data.
戻り値:
TRUE on success, FALSE on failure.

wav2mfcc-pipe.c504 行で定義されています。

参照元 RealTimeCMNUpdate().

void energy_max_init (  ) 

Initialize work area for energy normalization on live input. This should be called once on startup.

wav2mfcc-pipe.c543 行で定義されています。

参照元 RealTimeInit().

void energy_max_prepare ( Value para  ) 

Prepare values for energy normalization on live input. This should be called before each input segment.

引数:
para [in] MFCC computation configuration parameter

wav2mfcc-pipe.c555 行で定義されています。

参照元 RealTimePipeLinePrepare().

LOGPROB energy_max_normalize ( LOGPROB  f,
Value para 
)

Peform energy normalization using maximum of last input.

引数:
f [in] raw energy
para [in] MFCC computation configuration parameter
戻り値:
value of the normalized log energy.

wav2mfcc-pipe.c571 行で定義されています。

参照元 RealTimePipeLine().

float* new_SS_load_from_file ( char *  filename,
int *  slen 
)

Load a noise spectrum from file.

引数:
filename [in] path name of noise spectrum file
slen [out] length of the returned buffer
戻り値:
a newly allocated buffer that holds the loaded noise spectrum.

ss.c65 行で定義されています。

参照元 new_wav2mfcc(), と RealTimeInit().

float* new_SS_calculate ( SP16 wave,
int  wavelen,
Value  para,
int *  slen 
)

Compute average spectrum of audio input. This is used to estimate a noise spectrum from input samples.

引数:
wave [in] input audio data sequence
wavelen [in] length of above
para [in] parameter
slen [out] length of returned buffer
戻り値:
a newly allocated buffer that contains the calculated spectrum.

ss.c109 行で定義されています。

参照元 new_wav2mfcc().

void undef_para ( Value para  ) 

Reset configuration parameters for MFCC computation.

引数:
para [out] feature extraction parameters

para.c38 行で定義されています。

参照元 initialize_GMM(), initialize_GSHMM(), と system_bootup().

void make_default_para ( Value para  ) 

Set Julius default parameters for MFCC computation.

引数:
para [out] feature extraction parameters

para.c79 行で定義されています。

参照元 system_bootup().

void make_default_para_htk ( Value para  ) 

Set HTK default configuration parameters for MFCC computation. This will be refered when parameters are given as HTK Config file.

引数:
para [out] feature extraction parameters

para.c109 行で定義されています。

参照元 system_bootup().

void apply_para ( Value dst,
Value src 
)

Merge two configuration parameters for MFCC computation.

引数:
dst [out] feature extraction parameters to set to
src [out] feature extraction parameters to set from

para.c134 行で定義されています。

参照元 final_fusion().

boolean htk_config_file_parse ( char *  HTKconffile,
Value para 
)

Read and parse an HTK Config file, and set the specified option values.

引数:
HTKconffile [in] HTK Config file path name
para [out] MFCC parameter to set
戻り値:
TRUE on success, FALSE on failure.

para.c178 行で定義されています。

参照元 opt_parse().

void calc_para_from_header ( Value para,
short  param_type,
short  vec_size 
)

Set acoustic analysis parameters from HTK HMM definition header information.

引数:
para [out] acoustic analysis parameters
param_type [in] parameter type specified at HMM header
vec_size [in] vector size type specified at HMM header

para.c286 行で定義されています。

参照元 initialize_HMM().

void put_para ( Value para  ) 

Output acoustic analysis configuration parameters to stdout.

引数:
para [in] configuration parameter

para.c322 行で定義されています。

参照元 print_info().


Juliusに対してTue Sep 22 00:14:46 2009に生成されました。  doxygen 1.6.0