kamilakesbi's picture
Update README.md
c80be88 verified
metadata
license: mit
base_model: pyannote/segmentation-3.0
tags:
  - speaker-diarization
  - speaker-segmentation
  - generated_from_trainer
datasets:
  - diarizers-community/callhome
model-index:
  - name: speaker-segmentation-fine-tuned-callhome-zho
    results: []

speaker-segmentation-fine-tuned-callhome-zho

This model is a fine-tuned version of pyannote/segmentation-3.0 on the diarizers-community/callhome zho dataset. It achieves the following results on the evaluation set:

  • Loss: 0.3815
  • Der: 0.1488
  • False Alarm: 0.0516
  • Missed Detection: 0.0689
  • Confusion: 0.0282

Model description

This segmentation model has been trained on Chinese data (Callhome) using diarizers. It can be loaded with two lines of code:

from diarizers import SegmentationModel

segmentation_model = SegmentationModel().from_pretrained('diarizers-community/speaker-segmentation-fine-tuned-callhome-zho')

To use it within a pyannote speaker diarization pipeline, load the pyannote/speaker-diarization-3.1 pipeline, and convert the model to a pyannote compatible format:


from pyannote.audio import Pipeline
import torch

device = torch.device("cuda:0") if torch.cuda.is_available() else torch.device("cpu")


# load the pre-trained pyannote pipeline
pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization-3.1")
pipeline.to(device)

# replace the segmentation model with your fine-tuned one
segmentation_model = segmentation_model.to_pyannote_model()
pipeline._segmentation.model = segmentation_model.to(device)

You can now use the pipeline on audio examples:

# load dataset example
dataset = load_dataset("diarizers-community/callhome", "zho", split="data")
sample = dataset[0]["audio"]

# pre-process inputs
sample["waveform"] = torch.from_numpy(sample.pop("array")[None, :]).to(device, dtype=model.dtype)
sample["sample_rate"] = sample.pop("sampling_rate")

# perform inference
diarization = pipeline(sample)

# dump the diarization output to disk using RTTM format
with open("audio.rttm", "w") as rttm:
    diarization.write_rttm(rttm)

Intended uses & limitations

More information needed

Training and evaluation data

More information needed

Training procedure

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 0.001
  • train_batch_size: 32
  • eval_batch_size: 32
  • seed: 42
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: cosine
  • num_epochs: 5.0

Training results

Training Loss Epoch Step Validation Loss Der False Alarm Missed Detection Confusion
0.4659 1.0 359 0.3925 0.1569 0.0587 0.0670 0.0313
0.4282 2.0 718 0.3896 0.1533 0.0532 0.0695 0.0306
0.4119 3.0 1077 0.3841 0.1494 0.0490 0.0712 0.0292
0.395 4.0 1436 0.3794 0.1479 0.0514 0.0694 0.0271
0.4027 5.0 1795 0.3815 0.1488 0.0516 0.0689 0.0282

Framework versions

  • Transformers 4.40.0
  • Pytorch 2.2.2+cu121
  • Datasets 2.18.0
  • Tokenizers 0.19.1