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エンジン不使用、 モデル自身の声で出力)。

性能(lora_convert_v4 と全く同一のデータ・同一レシピで学習したコントロール実験)

学習objectiveが異なる(テキストのみ vs テキスト+8系統のMimiオーディオコードブック)ため val_lossの絶対値は直接比較できないが、参考として:

モデル 出力形式 val_loss テキスト成分CER
lora_convert_v4 (既存・採用) テキストのみ 0.934(収束) 0.40
lora_audio2audio_full_v1 (このアダプタ) テキスト+音声を同時生成 1.6966 → 1.3572(単調減少、改善継続中) 0.362

→ 音声出力を同時に行っても、より複雑な複合タスクで安定して収束し、テキスト精度も劣化しない。

生成音声の品質を独立ASRで定量検証(自前のモデルで判定すると測定方法自体に偏りが出るため、 学習に一切使用していない第三者ASR kotoba-whisper-v2.1 で検証):

  • クリーン参照音声での健全性チェック: CER 4.2% → 判定者として信頼できることを確認
  • 生成音声の書き起こし: CER 37.7%(テキスト成分CER 36.2%とほぼ同水準) → 生成音声は「意味の通る自然な標準語日本語」として機能している(崩壊した音声ではない)

LoRA 設定

  • r=16, alpha=32, dropout=0.05
  • 対象層: q_proj / k_proj / v_proj / out_proj / 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
Downloads last month
26
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for YujiYamaguchi/lfm25-audio-jp-dialect-audio2audio-lora

Adapter
(3)
this model

Dataset used to train YujiYamaguchi/lfm25-audio-jp-dialect-audio2audio-lora