voice_audio_multi/tests/omnivoice/run_clone_benchmark.sh
Fabio c36510c21e
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
Initial import: audio.cpp with Orange Pi documentation
2026-11-04 19:05:22 +01:00

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 "=========================================="