Home » Blog

Whisper AI Docker Container (Updated)

 · 4 Minute · Michael Bäcker

Verwendung Whisper AI mit GUI in einem Docker Container

Docker AI KI Linux

Links zum Artikel

Voraussetzung

Man benötigt hier eine Linux Maschine (oder Windows mit WSL) mit installiertem Docker Service, das Tool docker-compose und ein wenig Festplattenplatz Empfehlen würde ich hier eine GPU, damit die Codierung schnell von statten geht.

Konfiguration des Containers mittels docker-compose.yaml

Die meisten Informationen bekommt man von der Github Seite des Entwicklers.

Am Besten legen wir uns einen neuen Ordner an, in den wir gleich Wechseln:

mkdir whisper-webui
cd whisper-webui

Dort legen wir mit einem favorisierten Editor die Datei "docker-compose.yaml" an.

services:
  app:
    build: .
    image: jhj0517/whisper-webui:latest

    volumes:
      # Update paths to mount models and output paths to your custom paths like this, e.g:
      # - C:/whisper-models/custom-path:/Whisper-WebUI/models
      # - C:/whisper-webui-outputs/custom-path:/Whisper-WebUI/outputs
      - /home/michael/docker/whisper-webui/models:/Whisper-WebUI/models
      - /home/michael/docker/whisper-webui/outputs:/Whisper-WebUI/outputs

    ports:
      - "7860:7860"

    stdin_open: true
    tty: true

    entrypoint: ["python", "app.py", "--server_port", "7860", "--server_name", "0.0.0.0",]

    # If you're not using nvidia GPU, Update device to match yours.
    # See more info at : https://docs.docker.com/compose/compose-file/deploy/#driver
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [ gpu ]

Anschliessend legt man noch die notwendigen Ordner an

mkdir models outputs

Starten des Containers

Alle Befehle bitte in dem Ordner ausführen, in dem auch die Datei docker-compose.yaml steht:

  # um zu sehen ob alles geht
  docker compose up 
  # Für später im "Server Betrieb" in den Hintergrund 
  docker compose up -d
  # Logs des laufenden Containers anzeigen mit:
  docker compose logs -f
  # Container stoppen
  docker compose down

Nun sollte der Container laufen Aufrufen kann man ihn dann in einem Browser mit der URL http://0.0.0.0:7860/

whisper-gui.png

Hier noch ein Vergleich verschiedener Modelle

smallmediumlarge-v3
Größe des Modells auf Festplatte: 464 MByteGröße des Modells auf Festplatte: 1,5 GByteGröße des Modells auf Festplatte: 2,9 GByte
Dauer Konvertierung Demovideo: 0:15 MinutenDauer Konvertierung Demovideo: 0:33 MinutenDauer Konvertierung Demovideo: 1:04 Minuten
111
00:00:00,000 –> 00:00:05,40000:00:00,000 –> 00:00:06,32000:00:00,000 –> 00:00:05,240
Hallo und herzlich willkommen zu einer neuen Folge aus unserer Technikegge.Hallo und herzlich willkommen zu einer neuen Folge aus unserer Technik Ecke. Ich möchteHallo und herzlich willkommen zu einer neuen Folge aus unserer Technik-Ecke.
222
00:00:05,400 –> 00:00:10,64000:00:06,320 –> 00:00:10,76000:00:05,940 –> 00:00:09,360
Ich möchte hier ein bisschen was etablieren und zwar den Donnerstag und zwar der Donnerstaghier ein bisschen was etablieren und zwar den Donnerstag und zwar der Donnerstag sollIch möchte hier ein bisschen was etablieren und zwar den Donnerstag.
333
00:00:05,400 –> 00:00:10,64000:00:10,760 –> 00:00:18,48000:00:09,480 –> 00:00:11,860
soll Dokertag werden.Dokatag werden.Und zwar der Donnerstag soll Dockertag werden.

Update vom 2025-04-25

Man kann diverse Einstellungen auch vorher schon tätigen. Dazu muss eine Datei angelegt werden.

default_parameters.yaml

whisper:
  model_size: medium
  lang: german
  is_translate: false
  beam_size: 5
  log_prob_threshold: -1.0
  no_speech_threshold: 0.6
  compute_type: float16
  best_of: 5
  patience: 1.0
  condition_on_previous_text: true
  prompt_reset_on_temperature: 0.5
  initial_prompt: null
  temperature: 0.0
  compression_ratio_threshold: 2.4
  length_penalty: 1.0
  repetition_penalty: 1.0
  no_repeat_ngram_size: 0
  prefix: null
  suppress_blank: true
  suppress_tokens: '[-1]'
  max_initial_timestamp: 1.0
  word_timestamps: false
  prepend_punctuations: '"''“¿([{-'
  append_punctuations: '"''.。,,!!??::”)]}、'
  max_new_tokens: null
  chunk_length: 30
  hallucination_silence_threshold: null
  hotwords: null
  language_detection_threshold: 0.5
  language_detection_segments: 1
  batch_size: 24
  enable_offload: true
  add_timestamp: false
  file_format: SRT
vad:
  vad_filter: false
  threshold: 0.5
  min_speech_duration_ms: 250
  max_speech_duration_s: 9999
  min_silence_duration_ms: 1000
  speech_pad_ms: 2000
diarization:
  is_diarize: false
  diarization_device: cuda
  hf_token: ''
  enable_offload: true
bgm_separation:
  is_separate_bgm: false
  uvr_model_size: UVR-MDX-NET-Inst_HQ_4
  uvr_device: cuda
  segment_size: 256
  save_file: false
  enable_offload: true
translation:
  deepl:
    api_key: ''
    is_pro: false
    source_lang: Automatic Detection
    target_lang: English
  nllb:
    model_size: facebook/nllb-200-1.3B
    source_lang: null
    target_lang: null
    max_length: 200
  add_timestamp: false

Dann muss man noch die docker-compose.yaml Datei anpassen um einen Eintrag:

services:
  app:
    build: .
    image: jhj0517/whisper-webui:latest

    volumes:
      - /home/michael/docker/whisper-webui/models:/Whisper-WebUI/models
      - /home/michael/docker/whisper-webui/outputs:/Whisper-WebUI/outputs
      - /home/michael/docker/whisper-webui/default_parameters.yaml:/Whisper-WebUI/configs/default_parameters.yaml

    ports:
      - "7860:7860"

    stdin_open: true
    tty: true

    entrypoint: ["python", "app.py", "--server_port", "7860", "--server_name", "0.0.0.0",]

    # If you're not using nvidia GPU, Update device to match yours.
    # See more info at : https://docs.docker.com/compose/compose-file/deploy/#driver
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [ gpu ]