🚀 XLSR Wav2Vec2 ドイツ語モデル with LM
このモデルは、自動音声認識タスクに特化したドイツ語用のモデルです。Common Voiceのドイツ語データセットを使用して訓練され、WERとCERの指標で評価されています。
🚀 クイックスタート
このモデルは、自動音声認識タスクに使用できます。以下のセクションでは、モデルの評価方法やテスト結果について説明します。
✨ 主な機能
- ドイツ語の自動音声認識に特化したモデル
- Common Voiceのドイツ語データセットを使用して訓練
- WERとCERの指標で評価
📦 インストール
このモデルを使用するには、必要なライブラリをインストールする必要があります。以下のコマンドを使用して、必要なライブラリをインストールできます。
pip install transformers datasets torchaudio torch
💻 使用例
基本的な使用法
import torchaudio.functional as F
import torch
from transformers import AutoModelForCTC, AutoProcessor
import re
from datasets import load_dataset, load_metric
CHARS_TO_IGNORE = [",", "?", "¿", ".", "!", "¡", ";", ";", ":", '""', "%", '"', "�", "ʿ", "·", "჻", "~", "՞",
"؟", "،", "।", "॥", "«", "»", "„", "“", "”", "「", "」", "‘", "’", "《", "》", "(", ")", "[", "]",
"{", "}", "=", "`", "_", "+", "<", ">", "…", "–", "°", "´", "ʾ", "‹", "›", "©", "®", "—", "→", "。",
"、", "﹂", "﹁", "‧", "~", "﹏", ",", "{", "}", "(", ")", "[", "]", "【", "】", "‥", "〽",
"『", "』", "〝", "〟", "⟨", "⟩", "〜", ":", "!", "?", "♪", "؛", "/", "\\", "º", "−", "^", "ʻ", "ˆ"]
chars_to_ignore_regex = f"[{re.escape(''.join(CHARS_TO_IGNORE))}]"
counter = 0
wer_counter = 0
cer_counter = 0
def main():
model = AutoModelForCTC.from_pretrained("flozi00/wav2vec2-large-xlsr-53-german-with-lm")
processor = AutoProcessor.from_pretrained("flozi00/wav2vec2-large-xlsr-53-german-with-lm")
wer = load_metric("wer")
cer = load_metric("cer")
ds = load_dataset("common_voice", "de", split="test")
def calculate_metrics(batch):
global counter, wer_counter, cer_counter
resampled_audio = F.resample(torch.tensor(batch["audio"]["array"]), 48_000, 16_000).numpy()
input_values = processor(resampled_audio, return_tensors="pt", sampling_rate=16_000).input_values
with torch.no_grad():
logits = model(input_values).logits.numpy()[0]
decoded = processor.decode(logits)
pred = decoded.text
ref = re.sub(chars_to_ignore_regex, "", batch["sentence"]).upper()
wer_result = wer.compute(predictions=[pred], references=[ref])
cer_result = cer.compute(predictions=[pred], references=[ref])
counter += 1
wer_counter += wer_result
cer_counter += cer_result
print(f"WER: {(wer_counter/counter)*100} | CER: {(cer_counter/counter)*100}")
return batch
ds.map(calculate_metrics, remove_columns=ds.column_names)
main()
📚 ドキュメント
評価結果
モデル |
WER |
CER |
flozi00/wav2vec2-large-xlsr-53-german-with-lm |
5.7467896819046755% |
1.8980142607670552% |
評価方法
このモデルは、Common Voiceのドイツ語テストデータで以下のように評価できます。上記のコード例を参照してください。
クレジット
音響モデルは jonatasgrosman's model のコピーで、一致するkenlm言語モデルを訓練するために使用されました。
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。