高速・高品質なニューラルテキスト音声合成 (TTS) システム。VITS アーキテクチャを採用し、日本語・英語・中国語・スペイン語・フランス語・ポルトガル語の6言語マルチスピーカー音声合成に対応。Piper のフォークで、日本語対応・音質向上・学習機能を大幅に強化しています。
Hugging Face デモ | WebAssembly デモ (ブラウザで動作、サーバー不要)
- 6言語対応 — 日本語・英語・中国語・スペイン語・フランス語・ポルトガル語 (ja=0, en=1, zh=2, es=3, fr=4, pt=5)
- 日本語 TTS — OpenJTalk統合、韻律情報 (A1/A2/A3)、疑問詞マーカー (#204)、文脈依存「ん」バリアント (#207)
- 英語 TTS — GPL-free G2P (g2p-en, Apache-2.0)、espeak-ng 不要
- マルチスピーカー — 571話者対応 (学習用ベースモデル)、SpeakerBalancedBatchSampler、言語グループ均等サンプリング
- カスタム辞書 — 200+技術用語の発音辞書内蔵
- 音素入力 —
[[ phonemes ]]記法による直接指定 — ガイド
- WavLM Discriminator — MOS +0.15-0.25 向上 (デフォルト有効、学習時のみ使用)
- FP16 Mixed Precision — 学習速度2-3倍、メモリ約50%削減 (デフォルト有効)
- EMA — Exponential Moving Average による学習安定性向上 (デフォルト有効)
- マルチGPU — DDP対応、自動学習率スケーリング
- Prosody Features — Duration Predictorへの韻律情報注入 (
--prosody-dim 16) - Wandb統合 — リアルタイムメトリクス監視
- WebUI (Gradio) — 推論・学習対応、Docker対応
- C++ CLI — ストリーミング、CUDA推論、音素タイミング出力、カスタム辞書
- WebAssembly — ブラウザ内で完全動作、サーバー不要
- Docker — 推論・学習・WebUI・C++の5イメージ提供
- PyPI —
pip install piper-tts-plusで簡単インストール - C# CLI — .NET 8/9 クロスプラットフォーム、6言語マルチリンガル、ONNX推論
- Rust CLI — piper-plus/piper-plus-cli、ストリーミング、CUDA/CoreML/DirectML対応、辞書自動ダウンロード
| プラットフォーム | アーキテクチャ | 備考 |
|---|---|---|
| Linux | x86_64 / ARM64 | フルサポート |
| macOS | ARM64 (Apple Silicon) のみ | M1/M2/M3+ |
| Windows | x64 | フルサポート |
| Web | WebAssembly | Chrome/Edge/Firefox/Safari |
| C# (.NET) | x64 / ARM64 | .NET 8/9、Linux/macOS/Windows |
| Rust | x64 / ARM64 | Linux/macOS/Windows、CUDA/CoreML/DirectML |
GitHub Releases からプリビルドバイナリをダウンロードして、すぐに音声合成を開始できます。
1. バイナリをダウンロード
お使いのOSに合わせてダウンロード・展開してください。
Windows (PowerShell):
Invoke-WebRequest -Uri "https://github.com/ayutaz/piper-plus/releases/latest/download/piper-windows-x64.zip" -OutFile piper.zip
Expand-Archive piper.zip -DestinationPath .
cd pipermacOS (Apple Silicon):
curl -L -o piper.tar.gz https://github.com/ayutaz/piper-plus/releases/latest/download/piper-macos-arm64.tar.gz
tar xzf piper.tar.gz
cd piper
xattr -cr .Linux (x86_64):
curl -L -o piper.tar.gz https://github.com/ayutaz/piper-plus/releases/latest/download/piper-linux-x64.tar.gz
tar xzf piper.tar.gz
cd piper2. モデルをダウンロード & 音声を生成
# つくよみちゃんモデルをダウンロード
./bin/piper --download-model tsukuyomi
# 音声を生成 (モデル名だけで OK — ダウンロード済みモデルを自動解決)
./bin/piper --model tsukuyomi --text "こんにちは、今日は良い天気ですね。" --output_file output.wavWindows cmd のコードページについて:
--textオプションは内部でGetCommandLineW()(UTF-16) を使用するため、コードページに依存せずそのまま動作します。パイプ入力(echo ... | piper)を使う場合のみ、事前にchcp 65001で UTF-8 に切り替えてください。output.wav の出力先: カレントディレクトリ(
cd piperした場所)に生成されます。
# インストール
uv pip install ".[inference]"
# 日本語推論
uv run python -m piper_train.infer_onnx \
--model /path/to/model.onnx \
--config /path/to/config.json \
--output-dir ./output \
--text "こんにちは、今日は良い天気ですね。"
# 英語推論
uv run python -m piper_train.infer_onnx \
--model /path/to/en_model.onnx \
--config /path/to/en_model.onnx.json \
--output-dir ./output \
--text "Hello, how are you today?" \
--language en主なオプション: --speaker-id(話者ID)、--device auto|cpu|gpu、--noise-scale(音声バリエーション)、--length-scale(話速)
WavLMモデルの推奨設定: WavLM Discriminatorで学習されたモデル (つくよみちゃん等) は
--noise-scale 0.5で最適な音質になります (デフォルトは 0.667)。
# モデル一覧表示
python -m piper --list-models
python -m piper --list-models ja
# モデルダウンロード
python -m piper --download-model tsukuyomi
python -m piper --download-model ja_JP-tsukuyomi-chan-medium
# ダウンロード後に使用
python -m piper --model ja_JP-tsukuyomi-chan-medium --text "こんにちは" -f output.wavuv pip install -r src/python_run/requirements_webui.txt
cd src/python_run
python -m piper.webui --data-dir /path/to/models
# → http://localhost:7860# WebUI
docker build -t piper-webui -f docker/webui/Dockerfile .
docker run -p 7860:7860 -v ./models:/models:ro piper-webui
# Python推論 (CPU)
docker build -t piper-inference -f docker/python-inference/Dockerfile .
docker run --rm \
-v ./models:/app/models:ro -v ./output:/app/output \
piper-inference \
python -m piper_train.infer_onnx \
--model /app/models/model.onnx --config /app/models/config.json \
--output-dir /app/output --text "こんにちは" --device cpu
# GPU推論 (--gpus all を追加)
docker run --rm --gpus all \
-v ./models:/app/models:ro -v ./output:/app/output \
piper-inference \
python -m piper_train.infer_onnx \
--model /app/models/model.onnx --config /app/models/config.json \
--output-dir /app/output --text "こんにちは" --device gpuCI/CD ビルド済みイメージ:
docker pull ghcr.io/ayutaz/piper-plus/python-inference:main
docker pull ghcr.io/ayutaz/piper-plus/python-train:main
docker pull ghcr.io/ayutaz/piper-plus/webui:main
docker pull ghcr.io/ayutaz/piper-plus/cpp-inference:main
docker pull ghcr.io/ayutaz/piper-plus/cpp-dev:main詳細は docker/README.md を参照。
Python 3.11+ が必要。依存管理は uv を推奨。
# CPU推論
uv pip install ".[inference]"
# GPU推論 (CUDA環境が必要)
uv pip install ".[inference-gpu]"
# 学習
uv pip install ".[train]"
# 開発 (テスト・リンター含む)
uv pip install ".[dev]"PyPI パッケージからもインストール可能:
pip install piper-tts-plusPython (PyPI):
pip install piper-tts-plusC# CLI (.NET Global Tool):
dotnet tool install -g PiperPlus.CliRust CLI (crates.io):
cargo install piper-plus-cliC# ライブラリ (NuGet):
dotnet add package PiperPlus.CoreRust ライブラリ (crates.io):
[dependencies]
piper-plus = "0.1.0"git clone https://github.com/ayutaz/piper-plus.git
cd piper-plus
mkdir build && cd build
cmake ..
cmake --build . --config Release前提条件: C++17対応コンパイラ、CMake 3.13+
- Linux: ビルド前に piper-phonemize を
lib/Linux-$(uname -m)/piper_phonemizeに配置 - Windows: Windows セットアップガイド を参照
- macOS: 依存関係は自動ダウンロード
# C# CLI ビルド
dotnet build src/csharp/PiperPlus.sln -c Release
# テスト
dotnet test src/csharp/PiperPlus.Core.Tests/前提条件: .NET 8 SDK 以上
# モデル名で推論 (自動ダウンロード対応、--output-file 省略で output.wav に出力)
piper-plus --model tsukuyomi --text "こんにちは" --language ja
# 英語
piper-plus --model model.onnx --text "Hello world" --language en
# マルチリンガル (自動言語検出)
piper-plus --model model.onnx --text "こんにちはHello你好" --language ja-en-zh
# インライン音素記法 (テキスト中に直接音素を指定)
piper-plus --model model.onnx --text "Hello [[ h ə l oʊ ]] world" --language en
# ストリーミング (文ごとに逐次PCM出力)
piper-plus --model model.onnx --text "最初の文。次の文。" --language ja --streaming | aplay -r 22050 -f S16_LE
# カスタム辞書 (JSON v1/v2 または TSV)
piper-plus --model model.onnx --text "AI技術" --language ja --custom-dict my_dict.json
# モデルダウンロード
piper-plus --download-model tsukuyomi
piper-plus --list-models ja
# テストモード (ONNX推論なしで phoneme IDs を確認)
piper-plus --model model.onnx --test-mode --text "こんにちは" --language ja# モデル名で推論 (自動ダウンロード対応)
piper-plus-cli --model tsukuyomi --text "こんにちは" --language ja
# 英語
piper-plus-cli --model model.onnx --text "Hello world" --language en
# モデルダウンロード・管理
piper-plus-cli --download-model tsukuyomi
piper-plus-cli --list-models ja
# ストリーミング (文ごとに逐次合成)
piper-plus-cli --model model.onnx --text "First sentence. Second sentence." --stream --output-dir chunks/
# カスタム辞書
piper-plus-cli --model model.onnx --text "AI技術" --custom-dict my_dict.json
# GPU推論
piper-plus-cli --model model.onnx --text "Hello" --device cuda
# テストモード・静音モード
piper-plus-cli --model model.onnx --test-mode --text "hello" --language en
piper-plus-cli --model model.onnx --text "hello" --language en --quiet
# raw PCM出力 (WAVヘッダなし)
piper-plus-cli --model model.onnx --text "hello" --language en --output-raw | aplay -r 22050 -f S16_LENote: C# CLI は
dotnet tool install -g PiperPlus.Cliで、Rust CLI はcargo install piper-plus-cliでインストールできます。両方とも6言語対応・カスタム辞書・ストリーミングをサポートしています。
# Rust CLI ビルド
cargo build --release -p piper-plus-cli
# テスト
cargo test -p piper-plus前提条件: Rust 1.70+、cargo
--text オプションでパイプなしにテキストを直接入力できます:
# テキストから音声生成
./bin/piper --model model.onnx --text "Hello, how are you?" -f output.wav
# 日本語テキスト (Windowsでのエンコーディング問題を回避)
bin\piper.exe --model models\tsukuyomi.onnx --text "こんにちは、今日は良い天気ですね。" -f output.wav
# 話者指定
./bin/piper --model model.onnx --text "Hello" --speaker 3 -f output.wav# 基本
echo "こんにちは" | ./bin/piper --model ja_model.onnx --output_file output.wav
# ストリーミング (低レイテンシ)
echo "長いテキスト..." | ./bin/piper --model ja_model.onnx --output_file output.wav --streaming
# GPU推論
echo "Hello" | ./bin/piper --model en_model.onnx --use-cuda --output_file output.wav
# 音素タイミング出力 (リップシンク・字幕同期用)
echo "Hello world" | ./bin/piper --model en_model.onnx -f speech.wav --output-timing timing.json
# カスタム辞書
echo "DockerとGitHubを使います" | ./bin/piper --model ja_model.onnx --custom-dict my_dict.json -f output.wav
# インライン音素入力
echo 'Hello [[ h ə l oʊ ]] world' | ./bin/piper --model en_model.onnx -f output.wav
# 生の音素入力
echo 'h ə l oʊ _ w ɜː l d' | ./bin/piper --model en_model.onnx --raw-phonemes -f output.wav
# ストリーミング (raw audio 出力)
echo 'Long text...' | ./bin/piper --model en_model.onnx --output-raw | \
aplay -r 22050 -f S16_LE -t raw -主なオプション:
| オプション | 説明 | デフォルト |
|---|---|---|
--model PATH|NAME |
モデルファイルのパス、またはモデル名 (ダウンロード済みモデルを自動解決) | - |
--text TEXT |
テキスト直接入力 (パイプ不要) | - |
--streaming |
チャンクベースのストリーミングモード | off |
--use-cuda |
CUDA GPU推論を有効化 | off |
--gpu-device-id NUM |
GPU デバイスID | 0 |
--length-scale VAL |
話速調整 (小さい=速い) | 1.0 |
--noise-scale VAL |
音声バリエーション制御 | 0.667 |
--noise-w VAL |
音素長バリエーション制御 | 0.8 |
--sentence-silence SEC |
文間の無音 (秒) | 0.2 |
--speaker NUM |
マルチスピーカーモデルの話者番号 | 0 |
--phoneme-silence PHONEME SEC |
特定音素の無音時間設定 | - |
--raw-phonemes |
入力を音素として解釈 | off |
--output-timing FILE |
音素タイミング情報をファイル出力 (JSON/TSV) | - |
--custom-dict FILE |
カスタム辞書 (カンマ区切りで複数指定可) | - |
--json-input |
JSON入力モード | off |
--list-models [LANG] |
利用可能なモデル一覧を表示 | - |
--download-model NAME |
モデルをダウンロード | - |
--model-dir DIR |
モデルのダウンロード先ディレクトリ | - |
--version |
バージョン表示 | - |
piper --help で全オプションを確認できます。
WavLMモデルの推奨設定: WavLM Discriminatorで学習されたモデルは
--noise-scale 0.5を推奨します (デフォルトは 0.667)。echo "こんにちは" | ./bin/piper --model tsukuyomi.onnx --config config.json --noise-scale 0.5 -f output.wav
--json-input フラグでJSON入力を受け付けます:
{ "text": "First speaker.", "speaker_id": 0, "output_file": "/tmp/speaker_0.wav" }
{ "text": "Second speaker.", "speaker_id": 1, "output_file": "/tmp/speaker_1.wav" }# 利用可能なモデル一覧を表示
./bin/piper --list-models
# 言語でフィルタリング
./bin/piper --list-models ja
./bin/piper --list-models en# モデル名を指定してダウンロード (エイリアスも使用可能)
./bin/piper --download-model tsukuyomi
./bin/piper --download-model en_US-lessac-medium
# ダウンロード先ディレクトリを指定
./bin/piper --download-model tsukuyomi --model-dir /path/to/models
# ダウンロード後、モデル名で推論 (フルパス不要)
./bin/piper --model tsukuyomi --text "こんにちは"| 変数名 | 説明 | 例 |
|---|---|---|
PIPER_DEFAULT_MODEL |
--model 未指定時のデフォルトモデルパス |
/path/to/model.onnx |
PIPER_DEFAULT_CONFIG |
--config 未指定時のデフォルト設定ファイルパス |
/path/to/config.json |
PIPER_MODEL_DIR |
ダウンロードモデルの保存先ディレクトリ | ~/.local/share/piper/models |
PIPER_GPU_DEVICE_ID |
CUDA GPUデバイスID | 0 |
Windows ユーザー向けに scripts/ ディレクトリにヘルパースクリプトを提供しています。
PowerShell:
.\scripts\speak.ps1 "こんにちは、今日は良い天気ですね。"
.\scripts\speak.ps1 -Model "models\tsukuyomi.onnx" -Text "テスト"コマンドプロンプト:
scripts\speak.bat "こんにちは、今日は良い天気ですね。"
scripts\speak.bat --model models\tsukuyomi.onnx "テスト"詳細は 学習ガイド を参照。
uv pip install ".[train]"
uv run python -m piper_train \
--dataset-dir /path/to/dataset \
--accelerator gpu --devices 1 --precision 16-mixed \
--max_epochs 200 --batch-size 16 \
--quality medium \
--prosody-dim 16 \
--ema-decay 0.9995NCCL_DEBUG=WARN NCCL_P2P_DISABLE=1 NCCL_IB_DISABLE=1 \
uv run python -m piper_train \
--dataset-dir /path/to/dataset \
--prosody-dim 16 \
--accelerator gpu --devices 4 --precision 16-mixed \
--max_epochs 200 --batch-size 12 --samples-per-speaker 2 \
--checkpoint-epochs 1 --quality medium \
--base_lr 2e-4 --disable_auto_lr_scaling \
--ema-decay 0.9995マルチGPUでは DDP (Distributed Data Parallel) が自動設定されます。NCCL環境変数の設定が必要です。詳細はマルチGPU学習ガイドを参照。
デフォルトでFP16変換が適用され、モデルサイズが約50%削減されます。--no-fp16 で無効化可能。数値安定性のため LayerNormalization, Sigmoid, Softmax は FP32 のまま保持されます。
# 標準モデル (FP16出力)
CUDA_VISIBLE_DEVICES="" uv run python -m piper_train.export_onnx \
/path/to/checkpoint.ckpt /path/to/output.onnx
# FP32出力
CUDA_VISIBLE_DEVICES="" uv run python -m piper_train.export_onnx \
--no-fp16 /path/to/checkpoint.ckpt /path/to/output.onnx
# WavLMモデル (--stochastic 必須)
CUDA_VISIBLE_DEVICES="" uv run python -m piper_train.export_onnx \
--stochastic /path/to/checkpoint.ckpt /path/to/output.onnx--resume_from_checkpoint— チェックポイントからの学習再開--resume_from_single_speaker_checkpoint— シングルスピーカーモデルからマルチスピーカーへの変換
scripts/evaluation/ に MCD, PESQ, UTMOS の評価ツールがあります。
推論用の音声合成モデルを Hugging Face で公開しています。
推論用モデル (すぐに使えます):
| モデル | 言語 | 話者数 | 説明 | ダウンロード |
|---|---|---|---|---|
| つくよみちゃん 6lang | JA/EN/ZH/ES/FR/PT | 1 | つくよみちゃん音声、6言語対応、FP16 | HuggingFace |
| CSS10 日本語 6lang | JA/EN/ZH/ES/FR/PT | 1 | CSS10日本語音声、6言語対応、FP16 | HuggingFace |
学習用ベースモデル (ファインチューニング用):
| モデル | 言語 | 話者数 | 説明 | ダウンロード |
|---|---|---|---|---|
| 6言語ベースモデル | JA/EN/ZH/ES/FR/PT | 571 | マルチリンガル事前学習済み (508,187発話, VITS + Prosody) | HuggingFace |
つくよみちゃんモデル:
Windows (PowerShell):
mkdir models
Invoke-WebRequest -Uri "https://huggingface.co/ayousanz/piper-plus-tsukuyomi-chan/resolve/main/tsukuyomi-chan-6lang-fp16.onnx" -OutFile models/tsukuyomi.onnx
Invoke-WebRequest -Uri "https://huggingface.co/ayousanz/piper-plus-tsukuyomi-chan/resolve/main/config.json" -OutFile models/config.jsonmacOS / Linux:
mkdir -p models
curl -L -o models/tsukuyomi.onnx https://huggingface.co/ayousanz/piper-plus-tsukuyomi-chan/resolve/main/tsukuyomi-chan-6lang-fp16.onnx
curl -L -o models/config.json https://huggingface.co/ayousanz/piper-plus-tsukuyomi-chan/resolve/main/config.json- アーキテクチャ: VITS + Prosody Features
- 学習データ: 508,187発話 (571話者, 6言語)
- サンプリングレート: 22,050 Hz
- シンボル数: 173
- Prosody Features: A1/A2/A3 韻律情報 (日本語)
- 言語グループ均等サンプリング: 自動有効化
対応言語:
| 言語 | コード | language_id | 話者数 | 発話数 | ソース |
|---|---|---|---|---|---|
| 日本語 | ja | 0 | 20 | 60,148 | MOE-Speech |
| 英語 | en | 1 | 310 | 74,912 | LibriTTS-R |
| 中国語 | zh | 2 | 142 | 63,223 | AISHELL-3 |
| スペイン語 | es | 3 | 63 | 168,374 | CML-TTS |
| フランス語 | fr | 4 | 28 | 107,464 | CML-TTS |
| ポルトガル語 | pt | 5 | 8 | 34,066 | CML-TTS |
Note: piper-plus は独自のアーキテクチャ拡張 (多言語埋め込み、Prosody A1/A2/A3、173シンボル) を行っているため、upstream Piper のチェックポイント/ONNXモデルとの互換性はありません。piper-plus 専用のモデルをご利用ください。
OpenJTalk 統合による高品質な日本語音声合成。辞書・ボイスファイルは初回実行時に自動ダウンロードされます。
環境変数 (オプション):
| 変数名 | 説明 |
|---|---|
OPENJTALK_DICTIONARY_PATH |
OpenJTalk辞書パス (未設定時は自動ダウンロード) |
PIPER_AUTO_DOWNLOAD_DICT |
0 で自動ダウンロード無効化 |
PIPER_OFFLINE_MODE |
1 でオフラインモード |
詳細は日本語音声合成ガイドおよび 音素マッピングリファレンス を参照。
Apple Silicon (M1/M2/M3+) のみサポート。 Intel Mac は Docker またはソースビルドをご利用ください。
初回実行時のセキュリティ警告:
xattr -cr piper/espeak-ng-data ディレクトリが必要です。詳細は Windows セットアップガイド を参照。
set ESPEAK_DATA_PATH=C:\path\to\espeak-ng-data
piper.exe --model en_US-lessac-medium.onnx -f output.wavブラウザで直接動作する日本語 TTS。サーバー不要、オフライン対応。
Piper を Unity で使用するプラグイン: github.com/ayutaz/uPiper
- Unity 6000.0.35f1+、Unity.InferenceEngine
- Windows / macOS (Apple Silicon) / Linux / Android 対応
- 日本語・英語対応、非同期API、ストリーミング
upstream Piper の音声モデル (30+言語) も利用可能: piper-voices
各音声には .onnx モデルと .onnx.json 設定ファイルが必要です。音声サンプル | ビデオチュートリアル
Home Assistant · Rhasspy 3 · NVDA · Open Voice OS · LocalAI · JetsonGPT · mintPiper · Vim-Piper
| カテゴリ | リンク |
|---|---|
| 日本語TTS | 日本語音声合成ガイド |
| 学習 | 学習ガイド · マルチGPU |
| API | 音素マッピング · 環境変数 |
| 機能 | WebUI · CLI強化 · ストリーミング |
| セットアップ | クイックスタート (日本語) · Windows · トラブルシューティング |
| Docker | Docker環境 |
| WebAssembly | 技術詳細 |
CONTRIBUTING.md を参照。
CHANGELOG.md を参照。
