#!/usr/bin/env bash set -euo pipefail root=/home/rezo/piper-wikipedia-approved-20260830 data="${root}/data/unchunked-avasanj-agree-v1" run="${root}/runs/rizeh-unchunked-avasanj-agree-gate500" cache="${root}/cache/unchunked-avasanj-agree-v1" resume="${run}/lightning_logs/version_0/checkpoints/last.ckpt" exec 9>"${root}/runs/rizeh-unchunked-avasanj-agree-full50k.lock" flock -n 9 || { echo "full50k is already running" >&2; exit 73; } [[ "$(jq -r .status "${data}/report.json")" == complete ]] [[ "$(jq -r .rows.train "${data}/report.json")" == 1290 ]] [[ "$(jq -r .rows.validation "${data}/report.json")" == 100 ]] [[ "$(jq -r '.parent_overlap.train.validation' "${data}/report.json")" == 0 ]] [[ "$(wc -l < "${data}/metadata-fit-parent-disjoint.csv")" == 1390 ]] [[ -s "${resume}" ]] [[ -s "${run}/model.onnx.json" ]] cd "${root}/src/piper1-gpl" export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True "${root}/venv/bin/python" -m piper.train fit \ --ckpt_path "${resume}" \ --trainer.accelerator gpu \ --trainer.devices 1 \ --trainer.precision bf16-mixed \ --trainer.max_steps 50000 \ --trainer.num_sanity_val_steps 0 \ --trainer.val_check_interval 500 \ --trainer.limit_val_batches 25 \ --trainer.log_every_n_steps 10 \ --trainer.enable_progress_bar false \ --trainer.default_root_dir "${run}" \ --model.sample_rate 22050 \ --model.num_speakers 1 \ --model.warmstart_ckpt "${root}/models/rizeh-onnx-recovery/rizehpizeh-epoch4-recovered-trainable.ckpt" \ --model.learning_rate 0.000005 \ --model.learning_rate_d 0.0000025 \ --model.mos_metric null \ --data.voice_name gooya-rizehpizeh-unchunked-avasanj-agree-full50k \ --data.csv_path "${data}/metadata-fit-parent-disjoint.csv" \ --data.audio_dir / \ --data.cache_dir "${cache}" \ --data.config_path "${run}/model.onnx.json" \ --data.batch_size 1 \ --data.validation_split 0.07194244604316546 \ --data.num_test_examples 0 \ --data.num_workers 2 \ --data.trim_silence false \ --data.phoneme_type text \ --data.dataset_type phoneme_ids \ --data.phonemes_path "${root}/data/aligned-full-v1/negara-phoneme-id-map.json" \ --data.espeak_voice fa \ --data.num_symbols 256 checkpoint=$(find "${run}" -name last.ckpt -type f -printf '%T@ %p\n' | sort -nr | head -1 | cut -d' ' -f2-) [[ -s "${checkpoint}" ]] "${root}/venv/bin/python" -m piper.train.export_onnx \ --checkpoint "${checkpoint}" \ --output-file "${run}/model-step50000.onnx" cp "${run}/model.onnx.json" "${run}/model-step50000.onnx.json" printf '%s\n' 'salAm! man guyA hastam va in sedA haminjA dAxele morurare SomA sAxte Sode ast.' | \ "${root}/venv/bin/python" -m piper \ -m "${run}/model-step50000.onnx" \ -f "${run}/canonical-intro-step50000.wav" \ --length-scale 1.0 printf '%s\n' 'salAm az beyne dostAn kasi sAyte rAyegAne tabdile matn be goftAr besurate xodemuni va mohAverei be zabAne fArsi bege miSnAse moQarrefi kone takid mikonam xorujiye fAyl be surate moddat zamAne tulAni mixAham mahdudiyyate moddate zamAn nadASte bASe.' | \ "${root}/venv/bin/python" -m piper \ -m "${run}/model-step50000.onnx" \ -f "${run}/long-colloquial-step50000.wav" \ --length-scale 1.0 sha256sum "${checkpoint}" "${run}/model-step50000.onnx" \ "${run}/model-step50000.onnx.json" \ "${run}/canonical-intro-step50000.wav" \ "${run}/long-colloquial-step50000.wav" \ > "${run}/sha256sums-step50000.txt" echo "full50k_complete_utc=$(date -u +%FT%TZ) checkpoint=${checkpoint}"