• Stars
    star
    251
  • Rank 161,862 (Top 4 %)
  • Language
    Python
  • Created almost 5 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Variational Bayes HMM over x-vectors diarization

VBHMM x-vectors Diarization (aka VBx)

Diarization recipe for CALLHOME, AMI and DIHARD II by Brno University of Technology.
The recipe consists of

  • computing x-vectors
  • doing agglomerative hierarchical clustering on x-vectors as a first step to produce an initialization
  • apply variational Bayes HMM over x-vectors to produce the diarization output
  • score the diarization output

More details about the full recipe in
F. Landini, J. Profant, M. Diez, L. Burget: Bayesian HMM clustering of x-vector sequences (VBx) in speaker diarization: theory, implementation and analysis on standard tasks

If you are interested in the original version of VBx (prepared for the Second DIHARD Challenge), please refer to the corresponding branch.
If you are interested in the VBx recipe prepared for the track 4 of VoxSRC-20 Challenge (on VoxConverse), please refer to the corresponding branch.

Usage

To run the recipe, execute the run scripts for the different datasets with the corresponding parameters. Please refer to the scripts for more details. The CALLHOME and DIHARD II recipes require the corresponding datasets and the paths need to be provided. For AMI, the recordings need to be downloaded (for free) but the VAD segments and reference rttms are obtained from our proposed setup.

This repository has x-vector extractors already trained to function as a standalone recipe. However, the recipes for training the extractors can be found here.

The recipe as presented runs AHC as initialization for VBx. However, running AHC on long files (more than 30 minutes) can become very slow. We have added another type of initialization: random_ which means assigning random speaker labels as initialization and run VBx. This method runs substantially faster on long recordings but can have a slightly worse performance than initializing with AHC.

Getting started

We recommend to create anaconda environment

conda create -n VBx python=3.9
conda activate VBx

Clone the repository

git clone https://github.com/BUTSpeechFIT/VBx.git

Install the package

pip install -e .

Initialize submodule dscore:

git submodule init
git submodule update

Run the example

./run_example.sh

The output (last few lines) should look like this

File               DER    JER    B3-Precision    B3-Recall    B3-F1    GKT(ref, sys)    GKT(sys, ref)    H(ref|sys)    H(sys|ref)    MI    NMI
---------------  -----  -----  --------------  -----------  -------  ---------------  ---------------  ------------  ------------  ----  -----
ES2005a           7.06  29.99            0.65         0.78     0.71             0.71             0.56          1.14          0.59  1.72   0.67
*** OVERALL ***   7.06  29.99            0.65         0.78     0.71             0.71             0.56          1.14          0.59  1.72   0.67

Citations

In case of using the software please cite:
F. Landini, J. Profant, M. Diez, L. Burget: Bayesian HMM clustering of x-vector sequences (VBx) in speaker diarization: theory, implementation and analysis on standard tasks (arXiv version)

@article{landini2022bayesian,
  title={Bayesian HMM clustering of x-vector sequences (VBx) in speaker diarization: theory, implementation and analysis on standard tasks},
  author={Landini, Federico and Profant, J{\'a}n and Diez, Mireia and Burget, Luk{\'a}{\v{s}}},
  journal={Computer Speech \& Language},
  volume={71},
  pages={101254},
  year={2022},
  publisher={Elsevier}
}

Results

We present here the results of our systems for the different datasets and different evaluation protocols. A more thorough discussion on the protocols and results can be found in the paper. All results are obtained using oracle VAD.

CALLHOME                         DIHARD II
-----------------                -------------------------
Protocol    DER                  Protocol        DER
Forgiving   4.42	                      dev    eval
Fair        14.21                Full        18.19   18.55
Full        21.77                Fair        12.23   12.29

AMI beamformed                   AMI Mix-Headset
-------------------------        -------------------------
Protocol         DER             Protocol         DER 
             dev     eval                     dev     eval
Forgiving    2.80    3.90        Forgiving    1.56    2.10
Fair        10.81   14.23        Fair         9.68   12.53
Full        17.66   20.84        Full        16.33   18.99

License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Contact

If you have any comment or question, please contact [email protected] or [email protected]

More Repositories

1

x-vector-kaldi-tf

Tensorflow implementation of x-vector topology on top of Kaldi recipe
Python
119
star
2

speakerbeam

Jupyter Notebook
100
star
3

EEND

Python
71
star
4

DiariZen

A toolkit for speaker diarization.
Jupyter Notebook
57
star
5

AMI-diarization-setup

49
star
6

EEND_dataprep

Shell
47
star
7

DiaPer

Python
42
star
8

MultiSV

MultiSV: scripts for data preparation
Shell
25
star
9

BrnoLM

A neural language modeling toolkit built on PyTorch
Python
18
star
10

DVBx

Discriminative Training of VBx Diarization
Python
18
star
11

ASR-hybrid-decoding

Shell
16
star
12

torch_msbg_mbstoi

Differentiable implementation of MSBG hearing loss model and MBSTOI intelligibility metric for Clarity Enhancement challenge.
Python
15
star
13

safe_gpu

Avoids race condition when acquiring GPUs in exclusive mode
Python
15
star
14

hystoc

Getting confidences from any end-to-end systems
Python
10
star
15

cgmm_mvdr_online

Implementation of CGMM-MVDR beamforming used for Clarity challenge
Jupyter Notebook
10
star
16

vae_dolphin

Python
10
star
17

diacorrect

Error correction back-end for speaker diarization
Python
10
star
18

BaySMM

A Bayesian Multilingual Document Model
Python
9
star
19

OOV-recovery-in-hybrid-ASR-system

Python
9
star
20

beer

Jupyter Notebook
7
star
21

diarization_utils

Python
6
star
22

TS-ASR-Whisper

6
star
23

vq-aud

Python
5
star
24

CALLHOME_sublists

5
star
25

EENDEDA_VIB

Python
5
star
26

wespeaker_ssl_public

Using Pre-trained SSL Transformer Models for Speaker Verification
Python
5
star
27

tse_tutorial

4
star
28

speller

LAS-based E2E system training with speller
Python
2
star
29

RAVDESS2Mix

Python
2
star
30

wer_metric

Compute Word Error Rate
Python
1
star