尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

WavLM实践教程:用3个预训练模型跑通说话人验证到ASR的全栈语音任务

WavLM实践教程:用3个预训练模型跑通说话人验证到ASR的全栈语音任务 WavLM实践教程用3个预训练模型跑通说话人验证到ASR的全栈语音任务【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilmWavLM 是微软的大规模自监督预训练语音模型系列位于 unilm 项目的 wavlm/ 子目录中覆盖 WavLM 说话人验证、语音识别、语音分离、说话人日志diarization等全栈语音处理任务。读完本文你可以自行加载 3 种规格的预训练模型、提取语音特征并对齐每项任务的基准数据。一段会议录音要干三件事拿一段会议录音举例通常需要完成按人切分时间轴说话人日志、核验“是不是同一个人”说话人验证、转写内容ASR——三件事往往对应三条独立流水线。WavLM 的思路是用一套自监督学出来的语音表征同时服务它们论文题目即 Large-Scale Self-Supervised Pre-training for Full Stack Speech Processing。在 SUPERB 基准榜单上WavLM Large 以 84.6 的总分Score位列第一。环境搭建克隆仓库并加载检查点代码与依赖整个实现很轻核心就两个文件WavLM.pyWavLMConfig 配置类、WavLM 主模型与 extract_features 特征提取入口modules.py卷积特征提取器、多头注意力、位置卷积编码等组件依赖上只需要 torch 和 numpy。克隆仓库并加载模型git clone https://gitcode.com/GitHub_Trending/un/unilm cd unilm/wavlmimport torch from WavLM import WavLM, WavLMConfig checkpoint torch.load(/path/to/wavlm.pt) cfg WavLMConfig(checkpoint[cfg]) model WavLM(cfg) model.load_state_dict(checkpoint[model]) model.eval()3 个检查点WavLM-Base.pt 等的下载链接在 wavlm/README.md 的 Pre-Trained Models 表格中托管于 Azure Storage 与 Google Drive。3种模型规格Base、Base、Large模型预训练数据参数规模适用建议WavLM BaseLibriSpeech 960 小时约 95M快速原型、轻量场景WavLM BaseLibri-Light 60k 小时 GigaSpeech 10k 小时 VoxPopuli 24k 小时合计约 94k 小时约 95M多数下游任务的起步选择WavLM Large与 Base 相同约 317M说话人验证、语音分离等高精度需求参数规模来自 README 中 SUPERB 评测表的 #Params 列94.70M / 316.62M。注意 Base 与 Base 参数量相同差别只在预训练数据量960 小时 vs 94k 小时方便做受控对比。4项任务的基准数字说话人验证是不是同一个人用 VoxCeleb2 dev 微调在 VoxCeleb1 上评测EER越低越好模型Vox1-OVox1-EVox1-HECAPA-TDNN0.871.122.12HuBERT large*0.5850.6541.342Wav2Vec 2.0 (XLSR)*0.5640.6051.23WavLM Large*0.330.4770.984* 指采用 large margin 微调与分数校准、且不冻结预训练层的设置。WavLM Large 在 Vox1-O 上 EER 0.33%约为 ECAPA-TDNN 基线0.87的 38%。语音分离每个人说了什么在 LibriCSS 上评测2 说话人干净场景 0S/0L 的 SI-SNRi 为 4.2/4.1 dB带噪场景 OV30/OV40 达到 7.4/8.5 dB而 Conformer 基线仅 11/12.6 dB——噪声越大差距越明显。说话人日志与 ASR说话人日志在 CALLHOME 上评测DER越低越好模型spk_2spk_3spk_4spk_allEEND-EDA此前 SOTA7.1111.8814.3711.84WavLM Base6.9911.1215.2011.75WavLM Large6.4610.6911.8410.35ASR 方面WavLM 系列在 LibriSpeech 上的 WER 为 3.48Base与 3.51Large。三个模型在 SUPERB 全部任务Speaker、Content、Semantics上的明细如下特征该取哪一层 输入要求16kHz 单通道波形当cfg.normalize为 True 时入模前先做 layer_norm官方示例同款写法。 官方建议不要只取最后一层抽取每层表征再加权求和。用ret_layer_resultsTrue可以一次拿到全部层rep, layer_results model.extract_features( wav_16k, output_layermodel.cfg.encoder_layers, ret_layer_resultsTrue)[0] layer_reps [x.transpose(0, 1) for x, _ in layer_results]只需要某一层的特征时直接传output_layer参数即可。HuggingFace 与 s3prl 均支持 WavLM 检查点下游微调可直接复用不必手写训练循环。小结WavLM 用一套自监督表征同时覆盖说话人验证、语音分离、说话人日志与 ASR 四类任务Base960 小时预训练适合快速验证Base 与 Large约 94k 小时数据、约 95M/317M 参数分别对应成本与精度上限多数下游场景建议从 Base 起步精度不足再上 Large。完整实验数据与检查点下载入口见 wavlm/README.md。【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表