mirror of
https://github.com/mudler/LocalAI.git
synced 2026-03-31 21:25:59 -04:00
* feat: add fish-speech backend Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * drop portaudio Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
52 lines
1.7 KiB
Bash
52 lines
1.7 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
EXTRA_PIP_INSTALL_FLAGS="--no-build-isolation"
|
|
|
|
backend_dir=$(dirname $0)
|
|
if [ -d $backend_dir/common ]; then
|
|
source $backend_dir/common/libbackend.sh
|
|
else
|
|
source $backend_dir/../common/libbackend.sh
|
|
fi
|
|
|
|
# fish-speech uses pyrootutils which requires a .project-root marker
|
|
touch "${backend_dir}/.project-root"
|
|
|
|
installRequirements
|
|
|
|
# Clone fish-speech source (the pip package doesn't include inference modules)
|
|
FISH_SPEECH_DIR="${EDIR}/fish-speech-src"
|
|
FISH_SPEECH_REPO="https://github.com/fishaudio/fish-speech.git"
|
|
FISH_SPEECH_BRANCH="main"
|
|
|
|
if [ ! -d "${FISH_SPEECH_DIR}" ]; then
|
|
echo "Cloning fish-speech source..."
|
|
git clone --depth 1 --branch "${FISH_SPEECH_BRANCH}" "${FISH_SPEECH_REPO}" "${FISH_SPEECH_DIR}"
|
|
else
|
|
echo "Updating fish-speech source..."
|
|
cd "${FISH_SPEECH_DIR}" && git pull && cd -
|
|
fi
|
|
|
|
# Remove pyaudio from fish-speech deps — it's only used by the upstream client tool
|
|
# (tools/api_client.py) for speaker playback, not by our gRPC backend server.
|
|
# It requires native portaudio libs which aren't available on all build environments.
|
|
sed -i.bak '/"pyaudio"/d' "${FISH_SPEECH_DIR}/pyproject.toml"
|
|
|
|
# Install fish-speech deps from source (without the package itself since we use PYTHONPATH)
|
|
ensureVenv
|
|
if [ "x${USE_PIP}" == "xtrue" ]; then
|
|
pip install ${EXTRA_PIP_INSTALL_FLAGS:-} -e "${FISH_SPEECH_DIR}"
|
|
else
|
|
uv pip install ${EXTRA_PIP_INSTALL_FLAGS:-} -e "${FISH_SPEECH_DIR}"
|
|
fi
|
|
|
|
# fish-speech transitive deps (wandb, tensorboard) may downgrade protobuf to 3.x
|
|
# but our generated backend_pb2.py requires protobuf 5+
|
|
ensureVenv
|
|
if [ "x${USE_PIP}" == "xtrue" ]; then
|
|
pip install "protobuf>=5.29.0"
|
|
else
|
|
uv pip install "protobuf>=5.29.0"
|
|
fi
|