Piper Plus Base Model (Multilingual 6-Language) with Prosody Features

6言語対応TTS事前学習済みベースモデルです。ファインチューニング用のチェックポイントとして提供しています。prosody_features (A1/A2/A3) に対応しています。

Model Details

項目
アーキテクチャ VITS
言語 日本語 (ja), 英語 (en), 中国語 (zh), スペイン語 (es), フランス語 (fr), ポルトガル語 (pt)
サンプルレート 22050 Hz
品質 medium
音素タイプ multilingual
話者数 0 (ファインチューニング用: 元モデルは571話者から学習)
言語数 6
prosody_dim 16
音素数 173

Features

6言語対応

MultilingualPhonemizer により、文内コードスイッチング(言語混合テキスト)に対応:

言語 コード language_id Phonemizer
日本語 ja 0 JapanesePhonemizer (pyopenjtalk)
英語 en 1 EnglishPhonemizer (g2p-en)
中国語 zh 2 ChinesePhonemizer (pypinyin)
スペイン語 es 3 SpanishPhonemizer (規則ベース)
フランス語 fr 4 FrenchPhonemizer (規則ベース)
ポルトガル語 pt 5 PortuguesePhonemizer (規則ベース)

Prosody Features (A1/A2/A3)

OpenJTalkから抽出されるプロソディ特徴量をサポート:

フィールド 意味 値の例
A1 アクセント核からの相対位置 -4, -3, ..., 0, 1, ...
A2 アクセント句内のモーラ位置 1, 2, 3, ...
A3 アクセント句内の総モーラ数 1-10+

拡張音素

  • 疑問詞マーカー: ?!, ?., ?~
  • 文脈依存「ん」バリアント: N_m, N_n, N_ng, N_uvular

Usage

シングル話者ファインチューニング(推奨)

# Step 1: データセット前処理
uv run python -m piper_train.preprocess \
  --input-dir /path/to/your-ljspeech-data \
  --output-dir /path/to/dataset \
  --language ja \
  --dataset-format ljspeech \
  --sample-rate 22050 \
  --single-speaker \
  --phoneme-type multilingual

# Step 2: Prosody Features追加(日本語の場合、推奨)
uv run python add_prosody_features.py \
  --input-dataset /path/to/dataset/dataset.jsonl \
  --output-dir /path/to/dataset-prosody \
  --workers 4

# Step 3: ファインチューニング
uv run python -m piper_train \
  --dataset-dir /path/to/dataset-prosody \
  --prosody-dim 16 \
  --accelerator gpu \
  --devices 1 \
  --precision 32-true \
  --max_epochs 500 \
  --batch-size 4 \
  --samples-per-speaker 4 \
  --checkpoint-epochs 50 \
  --base_lr 2e-5 \
  --disable_auto_lr_scaling \
  --ema-decay 0.9995 \
  --max-phoneme-ids 400 \
  --no-wavlm \
  --resume-from-multispeaker-checkpoint /path/to/model.ckpt \
  --default_root_dir /path/to/output

--resume-from-multispeaker-checkpoint は以下を自動的に行います:

  • emb_g (話者埋め込み) の処理
  • emb_lang への conditioning 分布補正
  • --freeze-dp の自動有効化 (Duration Predictor の catastrophic forgetting 防止)

マルチ話者ファインチューニング

uv run python -m piper_train \
  --dataset-dir /path/to/multi-speaker-dataset \
  --prosody-dim 16 \
  --accelerator gpu \
  --devices 4 \
  --precision 32-true \
  --max_epochs 150 \
  --batch-size 20 \
  --samples-per-speaker 2 \
  --base_lr 2e-4 \
  --disable_auto_lr_scaling \
  --ema-decay 0.9995 \
  --max-phoneme-ids 400 \
  --no-wavlm \
  --resume_from_checkpoint /path/to/model.ckpt \
  --default_root_dir /path/to/output

ONNX Export

CUDA_VISIBLE_DEVICES="" uv run python -m piper_train.export_onnx \
  /path/to/checkpoint.ckpt \
  /path/to/output.onnx

推論

CUDA_VISIBLE_DEVICES="" uv run python -m piper_train.infer_onnx \
  --model /path/to/output.onnx \
  --config /path/to/config.json \
  --output-dir /path/to/output \
  --text "こんにちは、今日は良い天気ですね。" \
  --language ja-en-zh-es-fr-pt \
  --speaker-id 0 --noise-scale 0.667

Recommended Parameters

シングル話者ファインチューニング

パラメータ 説明
--base_lr 2e-5 事前学習の1/10(過学習防止)
--max_epochs 500 小規模データ (100発話) の場合
--batch-size 4 小規模データセット向け
--freeze-dp 自動 --resume-from-multispeaker-checkpoint 使用時
--precision 32-true V100 GPU推奨(FP16はbackward遅延あり)
--no-wavlm - ファインチューニング時は不要

emb_lang 後処理(シングル話者FT後)

シングル話者ファインチューニング後、ONNX エクスポート前に emb_lang[0] を他の全言語スロットにコピーすることを推奨します:

import torch
ckpt = torch.load("checkpoint.ckpt", map_location="cpu")
state = ckpt["state_dict"]
emb_lang = state["model_g.emb_lang.weight"]
# 学習された言語 (例: ja=0) を全言語にコピー
for i in range(1, emb_lang.shape[0]):
    emb_lang[i] = emb_lang[0].clone()
torch.save(ckpt, "checkpoint-emb_lang_fixed.ckpt")

Origin

このベースモデルは以下のデータから学習されました:

言語 話者数 発話数 ソース
ja 20 60,148 MOE-Speech
en 310 74,912 LibriTTS-R
zh 142 63,223 AISHELL-3 (Apache-2.0)
es 63 168,374 CML-TTS Spanish (CC-BY-4.0)
fr 28 107,464 CML-TTS French (CC-BY-4.0)
pt 8 34,066 CML-TTS Portuguese (CC-BY-4.0)
合計 571 508,187
  • 学習設定: 75 epoch, batch-size 20, 4 GPU (V100 16GB), prosody_dim=16
  • gradient steps: ~282K
  • 学習時間: ~92時間
  • emb_g (話者埋め込み) は除去済み、optimizer states は除去済み

Files

  • model.ckpt - PyTorch Lightningチェックポイント (EMA state含む、emb_g除去済み)
  • config.json - モデル設定 (173音素マップ、6言語、prosody設定)

Citation

@software{piper_plus,
  title = {Piper Plus: Multilingual TTS with VITS, Prosody Features},
  author = {ayousanz},
  year = {2024},
  url = {https://github.com/ayutaz/piper-plus}
}
Downloads last month
125
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ayousanz/piper-plus-base

Quantizations
1 model