---
title: speech_diarization_eend-ola-en-us-callhome-8k
canonical_url: "https://www.modelscope.cn/models/iic/speech_diarization_eend-ola-en-us-callhome-8k"
md_url: "https://www.modelscope.cn/models/iic/speech_diarization_eend-ola-en-us-callhome-8k.md"
repository: iic/speech_diarization_eend-ola-en-us-callhome-8k
chinese_name: "EEND-OLA说话人日志-英文-Callhome-8k-离线"
last_updated: 2023-03-16
license: "Apache License 2.0"
pipeline_tag: speaker-diarization
tasks:
  - speaker-diarization
model_type:
  - spkdiar
library_name:
  - pytorch
frameworks:
  - pytorch
language:
  - en_US
domain:
  - audio
downloads: 1218
stars: 2
tags:
  - EEND-OLA
  - SpeakerDiarization
  - Alibaba
  - "ICASSP 2023"
---

# speech_diarization_eend-ola-en-us-callhome-8k

> speech_diarization_eend-ola-en-us-callhome-8k - iic 在 ModelScope 开源的模型。Highlights 英文会议对话场景，端到端说话人日志模型，解决 "who spoke when" ICASSP 2023，在 Callhome 数据集上获得 SOTA 结果。

iic/speech_diarization_eend-ola-en-us-callhome-8k 是 ModelScope 魔搭社区上的speaker-diarization模型，采用 Apache License 2.0 许可。

- **Repository**: iic/speech_diarization_eend-ola-en-us-callhome-8k
- **License**: Apache License 2.0
- **Tasks**: speaker-diarization
- **Tags**: EEND-OLA, SpeakerDiarization, Alibaba, ICASSP 2023
- **Downloads**: 1218
- **Stars**: 2
- **Last updated**: 2023-03-16

Source: https://www.modelscope.cn/models/iic/speech_diarization_eend-ola-en-us-callhome-8k

---

# Highlights
英文会议对话场景，端到端说话人日志模型，解决 "who spoke when" ICASSP 2023，在 Callhome 数据集上获得 SOTA 结果。

支持功能：
- 给定若干说话人的声纹信息，识别并追踪语音段中的这些说话人
- 给定若干说话人的原始语音，识别并追踪语音段中的这些说话人

# Release Note

- 2023年1月（预计1月16号发布）：funasr-0.1.6, modelscope-1.1.4
  - 模型功能完善：
    - Modelscope模型推理pipeline，新增加多种输入音频方式，如wav.scp、音频bytes、音频采样点、MP3格式、录音笔格式等。
    - [Paraformer-large模型](https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/summary)，新增加基于ModelScope微调定制模型，新增加batch级解码，加快推理速度。
    - [AISHELL-1学术集Paraformer模型](https://modelscope.cn/models/damo/speech_paraformer_asr_nat-zh-cn-16k-aishell1-vocab4234-pytorch/summary)，
    [AISHELL-1学术集ParaformerBert模型](https://modelscope.cn/models/damo/speech_paraformerbert_asr_nat-zh-cn-16k-aishell1-vocab4234-pytorch/summary)，
    [AISHELL-1学术集Conformer模型](https://modelscope.cn/models/damo/speech_conformer_asr_nat-zh-cn-16k-aishell1-vocab4234-pytorch/summary)、
    [AISHELL-2学术集Paraformer模型](https://www.modelscope.cn/models/damo/speech_paraformer_asr_nat-zh-cn-16k-aishell2-vocab5212-pytorch/summary)，
    [AISHELL-2学术集ParaformerBert模型](https://www.modelscope.cn/models/damo/speech_paraformerbert_asr_nat-zh-cn-16k-aishell2-vocab5212-pytorch/summary)、
    [AISHELL-2学术集Conformer模型](https://www.modelscope.cn/models/damo/speech_conformer_asr_nat-zh-cn-16k-aishell2-vocab5212-pytorch/summary)，
    新增加基于ModelScope微调定制模型，其中，Paraformer与ParaformerBert模型新增加batch级解码，加快推理速度。
  - 上线新模型：
    - [说话人确认模型](https://www.modelscope.cn/models/damo/speech_xvector_sv-zh-cn-cnceleb-16k-spk3465-pytorch/summary) ，可用于说话人确认，也可以用来做说话人特征提取。
    - [Paraformer-large长音频模型](https://www.modelscope.cn/models/damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch/summary)，集成VAD、ASR、标点与时间戳功能，可直接对时长为数小时音频进行识别，并输出带标点文字与时间戳。
    - [中文无监督预训练Data2vec模型](https://www.modelscope.cn/models/damo/speech_data2vec_pretrain-zh-cn-aishell2-16k-pytorch/summary)，采用Data2vec结构，基于AISHELL-2数据的中文无监督预训练模型，支持ASR或者下游任务微调模型。
    - [语音端点检查VAD模型](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/summary)，可用于检测长语音片段中有效语音的起止时间点。
    - [中文标点预测通用模型](https://www.modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/summary)，可用于语音识别模型输出文本的标点预测。
    - [8K UniASR流式模型](https://www.modelscope.cn/models/damo/speech_UniASR_asr_2pass-zh-cn-8k-common-vocab3445-pytorch-online/summary)，[8K UniASR模型](https://www.modelscope.cn/models/damo/speech_UniASR_asr_2pass-zh-cn-8k-common-vocab3445-pytorch-offline/summary)，一种流式与离线一体化语音识别模型，进行流式语音识别的同时，能够以较低延时输出离线识别结果来纠正预测文本。
    - Paraformer-large基于[AISHELL-1微调模型](https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-aishell1-vocab8404-pytorch/summary)、[AISHELL-2微调模型](https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-aishell2-vocab8404-pytorch/summary)，将Paraformer-large模型分别基于AISHELL-1与AISHELL-2数据微调。
    - [小尺寸设备端Paraformer指令词模型](https://www.modelscope.cn/models/damo/speech_paraformer-tiny-commandword_asr_nat-zh-cn-16k-vocab544-pytorch/summary)，Paraformer-tiny指令词版本，使用小参数量模型支持指令词识别。
  - 将原TensorFlow模型升级为Pytorch模型，进行推理，并支持微调定制，包括：
    - 16K 模型：[Paraformer中文](https://modelscope.cn/models/damo/speech_paraformer_asr_nat-zh-cn-16k-common-vocab8358-tensorflow1/summary)、
    [Paraformer-large中文](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8358-tensorflow1/summary)、
    [UniASR中文](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-zh-cn-16k-common-vocab8358-tensorflow1-offline/summary)、
    [UniASR-large中文](https://modelscope.cn/models/damo/speech_UniASR-large_asr_2pass-zh-cn-16k-common-vocab8358-tensorflow1-offline/summary)、
    [UniASR中文流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-zh-cn-16k-common-vocab8358-tensorflow1-online/summary)、
    [UniASR方言](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-cn-dialect-16k-vocab8358-tensorflow1-offline/summary)、
    [UniASR方言流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-cn-dialect-16k-vocab8358-tensorflow1-online/summary)、
    [UniASR日语](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-ja-16k-common-vocab93-tensorflow1-offline/summary)、
    [UniASR日语流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-ja-16k-common-vocab93-tensorflow1-online/summary)、
    [UniASR印尼语](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-id-16k-common-vocab1067-tensorflow1-offline/summary)、
    [UniASR印尼语流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-id-16k-common-vocab1067-tensorflow1-online/summary)、
    [UniASR葡萄牙语](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-pt-16k-common-vocab1617-tensorflow1-offline/summary)、
    [UniASR葡萄牙语流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-pt-16k-common-vocab1617-tensorflow1-online/summary)、
    [UniASR英文](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-en-16k-common-vocab1080-tensorflow1-offline/summary)、
    [UniASR英文流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-en-16k-common-vocab1080-tensorflow1-online/summary)、
    [UniASR俄语](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-ru-16k-common-vocab1664-tensorflow1-offline/summary)、
    [UniASR俄语流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-ru-16k-common-vocab1664-tensorflow1-online/summary)、
    [UniASR韩语](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-ko-16k-common-vocab6400-tensorflow1-offline/summary)、
    [UniASR韩语流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-ko-16k-common-vocab6400-tensorflow1-online/summary)、
    [UniASR西班牙语](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-es-16k-common-vocab3445-tensorflow1-offline/summary)、
    [UniASR西班牙语流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-es-16k-common-vocab3445-tensorflow1-online/summary)、
    [UniASR粤语简体](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-cantonese-CHS-16k-common-vocab1468-tensorflow1-offline/files)、
    [UniASR粤语简体流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-cantonese-CHS-16k-common-vocab1468-tensorflow1-online/files)、
    - 8K 模型：[Paraformer中文](https://modelscope.cn/models/damo/speech_paraformer_asr_nat-zh-cn-8k-common-vocab8358-tensorflow1/summary)、
    [UniASR中文](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-zh-cn-8k-common-vocab8358-tensorflow1-offline/summary)、
    [UniASR中文流式模型](https://modelscope.cn/models/damo/speech_UniASR_asr_2pass-zh-cn-8k-common-vocab8358-tensorflow1-offline/summary)

- 2022年11月：funasr-0.1.4, modelscope-1.1.3
  - Paraformer-large非自回归模型上线，多个公开数据集上取得SOTA效果：
    - 支持基于ModelScope推理。
    - 支持基于[FunASR框架开源](https://github.com/alibaba-damo-academy/FunASR)微调和推理。

# 项目介绍
Speaker Overlap-aware Neural Diarization（SOND）是达摩院语音团队提出的一种高效建模语音重叠的说话人日志模型。本项目提供了在 <a href="http://openslr.org/119/">Callhome</a> 英文开源数据集上预训练的 SOND 模型，可以被应用于智能会议分析、对话分析等相关的学术研究。

<p align="center">
<img src="fig/sond.png" alt="SOND模型结构"  width="420" />
</p>

SOND模型结构如上图所示，包括对语音信息进行编码的 Speech encoder、对说话人信息进行编码的 Speaker encoder、上下文依赖的打分器 CD scorer、上下文无关的打分器 CI scorer以及预测幂集编码的说话人混合网络 SCN。其中：
- Speech encoder 采用说话人识别任务中常用的 ResNet34网络结构，并采用 windowed statistic pooling 来得到每个时刻的语音特征
- Speaker encoder 采用 3 层全连接网络来对说话人的声纹信息进行映射，使其与语音特征在同一个特征空间
- 上下文无关的打分器 CI scorer 通过对比目标说话人与训练集中其他说话人的不同来学习全局的说话人区分性
- 上下文依赖的打分器 CD scorer 通过对比目标说话人与上下文中其他说话人的不同来学习局部的说话人区分性
- 说话人混合网络 SCN 以 CI 和 CD 打分为输入，来对不同的说话人组合进行建模。
- 预测网络为多层FFN，并采用Softmax作为激活函数来对幂集标签 PSE 进行预测

<p align="center">
<img src="fig/pse.png" alt="幂集（PSE）标签示例"  width="540" />
</p>

更多细节详见：
- 论文：<a href="https://arxiv.org/abs/2303.05397">TOLD: A Novel Two-Stage Overlap-Aware Framework for Speaker Diarization</a>

# 如何使用模型

## 在线快速体验（集成中）
在页面右侧，可以在“在线体验”栏内看到我们预先准备好的示例音频，点击播放按钮可以试听，点击“执行测试”按钮，会在下方“测试结果”栏中显示多个说话人的语音活动区间。如果您想要测试自己的音频，可点击“更换音频”按钮，选择上传或录制一段音频，完成后点击执行测试，各个说话人的语音活动区间将会在测试结果栏中显示。

## 在Notebook中推理
对于灵活调用有需求的开发者，我们推荐您使用Notebook进行处理。首先登录ModelScope账号，点击模型页面右上角的“在Notebook中打开”按钮出现对话框，首次使用会提示您关联阿里云账号，按提示操作即可。关联账号后可进入选择启动实例界面，选择计算资源，建立实例，待实例创建完成后进入开发环境，输入api调用实例。

- 使用本模型进行说话人日志任务：
```python
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
import numpy as np

# 初始化推理 pipeline
# 当以原始音频作为输入时使用配置文件 sond.yaml，并设置 mode 为sond_demo
inference_diar_pipline = pipeline(
    mode="sond_demo",
    num_workers=0,
    task=Tasks.speaker_diarization,
    diar_model_config="sond.yaml",
    model='damo/speech_diarization_sond-en-us-callhome-8k-n16k4-pytorch',
    sv_model="damo/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch",
    sv_model_revision="master",
)

# 以 audio_list 作为输入，其中第一个音频为待检测语音，后面的音频为不同说话人的声纹注册语音
audio_list=[[
    "https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/record.wav",
    "https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/spk_A.wav",
    "https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/spk_B.wav",
    "https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/spk_B1.wav"
]]

results = inference_diar_pipline(audio_in=audio_list)
for rst in results:
    print(rst["value"])
```
- 除了url表示的网络wav文件，还可使用本地磁盘上的wav文件：
```python
audio_list=[[
    "example/record.wav",
    "example/spk_A.wav",
    "example/spk_B.wav",
    "example/spk_B1.wav"
]]
results = inference_diar_pipline(audio_in=audio_list)
```

- 使用本模型进行批量说话人日志：
```python
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
import numpy as np

# 初始化推理 pipeline
# 当输入为 fbank 特征时使用的配置文件 sond_fbank.yaml
# output_dir 为结果保存路径
inference_diar_pipline = pipeline(
    mode="sond",
    output_dir="outputs",
    diar_model_config="sond_fbank.yaml",
    task=Tasks.speaker_diarization,
    model='speech_diarization_sond-zh-cn-alimeeting-16k-n16k4-pytorch',
    num_workers=1
)

# feats.scp 包括 fbank 特征
# utt1 path/to/feats.ark:xxx
# utt2 path/to/feats.ark:xxx
# profile.scp 包括基于 xvector 的 speaker embedding, 可使用 ModelScope 上的如下模型 speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch 进行提取
# utt1 path/to/profile.ark:xxx
# utt2 path/to/profile.ark:xxx
data_path_and_name_and_type = [
        ("data/test_rmsil/feats.scp", "speech", "kaldi_ark"),
        ("data/test_rmsil/profile.scp", "profile", "kaldi_ark")
]
pipeline(audio_in=data_path_and_name_and_type)
```

## 在本地机器中推理

如果您有本地推理或定制模型的需求，可以前往下载FunASR语音处理框架，不仅涵盖语音识别、端点检测、说话人确认及日志等多种模型，还支持ModelScope开源模型的推理，使研究人员和开发者可以更加便捷的进行模型研究和生产，目前已在github开源：<a href="https://github.com/alibaba-damo-academy/FunASR">FunASR</a>

### FunASR框架安装

- 安装FunASR和ModelScope

```sh
# 安装 Pytorch GPU (version >= 1.7.0):
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=9.2 -c pytorch  
# 对于其他版本，请参考 https://pytorch.org/get-started/locally

# 安装 ModelScope 包:
pip install "modelscope[audio_asr]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html

# 下载项目代码:
git clone https://github.com/alibaba/FunASR.git

# 安装 FunASR:
pip install --editable ./
```

### 基于ModelScope进行推理

- 在上面的安装完成后，就可以在使用ModelScope进行推理了，可运行如下命令测试各种用法：
```sh
cd egs_modelscope/speaker_diarization/speech_diarization_sond-zh-cn-alimeeting-16k-n16k4-pytorch
python unit_test.py 
```

### 使用 FunASR 在 Callhome 测试集上进行性能评估（working）
接下以 Callhome 数据集为例，介绍如何使用 FunASR 对模型的 DER 性能指标进行评估：
```sh
# 进入工作目录
cd egs/callhome/diarization/sond

# 进行评估，结束后您将会得到大概 10.14% 的 DER 结果
sh ./run.sh
```

### 基于ModelScope进行模型微调

训练和微调功能正在开发中，敬请期待。

# Benchmark

## 训练配置
- Feature info: using 80 dims fbank, no cmvn
- Train info: noam, lr 1.0, batch_size 32, 2 gpu(Tesla V100), acc_grad 1, 200000 steps, clip_gradient_norm 5.0
- Loss info: cross entropy softmax, speaker discriminative loss
- Model info: ResNet34, FFN, SAN, FSMN, windowed statistics pooling
- Train config: sond.yaml
- Model size: 19.09 M parameters

## 实验结果 (DER)
- Test set: Alimeeting-test

|       testset         | DER(%) |
|:---------------------:|:------:|
|       Callhom         | 10.14  |

## 使用方式以及适用范围

运行范围
- 现阶段只能在 Linux-x86_64 运行，暂未适配 Mac 和 Windows 。

使用方式
- 直接推理：可以直接使用原始语音和说话人注册语音作为输入，识别输出各个说话人的活动区间。
- 微调：正在开发中。

使用范围与目标场景
- 适用于相关学术研究，在 Callhome 数据集上进行说话人日志、识别等任务。

## 模型局限性以及可能的偏差

- 特征提取流程和工具差异，会对 DER 的数值带来一定的差异（ < 0.1% ）
- 识别语音输入应接为近 16 秒的无静音数据，注册语音长度应大于 2 秒

## 相关论文以及引用信息
```BibTeX
@inproceedings{wang2023told,
  title={TOLD: A Novel Two-Stage Overlap-Aware Framework for Speaker Diarization},
  author={Wang, Jiaming and Du, Zhihao and Zhang, Shiliang},
  booktitle={ICASSP},
  year={2023}
}
@inproceedings{du2022sond,
  title={Speaker Overlap-aware Neural Diarization for Multi-party Meeting Analysis},
  author={Du, Zhihao and Zhang, Shiliang and Zheng, Siqi and Yan, Zhijie},
  booktitle={EMNLP},
  year={2022}
}
```
