mirror of
https://github.com/cactus-compute/needle.git
synced 2026-10-02 05:04:32 +08:00
* feat: add Echo speech-to-text with word timestamps * fix: rename 'phrases' parameter to 'keywords' in transcribe method for clarity * feat: implement Whistle speech-to-text functionality with WAV support and tests * feat: enhance Whistle audio processing with soxr support and update dependencies * fix: update test_samples_accept_lists_arrays_and_float32_bytes to include numpy array input and clean up test_missing_weights_fail_clearly * fix: update Whistle transcribe method to include additional return fields and adjust tests accordingly * feat: add Whistle speech-to-text and comparison functionality with CLI support * fix: align output formatting in status function and related tests for consistency * feat: implement Whistle speech-to-text and comparison functionality with CLI support * feat: enhance Whistle CLI with fetch and download commands, update library path handling, and improve tests * fix: standardize language argument naming in Whistle CLI and related documentation * feat: enhance audio handling and status reporting in Whistle CLI, add tests for new functionality * feat: restructure Whistle CLI by organizing modules and enhancing functionality with new playground and compare features * refactor: remove test_whistle_playground.py and consolidate tests into test_whistle.py * feat: enhance fetch module to support needle3_whistle engine and update related tests
42 lines
1.0 KiB
Bash
Executable File
42 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
VENV_DIR=".venv"
|
|
|
|
PYTHON=""
|
|
for candidate in python3.12 python3.11 python3.10 python3.9 python3; do
|
|
if command -v "$candidate" >/dev/null 2>&1 && \
|
|
"$candidate" -c "import sys; exit(0 if sys.version_info >= (3, 9) else 1)" 2>/dev/null; then
|
|
PYTHON="$candidate"
|
|
break
|
|
fi
|
|
done
|
|
if [ -z "$PYTHON" ]; then
|
|
echo "Python >= 3.9 is required." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Use uv when available (10-100x faster), fall back to pip.
|
|
UV_INSTALL="pip install"
|
|
UV_VENV="$PYTHON -m venv"
|
|
if command -v uv >/dev/null 2>&1; then
|
|
echo " uv detected — using uv for package management"
|
|
UV_INSTALL="uv pip install"
|
|
UV_VENV="uv venv"
|
|
fi
|
|
|
|
[ -d "$VENV_DIR" ] || $UV_VENV "$VENV_DIR"
|
|
source "$VENV_DIR/bin/activate"
|
|
|
|
if [ "$UV_INSTALL" = "pip install" ]; then
|
|
pip install --upgrade pip -q
|
|
fi
|
|
$UV_INSTALL -e ".[train,whistle]" -q
|
|
|
|
if command -v nvidia-smi >/dev/null 2>&1 && nvidia-smi >/dev/null 2>&1; then
|
|
echo "NVIDIA GPU detected; installing gpu extras..."
|
|
$UV_INSTALL -e ".[gpu]" -q
|
|
fi
|
|
|
|
needle --help
|