|
|
--- |
|
|
language: |
|
|
- en |
|
|
tags: |
|
|
- text-to-speech |
|
|
- tts |
|
|
- piper |
|
|
- vits |
|
|
- ljspeech |
|
|
license: cc-by-sa-4.0 |
|
|
pipeline_tag: text-to-speech |
|
|
datasets: |
|
|
- LJSpeech |
|
|
--- |
|
|
|
|
|
# ljspeechで学習したpiperモデル |
|
|
|
|
|
このリポジトリには、[LJSpeechデータセット](https://keithito.com/LJ-Speech-Dataset/) を使用して学習されたPiper TTSモデルが含まれています。 |
|
|
このモデルは **medium品質** で、英語の音声を生成します。 |
|
|
|
|
|
## モデル詳細 |
|
|
|
|
|
* **音声:** LJSpeechデータセットの単一女性話者に基づいています。 |
|
|
* **言語:** 英語 (en) |
|
|
* **品質:** Medium (Piperの品質設定に基づく) |
|
|
* **サンプルレート:** 22050 Hz (Piperのmedium品質で一般的) |
|
|
* **ベースモデルアーキテクチャ:** VITS (PiperはVITSに基づいています) |
|
|
|
|
|
## 学習データ |
|
|
|
|
|
* **データセット:** [LJSpeech](https://keithito.com/LJ-Speech-Dataset/) |
|
|
* **説明:** 7冊のノンフィクション本の一節を読む単一話者の短い音声クリップ13,100個で構成されるパブリックドメインのデータセットです。約24時間の音声データが含まれます。 |
|
|
* **前処理:** データセットはPiperに付属のスクリプトを使用して前処理されました。 |
|
|
|
|
|
## 学習手順 |
|
|
|
|
|
このモデルは、[Rhasspy Piperリポジトリ](https://github.com/rhasspy/piper) の `piper_train` スクリプトを使用して学習されました。 |
|
|
|
|
|
### 主要な学習パラメータ: |
|
|
|
|
|
以下は、学習時に使用されたコマンドと主要なパラメータです。 |
|
|
|
|
|
* `quality`: `medium` |
|
|
* `precision`: `32` (単精度浮動小数点) |
|
|
* `max_epochs`: `500` |
|
|
* `batch_size`: `16` (シングルGPU時) |
|
|
* `accelerator`: `gpu` |
|
|
* `devices`: `1` |
|
|
* `validation_split`: `0.05` (5%のデータを検証に使用) |
|
|
* `checkpoint_epochs`: `1` (1エポックごとにチェックポイントを保存) |
|
|
|
|
|
### 学習コマンドの例: |
|
|
|
|
|
```bash |
|
|
# TRAINING_DATA_DIR は前処理済みデータセットのパスに置き換えてください |
|
|
# 例: TRAINING_DATA_DIR="/data/piper_ljspeech_training" |
|
|
|
|
|
python -m piper_train \ |
|
|
--dataset-dir ${TRAINING_DATA_DIR} \ |
|
|
--accelerator 'gpu' \ |
|
|
--devices 1 \ |
|
|
--batch-size 16 \ |
|
|
--validation-split 0.05 \ |
|
|
--num-test-examples 10 \ |
|
|
--max_epochs 500 \ |
|
|
--checkpoint-epochs 1 \ |
|
|
--precision 32 \ |
|
|
--quality medium |
|
|
``` |
|
|
|
|
|
### 学習環境 (おおよその環境): |
|
|
トラブルシューティングの結果、以下の環境で学習が実行されました。 |
|
|
|
|
|
* Python: 3.11.8 |
|
|
* PyTorch: ~2.5.1 (CUDA 12.1 サポート版) |
|
|
* PyTorch Lightning: ~1.7.7 |
|
|
* TorchMetrics: ~1.5.2 |
|
|
* NumPy: ~1.26.4 |
|
|
* Piper training scripts (`piper_train` module, version ~1.0.0) from `rhasspy/piper` |
|
|
|
|
|
## 使用方法 |
|
|
|
|
|
このモデルはPiperコマンドラインツールで使用します。まず、学習プロセスで得られたチェックポイント (`.ckpt` ファイル) をONNX形式にエクスポートする必要があります。 |
|
|
|
|
|
### 1. ONNX形式へのエクスポート |
|
|
|
|
|
学習済みチェックポイントが `/path/to/your/checkpoints/epoch=499-step=XXXXX.ckpt` (実際の学習で得られた最終チェックポイントのパスに置き換えてください) にあり、学習データディレクトリ ( `config.json` を含む) が `/data/piper_ljspeech_training/` にあると仮定します。 |
|
|
|
|
|
```bash |
|
|
# 実際のパスに置き換えてください |
|
|
CHECKPOINT_FILE="/data/piper_ljspeech_training/lightning_logs/version_X/checkpoints/epoch=499-step=XXXXX.ckpt" # 例: version_1/checkpoints/epoch=499-step=519000.ckpt |
|
|
TRAINING_CONFIG_JSON="/data/piper_ljspeech_training/config.json" # 前処理時の config.json |
|
|
EXPORT_DIR="exported_piper_model" # ONNXモデルの出力先ディレクトリ名 (任意) |
|
|
ONNX_MODEL_NAME="ljspeech_piper_medium_500epochs" # ONNXモデルのファイル名 (任意) |
|
|
|
|
|
mkdir -p ${EXPORT_DIR} |
|
|
|
|
|
python3 -m piper_train.export_onnx \ |
|
|
${CHECKPOINT_FILE} \ |
|
|
<span class="math-inline">\{EXPORT\_DIR\}/</span>{ONNX_MODEL_NAME}.onnx |
|
|
|
|
|
cp ${TRAINING_CONFIG_JSON} \ |
|
|
<span class="math-inline">\{EXPORT\_DIR\}/</span>{ONNX_MODEL_NAME}.onnx.json |