From 56d5749592d054c36a8a56b360906202bc555524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Wed, 4 Nov 2026 14:44:16 +0100 Subject: [PATCH] Move Whisper source to home-assistant/app-whisper Keep only the app index metadata in whisper/. Refs #4894 --- .apps.yml | 4 ++ .yamllint | 1 + whisper/Dockerfile | 64 ------------------- whisper/build.yaml | 16 ----- .../s6-rc.d/discovery/dependencies.d/whisper | 0 .../etc/s6-overlay/s6-rc.d/discovery/run | 25 -------- .../etc/s6-overlay/s6-rc.d/discovery/type | 1 - .../etc/s6-overlay/s6-rc.d/discovery/up | 1 - .../s6-rc.d/user/contents.d/discovery | 0 .../s6-rc.d/user/contents.d/whisper | 0 .../s6-rc.d/whisper/dependencies.d/base | 0 .../s6-overlay/s6-rc.d/whisper/down-signal | 1 - .../etc/s6-overlay/s6-rc.d/whisper/finish | 27 -------- .../rootfs/etc/s6-overlay/s6-rc.d/whisper/run | 60 ----------------- .../etc/s6-overlay/s6-rc.d/whisper/type | 1 - 15 files changed, 5 insertions(+), 196 deletions(-) delete mode 100644 whisper/Dockerfile delete mode 100644 whisper/build.yaml delete mode 100644 whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/dependencies.d/whisper delete mode 100755 whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/run delete mode 100644 whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/type delete mode 100755 whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/up delete mode 100644 whisper/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/discovery delete mode 100644 whisper/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/whisper delete mode 100644 whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/dependencies.d/base delete mode 100644 whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/down-signal delete mode 100755 whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/finish delete mode 100755 whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/run delete mode 100644 whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/type diff --git a/.apps.yml b/.apps.yml index 79a6998c8..dd85c24b3 100644 --- a/.apps.yml +++ b/.apps.yml @@ -62,6 +62,10 @@ apps: repository: home-assistant/app-vlc target: vlc image: ghcr.io/home-assistant/app-vlc + whisper: + repository: home-assistant/app-whisper + target: whisper + image: ghcr.io/home-assistant/app-whisper zwave_js: repository: home-assistant/app-zwave-js target: zwave_js diff --git a/.yamllint b/.yamllint index 9e0a9db0c..b404065a3 100644 --- a/.yamllint +++ b/.yamllint @@ -18,4 +18,5 @@ ignore: | /silabs_flasher/config.yaml /ssh/config.yaml /vlc/config.yaml + /whisper/config.yaml /zwave_js/config.yaml diff --git a/whisper/Dockerfile b/whisper/Dockerfile deleted file mode 100644 index aa41ebcb4..000000000 --- a/whisper/Dockerfile +++ /dev/null @@ -1,64 +0,0 @@ -ARG BUILD_FROM -FROM ${BUILD_FROM} - -# Install Whisper -WORKDIR /usr/src -ARG \ - WYOMING_WHISPER_VERSION \ - WYOMING_VERSION \ - TRANSFORMERS_VERSION \ - ONNX_ASR_VERSION \ - FUNASR_VERSION \ - ONNXRUNTIME_VERSION \ - FASTER_WHISPER_VERSION \ - CTRANSLATE2_VERSION \ - SHERPA_ONNX_VERSION \ - TORCH_VERSION - -RUN \ - apt-get update \ - && apt-get install -y --no-install-recommends \ - build-essential \ - libgomp1 \ - netcat-traditional \ - python3 \ - python3-dev \ - python3-pip \ - python3-venv \ - \ - && python3 -m venv .venv \ - && .venv/bin/pip3 install --no-cache-dir -U \ - setuptools \ - wheel \ - && .venv/bin/pip3 install --no-cache-dir \ - "wyoming[zeroconf]==${WYOMING_VERSION}" \ - "wyoming-faster-whisper[sherpa] @ https://github.com/rhasspy/wyoming-faster-whisper/archive/refs/tags/v${WYOMING_WHISPER_VERSION}.tar.gz" \ - "transformers==${TRANSFORMERS_VERSION}" \ - "onnx-asr[cpu,hub]==${ONNX_ASR_VERSION}" \ - "funasr==${FUNASR_VERSION}" \ - "onnxruntime==${ONNXRUNTIME_VERSION}" \ - "faster-whisper==${FASTER_WHISPER_VERSION}" \ - "ctranslate2==${CTRANSLATE2_VERSION}" \ - "sherpa-onnx==${SHERPA_ONNX_VERSION}" \ - \ - && .venv/bin/pip3 install --no-cache-dir \ - --index-url 'https://download.pytorch.org/whl/cpu' \ - "torch==${TORCH_VERSION}" \ - "torchaudio==${TORCH_VERSION}" \ - \ - && apt-get purge -y --auto-remove \ - build-essential \ - python3-dev \ - && rm -rf /var/lib/apt/lists/* - -ENV PATH="/usr/src/.venv/bin:$PATH" - -ENV ORT_DISABLE_TELEMETRY=1 -WORKDIR / -COPY rootfs / - -HEALTHCHECK --start-period=10m --start-interval=5s --interval=30s \ - CMD echo '{ "type": "describe" }' \ - | nc -w 1 localhost 10300 \ - | grep -q "faster-whisper" \ - || exit 1 diff --git a/whisper/build.yaml b/whisper/build.yaml deleted file mode 100644 index 5c6191faf..000000000 --- a/whisper/build.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -build_from: - amd64: ghcr.io/home-assistant/amd64-base-debian:trixie - aarch64: ghcr.io/home-assistant/aarch64-base-debian:trixie -args: - WYOMING_WHISPER_VERSION: 3.5.0 - WYOMING_VERSION: 1.9.0 - # Must match the exact pins of wyoming-faster-whisper - TRANSFORMERS_VERSION: 4.52.4 - ONNX_ASR_VERSION: 0.11.0 - FUNASR_VERSION: 1.4.3 - ONNXRUNTIME_VERSION: 1.29.0 - FASTER_WHISPER_VERSION: 1.2.1 - CTRANSLATE2_VERSION: 4.8.1 - SHERPA_ONNX_VERSION: 1.13.6 - TORCH_VERSION: 2.7.1 diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/dependencies.d/whisper b/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/dependencies.d/whisper deleted file mode 100644 index e69de29bb..000000000 diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/run b/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/run deleted file mode 100755 index 979e7a58a..000000000 --- a/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/run +++ /dev/null @@ -1,25 +0,0 @@ -#!/command/with-contenv bashio -# vim: ft=bash -# shellcheck shell=bash -# ============================================================================== -# Sends discovery information to Home Assistant. -# ============================================================================== -declare config - -# Wait for Whisper to become available -bash -c \ - "until - echo '{ \"type\": \"describe\" }' - > /dev/tcp/localhost/10300; do sleep 0.5; - done" > /dev/null 2>&1 || true; - -config=$(\ - bashio::var.json \ - uri "tcp://$(hostname):10300" \ -) - -if bashio::discovery "wyoming" "${config}" > /dev/null; then - bashio::log.info "Successfully send discovery information to Home Assistant." -else - bashio::log.error "Discovery message to Home Assistant failed!" -fi diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/type b/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/type deleted file mode 100644 index 3d92b15f2..000000000 --- a/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/type +++ /dev/null @@ -1 +0,0 @@ -oneshot \ No newline at end of file diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/up b/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/up deleted file mode 100755 index 31b0a0205..000000000 --- a/whisper/rootfs/etc/s6-overlay/s6-rc.d/discovery/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/s6-rc.d/discovery/run \ No newline at end of file diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/discovery b/whisper/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/discovery deleted file mode 100644 index e69de29bb..000000000 diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/whisper b/whisper/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/whisper deleted file mode 100644 index e69de29bb..000000000 diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/dependencies.d/base b/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/dependencies.d/base deleted file mode 100644 index e69de29bb..000000000 diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/down-signal b/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/down-signal deleted file mode 100644 index d751378e1..000000000 --- a/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/down-signal +++ /dev/null @@ -1 +0,0 @@ -SIGINT diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/finish b/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/finish deleted file mode 100755 index 0bc8d2e7a..000000000 --- a/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/finish +++ /dev/null @@ -1,27 +0,0 @@ -#!/command/with-contenv bashio -# vim: ft=bash -# shellcheck shell=bash -# ============================================================================== -# Take down the S6 supervision tree when service fails -# s6-overlay docs: https://github.com/just-containers/s6-overlay -# ============================================================================== -# shellcheck disable=SC2155 -readonly exit_code_container=$( /run/s6-linux-init-container-results/exitcode - fi - [[ "${exit_code_signal}" -eq 15 ]] && exec /run/s6/basedir/bin/halt -elif [[ "${exit_code_service}" -ne 0 ]]; then - if [[ "${exit_code_container}" -eq 0 ]]; then - echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode - fi - exec /run/s6/basedir/bin/halt -fi \ No newline at end of file diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/run b/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/run deleted file mode 100755 index 87f773664..000000000 --- a/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/run +++ /dev/null @@ -1,60 +0,0 @@ -#!/command/with-contenv bashio -# vim: ft=bash -# shellcheck shell=bash -# ============================================================================== -# Start Whisper service -# ============================================================================== -flags=() - -if [ "$(uname -m)" == "x86_64" ] && ! grep -qw 'avx' /proc/cpuinfo; then - bashio::log.warning "Your CPU does not support Advanced Vector Extensions (AVX). Whisper will run slower than normal." -fi - -model="$(bashio::config 'model')" -stt_library="$(bashio::config 'stt_library')" - -if [ "${model}" = 'custom' ]; then - # Override with custom model - model="$(bashio::config 'custom_model')" - if [ -z "${model}" ]; then - bashio::exit.nok "Custom model is not set" - fi - if [ "${stt_library}" = 'auto' ]; then - # Need to know what kind of custom model - stt_library="$(bashio::config 'custom_model_type')" - fi -elif [ "${model}" != 'auto' ]; then - if [ "${stt_library}" = 'auto' ]; then - # Default to faster whisper if model is selected - stt_library='faster-whisper' - fi -fi - -if bashio::config.true 'sherpa_streaming'; then - flags+=('--sherpa-streaming') -fi - -if bashio::config.true 'vad_clip'; then - flags+=('--vad-clip') -fi - -if bashio::config.true 'local_files_only'; then - flags+=('--local-files-only') -fi - -if bashio::config.true 'debug_logging'; then - flags+=('--debug') -fi - -# shellcheck disable=SC2068 -exec python3 -m wyoming_faster_whisper \ - --uri 'tcp://0.0.0.0:10300' \ - --zeroconf \ - --model "${model}" \ - --stt-library "${stt_library}" \ - --beam-size "$(bashio::config 'beam_size')" \ - --language "$(bashio::config 'language')" \ - --initial-prompt "$(bashio::config 'initial_prompt')" \ - --whisper-task "$(bashio::config 'whisper_task')" \ - --data-dir /data \ - --download-dir /data ${flags[@]} diff --git a/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/type b/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/type deleted file mode 100644 index 1780f9f44..000000000 --- a/whisper/rootfs/etc/s6-overlay/s6-rc.d/whisper/type +++ /dev/null @@ -1 +0,0 @@ -longrun \ No newline at end of file