Phoneme Scorer V2 Wav2vec2
基于Wav2Vec2-Base架构的自动语音识别模型,专门用于音素识别,在LJSpeech Phonemes数据集上微调
下载量 167
发布时间 : 7/13/2024
模型简介
该模型是一个自动语音识别(ASR)系统,专注于将语音转换为音素序列而非单词序列。它使用国际音标(IPA)音素作为输出单位,适用于需要音素级别分析的语音处理任务。
模型特点
音素级别识别
模型直接预测国际音标(IPA)音素序列,而非传统单词序列,适用于需要音素分析的语音处理任务
高精度
在LJSpeech测试集上达到0.99%的音素错误率(PER)和0.58%的字符错误率(CER)
基于Gruut音素集
使用gruut项目中的国际音标(IPA)音素集,支持丰富的音素表示
模型能力
语音转音素
自动语音识别
音素级别分析
使用案例
语音处理
音素分析研究
用于语言学研究中分析语音的音素构成
可提供精确的音素级别转录
语音合成预处理
为语音合成系统提供音素级别的输入
提高合成语音的准确性和自然度
🚀 Wav2Vec2 LJSpeech Gruut
Wav2Vec2 LJSpeech Gruut是一个基于wav2vec 2.0架构的自动语音识别模型。该模型是Wav2Vec2-Base在LJSpech Phonemes数据集上的微调版本。它不是训练来预测单词序列,而是预测音素序列,例如["h", "ɛ", "l", "ˈoʊ", "w", "ˈɚ", "l", "d"]
。
🚀 快速开始
Wav2Vec2 LJSpeech Gruut模型可用于自动语音识别任务,通过以下步骤,你可以快速使用该模型进行音素预测。
✨ 主要特性
- 音素预测:该模型经过训练,能够预测音素序列,而非传统的单词序列。
- 基于wav2vec 2.0架构:利用先进的wav2vec 2.0架构,提升语音识别性能。
- 微调于LJSpech Phonemes数据集:在特定的LJSpech Phonemes数据集上进行微调,更适合相关语音任务。
📦 安装指南
文档未提供安装步骤,如需使用可参考Hugging Face相关库的安装方法。
💻 使用示例
基础用法
from transformers import AutoProcessor, AutoModelForCTC, Wav2Vec2Processor
import librosa
import torch
from itertools import groupby
from datasets import load_dataset
def decode_phonemes(
ids: torch.Tensor, processor: Wav2Vec2Processor, ignore_stress: bool = False
) -> str:
"""CTC-like decoding. First removes consecutive duplicates, then removes special tokens."""
# removes consecutive duplicates
ids = [id_ for id_, _ in groupby(ids)]
special_token_ids = processor.tokenizer.all_special_ids + [
processor.tokenizer.word_delimiter_token_id
]
# converts id to token, skipping special tokens
phonemes = [processor.decode(id_) for id_ in ids if id_ not in special_token_ids]
# joins phonemes
prediction = " ".join(phonemes)
# whether to ignore IPA stress marks
if ignore_stress == True:
prediction = prediction.replace("ˈ", "").replace("ˌ", "")
return prediction
checkpoint = "bookbot/wav2vec2-ljspeech-gruut"
model = AutoModelForCTC.from_pretrained(checkpoint)
processor = AutoProcessor.from_pretrained(checkpoint)
sr = processor.feature_extractor.sampling_rate
# load dummy dataset and read soundfiles
ds = load_dataset("patrickvonplaten/librispeech_asr_dummy", "clean", split="validation")
audio_array = ds[0]["audio"]["array"]
# or, read a single audio file
# audio_array, _ = librosa.load("myaudio.wav", sr=sr)
inputs = processor(audio_array, return_tensors="pt", padding=True)
with torch.no_grad():
logits = model(inputs["input_values"]).logits
predicted_ids = torch.argmax(logits, dim=-1)
prediction = decode_phonemes(predicted_ids[0], processor, ignore_stress=True)
# => should give 'b ɪ k ʌ z j u ɚ z s l i p ɪ ŋ ɪ n s t ɛ d ə v k ɔ ŋ k ɚ ɪ ŋ ð ə l ʌ v l i ɹ z p ɹ ɪ n s ə s h æ z b ɪ k ʌ m ə v f ɪ t ə l w ɪ θ n b oʊ p ɹ ə ʃ æ ɡ i s ɪ t s ð ɛ ɹ ə k u ɪ ŋ d ʌ v'
📚 详细文档
模型信息
属性 | 详情 |
---|---|
模型类型 | wav2vec2-ljspeech-gruut |
训练数据 | LJSpech Phonemes 数据集 |
参数数量 | 94M |
架构 | wav2vec 2.0 |
评估结果
该模型在评估中取得了以下结果:
数据集 | 无重音音素错误率 (PER) | 无重音字符错误率 (CER) |
---|---|---|
LJSpech Phonemes 测试数据 |
0.99% | 0.58% |
训练过程
训练超参数
以下是训练过程中使用的超参数:
learning_rate
:0.0001train_batch_size
:16eval_batch_size
:8seed
:42gradient_accumulation_steps
:2total_train_batch_size
:32optimizer
:Adam,betas=(0.9,0.999)
,epsilon=1e-08
lr_scheduler_type
:线性lr_scheduler_warmup_steps
:1000num_epochs
:30.0mixed_precision_training
:Native AMP
训练结果
训练损失 | 轮数 | 步数 | 验证损失 | 词错误率 (Wer) | 字符错误率 (Cer) |
---|---|---|---|---|---|
无日志 | 1.0 | 348 | 2.2818 | 1.0 | 1.0 |
2.6692 | 2.0 | 696 | 0.2045 | 0.0527 | 0.0299 |
0.2225 | 3.0 | 1044 | 0.1162 | 0.0319 | 0.0189 |
0.2225 | 4.0 | 1392 | 0.0927 | 0.0235 | 0.0147 |
0.0868 | 5.0 | 1740 | 0.0797 | 0.0218 | 0.0143 |
0.0598 | 6.0 | 2088 | 0.0715 | 0.0197 | 0.0128 |
0.0598 | 7.0 | 2436 | 0.0652 | 0.0160 | 0.0103 |
0.0447 | 8.0 | 2784 | 0.0571 | 0.0152 | 0.0095 |
0.0368 | 9.0 | 3132 | 0.0608 | 0.0163 | 0.0112 |
0.0368 | 10.0 | 3480 | 0.0586 | 0.0137 | 0.0083 |
0.0303 | 11.0 | 3828 | 0.0641 | 0.0141 | 0.0085 |
0.0273 | 12.0 | 4176 | 0.0656 | 0.0131 | 0.0079 |
0.0232 | 13.0 | 4524 | 0.0690 | 0.0133 | 0.0082 |
0.0232 | 14.0 | 4872 | 0.0598 | 0.0128 | 0.0079 |
0.0189 | 15.0 | 5220 | 0.0671 | 0.0121 | 0.0074 |
0.017 | 16.0 | 5568 | 0.0654 | 0.0114 | 0.0069 |
0.017 | 17.0 | 5916 | 0.0751 | 0.0118 | 0.0073 |
0.0146 | 18.0 | 6264 | 0.0653 | 0.0112 | 0.0068 |
0.0127 | 19.0 | 6612 | 0.0682 | 0.0112 | 0.0069 |
0.0127 | 20.0 | 6960 | 0.0678 | 0.0114 | 0.0068 |
0.0114 | 21.0 | 7308 | 0.0656 | 0.0111 | 0.0066 |
0.0101 | 22.0 | 7656 | 0.0669 | 0.0109 | 0.0066 |
0.0092 | 23.0 | 8004 | 0.0677 | 0.0108 | 0.0065 |
0.0092 | 24.0 | 8352 | 0.0653 | 0.0104 | 0.0063 |
0.0088 | 25.0 | 8700 | 0.0673 | 0.0102 | 0.0063 |
0.0074 | 26.0 | 9048 | 0.0669 | 0.0105 | 0.0064 |
0.0074 | 27.0 | 9396 | 0.0707 | 0.0101 | 0.0061 |
0.0066 | 28.0 | 9744 | 0.0673 | 0.0100 | 0.0060 |
0.0058 | 29.0 | 10092 | 0.0689 | 0.0100 | 0.0059 |
0.0058 | 30.0 | 10440 | 0.0683 | 0.0099 | 0.0058 |
🔧 技术细节
该模型基于wav2vec 2.0架构,在LJSpech Phonemes
数据集上进行微调。训练过程使用了Hugging Face的PyTorch框架,在配备Tesla A100 GPU的Google Cloud Engine VM上完成。所有训练所需的脚本可在文件和版本标签中找到,训练指标通过Tensorboard记录,可在训练指标查看。
📄 许可证
本项目采用Apache 2.0许可证。
免责声明
请考虑预训练数据集可能带来的偏差,这些偏差可能会延续到该模型的结果中。
作者
Wav2Vec2 LJSpeech Gruut由Wilson Wongso进行训练和评估。所有计算和开发工作均在Google Cloud上完成。
框架版本
- Transformers 4.26.0.dev0
- Pytorch 1.10.0
- Datasets 2.7.1
- Tokenizers 0.13.2
- Gruut 2.3.4
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