项目介绍:wav2vec2-base-vietnamese-250h
背景介绍
wav2vec2-base-vietnamese-250h项目是一个用于越南语的端到端语音识别模型。该项目使用了Facebook的Wav2Vec 2.0技术,通过预训练和微调流程,取得了在越南语语音识别上的优异表现。
数据集与预处理
此模型初期在13000小时的越南语YouTube音频数据上进行了无标签预训练,随后在250小时标注的VLSP ASR数据集上进行了微调。所有的音频数据采样率为16kHz。在微调阶段,使用了连接时序分类算法(CTC),该算法常用于解决序列到序列的问题,尤其是在自动语音识别和手写识别领域。
模型架构与功能
- 模型参数:wav2vec2-base模型包含9500万个参数,结合了大量无标签和有标签数据的学习。
- 语言模型:在提供的声学模型基础上,项目还提供了一个基于2GB文本训练的四元语言模型。
性能与评估
项目在不同数据集上的性能评估如下所示,采用的衡量标准为词错误率(WER):
测试集 | 无语言模型 | 使用四元语言模型 |
---|---|---|
VIVOS | 10.77 | 6.15 |
COMMON VOICE VI | 18.34 | 11.52 |
VLSP-T1 | 13.33 | 9.11 |
VLSP-T2 | 51.45 | 40.81 |
使用语言模型后,WER显著降低,展示了语言模型的重要性。
示例使用方法
在进行语音识别时,需要确保输入的语音采样率为16kHz,并且音频长度不超过10秒。研究人员可以通过Colab使用CTC-wav2vec与四元语言模型的组合进行实验。
以下是使用示例的代码片段:
from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
from datasets import load_dataset
import soundfile as sf
import torch
# 加载模型和处理器
processor = Wav2Vec2Processor.from_pretrained("nguyenvulebinh/wav2vec2-base-vietnamese-250h")
model = Wav2Vec2ForCTC.from_pretrained("nguyenvulebinh/wav2vec2-base-vietnamese-250h")
# 准备音频数据
def map_to_array(batch):
speech, _ = sf.read(batch["file"])
batch["speech"] = speech
return batch
ds = map_to_array({
"file": 'audio-test/t1_0001-00010.wav'
})
# 语音转文字
input_values = processor(ds["speech"], return_tensors="pt", padding="longest").input_values # 批量大小为1
logits = model(input_values).logits
# 获取预测
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids)
使用许可
wav2vec2-base-vietnamese-250h模型的参数仅限非商业用途,遵循创作共用署名-非商业4.0国际许可协议(CC BY-NC 4.0)。
联系方式
如有问题,请联系:nguyenvulebinh@gmail.com / binh@vietai.org
关注推特:@nguyenvulebinh
引用
如果研究中使用本项目,请参考以下引用格式:
@misc{Thai_Binh_Nguyen_wav2vec2_vi_2021,
author = {Thai Binh Nguyen},
doi = {10.5281/zenodo.5356039},
month = {09},
title = {{Vietnamese end-to-end speech recognition using wav2vec 2.0}},
url = {https://github.com/vietai/ASR},
year = {2021}
}