This python code implements a generalized version of speaker diarization described in:
Kenny, P. Bayesian Analysis of Speaker Diarization with Eigenvoice Priors, Montreal, CRIM, May 2008, http://www.crim.ca/perso/patrick.kenny/BayesCluster.pdf
Kenny, P., Reynolds, D., and Castaldo, F. Diarization of Telephone Conversations using Factor Analysis IEEE Journal of Selected Topics in Signal Processing, December 2010, http://www.crim.ca/perso/patrick.kenny/Kenny_sdfa.pdf
The generalization introduced in this implementation lies in using an HMM instead of the simple mixture model when modeling generation of segments (or even frames) from speakers. HMM limits the probability of switching between speakers when changing frames, which makes it possible to use the model on frame-by-frame bases without any need to iterate between 1) clustering speech segments and 2) re-segmentation (i.e. as it was done in the paper above).
Download: http://www.fit.vutbr.cz/~burget/VB_diarization.zip (attention, the file has 93 MB as it contains example data).