bob.bio.gmm.algorithm.GMM: help to implement UBM-GMM model for synthetic speech detection

160 views
Skip to first unread message

Lorenzo Rossi

unread,
Mar 24, 2016, 5:26:37 AM3/24/16
to bob-devel
Hello,

I'm trying to implement a synthetic speech detection system and apply it to a subset of the ASVspoof 2015 dataset. However, I'm struggling to figure out all the steps from the minimalistic documentation. I'm also new to this particular field. Let U, X_nat, X_synth and W be numpy arrays of MFCC coefficients respectively for a large number of speakers, training natural speakers, training synthetic speakers and test (nat. / synth.) speakers. I believe I need to use the methods train_projector() and enroll() to respectively train the UBM and the MAP adaptation of the natural and synthetic model from the training data (see code below). Is this correct? Then how do I apply the model to test set and compute the scores? How do I extract the GMM supervectors (i.e. stacks of MAP adapted mean vectors) from training and test data?

Thank you,
Lorenzo

from bob.bio.gmm import algorithm

# UBM training
ubm_model = algorithm.GMM(512)
ubm_model.train_projector(U,'ubm.hdf')
ubm_model.load_projector('ubm.hdf')

# MAP adaptation training data for natural speech
nat_model = ubm_model.enroll(X_nat)

# MAP adaptation training data for synthetic speech
synth_model = ubm_model.enroll(X_synth)

# How to apply the models to test data and compute the scores?
# How to extract the GMM supervectors from training and test data?

Manuel Günther

unread,
Mar 25, 2016, 5:41:30 PM3/25/16
to bob-devel
Dear Lorenzo,

I am not sure that you are looking at the correct place. The bob.bio.gmm package is designed to provide an interface of the GMM to be used with other bob.bio packages. Particularly, it provides the interface to run biometric recognition algorithms in combination with features from, e.g., bob.bio.spear
Thus, the classes might be a little too complicated for your case. If you are not trying to run a complete biometric recognition experiment, I would recommend you to use the classes, on which bob.bio.gmm relies, i.e., the functionality of bob.learn.em, which is much better documented as bob.bio.gmm.

Maybe, if you are looking at the source code of both bob.bio.gmm.algorithm.GMM and the documentation of bob.learn.em to get an idea, how the GMM modeling testing works.

Let us know if you have further questions.

Message has been deleted

Lorenzo Rossi

unread,
Apr 1, 2017, 2:16:26 PM4/1/17
to bob-devel
Dear Manuel,

Your answer was very helpful. I realized I had not thanked you for that.

Thank you very much!
Lorenzo
Reply all
Reply to author
Forward
0 new messages