129 lines
4.0 KiB
Plaintext
129 lines
4.0 KiB
Plaintext
_set_default_backend() {
|
|
# Set the default CPU backend based on CPU capabilities
|
|
if grep -q avx512f /proc/cpuinfo 2>/dev/null; then
|
|
ln -sf /usr/lib/voxtype/voxtype-avx512 /usr/bin/voxtype
|
|
echo "avx512"
|
|
else
|
|
ln -sf /usr/lib/voxtype/voxtype-avx2 /usr/bin/voxtype
|
|
echo "avx2"
|
|
fi
|
|
}
|
|
|
|
_preserve_or_set_backend() {
|
|
# Restore saved backend from pre_upgrade, or set default
|
|
local saved="/tmp/.voxtype-backend-upgrade"
|
|
if [ -f "$saved" ]; then
|
|
target=$(cat "$saved")
|
|
rm -f "$saved"
|
|
if [ -f "$target" ]; then
|
|
ln -sf "$target" /usr/bin/voxtype
|
|
echo "${target##*/voxtype-}"
|
|
return
|
|
fi
|
|
fi
|
|
|
|
# No saved state or target gone — set default
|
|
_set_default_backend
|
|
}
|
|
|
|
_detect_gpu() {
|
|
# Detect GPU for acceleration recommendation
|
|
GPU_DETECTED=""
|
|
GPU_VENDOR=""
|
|
if [ -d /dev/dri ]; then
|
|
if ls /dev/dri/renderD* >/dev/null 2>&1; then
|
|
if command -v lspci >/dev/null 2>&1; then
|
|
GPU_INFO=$(lspci 2>/dev/null | grep -i 'vga\|3d\|display' | head -1 | sed 's/.*: //')
|
|
if [ -n "$GPU_INFO" ]; then
|
|
GPU_DETECTED="$GPU_INFO"
|
|
case "$GPU_INFO" in
|
|
*NVIDIA*|*GeForce*|*RTX*|*GTX*) GPU_VENDOR="nvidia" ;;
|
|
*AMD*|*Radeon*) GPU_VENDOR="amd" ;;
|
|
*Intel*) GPU_VENDOR="intel" ;;
|
|
esac
|
|
fi
|
|
fi
|
|
if [ -z "$GPU_DETECTED" ]; then
|
|
GPU_DETECTED="GPU detected (install pciutils for details)"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [ -n "$GPU_DETECTED" ]; then
|
|
echo ""
|
|
echo " GPU detected: $GPU_DETECTED"
|
|
echo ""
|
|
echo " For GPU acceleration, run:"
|
|
echo " sudo voxtype setup gpu --enable"
|
|
echo ""
|
|
if [ "$GPU_VENDOR" = "nvidia" ]; then
|
|
echo " Whisper: requires vulkan-icd-loader"
|
|
echo " ONNX engines: requires cuda package"
|
|
elif [ "$GPU_VENDOR" = "amd" ]; then
|
|
echo " Whisper: requires vulkan-icd-loader"
|
|
echo " ONNX engines: requires rocm-hip-runtime"
|
|
else
|
|
echo " Requires: vulkan-icd-loader package"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
post_install() {
|
|
echo ""
|
|
echo "==> Voxtype Post-installation Steps:"
|
|
echo ""
|
|
|
|
CPU_VARIANT=$(_set_default_backend)
|
|
echo " CPU backend: $CPU_VARIANT (using voxtype-$CPU_VARIANT)"
|
|
|
|
_detect_gpu
|
|
|
|
echo ""
|
|
echo " 1. Add your user to the 'input' group:"
|
|
echo " sudo usermod -aG input \$USER"
|
|
echo ""
|
|
echo " 2. Log out and back in for group changes to take effect"
|
|
echo ""
|
|
echo " 3. Download a model:"
|
|
echo " voxtype setup model"
|
|
echo ""
|
|
echo " 4. Start voxtype:"
|
|
echo " systemctl --user enable --now voxtype"
|
|
echo ""
|
|
echo " Optional: Switch to an ONNX engine (Parakeet, SenseVoice, etc.):"
|
|
echo " voxtype setup onnx --enable"
|
|
echo ""
|
|
}
|
|
|
|
pre_upgrade() {
|
|
# Save the current backend so post_upgrade can restore it
|
|
if [ -L /usr/bin/voxtype ]; then
|
|
readlink /usr/bin/voxtype > /tmp/.voxtype-backend-upgrade
|
|
fi
|
|
}
|
|
|
|
post_upgrade() {
|
|
echo ""
|
|
echo "==> Voxtype upgraded to 0.6.6"
|
|
echo ""
|
|
|
|
BACKEND=$(_preserve_or_set_backend)
|
|
echo " Backend: $BACKEND (using voxtype-$BACKEND)"
|
|
|
|
echo ""
|
|
echo " v0.6.6: Media pause, audio feedback, KDE Plasma support, 7 bug fixes."
|
|
echo " New: pause_media = true pauses music during recording (MPRIS/playerctl)."
|
|
echo " New: audio feedback plays when transcription completes."
|
|
echo " KDE Plasma keybinding docs added to README and user manual."
|
|
echo " Fixes: ydotool on Fedora, eitype paste mode, duplicate notifications,"
|
|
echo " xclip on X11, text replacement ordering, remote initial_prompt."
|
|
echo ""
|
|
echo " Restart the daemon to apply updates:"
|
|
echo " systemctl --user restart voxtype"
|
|
echo ""
|
|
}
|
|
|
|
post_remove() {
|
|
rm -f /usr/bin/voxtype
|
|
}
|