说话人确认和声纹提取模型,训练数据集
支持功能:
FunASR希望在语音识别方面建立学术研究和工业应用之间的桥梁。通过支持在ModelScope上发布的工业级语音识别模型的训练和微调,研究人员和开发人员可以更方便地进行语音识别模型的研究和生产,并促进语音识别生态系统的发展。
最新动态
| 环境安装
| 介绍文档
| 中文教程
| 服务部署
| 模型库
| 联系我们
ResNet34是说话人确认(Speaker Verification)中常用的模型结构。
模型包括帧级说话人特征提取主干网络ResNet34、全局统计池化global statistic pooling以及多个全连接层fully-connected layer。
该模型是达摩院语音团队在常用开源数据集CN-Celeb 1&2和会议场景数据集AliMeeting上预训练得到的,
可以用于通用任务的说话人嵌入码(speaker embedding)提取,或进行说话人确认任务。
该模型还可以用于说话人日志(speaker diarization)任务,并取得了良好的识别效果。
具体可以参考我们发表于EMNLP 2022上的论文和
论文解读。
在页面右侧,可以在“在线体验”栏内看到我们预先准备好的示例音频,点击播放按钮可以试听,点击“执行测试”按钮,会在下方“测试结果”栏中显示两个语音说话人之间的相似程度(0到1之间)。如果您想要测试自己的音频,可点击“更换音频”按钮,选择上传或录制一段音频,完成后点击执行测试,相似度将会在测试结果栏中显示。
对于灵活调用有需求的开发者,我们推荐您使用Notebook进行处理。首先登录ModelScope账号,点击模型页面右上角的“在Notebook中打开”按钮出现对话框,首次使用会提示您关联阿里云账号,按提示操作即可。关联账号后可进入选择启动实例界面,选择计算资源,建立实例,待实例创建完成后进入开发环境,输入api调用实例。
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
import numpy as np
inference_sv_pipline = pipeline(
task=Tasks.speaker_verification,
model='damo/speech_xvector_sv-zh-cn-cnceleb-16k-spk3465-pytorch'
)
# 对于单个url我们使用"spk_embedding"作为key
spk_embedding = inference_sv_pipline(audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_enroll.wav')["spk_embedding"]
spk_embedding = inference_sv_pipline(audio_in='sv_example_enroll.wav')["spk_embedding"]
import soundfile
wav = soundfile.read('sv_example_enroll.wav', dtype="int16")[0]
# 对于内存中的数组或者张量我们使用"spk_embedding"作为key
spk_embedding = inference_sv_pipline(audio_in=wav)["spk_embedding"]
enroll = inference_sv_pipline(audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_enroll.wav')["spk_embedding"]
same = inference_sv_pipline(audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_same.wav')["spk_embedding"]
import numpy as np
# 对相同的说话人计算余弦相似度
sv_threshold=0.9465
same_cos=np.sum(enroll*same)/(np.linalg.norm(enroll)*np.linalg.norm(same))
same_cos=max(same_cos - sv_threshold, 0.0) / (1.0 - sv_threshold) * 100.0
print(same_cos)
# 两个语音为相同说话人
rec_result = inference_sv_pipline(audio_in=('https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_enroll.wav','https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_same.wav'))
print(rec_result["scores"][0])
# 两个语音为不同说话人
rec_result = inference_sv_pipline(audio_in=('https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_enroll.wav','https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_different.wav'))
print(rec_result["scores"][0])
如果您有本地推理或定制模型的需求,可以前往下载FunASR语音处理框架,不仅涵盖语音识别、端点检测和说话人确认等多种模型,还支持ModelScope开源模型的推理,使研究人员和开发者可以更加便捷的进行模型研究和生产,目前已在github开源:https://github.com/alibaba-damo-academy/FunASR
pip3 install -U modelscope
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./
cd egs_modelscope/speaker_verification/speech_xvector_sv-zh-cn-cnceleb-16k-spk3465-pytorch
python infer.py
python infer_sv.py
接下以CN-Celeb数据集为例,介绍如何使用ModelScope对模型的EER、minDCF等性能指标进行评估,从Openslr上下载完整的CN-Celeb 1&2数据集:http://openslr.org/82/
# 进入工作目录
cd egs_modelscope/speaker_verification/speech_xvector_sv-zh-cn-cnceleb-16k-spk3465-pytorch
# 获取评估用的数据
wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/cnceleb-eval.tar.gz
tar zxf cnceleb-eval.tar.gz
# 进行评估
python ./eval_eer.py
训练和微调功能正在开发中,敬请期待。
testset | EER(%) | minDCF | Threshold |
---|---|---|---|
Alimeeting-test | 1.45 | 0.0849 | 0.9666 |
CN-Celeb-eval-speech | 9.00 | 0.2936 | 0.9465 |
运行范围
使用方式
使用范围与目标场景