Hi Vitthal
Yes, Kaldi can be a little overwhelming and there is a learning curve involved. But since you already have a defined task at hand, you do not need to worry about understanding everything going on in Kaldi, which makes your task much easier. All you need to do is to go through the AMI diarization recipe (egs/ami/s5c), and understand what is happening in each of the "stages". Most of the Kaldi recipes are organized into such stages. For the diarization recipes, these stages roughly correspond to: Data preparation -> Feature extraction -> Speech activity detection -> x-vector extraction -> Clustering.
In your case, since you only wish to experiment with new clustering algorithms, you can pretty much run through the rest of the stages as is, and only focus on implementing the last stage. If you look at the run.sh script in the AMI recipe, you can just blindly run stages 1 to 6 (although I would recommend running them one at a time and then looking at the outputs produced). Your actual work would be to modify stage 7. Stages 8 onwards perform overlap detection which is not relevant to you, so you can remove those stages.
Stage 7 calls any one of diarize_ahc.sh / diarize_spectral.sh / diarize_vbx.sh, which are all in the local/ directory, depending on which clustering method you have specified. I would recommend make a copy of local/diarize_spectral.sh, and work with that copy. In the diarize_spectral.sh script, you would only need to modify the last stage, since the first 3 stages correspond to x-vector extraction and cosine scoring (you may decide to modify the scoring part and use a different scoring method). The last stage calls scluster.sh, which is basically just a wrapper around the actual clustering script (spec_clust.py) which splits up the whole data so the clustering can be done in parallel (in fact, you'll find that most of these internal scripts serve to parallelize your data, call the actual binary on each split, and combine the outputs).
Your main task would be to understand scluster.sh and spec_clust.py, and then modify these according to the algorithm you wish to implement. Since the actual clustering is implemented in Python, it should be quite easy to work with (it uses kaldi_io to load x-vectors into numpy matrices, so that you can use those for clustering).
I don't think there's just a small set of authors publishing on diarization. There have been amazing advances recently with lots of new paradigms coming up (such as end-to-end neural diarization). You can find more details in this review paper:
https://arxiv.org/pdf/2101.09624.pdf. I hope the above explanation would be helpful to get going with your project.
Best,
Desh