Instructions to use Hellfeu/echo-dia with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Hellfeu/echo-dia with Transformers:
# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Hellfeu/echo-dia", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Echo Dia: V4 DiariZen fine-tuned weights
Browse files- README.md +54 -0
- config.json +3 -0
- config.toml +37 -0
- plda/plda.npz +3 -0
- plda/xvec_transform.npz +3 -0
- pytorch_model.bin +3 -0
README.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: cc-by-nc-4.0
|
| 3 |
+
library_name: transformers
|
| 4 |
+
pipeline_tag: voice-activity-detection
|
| 5 |
+
tags:
|
| 6 |
+
- speaker-diarization
|
| 7 |
+
- meeting
|
| 8 |
+
- wavlm
|
| 9 |
+
- diarizen
|
| 10 |
+
- echo
|
| 11 |
+
private: true
|
| 12 |
+
---
|
| 13 |
+
|
| 14 |
+
# Echo Dia (V4)
|
| 15 |
+
|
| 16 |
+
Fine-tuned DiariZen-v2 (`BUT-FIT/diarizen-wavlm-large-s80-md-v2`) on a multi-domain meeting compound.
|
| 17 |
+
|
| 18 |
+
## Training
|
| 19 |
+
|
| 20 |
+
- **Base model**: BUT-FIT/diarizen-wavlm-large-s80-md-v2
|
| 21 |
+
- **Training data**: 9.1 h compound (AMI 3.5h + AliMeeting 2.6h + NOTSOFAR 3.0h)
|
| 22 |
+
- **Strategy**: WavLM layer 23 unfrozen, lr_wavlm=2.5e-6, lr_head=1e-4
|
| 23 |
+
- **Augmentation**: SpecAugment (time + freq mask) + audio noise injection
|
| 24 |
+
- **Duration**: 60 minutes on RTX A6000 (Phase 3 winner V4)
|
| 25 |
+
- **Best DER val** (ES2011a, 18 min): 17.69%
|
| 26 |
+
|
| 27 |
+
## Test set DER (collar=0, with overlap)
|
| 28 |
+
|
| 29 |
+
| Dataset | DER strict | DER col=0.25 | n_meetings |
|
| 30 |
+
|---|---|---|---|
|
| 31 |
+
| AMI test | 17.34% | 13.95% | 2 |
|
| 32 |
+
| AliMeeting test | 14.14% | 8.66% | 5 |
|
| 33 |
+
| NOTSOFAR test | 13.49% | 8.38% | 5 |
|
| 34 |
+
|
| 35 |
+
## Usage
|
| 36 |
+
|
| 37 |
+
```python
|
| 38 |
+
import torch
|
| 39 |
+
from diarizen.pipelines.inference import DiariZenPipeline
|
| 40 |
+
|
| 41 |
+
# Load v2 base, then inject Echo Dia weights
|
| 42 |
+
pipe = DiariZenPipeline.from_pretrained("BUT-FIT/diarizen-wavlm-large-s80-md-v2")
|
| 43 |
+
sd = torch.load("pytorch_model.bin", map_location="cuda:0", weights_only=False)
|
| 44 |
+
pipe._segmentation.model.load_state_dict(sd, strict=False)
|
| 45 |
+
|
| 46 |
+
# Run
|
| 47 |
+
result = pipe("audio.wav")
|
| 48 |
+
for seg, _, spk in result.itertracks(yield_label=True):
|
| 49 |
+
print(f"{seg.start:.1f}-{seg.end:.1f} {spk}")
|
| 50 |
+
```
|
| 51 |
+
|
| 52 |
+
## License
|
| 53 |
+
|
| 54 |
+
CC BY-NC 4.0 (inherited from base model). Non-commercial use only.
|
config.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"library_name": "transformers"
|
| 3 |
+
}
|
config.toml
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[model]
|
| 2 |
+
path = "diarizen.models.eend.model_wavlm_conformer.Model"
|
| 3 |
+
|
| 4 |
+
[model.args]
|
| 5 |
+
wavlm_src = "wavlm_large_s80_md"
|
| 6 |
+
wavlm_layer_num = 25
|
| 7 |
+
wavlm_feat_dim = 1024
|
| 8 |
+
attention_in = 256
|
| 9 |
+
ffn_hidden = 1024
|
| 10 |
+
num_head = 4
|
| 11 |
+
num_layer = 4
|
| 12 |
+
dropout = 0.1
|
| 13 |
+
max_speakers_per_chunk = 4
|
| 14 |
+
max_speakers_per_frame = 4
|
| 15 |
+
chunk_size = 16
|
| 16 |
+
use_posi = false
|
| 17 |
+
output_activate_function = false
|
| 18 |
+
selected_channel = 0
|
| 19 |
+
|
| 20 |
+
[inference.args]
|
| 21 |
+
seg_duration = 16
|
| 22 |
+
segmentation_step = 0.1
|
| 23 |
+
batch_size = 32
|
| 24 |
+
apply_median_filtering = true
|
| 25 |
+
|
| 26 |
+
[clustering.args]
|
| 27 |
+
method = "VBxClustering"
|
| 28 |
+
min_speakers = 1
|
| 29 |
+
max_speakers = 20
|
| 30 |
+
ahc_criterion = "distance"
|
| 31 |
+
ahc_threshold = 0.6
|
| 32 |
+
Fa = 0.07
|
| 33 |
+
Fb = 0.8
|
| 34 |
+
lda_dim = 128
|
| 35 |
+
max_iters = 20
|
| 36 |
+
|
| 37 |
+
|
plda/plda.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9b77bcd840692710dd3496f62ecfeed8d8e5f002fd991b785079b244eab7d255
|
| 3 |
+
size 133852
|
plda/xvec_transform.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:325f1ce8e48f7e55e9c8aa47e05d2766b7c48c4b25b8de8dd751e7a4cc5fbe8f
|
| 3 |
+
size 134376
|
pytorch_model.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a8f5c8ed69cb2ed78860587a97b3c0425284eeb793c99d4d84a46b8ff71ff692
|
| 3 |
+
size 278071935
|