- Add provider-agnostic streaming speech interfaces - Local STT via Sherpa (Zipformer/Paraformer) + Parakeet v3 (offline) - Local TTS via Pocket TTS ONNX (onnxruntime-node) with chunked streaming - Auto-download models into PASEO_HOME and add Node download script - Add E2E download test that round-trips TTS->STT
96 lines
2.5 KiB
Bash
Executable File
96 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Download local speech models for Paseo (sherpa-onnx).
|
|
|
|
Defaults:
|
|
- STT: sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20
|
|
- TTS: kitten-nano-en-v0_1-fp16
|
|
|
|
Usage:
|
|
scripts/speech/download-sherpa-models.sh [--models-dir DIR] [--with-kokoro] [--with-paraformer]
|
|
|
|
Preferred:
|
|
npm run speech:download --workspace=@getpaseo/server
|
|
|
|
Notes:
|
|
- Models are downloaded from the sherpa-onnx GitHub releases.
|
|
- Pocket TTS is downloaded by the Node script (`npm run speech:download --workspace=@getpaseo/server`)
|
|
because it is a file-based HuggingFace model (not a single tarball).
|
|
- Set PASEO_SHERPA_ONNX_MODELS_DIR to override where the daemon looks.
|
|
EOF
|
|
}
|
|
|
|
MODELS_DIR=""
|
|
WITH_KOKORO=0
|
|
WITH_PARAFORMER=0
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--models-dir)
|
|
MODELS_DIR="${2:-}"
|
|
shift 2
|
|
;;
|
|
--with-kokoro)
|
|
WITH_KOKORO=1
|
|
shift 1
|
|
;;
|
|
--with-paraformer)
|
|
WITH_PARAFORMER=1
|
|
shift 1
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown arg: $1" >&2
|
|
usage >&2
|
|
exit 2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "${MODELS_DIR}" ]]; then
|
|
if [[ -n "${PASEO_SHERPA_ONNX_MODELS_DIR:-}" ]]; then
|
|
MODELS_DIR="${PASEO_SHERPA_ONNX_MODELS_DIR}"
|
|
elif [[ -n "${PASEO_HOME:-}" ]]; then
|
|
MODELS_DIR="${PASEO_HOME}/models/sherpa-onnx"
|
|
else
|
|
MODELS_DIR="${HOME}/.paseo/models/sherpa-onnx"
|
|
fi
|
|
fi
|
|
|
|
mkdir -p "${MODELS_DIR}"
|
|
cd "${MODELS_DIR}"
|
|
|
|
download_and_extract() {
|
|
local url="$1"
|
|
local filename
|
|
filename="$(basename "$url")"
|
|
|
|
echo "Downloading ${filename}..."
|
|
curl -fsSL -O "${url}"
|
|
echo "Extracting ${filename}..."
|
|
tar xf "${filename}"
|
|
rm -f "${filename}"
|
|
}
|
|
|
|
echo "NOTE: This script is deprecated. Prefer: npm run speech:download --workspace=@getpaseo/server" >&2
|
|
|
|
download_and_extract "https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2"
|
|
download_and_extract "https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/kitten-nano-en-v0_1-fp16.tar.bz2"
|
|
|
|
if [[ "${WITH_PARAFORMER}" -eq 1 ]]; then
|
|
download_and_extract "https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-paraformer-bilingual-zh-en.tar.bz2"
|
|
fi
|
|
|
|
if [[ "${WITH_KOKORO}" -eq 1 ]]; then
|
|
download_and_extract "https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/kokoro-en-v0_19.tar.bz2"
|
|
fi
|
|
|
|
echo "Done."
|
|
echo "Models dir: ${MODELS_DIR}"
|