☎️
Moshiをファインチューニングしてみる
Kyutai Labs が公開した moshi-finetune のリポジトリを使って、Google Colab 上でファインチューニングから推論まで行う記事です。
Kyutai Labsが公開しているGoogle Colabに従っています。
🔧 動作環境
- Google Colab(A100。⚠️メモリ 40GB 以上ないと動きません)
1. リポジトリをクローン
git clone https://github.com/kyutai-labs/moshi-finetune.git
cd moshi-finetune
2. パッケージのインストール
%pip install -e /content/moshi-finetune
✅ GPU が認識されているかチェック
import tensorflow as tf
device = tf.test.gpu_device_name()
if device:
print(f"✅ GPU 利用可: {device}")
else:
print("❌ GPU が認識されていません。ランタイムを GPU に設定してください。")
3. データセットのダウンロード
Kyutai Labs 提供の DailyTalkContiguous を使用します。今回は検証用に 10 ファイルだけ取得しました。
from pathlib import Path
from huggingface_hub import snapshot_download
dst = Path("/content/data/daily-talk-contiguous")
dst.mkdir(parents=True, exist_ok=True)
snapshot_download(
repo_id="kyutai/DailyTalkContiguous",
repo_type="dataset",
local_dir=dst,
allow_patterns=["**/*.wav", "**/*.json"],
num_threads=4,
)
4. 独自データセットを使う場合
上記のデータセットの場合はすでに整理されているため必要ありませんが、持参したデータの場合は準備が必要です。
フォーマット要件
要素 | 仕様 |
---|---|
音声 | ステレオ .wav(CH1: moshi音声, CH2: ユーザ音声) |
.json | タイムスタンプ付き転写データ(例: {"alignments": [["Hello", [0.1, 0.8], "SPEAKER_MAIN"], ...]}) |
.jsonl | 各 .wav に対するパスと長さ(秒)を記載 |
.jsonと.jsonlは自動生成できます。
ディレクトリ構造
data/
├── my_dataset.jsonl
└── data_stereo/
├── a.wav
├──a.json
├── b.wav
├──b.json
└── ...
.jsonl 自動生成スクリプト
import json, sphn
from pathlib import Path
wav_dir = Path("data_stereo")
with open("my_dataset.jsonl", "w") as f:
for p in wav_dir.glob("*.wav"):
dur = sphn.duration(str(p))
if dur:
json.dump({"path": str(p), "duration": dur}, f)
f.write("\n")
タイムスタンプ付き .json を生成する場合
python annotate.py path/to/my_dataset.jsonl
5. トレーニング実行
設定はREADMEに従って実行します。
推奨設定例(example.yaml)
lora:
enable: true
rank: 128
scaling: 2.0
duration_sec: 100
batch_size: 16
max_steps: 2000
トレーニング実行コマンド
torchrun --nproc-per-node=1 -m train /content/example.yaml --master_port=$((RANDOM+10000))
💡 T4 (16GB) では OOM に注意。40GB 以上の GPU でないと動きません
6. 推論を実行してみる
GUIからMoshiを操作します。
!pip install gradio
LoRA アダプタを用いてgradioを起動します。--lora-weight、--config-pathでチェックポイントを指定します。
!python -m moshi.server --gradio-tunnel --lora-weight=/content/test/checkpoints/checkpoint_000300/consolidated/lora.safetensors --config-path=/content/test/checkpoints/checkpoint_000300/consolidated/config.json
ブラウザで https://<your-colab-url>:7860
にアクセスすると、GUIからMoshiを利用できます。
最後に
nocall株式会社では、MoshiやSesameなどのSpeech to Speechを作りたい機械科学習エンジニアを募集しています
Xをフォローしてください!
カジュアル面談はここから👇
Discussion