YujiYamaguchi/lfm25-audio-jp-dialect-audio2audio-lora
011
lfm25-audio-jp-dialect-audio2audio-lora
Hack the Liquid WAY 2026 — Track 2 / チーム山口
LFM2.5-Audio-1.5B-JP を LoRA fine-tune した、 方言音声(関西弁・熊本弁)→ 標準語「テキスト+音声」を同時に直接生成するアダプタです。
`lfm25-audio-jp-dialect-lora` (方言音声→標準語テキストのみ)の発展版で、こちらは ASR + LLM + TTS の3段構成を介さず、 1モデル・1推論で方言音声から標準語の音声をそのまま生成します(外部TTSエンジン不使用、 モデル自身の声で出力)。
性能(loraconvertv4 と全く同一のデータ・同一レシピで学習したコントロール実験)
学習objectiveが異なる(テキストのみ vs テキスト+8系統のMimiオーディオコードブック)ため val_lossの絶対値は直接比較できないが、参考として:
→ 音声出力を同時に行っても、より複雑な複合タスクで安定して収束し、テキスト精度も劣化しない。
生成音声の品質を独立ASRで定量検証(自前のモデルで判定すると測定方法自体に偏りが出るため、 学習に一切使用していない第三者ASR kotoba-whisper-v2.1 で検証):
- クリーン参照音声での健全性チェック: CER 4.2% → 判定者として信頼できることを確認
- 生成音声の書き起こし: CER 37.7%(テキスト成分CER 36.2%とほぼ同水準) → 生成音声は「意味の通る自然な標準語日本語」として機能している(崩壊した音声ではない)
LoRA 設定
- r=16, alpha=32, dropout=0.05
- 対象層: qproj / kproj / vproj / outproj / w1 / w2 / w3(FFN)
- 訓練パラメータ: 0.76%
- 学習環境: RTX 5090 / MAX_STEPS=1000, LR=1e-4
使い方
import torch
import json
from pathlib import Path
from peft import LoraConfig, get_peft_model
import safetensors.torch as st
from liquid_audio import LFM2AudioModel, LFM2AudioProcessor, ChatState
from huggingface_hub import snapshot_download
# アダプタのダウンロード
adapter_dir = snapshot_download("YujiYamaguchi/lfm25-audio-jp-dialect-audio2audio-lora")
# モデルロード
MODEL_ID = "LiquidAI/LFM2.5-Audio-1.5B-JP"
processor = LFM2AudioProcessor.from_pretrained(MODEL_ID)
model = LFM2AudioModel.from_pretrained(MODEL_ID, device="cuda", dtype=torch.bfloat16)
# LoRA 適用
cfg = json.loads(Path(adapter_dir, "adapter_config.json").read_text())
lora_cfg = LoraConfig(
r=cfg["r"], lora_alpha=cfg["lora_alpha"],
target_modules=cfg["target_modules"],
lora_dropout=cfg.get("lora_dropout", 0.05),
)
model = get_peft_model(model, lora_cfg)
weights = st.load_file(str(Path(adapter_dir, "adapter_model.safetensors")))
model.load_state_dict(weights, strict=False)
model.eval()
# 推論: generate_interleaved でテキストと音声を交互に同時生成
# (詳細は eval_audio2audio_full.py の predict() を参照)詳細は GitHubリポジトリ を参照。
学習データ・手法
- 出典: `federerjiang/dialect.osaka` + `federerjiang/dialect.kumamoto`
- 標準語テキストは Qwen3-32B で自動生成し、それを edge-tts で音声合成。各ペアを
InterleavedSegment(テキストと音声フレームを交互配置する専用データ型)としてgenerate_interleavedの出力パターンと一致する形式で学習データに格納(鍵となる工夫) - 学習ペア: 方言音声 → 標準語テキスト+音声(大阪弁 + 熊本弁 計2,600件、train/val/test = 2077/260/258)
- データセット: `YujiYamaguchi/dialect-to-standard-ja-speech`
