模型:

microsoft/unispeech-sat-base-sv

英文

UniSpeech-SAT-Base语音说话人验证模型

Microsoft's UniSpeech

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

该模型的预训练数据包括:

Paper: UNISPEECH-SAT: UNIVERSAL SPEECH REPRESENTATION LEARNING WITH SPEAKER AWARE PRE-TRAINING

作者:Sanyuan Chen,Yu Wu,Chengyi Wang,Zhengyang Chen,Zhuo Chen,Shujie Liu,Jian Wu,Yao Qian,Furu Wei,Jinyu Li,Xiangzhan Yu

摘要 自我监督学习(SSL)是语音处理领域的一个长期目标,因为它利用大规模无标签数据,并避免了人工标注的工作。近年来,在语音识别领域应用自我监督学习取得了巨大成功,而在建模说话人特征方面的应用探索相对有限。本文旨在改进现有的自我监督学习框架,用于说话人表示学习。我们提出了两种方法来增强无监督说话人信息提取。首先,我们将多任务学习应用于当前的自我监督学习框架,通过将语句级对比损失与自我监督学习目标函数整合。其次,为了更好地区分说话人,我们提出了一种语句混合数据增强策略,在训练过程中无监督地创建额外的重叠语句并进行融合。我们将这两种方法集成到HuBERT框架中。在SUPERB基准测试中,实验结果表明,该系统在通用表示学习方面取得了最先进的性能,特别适用于面向说话人识别的任务。对每种提出的方法的有效性进行了验证性实验。最后,我们扩大了训练数据集至94,000小时的公共音频数据,并在所有SUPERB任务中实现了进一步的性能提升。

可以在 https://github.com/microsoft/UniSpeech/tree/main/UniSpeech-SAT 找到原始模型。

微调细节

该模型在 VoxCeleb1 dataset 上使用了带有Additive Margin Softmax损失的X-Vector头进行微调。

X-Vectors: Robust DNN Embeddings for Speaker Recognition

使用

说话人验证

from transformers import Wav2Vec2FeatureExtractor, UniSpeechSatForXVector
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/unispeech-sat-base-sv')
model = UniSpeechSatForXVector.from_pretrained('microsoft/unispeech-sat-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 找到官方许可证。