LuxTTSを日本語g2p対応をして学習を行い、日本語の音声合成に対応する

初めに

ZipVoice をベースにして推論を高速化した LuxTTSを今回は日本語対応をしていきます

github.com

基本的にpyopenjtalkを使って日本語のg2pを入れて学習をする流れです

対応済みのリポジトリは以下で公開しています

github.com

github.com

日本語推論にノイズが入っているため、改善の余地はいろいろありそうです

日本語の推論音声は以下です

開発環境

  • Windows 11
  • uv 0.9.x
  • RTX 4090

環境構築

まずはデータセットを準備します

huggingface-cli download --repo-type dataset ayousanz/moe-speech-20speakers-ljspeech \
    --local-dir data/moe-speech-20speakers-ljspeech

# Convert to LuxTTS format (resample 22kHz→24kHz, split train/dev)
python scripts/convert_moe_speech.py --num-workers 8

# Build training features (manifest → tokens → mel-spectrogram)
PYTHONUTF8=1 python -m zipvoice.bin.prepare_dataset \
    --tsv-path data/custom_train.tsv --prefix custom --subset train \
    --output-dir data/manifests --sampling-rate 24000
PYTHONUTF8=1 python -m zipvoice.bin.prepare_tokens \
    --input-file data/manifests/custom_cuts_train.jsonl.gz \
    --output-file data/manifests/custom_cuts_train_tokens.jsonl.gz \
    --tokenizer emilia --lang ja
PYTHONUTF8=1 python -m zipvoice.bin.compute_fbank \
    --source-dir data/manifests --dest-dir data/fbank \
    --dataset custom --subset train_tokens --sampling-rate 24000 --type vocos

次に前処理を実行します

python scripts/generate_tokens.py
python scripts/init_japanese_embeds.py

学習を実行します

# Run training (~24h on RTX 4090)
bash scripts/train_japanese.sh

学習したモデルは以下で公開しています

github.com