🚀 クイックスタート
このモデルは、facebook/wav2vec2-xls-r-300m を openslr データセットでファインチューニングしたものです。評価セットでは以下の結果を達成しています。
- 損失: 0.3281
- 単語誤り率 (Wer): 0.3462
OpenSLR "test" (自己分割 10%) の評価結果 (./eval.py を実行):
- 単語誤り率 (WER): 0.3216977389924633
- 文字誤り率 (CER): 0.08653361193169537
言語モデルを使用した OpenSLR "test" (自己分割 10%) の評価結果 (./eval.py を実行):
- 単語誤り率 (WER): 0.257040856802856
- 文字誤り率 (CER): 0.07025001801282513
✨ 主な機能
このモデルは、自動音声認識タスクに特化しており、OpenSLR データセットで訓練されています。言語モデルをサポートし、音声からテキストへの変換を高精度に行うことができます。
📦 インストール
言語モデルをサポートするために、HuggingFace Transformers の上に以下のライブラリをインストールしてください。
pip install pyctcdecode
pip install https://github.com/kpu/kenlm/archive/master.zip
💻 使用例
基本的な使用法
アプローチ 1: HuggingFace のパイプラインを使用すると、生の音声入力からテキスト出力までをエンドツーエンドでカバーします。
from transformers import pipeline
pipe = pipeline(model="vitouphy/wav2vec2-xls-r-300m-khmer")
output = pipe("sound_file.wav", chunk_length_s=10, stride_length_s=(4, 2))
高度な使用法
アプローチ 2: 音素を予測するためのよりカスタマイズ可能な方法。
from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
import librosa
import torch
processor = Wav2Vec2Processor.from_pretrained("vitouphy/wav2vec2-xls-r-300m-khmer")
model = Wav2Vec2ForCTC.from_pretrained("vitouphy/wav2vec2-xls-r-300m-khmer")
speech_array, sampling_rate = librosa.load("sound_file.wav", sr=16_000)
inputs = processor(speech_array, sampling_rate=16_000, return_tensors="pt", padding=True)
with torch.no_grad():
logits = model(inputs.input_values, attention_mask=inputs.attention_mask).logits
predicted_ids = torch.argmax(logits, axis=-1)
predicted_sentences = processor.batch_decode(predicted_ids)
print(predicted_sentences)
📚 ドキュメント
想定される用途と制限
このモデルに使用されたデータは、約 4 時間の録音データのみです。
- データを 80/10/10 に分割しました。したがって、訓練時間は 3.2 時間と非常に短いです。
- それでも、性能はそれほど悪くありません。実際、このような小さなデータセットではかなり興味深い結果です。是非試してみてください。
- 制限事項は以下の通りです。
- 稀な文字、例えば ឬស្សី ឪឡឹក
- 音声は明瞭ではっきりしている必要があります。
- より多くの語彙と文字をカバーするために、より多くのデータを使用すると、このシステムを改善するのに役立つ可能性があります。
訓練手順
訓練ハイパーパラメータ
訓練中に以下のハイパーパラメータが使用されました。
- 学習率: 5e-05
- 訓練バッチサイズ: 8
- 評価バッチサイズ: 8
- シード: 42
- 勾配累積ステップ: 4
- 総訓練バッチサイズ: 32
- オプティマイザ: Adam (ベータ=(0.9,0.999)、イプシロン=1e-08)
- 学習率スケジューラタイプ: 線形
- 学習率スケジューラウォームアップステップ: 1000
- エポック数: 100
- 混合精度訓練: ネイティブ AMP
訓練結果
訓練損失 |
エポック |
ステップ |
検証損失 |
単語誤り率 (Wer) |
5.0795 |
5.47 |
400 |
4.4121 |
1.0 |
3.5658 |
10.95 |
800 |
3.5203 |
1.0 |
3.3689 |
16.43 |
1200 |
2.8984 |
0.9996 |
2.01 |
21.91 |
1600 |
1.0041 |
0.7288 |
1.6783 |
27.39 |
2000 |
0.6941 |
0.5989 |
1.527 |
32.87 |
2400 |
0.5599 |
0.5282 |
1.4278 |
38.35 |
2800 |
0.4827 |
0.4806 |
1.3458 |
43.83 |
3200 |
0.4429 |
0.4532 |
1.2893 |
49.31 |
3600 |
0.4156 |
0.4330 |
1.2441 |
54.79 |
4000 |
0.4020 |
0.4040 |
1.188 |
60.27 |
4400 |
0.3777 |
0.3866 |
1.1628 |
65.75 |
4800 |
0.3607 |
0.3858 |
1.1324 |
71.23 |
5200 |
0.3534 |
0.3604 |
1.0969 |
76.71 |
5600 |
0.3428 |
0.3624 |
1.0897 |
82.19 |
6000 |
0.3387 |
0.3567 |
1.0625 |
87.66 |
6400 |
0.3339 |
0.3499 |
1.0601 |
93.15 |
6800 |
0.3288 |
0.3446 |
1.0474 |
98.62 |
7200 |
0.3281 |
0.3462 |
フレームワークバージョン
- Transformers 4.17.0.dev0
- Pytorch 1.10.2+cu102
- Datasets 1.18.2.dev0
- Tokenizers 0.11.0
📄 ライセンス
このモデルは Apache-2.0 ライセンスの下で提供されています。