英文

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

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

微调细节

该模型在 LibriMix dataset 上进行了微调,仅使用线性层来映射网络输出。

用法

说话人分离

from transformers import Wav2Vec2FeatureExtractor, UniSpeechSatForAudioFrameClassification
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-plus-sd')
model = UniSpeechSatForAudioFrameClassification.from_pretrained('microsoft/unispeech-sat-base-plus-sd')

# audio file is decoded on the fly
inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt")
logits = model(**inputs).logits
probabilities = torch.sigmoid(logits[0])
# labels is a one-hot array of shape (num_frames, num_speakers)
labels = (probabilities > 0.5).long()

许可证

官方许可证可以在 here 下找到