B
Bp Commonvoice10 Xlsr
由 lgris 开发
基于Common Voice 7.0数据集针对巴西葡萄牙语微调的Wav2vec 2.0模型,用于葡萄牙语语音识别
下载量 25
发布时间 : 3/2/2022
模型介绍
内容详情
替代品
模型简介
这是一个基于Wav2Vec 2.0架构的自动语音识别(ASR)模型,专门针对巴西葡萄牙语进行微调。模型在多个葡萄牙语数据集上进行了测试,展示了良好的语音识别能力。
模型特点
多数据集测试
模型在CETUC、Common Voice、LaPS BM等多个葡萄牙语数据集上进行了全面测试
语言模型支持
支持与4-gram语言模型结合使用,显著提高识别准确率
高效微调
基于Common Voice 7.0数据集进行针对性微调,优化巴西葡萄牙语识别
模型能力
葡萄牙语语音识别
支持多种音频格式处理
可结合语言模型提升准确率
使用案例
语音转文字
葡萄牙语语音转录
将葡萄牙语语音内容转换为文字
在CETUC数据集上词错误率低至6.06%
语音助手
用于葡萄牙语语音助手应用的语音识别组件
教育
语言学习辅助
帮助学习者练习葡萄牙语发音和听力
语言: pt 数据集:
- common_voice
- mls
- cetuc
- lapsbm
- voxforge
- tedx
- sid 指标:
- wer 标签:
- 音频
- 语音
- wav2vec2
- pt
- 葡萄牙语语音语料库
- 自动语音识别
- 语音
- PyTorch 许可证: apache-2.0
commonvoice10-xlsr: 基于Common Voice数据集的Wav2vec 2.0模型
这是使用Common Voice 7.0数据集针对巴西葡萄牙语微调的Wav2vec模型演示。
在本笔记本中,该模型将在其他可用的巴西葡萄牙语数据集上进行测试。
数据集 | 训练集 | 验证集 | 测试集 |
---|---|---|---|
CETUC | -- | 5.4小时 | |
Common Voice | 37.8小时 | -- | 9.5小时 |
LaPS BM | -- | 0.1小时 | |
MLS | -- | 3.7小时 | |
多语言TEDx(葡萄牙语) | -- | 1.8小时 | |
SID | -- | 1.0小时 | |
VoxForge | -- | 0.1小时 | |
总计 | -- | 21.6小时 |
摘要
CETUC | CV | LaPS | MLS | SID | TEDx | VF | 平均 | |
---|---|---|---|---|---|---|---|---|
commonvoice10(下方演示) | 0.133 | 0.189 | 0.165 | 0.189 | 0.247 | 0.474 | 0.251 | 0.235 |
commonvoice10 + 4-gram(下方演示) | 0.060 | 0.117 | 0.088 | 0.136 | 0.181 | 0.394 | 0.227 | 0.171 |
演示
模型名称 = "lgris/commonvoice10-xlsr"
导入和依赖
%%capture
!pip install torch==1.8.2+cu111 torchvision==0.9.2+cu111 torchaudio===0.8.2 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html
!pip install datasets
!pip install jiwer
!pip install transformers
!pip install soundfile
!pip install pyctcdecode
!pip install https://github.com/kpu/kenlm/archive/master.zip
import jiwer
import torchaudio
from datasets import load_dataset, load_metric
from transformers import (
Wav2Vec2ForCTC,
Wav2Vec2Processor,
)
from pyctcdecode import build_ctcdecoder
import torch
import re
import sys
辅助函数
忽略字符正则表达式 = '[\,\?\.\!\;\:\"]' # noqa: W605
def 映射到数组(批次):
语音, _ = torchaudio.load(批次["路径"])
批次["语音"] = 语音.squeeze(0).numpy()
批次["采样率"] = 16_000
批次["句子"] = re.sub(忽略字符正则表达式, '', 批次["句子"]).lower().replace("’", "'")
批次["目标"] = 批次["句子"]
return 批次
def 计算指标(真实值, 预测值):
词错误率列表 = []
匹配错误率列表 = []
单词信息损失列表 = []
for 真实, 预测 in zip(真实值, 预测值):
try:
词错误率列表.append(jiwer.wer(真实, 预测))
匹配错误率列表.append(jiwer.mer(真实, 预测))
单词信息损失列表.append(jiwer.wil(真实, 预测))
except: # 空字符串?
pass
词错误率 = sum(词错误率列表)/len(词错误率列表)
匹配错误率 = sum(匹配错误率列表)/len(匹配错误率列表)
单词信息损失 = sum(单词信息损失列表)/len(单词信息损失列表)
return 词错误率, 匹配错误率, 单词信息损失
def 加载数据(数据集):
数据文件 = {'测试': f'{数据集}/测试.csv'}
数据集 = load_dataset('csv', data_files=数据文件)["测试"]
return 数据集.map(映射到数组)
模型
class 语音转文本:
def __init__(self,
模型名称,
设备='cuda' if torch.cuda.is_available() else 'cpu',
语言模型=None):
self.模型名称 = 模型名称
self.模型 = Wav2Vec2ForCTC.from_pretrained(模型名称).to(设备)
self.处理器 = Wav2Vec2Processor.from_pretrained(模型名称)
self.词汇表字典 = self.处理器.tokenizer.get_vocab()
self.排序字典 = {
k.lower(): v for k, v in sorted(self.词汇表字典.items(),
key=lambda item: item[1])
}
self.设备 = 设备
self.语言模型 = 语言模型
if self.语言模型:
self.语言模型解码器 = build_ctcdecoder(
list(self.排序字典.keys()),
self.语言模型
)
def 批量预测(self, 批次):
特征 = self.处理器(批次["语音"],
采样率=批次["采样率"][0],
填充=True,
return_tensors="pt")
输入值 = 特征.input_values.to(self.设备)
注意力掩码 = 特征.attention_mask.to(self.设备)
with torch.no_grad():
逻辑值 = self.模型(输入值, attention_mask=注意力掩码).logits
if self.语言模型:
逻辑值 = 逻辑值.cpu().numpy()
批次["预测"] = []
for 样本逻辑值 in 逻辑值:
批次["预测"].append(self.语言模型解码器.decode(样本逻辑值))
else:
预测ID = torch.argmax(逻辑值, dim=-1)
批次["预测"] = self.处理器.batch_decode(预测ID)
return 批次
下载数据集
%%capture
!gdown --id 1HFECzIizf-bmkQRLiQD0QVqcGtOG5upI
!mkdir bp_dataset
!unzip bp_dataset -d bp_dataset/
测试
语音转文本实例 = 语音转文本(模型名称)
CETUC
数据集 = 加载数据('cetuc_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("CETUC 词错误率:", 词错误率)
CETUC 词错误率: 0.13291846056190185
Common Voice
数据集 = 加载数据('commonvoice_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("CV 词错误率:", 词错误率)
CV 词错误率: 0.18909733896486755
LaPS
数据集 = 加载数据('lapsbm_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("Laps 词错误率:", 词错误率)
Laps 词错误率: 0.1655429292929293
MLS
数据集 = 加载数据('mls_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("MLS 词错误率:", 词错误率)
MLS 词错误率: 0.1894711228284466
SID
数据集 = 加载数据('sid_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("Sid 词错误率:", 词错误率)
Sid 词错误率: 0.2471983709551264
TEDx
数据集 = 加载数据('tedx_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("TEDx 词错误率:", 词错误率)
TEDx 词错误率: 0.4739658565194102
VoxForge
数据集 = 加载数据('voxforge_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("VoxForge 词错误率:", 词错误率)
VoxForge 词错误率: 0.2510294913419914
使用语言模型测试
# !find -type f -name "*.wav" -delete
!rm -rf ~/.cache
!gdown --id 1GJIKseP5ZkTbllQVgOL98R4yYAcIySFP # 使用维基百科训练
语音转文本实例 = 语音转文本(模型名称, 语言模型='pt-BR-wiki.word.4-gram.arpa')
# !gdown --id 1dLFldy7eguPtyJj5OAlI4Emnx0BpFywg # 使用bp训练
# 语音转文本实例 = 语音转文本(模型名称, 语言模型='pt-BR.word.4-gram.arpa')
CETUC
数据集 = 加载数据('cetuc_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("CETUC 词错误率:", 词错误率)
CETUC 词错误率: 0.060609303416680915
Common Voice
数据集 = 加载数据('commonvoice_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("CV 词错误率:", 词错误率)
CV 词错误率: 0.11758415681158373
LaPS
数据集 = 加载数据('lapsbm_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("Laps 词错误率:", 词错误率)
Laps 词错误率: 0.08815340909090909
MLS
数据集 = 加载数据('mls_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("MLS 词错误率:", 词错误率)
MLS 词错误率: 0.1359966791836458
SID
数据集 = 加载数据('sid_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("Sid 词错误率:", 词错误率)
Sid 词错误率: 0.1818429601530829
TEDx
数据集 = 加载数据('tedx_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("TEDx 词错误率:", 词错误率)
TEDx 词错误率: 0.39469326522731385
VoxForge
数据集 = 加载数据('voxforge_dataset')
结果 = 数据集.map(语音转文本实例.批量预测, batched=True, batch_size=8)
词错误率, 匹配错误率, 单词信息损失 = 计算指标(结果["句子"], 结果["预测"])
print("VoxForge 词错误率:", 词错误率)
VoxForge 词错误率: 0.22779897186147183
Voice Activity Detection
MIT
基于pyannote.audio 2.1版本的语音活动检测模型,用于识别音频中的语音活动时间段
语音识别
V
pyannote
7.7M
181
Wav2vec2 Large Xlsr 53 Portuguese
Apache-2.0
这是一个针对葡萄牙语语音识别任务微调的XLSR-53大模型,基于Common Voice 6.1数据集训练,支持葡萄牙语语音转文本。
语音识别
其他
W
jonatasgrosman
4.9M
32
Whisper Large V3
Apache-2.0
Whisper是由OpenAI提出的先进自动语音识别(ASR)和语音翻译模型,在超过500万小时的标注数据上训练,具有强大的跨数据集和跨领域泛化能力。
语音识别
支持多种语言
W
openai
4.6M
4,321
Whisper Large V3 Turbo
MIT
Whisper是由OpenAI开发的最先进的自动语音识别(ASR)和语音翻译模型,经过超过500万小时标记数据的训练,在零样本设置下展现出强大的泛化能力。
语音识别
Transformers

支持多种语言
W
openai
4.0M
2,317
Wav2vec2 Large Xlsr 53 Russian
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53模型微调的俄语语音识别模型,支持16kHz采样率的语音输入
语音识别
其他
W
jonatasgrosman
3.9M
54
Wav2vec2 Large Xlsr 53 Chinese Zh Cn
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53模型微调的中文语音识别模型,支持16kHz采样率的语音输入。
语音识别
中文
W
jonatasgrosman
3.8M
110
Wav2vec2 Large Xlsr 53 Dutch
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53微调的荷兰语语音识别模型,在Common Voice和CSS10数据集上训练,支持16kHz音频输入。
语音识别
其他
W
jonatasgrosman
3.0M
12
Wav2vec2 Large Xlsr 53 Japanese
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53模型微调的日语语音识别模型,支持16kHz采样率的语音输入
语音识别
日语
W
jonatasgrosman
2.9M
33
Mms 300m 1130 Forced Aligner
基于Hugging Face预训练模型的文本与音频强制对齐工具,支持多种语言,内存效率高
语音识别
Transformers

支持多种语言
M
MahmoudAshraf
2.5M
50
Wav2vec2 Large Xlsr 53 Arabic
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53微调的阿拉伯语语音识别模型,在Common Voice和阿拉伯语语音语料库上训练
语音识别
阿拉伯语
W
jonatasgrosman
2.3M
37
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers

支持多种语言
L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers

英语
C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统
中文
R
uer
2,694
98
AIbase是一个专注于MCP服务的平台,为AI开发者提供高质量的模型上下文协议服务,助力AI应用开发。
简体中文