Whisper Small Egyptian Arabic
モデル概要
モデル特徴
モデル能力
使用事例
🚀 エジプトアラビア語の自動音声認識に微調整された小型Whisperモデル
このプロジェクトには、自動音声認識(ASR)に特化して微調整されたopenai/whisper-small
モデルが含まれています。対象の方言はエジプトアラビア語です。このモデルは、SpeechBrainツールキットを使用して、MAdel121/arabic-egy-cleaned
データセットで微調整されています。
🚀 クイックスタート
transformers
ライブラリのパイプラインを使用して、自動音声認識を直接行うことができます。transformers
とtorch
がインストールされていることを確認してください(pip install transformers torch
)。
from transformers import pipeline
import torch
# ffmpegが音声処理に必要であることを確認
# pip install -U ffmpeg-python # またはシステムパッケージマネージャーを使用してインストール
device = "cuda:0" if torch.cuda.is_available() else "cpu"
# "your-username/whisper-small-egyptian-arabic"を、Hub上の実際のモデルIDに置き換える
pipe = pipeline(
"automatic-speech-recognition",
model="your-username/whisper-small-egyptian-arabic", # <<< ここを置き換える
device=device
)
# オーディオファイルをロードする(ffmpegが必要)
# ローカルファイルの場合:
audio_file = "/path/to/your/egyptian_arabic_audio.wav"
result = pipe(audio_file, chunk_length_s=30, batch_size=8) # GPUメモリに応じてbatch_sizeを調整
# datasetsライブラリのオーディオの場合:
# from datasets import load_dataset
# ds = load_dataset("MAdel121/arabic-egy-cleaned", "default", split="test") # 例
# sample = ds[0]["audio"]
# result = pipe(sample.copy()) # オリジナルデータを変更しないようにコピーを渡す
print(result["text"])
# --- AutoModelForSpeechSeq2Seqを使用する ---
from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torchaudio
# プロセッサとモデルをロードする(モデルIDを置き換える)
model_id = "your-username/whisper-small-egyptian-arabic" # <<< Hugging Face上のデータセットファイルで置き換える
processor = WhisperProcessor.from_pretrained(model_id)
model = WhisperForConditionalGeneration.from_pretrained(model_id).to(device)
# オーディオをロードして前処理する
waveform, sample_rate = torchaudio.load(audio_file)
if sample_rate != processor.feature_extractor.sampling_rate:
resampler = torchaudio.transforms.Resample(sample_rate, processor.feature_extractor.sampling_rate)
waveform = resampler(waveform)
input_features = processor(waveform.squeeze().numpy(), sampling_rate=processor.feature_extractor.sampling_rate, return_tensors="pt").input_features.to(device)
# 文字起こしを生成する
# アラビア語の文字起こし用に強制デコーダIDを設定する
forced_decoder_ids = processor.get_decoder_prompt_ids(language="ar", task="transcribe")
predicted_ids = model.generate(input_features, forced_decoder_ids=forced_decoder_ids)
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
print(transcription[0])
⚠️ 重要な注意事項
元のチェックポイントはSpeechBrainを使用して保存されています。このREADMEでは、モデルが標準のHugging Face Transformers形式に変換されており、
pipeline
またはAutoModel
クラスを使用してホストおよび使用できることを前提としています。元の.ckpt
ファイルを使用している場合は、プロジェクトのメインREADME.md
とinfer_whisper_local.py
スクリプトを参照して、ロード方法を確認してください。
✨ 主な機能
- エジプトアラビア語の方言に特化して微調整されており、この方言の音声認識性能が向上しています。
- SpeechBrainツールキットを使用して微調整されており、Hugging Face TransformersとAccelerateフレームワークを組み合わせています。
📦 インストール
以下の依存関係がインストールされていることを確認してください。
pip install transformers torch
pip install -U ffmpeg-python
💻 使用例
基本的な使用法
from transformers import pipeline
import torch
device = "cuda:0" if torch.cuda.is_available() else "cpu"
pipe = pipeline(
"automatic-speech-recognition",
model="your-username/whisper-small-egyptian-arabic",
device=device
)
audio_file = "/path/to/your/egyptian_arabic_audio.wav"
result = pipe(audio_file, chunk_length_s=30, batch_size=8)
print(result["text"])
高度な使用法
from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torchaudio
model_id = "your-username/whisper-small-egyptian-arabic"
processor = WhisperProcessor.from_pretrained(model_id)
model = WhisperForConditionalGeneration.from_pretrained(model_id).to(device)
waveform, sample_rate = torchaudio.load(audio_file)
if sample_rate != processor.feature_extractor.sampling_rate:
resampler = torchaudio.transforms.Resample(sample_rate, processor.feature_extractor.sampling_rate)
waveform = resampler(waveform)
input_features = processor(waveform.squeeze().numpy(), sampling_rate=processor.feature_extractor.sampling_rate, return_tensors="pt").input_features.to(device)
forced_decoder_ids = processor.get_decoder_prompt_ids(language="ar", task="transcribe")
predicted_ids = model.generate(input_features, forced_decoder_ids=forced_decoder_ids)
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
print(transcription[0])
📚 ドキュメント
モデルの説明
属性 | 詳細 |
---|---|
ベースモデル | openai/whisper-small |
言語 | アラビア語 (ar ) |
タスク | 文字起こし |
微調整フレームワーク | SpeechBrain |
データセット | MAdel121/arabic-egy-cleaned |
想定される用途と制限
このモデルは、エジプトアラビア語の方言の音声を文字起こしすることを目的としています。
制限事項:
- 他のアラビア語の方言では、性能が著しく低下する可能性があります。
- ノイズの多いオーディオでは、性能が異なる可能性があります。これは、トレーニング時に特定のデータ拡張技術(DropChunk、DropFreq、DropBitResolution)のみが使用されているためです。
- 高度に専門化された分野や、微調整データセットに含まれていないトピックでは、モデルの性能が低下する可能性があります。
トレーニングデータ
モデルは、Hugging Face Hub上の**MAdel121/arabic-egy-cleaned
**データセットで微調整されています。このデータセットには、エジプトアラビア語のクリーンなオーディオサンプルと対応する文字起こしが含まれています。
トレーニングプロセス
- フレームワーク:SpeechBrain (
speechbrain==1.0.3
) とHugging Face Transformers (transformers==4.51.3
) およびAccelerate (accelerate==0.25.0
) を組み合わせて使用。 - ベースモデル:
openai/whisper-small
- データセット:
MAdel121/arabic-egy-cleaned
- エポック数:10
- オプティマイザ:AdamW (
lr=1e-5
,weight_decay=0.05
) - 学習率スケジューラ:NewBob (
improvement_threshold=0.0025
,annealing_factor=0.9
,patient=0
) - ウォームアップステップ:1000
- バッチサイズ:8(固定、動的バッチ処理なし)
- 勾配累積:2ステップ(有効なバッチサイズ:16)
- 勾配クリッピング:最大ノルム5.0
- 混合精度:明示的に言及されていないため、FP32またはAccelerate/Trainerによって処理されると仮定。
- データ拡張:有効 (
augment_prob_master=0.5
,min_augmentations=1
,max_augmentations=3
)、以下の技術がランダムに適用されます。- DropChunk (
length: 1600 - 4800 samples
,count: 1 - 5
) - DropFreq (
count: 1 - 3
) - DropBitResolution
- DropChunk (
- トレーニング環境:Modal Labs (
gpu=A100 - 40GB
)
評価結果
モデルは、MAdel121/arabic-egy-cleaned
データセットのテストセットで評価されています。
指標 | 値 (%) |
---|---|
単語誤り率 (WER) | 22.69 |
文字誤り率 (CER) | 16.70 |
WER(単語誤り率)とCER(文字誤り率)は、値が低いほど良いです。
トレーニング終了時(10エポック目)の検証指標:
- 検証WER:22.79%
- 検証CER:16.76%
引用
このモデルを使用する場合は、元のWhisper論文と使用したデータセットを引用することを検討してください。
@article{radford2023robust,
title={Robust Speech Recognition via Large-Scale Weak Supervision},
author={Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
journal={arXiv preprint arXiv:2212.04356},
year={2023}
}
@misc{adel_mohamed_2024_12860997,
author = {Adel Mohamed},
title = {MAdel121/arabic-egy-cleaned},
month = jun,
year = 2024,
publisher = {Zenodo},
doi = {10.5281/zenodo.12860997},
url = {https://doi.org/10.5281/zenodo.12860997}
}
@misc{speechbrain,
title={{SpeechBrain}: A General-Purpose Speech Toolkit},
author={Mirco Ravanelli and Titouan Parcollet and Peter Plantinga and Aku Rouhe and Samuele Cornell and Loren Lugosch and Cem Subakan and Nauman Dawalatabad and Abdelwahab Heba and Jianyuan Zhong and Ju-Chieh Chou and Sung-Lin Yeh and Szu-Wei Fu and Chien-Feng Liao and Elena Rastorgueva and François Grondin and William Aris and Hwidong Na and Yan Gao and Renato De Mori and Yoshua Bengio},
year={2021},
eprint={2106.04624},
archivePrefix={arXiv},
primaryClass={eess.AS},
note={arXiv:2106.04624}
}
🔧 技術詳細
このモデルは、openai/whisper-small
をベースに、SpeechBrainツールキットを使用してHugging Face TransformersとAccelerateフレームワークを組み合わせて微調整されています。トレーニング中は、AdamWオプティマイザとNewBob学習率スケジューラを使用し、データ拡張を行ってモデルのロバスト性を向上させています。
📄 ライセンス
このプロジェクトはMITライセンスの下で提供されています。
モデルカード作成者
[あなたの名前/組織名]
(トレーニング実行 ceeu3g6c
に基づく)



