モデル概要
モデル特徴
モデル能力
使用事例
🚀 Phi-4-mm-inst-asr-singlish
Phi-4-multimodal-instruct-asr-singlish (Phi-4-mm-inst-asr-singlish) は、MicrosoftのPhi-4などの幅広い大規模言語モデル(LMM)にまだ残っている重要な制限、つまり地域方言の表現不足に対処するための取り組みです。Singlishのコードスイッチングと独特な韻律は、一般的なモデルをしばしば混乱させます。
しかし、Phi-4は広範な事前学習を経ており、複雑な言語構造をすでに捉えています。これにより、Whisperのような小型の自動音声認識(ASR)システムよりも優れた汎化能力が期待されます。この Phi-4-multimodal-instruct (Phi-4-mm-inst) のターゲット適応は、音声を聴き、理解し、自然に応答できる統一モデルというより広いビジョンに向けた進歩を示しています。これは、単一の文脈フレームワーク内で推論、翻訳、コード生成をシームレスに行うボイスファーストエージェントの基盤を築いています。
🚀 クイックスタート
初回使用時には、以下の追加ライブラリをインストールする必要がある場合があります。
!pip install backoff
!sudo apt-get install -y cmake ninja-build
!pip install wheel
from pkg_resources import get_distribution, DistributionNotFound
package_name = 'flash_attn'
try:
dist = get_distribution(package_name)
print(f"'{package_name}' version {dist.version} is already installed.")
except DistributionNotFound:
!MAX_JOBS=8 pip install flash-attn --no-build-isolation
モデルは以下のようにロードできます。
import torch
import soundfile
from transformers import AutoModelForCausalLM, AutoProcessor, GenerationConfig
model_path = "mjwong/Phi-4-mm-inst-asr-singlish"
kwargs = {}
kwargs['torch_dtype'] = torch.bfloat16
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
trust_remote_code=True,
torch_dtype='auto',
_attn_implementation='flash_attention_2',
).cuda()
generation_config = GenerationConfig.from_pretrained(model_path, 'generation_config.json')
user_prompt = '<|user|>'
assistant_prompt = '<|assistant|>'
prompt_suffix = '<|end|>'
speech_prompt = "Based on the attached audio, generate a comprehensive text transcription of the spoken content."
prompt = f'{user_prompt}<|audio_1|>{speech_prompt}{prompt_suffix}{assistant_prompt}'
任意の長さの音声ファイルを文字起こしすることができます。例として、音声ファイル ignite.wav
は このリンク からダウンロードできます。
audio = soundfile.read('./ignite.wav')
inputs = processor(text=prompt, audios=[audio], return_tensors='pt').to('cuda:0')
generate_ids = model.generate(
**inputs,
max_new_tokens=1200,
generation_config=generation_config,
num_logits_to_keep=1,
)
generate_ids = generate_ids[:, inputs['input_ids'].shape[1] :]
response = processor.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]
print(response)
✨ 主な機能
- 地域方言対応:Singlishのコードスイッチングと独特な韻律に対応し、一般的なモデルでは困難な地域方言の文字起こしを可能にします。
- 事前学習の活用:Phi-4の広範な事前学習を活用し、複雑な言語構造を捉え、高い汎化能力を発揮します。
- タスク固有の停止:学習中に文字起こしの終了マーカーを関連付けることで、タスク固有の停止を学習し、不要な出力を回避します。
📦 インストール
初回使用時には、以下の追加ライブラリをインストールする必要がある場合があります。
!pip install backoff
!sudo apt-get install -y cmake ninja-build
!pip install wheel
from pkg_resources import get_distribution, DistributionNotFound
package_name = 'flash_attn'
try:
dist = get_distribution(package_name)
print(f"'{package_name}' version {dist.version} is already installed.")
except DistributionNotFound:
!MAX_JOBS=8 pip install flash-attn --no-build-isolation
📚 ドキュメント
モデル詳細
属性 | 详情 |
---|---|
開発者 | Ming Jie Wong |
ベースモデル | microsoft/Phi-4-multimodal-instruct |
モデルタイプ | ビジョン/音声アダプター付きのデコーダー専用Transformer |
評価指標 | 単語誤り率(WER) |
サポート言語 | 英語(主にSinglish) |
ライセンス | MIT |
このモデルは、66,900個の音声と文字起こしのペアデータを用いて、Phi-4-mm-instをSinglishの自動音声認識に対して教師あり微調整(SFT)を行っています。データセットは、IMDAのNSCコーパス のPart 3 Same Room Environment Close-talk Micの録音データのみから取得されています。
モデルのすべてのパラメータを再学習するのではなく、audio_embed
モジュール、具体的にはそのエンコーダーと音声投影層のみを選択的に凍結解除し、残りの重みを固定しています。学習中、各音声クリップは正解の文字起こしとペアにされ、その末尾に専用の文字起こし終了マーカー (<|end|><|endoftext|>
) が追加されます。そして、トークンシーケンスに対して標準的な交差エントロピー損失を最適化し、モデルに音声特徴をテキストに変換することと、文字起こし終了時にマーカーを生成することを学習させています。このデータ駆動型のアプローチは、モデルの音声処理をSinglishの独特な音韻、韻律、コードスイッチングの特性に適応させるための計算リソースを集中させ、コアの言語理解を変更することなく最適化します。
微調整詳細
単一のA100-80GB GPUを使用して微調整を行いました。
学習ハイパーパラメータ
以下のハイパーパラメータが使用されました。
- 学習率(learning_rate):0.0001
- 学習バッチサイズ(train_batch_size):8
- 評価バッチサイズ(eval_batch_size):8
- 乱数シード(seed):42
- オプティマイザー(Optimizer):
- 名前(Name):ADAMW_TORCH
- ベータ値(Betas):(0.9, 0.99)
- イプシロン(Epsilon):1e-07
- オプティマイザー引数(Optimizer Arguments):追加のオプティマイザー引数はなし
- 学習率スケジューラーの種類(lr_scheduler_type):cosine
- 学習率スケジューラーのウォームアップ割合(lr_scheduler_warmup_ratio):0.1
- エポック数(num_epochs):1
ベンチマーク性能
Phi-4-mm-inst-asr-singlishを以下のデータセットで評価しました。
- SASRBench-v1:Singlishの自動音声認識性能を評価するためのベンチマークデータセット。
- AMI:会議の文字起こしと話者分離タスクで広く使用されるデータセット。この研究では、IHM(Individual Headset Microphone)の録音データを使用しています。
- GigaSpeech:多様な英語の音声データを含む大規模なオープンソースデータセットで、読み上げ、会話、即興の音声が含まれています。
モデル性能
データセット | モデル | 相対RTFx | WER |
---|---|---|---|
SASRBench-v1 | microsoft/Phi-4-multimodal-instruct | 1.00 | 33.00% |
SASRBench-v1 | mjwong/Phi-4-mm-inst-asr-singlish | 1.03 | 13.16% |
SASRBench-v1 | mjwong/whisper-large-v3-singlish | 2.60 | 16.41% |
SASRBench-v1 | mjwong/whisper-large-v3-turbo-singlish | 6.13 | 13.35% |
SASRBench-v1 | mjwong/whisper-large-v3-singlish + DRAFT | 5.72 | 14.84% |
AMI | microsoft/Phi-4-multimodal-instruct | 1.00 | 14.74% |
AMI | mjwong/Phi-4-mm-inst-asr-singlish | 1.11 | 20.23% |
AMI | mjwong/whisper-large-v3-singlish | 1.14 | 23.72% |
AMI | mjwong/whisper-large-v3-turbo-singlish | 1.75 | 16.99% |
AMI | mjwong/whisper-large-v3-singlish + DRAFT | 2.59 | 22.06% |
GigaSpeech | microsoft/Phi-4-multimodal-instruct | 1.00 | 24.65% |
GigaSpeech | mjwong/Phi-4-mm-inst-asr-singlish | 1.20 | 10.34% |
GigaSpeech | mjwong/whisper-large-v3-singlish | 2.03 | 13.15% |
GigaSpeech | mjwong/whisper-large-v3-turbo-singlish | 3.97 | 11.54% |
GigaSpeech | mjwong/whisper-large-v3-singlish + DRAFT | 4.81 | 12.81% |
実験結果の考察
ベースモデルと微調整モデルの挙動比較
- ベースモデル:Phi-4の汎用的な設計により、指示に基づく文字起こしが可能でしたが、強力な停止基準が欠けていました。固定数のトークンを生成するように指示された場合、音声の終了後もしばしば継続し、トークンを繰り返したり捏造したりして、
max_new_tokens
の制限または暗黙的なシーケンス終了信号が検出されるまで続けました。 - 微調整モデル:学習中に文字起こし終了マーカーを関連付けることで、モデルはタスク固有の停止を学習しました。高い
max_new_tokens
設定でも、実際の文字起こしが完了した直後に確実に<|end|><|endoftext|>
を生成し、不要な出力を回避しました。
長い音声クリップに対する挙動
出力の長さは、入力の長さに関係なく max_new_tokens
によって制限されます。制限よりも少ないトークンしか必要としないクリップの場合、微調整モデルはマーカーできれいに停止します。より長いクリップの場合、トークン制限まで切り捨てられたが適切に形成された文字起こしを生成し、失敗やクラッシュすることはありません。
結論
Phi-4-mm-instを微調整することで、SinglishのWERが33%から13.16%に大幅に削減され、最も性能の高い微調整済みの Whisper-large-v3-turbo-singlish とのギャップを埋め、わずかに上回っています。Whisperに対する絶対的な優位性はわずかですが、Phi-4の真の価値は、最先端に近い自動音声認識と完全な生成型大規模言語モデルを1つのパッケージにまとめていることです。Singlishの話者にとって、これは音声を聴き、理解し、ネイティブに応答できる単一のモデルを意味し、同じ文脈を離れることなく推論、翻訳、またはコード生成が可能なボイスファーストエージェントの道を開いています。
🔧 技術詳細
- データセット選択:IMDAのNSCコーパスのPart 3 Same Room Environment Close-talk Micの録音データを使用し、音声セグメントを以下の基準で抽出しました。
- 最小単語数:10語以上。各音声セグメントに十分な言語的な文脈が含まれるようにするために選択されました。短いセグメントは、モデルを特定の発話やフレーズに偏らせ、全体的な理解を制限する可能性があります。
- 最大長:20秒以内。正確な文字起こしに十分な文脈を提供し、長い音声セグメントのノイズと計算の複雑さを最小限に抑えるために選択されました。
- サンプリングレート:すべての音声セグメントは16kHzにダウンサンプリングされています。
- モデル微調整:
audio_embed
モジュールのエンコーダーと音声投影層のみを選択的に凍結解除し、残りの重みを固定して微調整を行いました。学習中に文字起こし終了マーカーを使用することで、モデルにタスク固有の停止を学習させています。
📄 ライセンス
このモデルはMITライセンスの下で提供されています。
⚠️ 注意事項
このモデルはSinglishの認識能力を向上させるために微調整されていますが、ユーザーは不正確さ、バイアス、または予期しない出力を経験する可能性があります。特に、困難な音声条件や非標準的なバリエーションを使用する話者の場合に顕著です。このモデルの使用は自己責任で行ってください。開発者および配布者は、その使用に起因するいかなる結果に対しても責任を負いません。敏感な環境や本番環境で使用する前に、結果を検証してください。
📞 お問い合わせ
詳細については、mingjwong@hotmail.com までお問い合わせください。









