| set -e | |
| sizes="base large xlarge" | |
| declare -A ckpt_urls | |
| ckpt_urls[base]="https://dl.fbaipublicfiles.com/hubert/hubert_base_ls960.pt" | |
| ckpt_urls[large]="https://dl.fbaipublicfiles.com/hubert/hubert_large_ll60k.pt" | |
| ckpt_urls[xlarge]="https://dl.fbaipublicfiles.com/hubert/hubert_xtralarge_ll60k.pt" | |
| declare -A km_layers | |
| km_layers[base]=9 | |
| km_layers[large]=20 | |
| km_layers[xlarge]=30 | |
| declare -A km_urls | |
| km_urls[base]="https://dl.fbaipublicfiles.com/hubert/hubert_base_ls960_L9_km500.bin" | |
| declare -A km_nunits | |
| km_nunits[base]=500 | |
| test_dir=./examples/hubert/tests | |
| split=sample | |
| echo -e "${test_dir}\n6313-76958-0021.flac\t190800" > "${test_dir}/${split}.tsv" | |
| check_feature () { | |
| echo "checking features..." | |
| size=$1 | |
| ckpt_url=$2 | |
| km_layer=$3 | |
| ckpt_path="$test_dir/$(basename "$ckpt_url")" | |
| if [ ! -f "$ckpt_path" ]; then | |
| echo "downloading $ckpt_url to $ckpt_path" | |
| wget "$ckpt_url" -O "$ckpt_path" | |
| fi | |
| python ./examples/hubert/simple_kmeans/dump_hubert_feature.py \ | |
| "${test_dir}" "${split}" "${ckpt_path}" "${km_layer}" 1 0 "${test_dir}" | |
| if diff -q "${test_dir}/${split}.${size}.L${km_layer}.npy" "${test_dir}/${split}_0_1.npy" &>/dev/null; then | |
| echo "...passed npy check" | |
| else | |
| echo "...failed npy check" | |
| fi | |
| if diff -q "${test_dir}/${split}.${size}.L${km_layer}.len" "${test_dir}/${split}_0_1.len" &>/dev/null; then | |
| echo "...passed len check" | |
| else | |
| echo "...failed len check" | |
| fi | |
| } | |
| check_unit () { | |
| echo "checking units..." | |
| size=$1 | |
| km_url=$2 | |
| km_layer=$3 | |
| km_nunit=$4 | |
| km_path="$test_dir/$(basename "$km_url")" | |
| if [ ! -f "$km_path" ]; then | |
| echo "downloading $km_url to $km_path" | |
| wget "$km_url" -O "$km_path" | |
| fi | |
| python ./examples/hubert/simple_kmeans/dump_km_label.py \ | |
| "${test_dir}" "${split}" "${km_path}" 1 0 "${test_dir}" | |
| if diff -q "${test_dir}/${split}.${size}.L${km_layer}.km${km_nunit}.km" "${test_dir}/${split}_0_1.km" &>/dev/null; then | |
| echo "...passed unit check" | |
| else | |
| echo "...failed unit check" | |
| fi | |
| } | |
| for size in $sizes; do | |
| echo "=== Running unit test for HuBERT $size ===" | |
| check_feature "$size" "${ckpt_urls[$size]}" "${km_layers[$size]}" | |
| if [ -n "${km_urls[$size]}" ]; then | |
| check_unit "$size" "${km_urls[$size]}" "${km_layers[$size]}" "${km_nunits[$size]}" | |
| fi | |
| rm -f $test_dir/${split}_0_1.* | |
| done | |