英文

WavLM-Base-Plus用于说话人分离

Microsoft's WavLM

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

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

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 下找到原始模型。

微调细节

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

用法

说话人分离

from transformers import Wav2Vec2FeatureExtractor, WavLMForAudioFrameClassification
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-plus-sd')
model = WavLMForAudioFrameClassification.from_pretrained('microsoft/wavlm-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 找到