🚀 Phi-4-multimodal-instruct-commonvoice-zh-tw
このモデルは、Common Voice 19.0 台湾語中国語データセット で microsoft/Phi-4-multimodal-instruct をファインチューニングしたバージョンです。
✨ 主な機能
モデルの説明
Phi-4-multimodal-instruct-commonvoice-zh-twは、台湾語中国語(zh-TW)の自動音声認識(ASR)用にファインチューニングされたマルチモーダル言語モデルです。ベースモデルはMicrosoftのPhi-4-multimodal-instructで、音声文字起こしタスクでさらにトレーニングされました。
このモデルは音声入力を受け取り、繁体字中国語の文字起こしを生成します。台湾語中国語の音声パターンと語彙を認識するように特別に最適化されています。
想定される用途と制限
このモデルの想定される用途は以下の通りです。
- 台湾語中国語の音声を文字起こしする
- 台湾語中国語コンテンツの自動字幕作成
- 台湾語中国語をサポートする必要のある音声文字変換アプリケーション
制限事項:
- 背景雑音、話す速度、またはアクセントによって性能が異なる場合があります
- 明瞭な音声入力で最適な性能を発揮します
- 専門用語や特定のドメインの語彙では精度が低くなる可能性があります
トレーニングと評価データ
このモデルはCommon Voice 19.0台湾語中国語データセットでファインチューニングされました。Common Voiceは、様々な言語の文章を読み上げるボランティアからの寄稿を含むクラウドソーシングされた音声データセットです。
評価は同じデータセットのテスト分割で行われ、5,013サンプルで構成されています。
トレーニング手順
このモデルは、ベースモデルの音声認識コンポーネントに焦点を当てたLoRAアダプターを使用してトレーニングされ、基盤となるPhi-4モデルの一般的な機能を維持しながら効率的なファインチューニングを可能にします。
プロンプト形式
このモデルは元の論文のプロンプトテンプレートに従います。音声認識タスクの場合、音声入力は単純な指示とともにインラインで提供されます。
<|user|>
<|audio_1|> Transcribe the audio clip into text.
<|assistant|>
[繁体字中国語の文字起こし出力]
<|end|>
トレーニングハイパーパラメータ
トレーニング中に以下のハイパーパラメータが使用されました。
- learning_rate: 4e-05
- train_batch_size: 4
- eval_batch_size: 8
- seed: 42
- gradient_accumulation_steps: 32
- total_train_batch_size: 128
- optimizer: betas=(0.9,0.95) および epsilon=1e-07 の OptimizerNames.ADAMW_TORCH を使用し、optimizer_args=追加のオプティマイザ引数なし
- lr_scheduler_type: linear
- lr_scheduler_warmup_steps: 50
- num_epochs: 2
トレーニング結果
このモデルはテストセットで以下の性能指標を達成しました。
- 単語誤り率(WER): 31.18%
- 文字誤り率(CER): 6.67%
- 評価サンプル数: 5,013
フレームワークバージョン
- Transformers 4.49.0
- Pytorch 2.4.1+cu124
- Datasets 3.3.2
- Tokenizers 0.21.1
📦 インストール
このREADMEには具体的なインストール手順が記載されていないため、このセクションは省略されます。
💻 使用例
基本的な使用法
import torch
from transformers import AutoProcessor, AutoModelForCausalLM
import librosa
AUDIO_PATH = "test.wav"
MODEL = "JacobLinCool/Phi-4-multimodal-instruct-commonvoice-zh-tw"
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
USE_FA = True
processor = AutoProcessor.from_pretrained(MODEL, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL,
torch_dtype=torch.bfloat16 if USE_FA else torch.float32,
_attn_implementation="flash_attention_2" if USE_FA else "sdpa",
trust_remote_code=True,
).to(DEVICE)
audio, sr = librosa.load(AUDIO_PATH, sr=16000)
user_message = {
"role": "user",
"content": "<|audio_1|> Transcribe the audio clip into text.",
}
prompt = processor.tokenizer.apply_chat_template(
[user_message], tokenize=False, add_generation_prompt=True
)
inputs = processor(text=prompt, audios=[(audio, sr)], return_tensors="pt")
inputs = {k: v.to(model.device) if hasattr(v, "to") else v for k, v in inputs.items()}
with torch.no_grad():
generated_ids = model.generate(
**inputs,
eos_token_id=processor.tokenizer.eos_token_id,
max_new_tokens=64,
do_sample=False,
)
transcription = processor.decode(
generated_ids[0, inputs["input_ids"].shape[1] :],
skip_special_tokens=True,
clean_up_tokenization_spaces=False,
)
print(transcription)
📄 ライセンス
このモデルはMITライセンスの下で提供されています。