3
$\begingroup$

I'm developing an Artificial Neural Network based Speech Recognition System using MFCCs.

Suppose I have 260 input nodes in the ANN, and this number of nodes corresponds to the number of MFCCs that I will use. During feature extraction the number of total coefficients vary with respect to the duration of the sound file. This poses a problem if the ANN was trained just for 260 coefficients.

So most likely the system will fail if a different sound duration which yields lesser or greater number of coefficients is used to test the Neural Network. My question is how do I go about this problem? I have seen several papers in the net talking about Speech Recognition using ANN but I haven't seen something concerning this problem

$\endgroup$
0
$\begingroup$

You will be using an "enframe" operation, such as this one: http://my.fit.edu/~vkepuska/ece5526/TIMIT_Corpus/MATLAB/voicebox/enframe.m

This will split up your signal with certain overlap. You will extract certain features (MFCC) from those features and will train these as the parts of phonemes (or any other speech indicator).

You will do the same thing in runtime and classify each block obtained by enframe as a phoneme. At the end you get a result, where intervals of your speech are mapped to key speech blocks. Unifying them would allow to recognize what is spoken.

If you don't want to do that, than you can go with HMMs, which can deal with changing length speech signals.

$\endgroup$
  • $\begingroup$ Hi! I'm trying to extract the MFCC features using this github.com/jameslyons/python_speech_features Suppose I just want 20 feature vectors, how do I adjust the winlen and winstep paramater accordingly? $\endgroup$ – Romelio Tavas Jr. Mar 20 '14 at 3:19
  • $\begingroup$ Sorry I have not used this version. I guess this also depends on the other parameters. Try and experiment. Though, you will extract them per each block of your signal. So I would suggest you to stick to the default parameters and extract those features from each block. $\endgroup$ – Tolga Birdal Mar 20 '14 at 6:53
1
$\begingroup$

You should process the speech in blocks of a few milliseconds at a time. Each block will be the same length. Then you can apply your ANN to those features.

$\endgroup$
0
$\begingroup$

Simple neural networks do not have input lenght invariance and do not allow to analyze time series.

For classification of time series like a series of MFCC frames you can use a classifier with time invariance. For example you can use neural networks combined with hidden Markov models (ANN-HMM), gaussian mixture model with hidden markov models (GMM-HMM) or recurrent neural networks (RNN). Matlab implementation for RNN is here. Theano implementation is also available. You can find a detailed description of those structures in Google.

Speech recognition is not a simple thing to implement, it is better to use existing software like CMUSphinx

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.