项目介绍:hubert-xlarge-ls960-ft
项目背景
hubert-xlarge-ls960-ft 是一个高级的自动语音识别(Automatic Speech Recognition, ASR)模型,由Facebook提出。该模型的开发目的是为了提升语音识别的准确性和效率,特别是在长时间语音资料上的表现。hubert-xlarge-ls960-ft是基于一个自监督的表示学习方法,称为HuBERT(Hidden-Unit BERT),专注于语音表示学习的复杂问题。
技术亮点
HuBERT 解决了语音识别中常见的三个主要问题:
- 输入语音包含多个声音单元。
- 预训练阶段缺乏系统的声音单元词汇。
- 不同声音单元长度不一,没有明确分割。
为了解决这些难题,介绍了离线聚类步骤,为类似 BERT 的预测损失计算提供对齐的目标标签。此外,该方法的核心在于只在被掩蔽区间应用预测损失,这样可以迫使模型学习连续输入信号的综合声学和语言模型。
预训练与微调
hubert-xlarge-ls960-ft 模型是在960小时LibriSpeech语音数据上进行微调,以16kHz频率采样的语音数据为基础。当使用该模型时,确保输入语音数据也以16kHz采样。
模型性能
在LibriSpeech测试集(clean)上的测试词错误率(WER)为1.8,显示出卓越的语音识别性能。HuBERT 使用一个包含10亿参数的模型,在开发和测试的困难子集上,分别实现了最多19%和13%的相对WER减少。
应用领域
该模型可以用于自动语音识别,适配器指会在模型输入为语音数据后输出文本转录,例如:
import torch
from transformers import Wav2Vec2Processor, HubertForCTC
from datasets import load_dataset
processor = Wav2Vec2Processor.from_pretrained("facebook/hubert-xlarge-ls960-ft")
model = HubertForCTC.from_pretrained("facebook/hubert-xlarge-ls960-ft")
ds = load_dataset("patrickvonplaten/librispeech_asr_dummy", "clean", split="validation")
input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").input_values # 批处理大小为1
logits = model(input_values).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.decode(predicted_ids[0])
# 输出: "A MAN SAID TO THE UNIVERSE SIR I EXIST"
相关资源
该项目的详细信息及模型的原始实现可在GitHub上找到。它也在arxiv上有相关论文供研究者参考。
开源许可
hubert-xlarge-ls960-ft项目采用Apache 2.0开源许可协议,用户可以在遵循相关协议的前提下自由使用和修改此模型。