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