# Spracherkennung fuer WhatsApp-Sprachnachrichten (Pilot Dominiak, Schritt 17).
# whisper.cpp (feste Version) + Modell small-q5_1 (Pruefsumme) + ffmpeg. Laeuft OHNE Internet,
# ohne Datenbank und ohne Schluessel im abgeschotteten Netz "stt" — nur der Assistent erreicht ihn.
FROM debian:bookworm-slim AS build
RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates cmake g++ make curl && rm -rf /var/lib/apt/lists/*
WORKDIR /src
RUN git clone --depth 1 --branch v1.9.4 https://github.com/ggml-org/whisper.cpp.git . \
 && test "$(git rev-parse HEAD)" = "927cfce34f31707e17f2bff35c349632fb9e2c3a" \
 && cmake -B build -DCMAKE_BUILD_TYPE=Release -DWHISPER_BUILD_TESTS=OFF -DGGML_NATIVE=OFF -DBUILD_SHARED_LIBS=OFF \
 && cmake --build build --config Release -j 2 --target whisper-server
RUN curl -fsSL -o /model.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small-q5_1.bin \
 && echo "ae85e4a935d7a567bd102fe55afc16bb595bdb618e11b2fc7591bc08120411bb  /model.bin" | sha256sum -c -

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg libgomp1 && rm -rf /var/lib/apt/lists/* \
 && useradd -r -u 10001 stt
COPY --from=build /src/build/bin/whisper-server /usr/local/bin/whisper-server
COPY --from=build /model.bin /models/ggml-small-q5_1.bin
USER stt
WORKDIR /tmp
EXPOSE 8080
CMD ["whisper-server", "-m", "/models/ggml-small-q5_1.bin", "--host", "0.0.0.0", "--port", "8080", "--convert", "-l", "de", "-t", "2"]
