会议场景端到端说话人日志模型,解决 “who spoke when” 的问题,发表于EMNLP 2022,在AliMeeting数据集上获得SOTA结果。
支持功能:
FunASR希望在语音识别方面建立学术研究和工业应用之间的桥梁。通过支持在ModelScope上发布的工业级语音识别模型的训练和微调,研究人员和开发人员可以更方便地进行语音识别模型的研究和生产,并促进语音识别生态系统的发展。
最新动态
| 环境安装
| 介绍文档
| 中文教程
| 服务部署
| 模型库
| 联系我们
Speaker Overlap-aware Neural Diarization(SOND)是达摩院语音团队提出的一种高效建模语音重叠的说话人日志模型。本项目提供了在 AliMeeting 中文开源数据集上预训练的 SOND 模型,可以被应用于智能会议分析、对话分析等相关的学术研究。
SOND模型结构如上图所示,包括对语音信息进行编码的 Speech encoder、对说话人信息进行编码的 Speaker encoder、上下文依赖的打分器 CD scorer、上下文无关的打分器 CI scorer以及预测幂集编码的说话人混合网络 SCN。其中:
更多细节详见:
在页面右侧,可以在“在线体验”栏内看到我们预先准备好的示例音频,点击播放按钮可以试听,点击“执行测试”按钮,会在下方“测试结果”栏中显示多个说话人的语音活动区间。如果您想要测试自己的音频,可点击“更换音频”按钮,选择上传或录制一段音频,完成后点击执行测试,各个说话人的语音活动区间将会在测试结果栏中显示。
对于灵活调用有需求的开发者,我们推荐您使用Notebook进行处理。首先登录ModelScope账号,点击模型页面右上角的“在Notebook中打开”按钮出现对话框,首次使用会提示您关联阿里云账号,按提示操作即可。关联账号后可进入选择启动实例界面,选择计算资源,建立实例,待实例创建完成后进入开发环境,输入api调用实例。
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-zh-cn-alimeeting-16k-n16k4-pytorch',
model_revision="v1.0.5",
sv_model="damo/speech_xvector_sv-zh-cn-cnceleb-16k-spk3465-pytorch",
sv_model_revision="v1.2.2",
)
# 以 audio_list 作为输入,其中第一个音频为待检测语音,后面的音频为不同说话人的声纹注册语音
audio_list=[
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/speaker_diarization/record.wav",
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/speaker_diarization/spk1.wav",
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/speaker_diarization/spk2.wav",
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/speaker_diarization/spk3.wav",
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/speaker_diarization/spk4.wav",
]
results = inference_diar_pipline(audio_in=audio_list)
print(results)
audio_list=[
"example/record.wav",
"example/spk1.wav",
"example/spk2.wav",
"example/spk3.wav",
"example/spk4.wav"
]
results = inference_diar_pipline(audio_in=audio_list)
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-zh-cn-cnceleb-16k-spk3465-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)
# 也可以使用我们已经准备好的特征文件进行推理,下载路径为
# https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/alimeeting_test_data_for_sond.tar.gz
如果您有本地推理或定制模型的需求,可以前往下载FunASR语音处理框架,不仅涵盖语音识别、端点检测、说话人确认及日志等多种模型,还支持ModelScope开源模型的推理,使研究人员和开发者可以更加便捷的进行模型研究和生产,目前已在github开源:FunASR
# 安装 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 ./
cd egs_modelscope/speaker_diarization/speech_diarization_sond-zh-cn-alimeeting-16k-n16k4-pytorch
python unit_test.py
接下以 AliMeeting 数据集为例,介绍如何使用 FunASR 对模型的 DER 性能指标进行评估:
# 进入工作目录
cd egs/alimeeting/diarization/sond
# 进行评估,结束后您将会得到大概 4.21% 的 DER 结果
sh ./run.sh
训练和微调功能正在开发中,敬请期待。
testset | DER(%) |
---|---|
Alimeeting-test | 4.21 |
运行范围
使用方式
使用范围与目标场景
@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}
}