Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
145 lines
4.9 KiB
Bash
Executable file
145 lines
4.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# Sweeps OmniVoice voice-clone single inference over every combination of
|
|
# num_inference_steps, generator weight type, and audio tokenizer weight type.
|
|
#
|
|
# Run from anywhere. The script resolves the audio.cpp repository root.
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
|
|
|
cd "${REPO_ROOT}"
|
|
|
|
DEVICE="0"
|
|
LANG="Bengali"
|
|
SEED="42"
|
|
|
|
# Enable or disable warmup runs
|
|
WARMUP=true
|
|
|
|
# Number of warmup runs when WARMUP=true
|
|
WARMUP_QUANTITY=10
|
|
|
|
STEPS_LIST=("8" "12" "16" "20" "24" "28" "32" "36" "40" "44" "48" "52" "56" "60" "64")
|
|
WEIGHT_TYPES=("native" "f32" "f16" "bf16" "q8_0")
|
|
AUDIO_TOKENIZER_WEIGHT_TYPES=("native" "f32" "f16" "bf16" "q8_0")
|
|
|
|
ASSET_DIR="tests/omnivoice/assets"
|
|
REF_WAV="${ASSET_DIR}/ref_audio_02.wav"
|
|
REF_TEXT="$(cat "${ASSET_DIR}/ref_text_02.txt")"
|
|
TEXT="আমি একটা টিটিএস মডেল, নাম OmniVoice। কিভাবে আপনাকে সাহায্য করতে পারি?"
|
|
|
|
OUT_DIR="tests/omnivoice/outputs/clone_single"
|
|
LOG_FILE="tests/omnivoice/outputs/clone_single.log"
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
# Redirect ALL output to the global log file
|
|
exec > >(tee -a "$LOG_FILE")
|
|
exec 2>&1
|
|
|
|
echo "=========================================="
|
|
echo "Started: $(date)"
|
|
echo "Running all audio.cpp OmniVoice combinations"
|
|
echo "Device: cuda:$DEVICE | Language: $LANG | Seed: $SEED"
|
|
echo "Warmup: $WARMUP | Warmup Quantity: $WARMUP_QUANTITY"
|
|
echo "Global Log: $LOG_FILE"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Basic warmup using the first configured combination
|
|
if [[ "$WARMUP" == "true" ]]; then
|
|
WARMUP_STEPS="${STEPS_LIST[0]}"
|
|
WARMUP_WEIGHT_TYPE="${WEIGHT_TYPES[0]}"
|
|
WARMUP_AUDIO_TOKENIZER_WEIGHT_TYPE="${AUDIO_TOKENIZER_WEIGHT_TYPES[0]}"
|
|
|
|
echo "=========================================="
|
|
echo "Starting $WARMUP_QUANTITY warmup run(s)"
|
|
echo "weight_type=$WARMUP_WEIGHT_TYPE"
|
|
echo "audio_tokenizer_weight_type=$WARMUP_AUDIO_TOKENIZER_WEIGHT_TYPE"
|
|
echo "steps=$WARMUP_STEPS"
|
|
echo "Started at: $(date)"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
for ((warmup_index = 1; warmup_index <= WARMUP_QUANTITY; warmup_index++)); do
|
|
WARMUP_OUT="${OUT_DIR}/warmup_${warmup_index}.wav"
|
|
|
|
echo "[Warmup $warmup_index/$WARMUP_QUANTITY]"
|
|
echo " Started at: $(date +%H:%M:%S)"
|
|
|
|
CUDA_VISIBLE_DEVICES=$DEVICE build/bin/audiocpp_cli \
|
|
--task tts \
|
|
--family omnivoice \
|
|
--model models/OmniVoice \
|
|
--backend cuda \
|
|
--device "$DEVICE" \
|
|
--text "$TEXT" \
|
|
--voice-ref "$REF_WAV" \
|
|
--reference-text "$REF_TEXT" \
|
|
--language "$LANG" \
|
|
--seed "$SEED" \
|
|
--num-inference-steps "$WARMUP_STEPS" \
|
|
--session-option omnivoice.generator_weight_type="$WARMUP_WEIGHT_TYPE" \
|
|
--session-option omnivoice.audio_tokenizer_weight_type="$WARMUP_AUDIO_TOKENIZER_WEIGHT_TYPE" \
|
|
--out "$WARMUP_OUT" \
|
|
--log
|
|
|
|
echo " Completed at: $(date +%H:%M:%S)"
|
|
echo " Output: $WARMUP_OUT"
|
|
echo ""
|
|
done
|
|
|
|
echo "=========================================="
|
|
echo "All $WARMUP_QUANTITY warmup run(s) completed: $(date)"
|
|
echo "=========================================="
|
|
echo ""
|
|
else
|
|
echo "Warmup disabled."
|
|
echo ""
|
|
fi
|
|
|
|
TOTAL=$(( ${#STEPS_LIST[@]} * ${#WEIGHT_TYPES[@]} * ${#AUDIO_TOKENIZER_WEIGHT_TYPES[@]} ))
|
|
COUNT=0
|
|
|
|
for steps in "${STEPS_LIST[@]}"; do
|
|
for wt in "${WEIGHT_TYPES[@]}"; do
|
|
for atwt in "${AUDIO_TOKENIZER_WEIGHT_TYPES[@]}"; do
|
|
COUNT=$((COUNT + 1))
|
|
|
|
OUT_NAME="audiocpp_omnivoice_clone_mdwt_${wt}_atwt_${atwt}_step${steps}.wav"
|
|
|
|
echo "[$COUNT/$TOTAL] weight_type=$wt | audio_tokenizer_weight_type=$atwt | steps=$steps -> $OUT_NAME"
|
|
echo " Started at: $(date +%H:%M:%S)"
|
|
|
|
CUDA_VISIBLE_DEVICES=$DEVICE build/bin/audiocpp_cli \
|
|
--task tts \
|
|
--family omnivoice \
|
|
--model models/OmniVoice \
|
|
--backend cuda \
|
|
--device "$DEVICE" \
|
|
--text "$TEXT" \
|
|
--voice-ref "$REF_WAV" \
|
|
--reference-text "$REF_TEXT" \
|
|
--language "$LANG" \
|
|
--seed "$SEED" \
|
|
--num-inference-steps "$steps" \
|
|
--session-option omnivoice.generator_weight_type="$wt" \
|
|
--session-option omnivoice.audio_tokenizer_weight_type="$atwt" \
|
|
--out "${OUT_DIR}/${OUT_NAME}" \
|
|
--log
|
|
|
|
echo " Completed at: $(date +%H:%M:%S)"
|
|
echo " Output: ${OUT_DIR}/${OUT_NAME}"
|
|
echo ""
|
|
done
|
|
done
|
|
done
|
|
|
|
echo "=========================================="
|
|
echo "All $TOTAL combinations completed!"
|
|
echo "Finished: $(date)"
|
|
echo "Outputs in: $OUT_DIR"
|
|
echo "Global Log: $LOG_FILE"
|
|
echo "=========================================="
|