Files
2026-07-13 13:25:10 +08:00

27 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Download pre-converted FunASR GGUF models from Hugging Face — one command, no Python ML env.
# ./download-funasr-model.sh sensevoice [outdir]
# ./download-funasr-model.sh paraformer | nano | fsmn-vad
# ASR models also pull fsmn-vad.gguf (needed for built-in --vad long-audio segmentation).
set -euo pipefail
usage(){ echo "usage: $0 {sensevoice|paraformer|nano|fsmn-vad} [outdir]"; exit 1; }
[ $# -ge 1 ] || usage
MODEL="$1"; OUT="${2:-funasr-gguf}"
case "$MODEL" in
sensevoice) REPO="FunAudioLLM/SenseVoiceSmall-GGUF" ;;
paraformer) REPO="FunAudioLLM/Paraformer-GGUF" ;;
nano) REPO="FunAudioLLM/Fun-ASR-Nano-GGUF" ;;
fsmn-vad|vad) REPO="FunAudioLLM/fsmn-vad-GGUF" ;;
*) usage ;;
esac
# huggingface_hub ships `hf` (new CLI); older versions only have `huggingface-cli` (deprecated). Use whichever exists.
if command -v hf >/dev/null 2>&1; then HF=hf
elif command -v huggingface-cli >/dev/null 2>&1; then HF=huggingface-cli
else echo "need the Hugging Face CLI: pip install -U huggingface_hub"; exit 1; fi
mkdir -p "$OUT"
echo "downloading $REPO ..."; "$HF" download "$REPO" --include "*.gguf" --local-dir "$OUT"
if [ "$MODEL" != "fsmn-vad" ] && [ "$MODEL" != "vad" ]; then
echo "downloading FSMN-VAD (for --vad) ..."; "$HF" download FunAudioLLM/fsmn-vad-GGUF --include "*.gguf" --local-dir "$OUT"
fi
echo "done -> $OUT"; ls -1 "$OUT"/*.gguf