🚀 Wav2Vec-OSR
这是为The Sound Of AI开源研究小组的语音转文本模块微调的Facebook的wav2vec2模型。原始基础模型在960小时的Librispeech 16kHz采样语音音频上进行了预训练和微调。使用该模型时,请确保您的语音输入也是16kHz采样的。
🚀 快速开始
本项目是针对语音转文本模块对Facebook的wav2vec2模型进行微调的成果,适用于The Sound Of AI开源研究小组。原始基础模型在960小时的Librispeech 16kHz采样语音音频上完成了预训练与微调。使用模型时,要保证语音输入为16kHz采样。
✨ 主要特性
- 数据集:基于
librispeech_asr
数据集进行训练。
- 标签:涵盖音频、自动语音识别、语音转文本等领域。
- 许可证:采用
apache - 2.0
许可证。
- 示例音频:提供多个示例音频,可通过以下链接访问:
📚 详细文档
论文信息
- 作者:Alexei Baevski, Henry Zhou, Abdelrahman Mohamed, Michael Auli
摘要
我们首次证明,仅从语音音频中学习强大的表示,然后在转录语音上进行微调,能够在概念上更简单的同时,超越最佳的半监督方法。wav2vec 2.0在潜在空间中对语音输入进行掩码处理,并解决了一个基于潜在表示量化定义的对比任务,这些潜在表示是联合学习的。使用Librispeech的所有标记数据进行的实验在干净/其他测试集上实现了1.8/3.3的字错率(WER)。当将标记数据量减少到一小时时,wav2vec 2.0在100小时子集上超越了先前的技术水平,同时使用的标记数据减少了100倍。仅使用十分钟的标记数据并在53000小时的未标记数据上进行预训练,仍能实现4.8/8.2的WER。这证明了在有限标记数据的情况下进行语音识别的可行性。
原始模型链接
💻 使用示例
基础用法
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
from datasets import load_dataset
import soundfile as sf
import torch
tokenizer = Wav2Vec2CTCTokenizer.from_pretrained("iamtarun/wav2vec-osr")
processor = Wav2Vec2Processor.from_pretrained("iamtarun/wav2vec-osr")
model = Wav2Vec2ForCTC.from_pretrained("iamtarun/wav2vec-osr")
model = model.eval()
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)
def map_to_array(batch):
speech, _ = sf.read(batch["file"])
batch["speech"] = speech
return batch
ds = load_dataset("patrickvonplaten/librispeech_asr_dummy", "clean", split="validation")
ds = ds.map(map_to_array)
input_values = processor(ds["speech"][:2], sampling_rate=rate, padding="longest", return_tensors="pt").input_values.to(device)
logits = model(input_values).logits
predicted_ids = torch.argmax(logits, dim =-1)
transcriptions = tokenizer.decode(predicted_ids[0])
print(transcriptions)
📄 许可证
本项目采用apache - 2.0
许可证。