Links zum Artikel
- Webseite: https://openai.com/index/whisper/
- Docker Container Github Seite: https://github.com/jhj0517/Whisper-WebUI
- Nvidia GPU in Docker Container: https://docs.nvidia.com/ai-enterprise/deployment/vmware/latest/docker.html
- Demo Video: https://www.youtube.com/watch?v=ljbmFnIkFnQ
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/
Hier noch ein Vergleich verschiedener Modelle
small | medium | large-v3 |
---|---|---|
Größe des Modells auf Festplatte: 464 MByte | Größe des Modells auf Festplatte: 1,5 GByte | Größe des Modells auf Festplatte: 2,9 GByte |
Dauer Konvertierung Demovideo: 0:15 Minuten | Dauer Konvertierung Demovideo: 0:33 Minuten | Dauer Konvertierung Demovideo: 1:04 Minuten |
1 | 1 | 1 |
00:00:00,000 –> 00:00:05,400 | 00:00:00,000 –> 00:00:06,320 | 00: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öchte | Hallo und herzlich willkommen zu einer neuen Folge aus unserer Technik-Ecke. |
2 | 2 | 2 |
00:00:05,400 –> 00:00:10,640 | 00:00:06,320 –> 00:00:10,760 | 00:00:05,940 –> 00:00:09,360 |
Ich möchte hier ein bisschen was etablieren und zwar den Donnerstag und zwar der Donnerstag | hier ein bisschen was etablieren und zwar den Donnerstag und zwar der Donnerstag soll | Ich möchte hier ein bisschen was etablieren und zwar den Donnerstag. |
3 | 3 | 3 |
00:00:05,400 –> 00:00:10,640 | 00:00:10,760 –> 00:00:18,480 | 00: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 ]