初めに
以下で軽量な日本語speech to speechのモデルが公開されたので、触ってみます
Today we’re releasing two new models for Japanese: LFM2.5-Audio-1.5B-JP (audio) and LFM2.5-1.2B-JP-202606 (text).
— Liquid AI (@liquidai) 2026年6月6日
🧵 pic.twitter.com/7uh6XO1m00
開発環境
| 項目 | 内容 |
|---|---|
| OS | Windows 11 |
| GPU | NVIDIA GPU |
| uv | 0.11.8 |
| Python | 3.12 |
環境構築
以下の pyproject.toml を作成します
[project] name = "lfm2-audio-jp" version = "0.1.0" description = "LiquidAI/LFM2.5-Audio-1.5B-JP を動かすための環境" readme = "README.md" requires-python = ">=3.12,<3.13" dependencies = [ "liquid-audio[demo]>=1.0.0", "torch>=2.8.0", "torchaudio>=2.8.0", "soundfile>=0.12.1", ] # torch / torchaudio は CUDA 12.8 ビルドを PyTorch 公式インデックスから取得する。 # RTX 4070 + CUDA 13.2 ドライバなら cu128 ビルドで動作する(CUDA は前方互換)。 [tool.uv.sources] torch = [{ index = "pytorch-cu128" }] torchaudio = [{ index = "pytorch-cu128" }] [[tool.uv.index]] name = "pytorch-cu128" url = "https://download.pytorch.org/whl/cu128" explicit = true
以下を実行します
uv sync
デモスクリプトは以下で定義をします
"""JP モデルでの speech-to-speech ライブ対話デモ (Gradio + WebRTC マイク)。 liquid-audio 同梱のデモ UI / ロジックをそのまま使い、ロードするモデルだけを LiquidAI/LFM2.5-Audio-1.5B-JP に差し替えて起動します。 同梱デモ (liquid_audio.demo.chat) は `from .model import lfm2_audio, mimi, proc` により import 時に英語版モデルをロードしてしまうため、JP モデルをロード済みの 偽 model モジュールを sys.modules に注入してから import します。 使い方: uv run demo_jp.py # 起動後、ブラウザで http://127.0.0.1:7860 を開き、マイクで話しかける """ import os # Windows には Triton の公式ビルドが無いため、torch.compile / CUDA グラフを無効化する。 # 未設定だと Mimi のデコードで torch._inductor.exc.TritonMissing が発生する。 # liquid_audio の import より前に設定する必要がある(デコレータ適用時に読まれるため)。 os.environ.setdefault("NO_TORCH_COMPILE", "1") os.environ.setdefault("NO_CUDA_GRAPH", "1") import sys import types import torch import liquid_audio.demo # 親パッケージ (空の __init__) を先に import from liquid_audio import LFM2AudioModel, LFM2AudioProcessor HF_REPO = "LiquidAI/LFM2.5-Audio-1.5B-JP" DEVICE = "cuda" if torch.cuda.is_available() else "cpu" print(f"モデルを読み込み中: {HF_REPO} (device={DEVICE}) ...") proc = LFM2AudioProcessor.from_pretrained(HF_REPO, device=DEVICE).eval() lfm2_audio = LFM2AudioModel.from_pretrained(HF_REPO, device=DEVICE).eval() mimi = proc.mimi.eval() # Mimi デトークナイザのウォームアップ with mimi.streaming(1), torch.no_grad(): for _ in range(5): x = torch.randint(2048, (1, 8, 1), device=DEVICE) mimi.decode(x) # JP モデルをロード済みの偽 model モジュールを注入(英語版の再ダウンロードを回避) fake_model = types.ModuleType("liquid_audio.demo.model") fake_model.lfm2_audio = lfm2_audio fake_model.mimi = mimi fake_model.proc = proc sys.modules["liquid_audio.demo.model"] = fake_model liquid_audio.demo.model = fake_model from liquid_audio.demo import chat as demo_chat # noqa: E402 (注入後に import する必要がある) if __name__ == "__main__": print("起動中... ブラウザで http://127.0.0.1:7860 を開いてください。") demo_chat.demo.launch(server_name="127.0.0.1", server_port=7860)
実行
以下で実行します
uv run demo_jp.py
起動後は以下で動かせます
- 起動後、ブラウザで http://127.0.0.1:7860 を開く
- マイクの使用を許可する(localhost なので許可される)
- 話しかける → テキスト+音声で応答が返る
Ctrl+Cで停止
