模型:

microsoft/wavlm-base-sv

英文

WavLM-Base for Speaker Verification

Microsoft's WavLM

该模型在16kHz采样的语音音频上进行了预训练,并使用了话语和说话人对比损失。在使用该模型时,请确保输入的语音也以16kHz进行采样。

该模型以960小时的 Librispeech 进行了预训练。

Paper: WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing

作者:Sanyuan Chen, Chengyi Wang, Zhengyang Chen, Yu Wu, Shujie Liu, Zhuo Chen, Jinyu Li, Naoyuki Kanda, Takuya Yoshioka, Xiong Xiao, Jian Wu, Long Zhou, Shuo Ren, Yanmin Qian, Yao Qian, Jian Wu, Michael Zeng, Furu Wei

摘要:自监督学习(SSL)在语音识别方面取得了巨大的成功,但在其他语音处理任务方面尚未进行充分的探索。由于语音信号包含了包括说话人身份、语用学、言语内容等在内的多方面信息,学习适用于所有语音任务的通用表示是具有挑战性的。本论文提出了一个新的预训练模型WavLM,用于解决全栈下游语音任务。WavLM基于HuBERT框架构建,并着重于语音内容建模和说话人身份保留。我们首先使用门控相对位置偏差来改进Transformer结构在识别任务上的能力。为了更好地进行说话人区分,我们提出了一种话语混合训练策略,其中无监督地创建了额外的重叠话语,并在模型训练过程中进行融合。最后,我们将训练数据集从60k小时扩大至94k小时。WavLM Large在SUPERB基准上实现了最先进的性能,并显著提高了各种代表性语音处理任务的性能。

原始模型可在 https://github.com/microsoft/unilm/tree/master/wavlm 中找到。

Fine-tuning细节

该模型使用具有附加边缘Softmax损失的X-Vector头在 VoxCeleb1 dataset 上进行了Fine-tuning。

使用方法

说话人验证

from transformers import Wav2Vec2FeatureExtractor, WavLMForXVector
from datasets import load_dataset
import torch

dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained('microsoft/wavlm-base-sv')
model = WavLMForXVector.from_pretrained('microsoft/wavlm-base-sv')

# audio files are decoded on the fly
inputs = feature_extractor(dataset[:2]["audio"]["array"], return_tensors="pt")
embeddings = model(**inputs).embeddings
embeddings = torch.nn.functional.normalize(embeddings, dim=-1).cpu()

# the resulting embeddings can be used for cosine similarity-based retrieval
cosine_sim = torch.nn.CosineSimilarity(dim=-1)
similarity = cosine_sim(embeddings[0], embeddings[1])
threshold = 0.86  # the optimal threshold is dataset-dependent
if similarity < threshold:
    print("Speakers are not the same!")

许可证

正式许可证可在 here 处找到。