From 30e87e9a57d98494d67c1b5c4edac7b6e47b0cf8 Mon Sep 17 00:00:00 2001 From: Haro Date: Tue, 15 Sep 2026 07:22:07 +0000 Subject: [PATCH] [UPDATE][whisperwebuiv3][1.1.20] Run the official OpenResty entrance as UID/GID 1000 with writable runtime paths. --- whisperwebuiv3/Chart.yaml | 2 +- whisperwebuiv3/OlaresManifest.yaml | 14 +++- whisperwebuiv3/i18n/de-DE/OlaresManifest.yaml | 65 +++++++++++++++++++ whisperwebuiv3/i18n/es-ES/OlaresManifest.yaml | 65 +++++++++++++++++++ whisperwebuiv3/i18n/fr-FR/OlaresManifest.yaml | 65 +++++++++++++++++++ whisperwebuiv3/i18n/it-IT/OlaresManifest.yaml | 65 +++++++++++++++++++ whisperwebuiv3/i18n/ja-JP/OlaresManifest.yaml | 65 +++++++++++++++++++ whisperwebuiv3/owners | 9 +-- whisperwebuiv3/templates/server.yaml | 2 +- whisperwebuiv3/templates/whisperwebuiv3.yaml | 40 ++++++++++-- 10 files changed, 375 insertions(+), 17 deletions(-) create mode 100644 whisperwebuiv3/i18n/de-DE/OlaresManifest.yaml create mode 100644 whisperwebuiv3/i18n/es-ES/OlaresManifest.yaml create mode 100644 whisperwebuiv3/i18n/fr-FR/OlaresManifest.yaml create mode 100644 whisperwebuiv3/i18n/it-IT/OlaresManifest.yaml create mode 100644 whisperwebuiv3/i18n/ja-JP/OlaresManifest.yaml diff --git a/whisperwebuiv3/Chart.yaml b/whisperwebuiv3/Chart.yaml index b64128777..3be83f651 100644 --- a/whisperwebuiv3/Chart.yaml +++ b/whisperwebuiv3/Chart.yaml @@ -3,4 +3,4 @@ appVersion: "1.0.7" description: A Web UI for easy subtitle using whisper model name: whisperwebuiv3 type: application -version: 1.1.12 +version: 1.1.20 \ No newline at end of file diff --git a/whisperwebuiv3/OlaresManifest.yaml b/whisperwebuiv3/OlaresManifest.yaml index 4d16bf4a4..a354efc5b 100644 --- a/whisperwebuiv3/OlaresManifest.yaml +++ b/whisperwebuiv3/OlaresManifest.yaml @@ -6,12 +6,15 @@ metadata: description: A Web UI for easy subtitle using whisper model. icon: https://app.cdn.olares.com/appstore/whisperwebui/icon.png appid: whisperwebuiv3 - version: '1.1.12' + version: '1.1.20' title: Whisper-WebUI categories: - AI - Utilities_v112 - + - models + tags: + - audio + - speech-to-text entrances: - name: whisperwebui @@ -105,6 +108,8 @@ spec: Post-processing with speaker diarization using the pyannote model upgradeDescription: | + + Run the official OpenResty entrance as UID/GID 1000 with writable runtime paths. Fix HF cache symlink path (chart 1.1.12). Engine startup used `tr '/' '--'` to build Hugging Face hub dir names, but @@ -127,6 +132,11 @@ spec: locale: - en-US - zh-CN + - de-DE + - es-ES + - it-IT + - fr-FR + - ja-JP doc: https://github.com/jhj0517/Whisper-WebUI license: - text: Apache-2.0 License diff --git a/whisperwebuiv3/i18n/de-DE/OlaresManifest.yaml b/whisperwebuiv3/i18n/de-DE/OlaresManifest.yaml new file mode 100644 index 000000000..f498ab011 --- /dev/null +++ b/whisperwebuiv3/i18n/de-DE/OlaresManifest.yaml @@ -0,0 +1,65 @@ +metadata: + title: Whisper-WebUI + description: Eine Web-UI für einfache Untertitel mit dem Whisper-Modell +spec: + fullDescription: | + **WICHTIGER HINWEIS** + Dies ist eine gemeinsame App. Im gesamten Olares-System wird nur ein Dienst installiert. + + **VORAUSSETZUNGEN** + Konfigurieren Sie **HF_TOKEN** und **HF_ENDPOINT** vor der Installation. Das Admin-Token muss die Bedingungen akzeptiert haben für: + - `pyannote/speaker-diarization-3.1` + - `pyannote/segmentation-3.0` + + llm-init lädt vorab herunter: `Systran/faster-whisper-large-v2`, `pyannote/speaker-diarization-3.1`, `pyannote/segmentation-3.0`. + + **LEISTUNGSHINWEIS** + Die erste Transkription nach der Installation kann spürbar länger dauern, während Modelle in den GPU-Speicher geladen werden; nachfolgende Anfragen sind schneller. + + **ÜBERBLICK** + Eine Gradio-basierte Browseroberfläche für Whisper. Sie können sie als Easy Subtitle Generator nutzen! + + **Funktionen** + Wählen Sie die Whisper-Implementierung, die Sie verwenden möchten, zwischen: + - openai/whisper + - SYSTRAN/faster-whisper (standardmäßig verwendet) + - Vaibhavs10/insanely-fast-whisper + + Untertitel aus verschiedenen Quellen generieren, einschließlich: + - Dateien + - Youtube + - Mikrofon + + Derzeit unterstützte Untertitelformate: + - SRT + - WebVTT + - txt (nur Textdatei ohne Zeitlinie) + + Speech to Text Translation + - Von anderen Sprachen nach Englisch. (Dies ist die End-to-End Speech-to-Text-Übersetzungsfunktion von Whisper) + + Text to Text Translation + - Untertiteldateien mit Facebook NLLB-Modellen übersetzen + - Untertiteldateien mit der DeepL API übersetzen + + Audio-Eingabe mit Silero VAD vorverarbeiten. + + Audio-Eingabe vorverarbeiten, um BGM mit UVR zu trennen. + + Nachbearbeitung mit Sprecher-Diarisierung über das pyannote-Modell + upgradeDescription: | + HF-Cache-Symlink-Pfad korrigieren (Chart 1.1.12). + + Der Engine-Start nutzte `tr '/' '--'`, um Hugging-Face-Hub-Verzeichnisnamen zu bauen, aber + `tr` mappt Zeichen eins zu eins, sodass das zweite `-` entfiel. Die Suche + wurde zu `models--org-repo` statt `models--org--repo`, jeder `link_repo` + verfehlte den Cache, und die Logs zeigten drei `[warn] missing HF cache dir`-Zeilen, + obwohl llm-init die Modelle bereits heruntergeladen hatte. Vorhandener HF-Cache + wird wiederverwendet — dies lädt die Gewichte nicht erneut herunter. + + Änderungsdetails: + - `tr '/' '--'` durch `sed 's|/|--|g'` ersetzen, damit Softlinks unter + `/Whisper-WebUI/models/...` auf die echten HF-Hub-Verzeichnisse zeigen. + + v1.1.11: Leichter `/__entrance_ready`-Probe (kein Gradio-Homepage-GET). + v1.1.10: Reverse-Proxy auf offizielles OpenResty `1.29.2.5-bookworm-fat` umstellen. diff --git a/whisperwebuiv3/i18n/es-ES/OlaresManifest.yaml b/whisperwebuiv3/i18n/es-ES/OlaresManifest.yaml new file mode 100644 index 000000000..2a5224167 --- /dev/null +++ b/whisperwebuiv3/i18n/es-ES/OlaresManifest.yaml @@ -0,0 +1,65 @@ +metadata: + title: Whisper-WebUI + description: Una interfaz web para subtítulos fáciles con el modelo Whisper +spec: + fullDescription: | + **NOTA IMPORTANTE** + Esta es una app compartida. Solo se instalará un servicio en todo el sistema Olares. + + **REQUISITOS PREVIOS** + Configura **HF_TOKEN** y **HF_ENDPOINT** antes de instalar. El token de admin debe haber aceptado los términos de: + - `pyannote/speaker-diarization-3.1` + - `pyannote/segmentation-3.0` + + llm-init precarga: `Systran/faster-whisper-large-v2`, `pyannote/speaker-diarization-3.1`, `pyannote/segmentation-3.0`. + + **NOTA DE RENDIMIENTO** + La primera transcripción tras la instalación puede tardar notablemente más mientras los modelos se cargan en la memoria GPU; las peticiones siguientes son más rápidas. + + **DESCRIPCIÓN GENERAL** + Una interfaz de navegador basada en Gradio para Whisper. ¡Puedes usarla como Easy Subtitle Generator! + + **Funciones** + Elige la implementación de Whisper que quieras usar entre: + - openai/whisper + - SYSTRAN/faster-whisper (usada por defecto) + - Vaibhavs10/insanely-fast-whisper + + Genera subtítulos desde varias fuentes, incluyendo: + - Archivos + - Youtube + - Micrófono + + Formatos de subtítulos actualmente soportados: + - SRT + - WebVTT + - txt (solo archivo de texto sin línea temporal) + + Speech to Text Translation + - De otros idiomas al inglés. (Esta es la función de traducción speech-to-text de extremo a extremo de Whisper) + + Text to Text Translation + - Traducir archivos de subtítulos con modelos Facebook NLLB + - Traducir archivos de subtítulos con la API de DeepL + + Preprocesar la entrada de audio con Silero VAD. + + Preprocesar la entrada de audio para separar el BGM con UVR. + + Postprocesado con diarización de hablantes usando el modelo pyannote + upgradeDescription: | + Corregir la ruta del symlink de la caché HF (chart 1.1.12). + + El arranque del motor usaba `tr '/' '--'` para construir nombres de directorio del hub de Hugging Face, pero + `tr` mapea caracteres uno a uno, así que se perdía el segundo `-`. La búsqueda + pasaba a ser `models--org-repo` en lugar de `models--org--repo`, cada `link_repo` + fallaba la caché, y los logs mostraban tres líneas `[warn] missing HF cache dir` + aunque llm-init ya había descargado los modelos. Se reutiliza la caché HF existente + — esto no vuelve a descargar los pesos. + + Detalles del cambio: + - Sustituir `tr '/' '--'` por `sed 's|/|--|g'` para que los softlinks bajo + `/Whisper-WebUI/models/...` apunten a los directorios reales del hub HF. + + v1.1.11: Sonda ligera `/__entrance_ready` (sin GET de la homepage de Gradio). + v1.1.10: Cambiar el reverse-proxy al OpenResty oficial `1.29.2.5-bookworm-fat`. diff --git a/whisperwebuiv3/i18n/fr-FR/OlaresManifest.yaml b/whisperwebuiv3/i18n/fr-FR/OlaresManifest.yaml new file mode 100644 index 000000000..f3c75489a --- /dev/null +++ b/whisperwebuiv3/i18n/fr-FR/OlaresManifest.yaml @@ -0,0 +1,65 @@ +metadata: + title: Whisper-WebUI + description: Une interface Web pour des sous-titres faciles avec le modèle Whisper +spec: + fullDescription: | + **NOTE IMPORTANTE** + Il s'agit d'une application partagée. Un seul service sera installé sur l'ensemble du système Olares. + + **PRÉREQUIS** + Configurez **HF_TOKEN** et **HF_ENDPOINT** avant l'installation. Le jeton admin doit avoir accepté les conditions pour : + - `pyannote/speaker-diarization-3.1` + - `pyannote/segmentation-3.0` + + llm-init pré-télécharge : `Systran/faster-whisper-large-v2`, `pyannote/speaker-diarization-3.1`, `pyannote/segmentation-3.0`. + + **NOTE DE PERFORMANCE** + La première transcription après l'installation peut prendre nettement plus de temps pendant que les modèles sont chargés en mémoire GPU ; les requêtes suivantes sont plus rapides. + + **APERÇU** + Une interface navigateur basée sur Gradio pour Whisper. Vous pouvez l'utiliser comme Easy Subtitle Generator ! + + **Fonctionnalités** + Choisissez l'implémentation Whisper que vous voulez utiliser parmi : + - openai/whisper + - SYSTRAN/faster-whisper (utilisée par défaut) + - Vaibhavs10/insanely-fast-whisper + + Générer des sous-titres à partir de diverses sources, notamment : + - Fichiers + - Youtube + - Microphone + + Formats de sous-titres actuellement pris en charge : + - SRT + - WebVTT + - txt (fichier texte uniquement sans timeline) + + Speech to Text Translation + - D'autres langues vers l'anglais. (C'est la fonctionnalité de traduction speech-to-text de bout en bout de Whisper) + + Text to Text Translation + - Traduire des fichiers de sous-titres avec les modèles Facebook NLLB + - Traduire des fichiers de sous-titres avec l'API DeepL + + Prétraitement de l'entrée audio avec Silero VAD. + + Prétraitement de l'entrée audio pour séparer le BGM avec UVR. + + Post-traitement avec diarisation des locuteurs via le modèle pyannote + upgradeDescription: | + Corriger le chemin du symlink du cache HF (chart 1.1.12). + + Le démarrage du moteur utilisait `tr '/' '--'` pour construire les noms de répertoires du hub Hugging Face, mais + `tr` mappe les caractères un à un, donc le second `-` était perdu. La recherche + devenait `models--org-repo` au lieu de `models--org--repo`, chaque `link_repo` + manquait le cache, et les logs montraient trois lignes `[warn] missing HF cache dir` + alors que llm-init avait déjà téléchargé les modèles. Le cache HF existant + est réutilisé — cela ne re-télécharge pas les poids. + + Détails du changement : + - Remplacer `tr '/' '--'` par `sed 's|/|--|g'` pour que les softlinks sous + `/Whisper-WebUI/models/...` pointent vers les vrais répertoires du hub HF. + + v1.1.11 : Sonde légère `/__entrance_ready` (pas de GET de la page d'accueil Gradio). + v1.1.10 : Passer le reverse-proxy à l'OpenResty officiel `1.29.2.5-bookworm-fat`. diff --git a/whisperwebuiv3/i18n/it-IT/OlaresManifest.yaml b/whisperwebuiv3/i18n/it-IT/OlaresManifest.yaml new file mode 100644 index 000000000..2c7b59e3c --- /dev/null +++ b/whisperwebuiv3/i18n/it-IT/OlaresManifest.yaml @@ -0,0 +1,65 @@ +metadata: + title: Whisper-WebUI + description: Una Web UI per sottotitoli facili con il modello Whisper +spec: + fullDescription: | + **NOTA IMPORTANTE** + Questa è un'app condivisa. Verrà installato un solo servizio nell'intero sistema Olares. + + **PREREQUISITI** + Configura **HF_TOKEN** e **HF_ENDPOINT** prima dell'installazione. Il token admin deve aver accettato i termini per: + - `pyannote/speaker-diarization-3.1` + - `pyannote/segmentation-3.0` + + llm-init pre-scarica: `Systran/faster-whisper-large-v2`, `pyannote/speaker-diarization-3.1`, `pyannote/segmentation-3.0`. + + **NOTA SULLE PRESTAZIONI** + La prima trascrizione dopo l'installazione può richiedere sensibilmente più tempo mentre i modelli vengono caricati nella memoria GPU; le richieste successive sono più veloci. + + **PANORAMICA** + Un'interfaccia browser basata su Gradio per Whisper. Puoi usarla come Easy Subtitle Generator! + + **Funzionalità** + Seleziona l'implementazione Whisper che vuoi usare tra: + - openai/whisper + - SYSTRAN/faster-whisper (usata di default) + - Vaibhavs10/insanely-fast-whisper + + Genera sottotitoli da varie fonti, tra cui: + - File + - Youtube + - Microfono + + Formati di sottotitoli attualmente supportati: + - SRT + - WebVTT + - txt (solo file di testo senza timeline) + + Speech to Text Translation + - Da altre lingue all'inglese. (Questa è la funzione di traduzione speech-to-text end-to-end di Whisper) + + Text to Text Translation + - Tradurre file di sottotitoli con modelli Facebook NLLB + - Tradurre file di sottotitoli con l'API DeepL + + Pre-elaborazione dell'input audio con Silero VAD. + + Pre-elaborazione dell'input audio per separare il BGM con UVR. + + Post-elaborazione con diarizzazione degli speaker usando il modello pyannote + upgradeDescription: | + Correggere il percorso del symlink della cache HF (chart 1.1.12). + + L'avvio del motore usava `tr '/' '--'` per costruire i nomi delle directory del hub Hugging Face, ma + `tr` mappa i caratteri uno a uno, così il secondo `-` veniva perso. La ricerca + diventava `models--org-repo` invece di `models--org--repo`, ogni `link_repo` + mancava la cache, e i log mostravano tre righe `[warn] missing HF cache dir` + anche se llm-init aveva già scaricato i modelli. La cache HF esistente + viene riutilizzata — questo non riscarica i pesi. + + Dettagli della modifica: + - Sostituire `tr '/' '--'` con `sed 's|/|--|g'` così che i softlink sotto + `/Whisper-WebUI/models/...` puntino alle vere directory del hub HF. + + v1.1.11: Probe leggero `/__entrance_ready` (nessun GET della homepage Gradio). + v1.1.10: Passare il reverse-proxy all'OpenResty ufficiale `1.29.2.5-bookworm-fat`. diff --git a/whisperwebuiv3/i18n/ja-JP/OlaresManifest.yaml b/whisperwebuiv3/i18n/ja-JP/OlaresManifest.yaml new file mode 100644 index 000000000..7814fbbad --- /dev/null +++ b/whisperwebuiv3/i18n/ja-JP/OlaresManifest.yaml @@ -0,0 +1,65 @@ +metadata: + title: Whisper-WebUI + description: Whisper モデルで簡単に字幕を作る Web UI +spec: + fullDescription: | + **重要なお知らせ** + これは共有アプリです。Olares システム全体でインストールされるサービスは 1 つだけです。 + + **前提条件** + インストール前に **HF_TOKEN** と **HF_ENDPOINT** を設定してください。管理トークンは次の利用規約に同意済みである必要があります: + - `pyannote/speaker-diarization-3.1` + - `pyannote/segmentation-3.0` + + llm-init が事前ダウンロード:`Systran/faster-whisper-large-v2`、`pyannote/speaker-diarization-3.1`、`pyannote/segmentation-3.0`。 + + **パフォーマンスに関する注意** + インストール後の最初の文字起こしは、モデルが GPU メモリに読み込まれる間、明らかに時間がかかることがあります;以降のリクエストは高速です。 + + **概要** + Whisper 向けの Gradio ベースのブラウザインターフェース。Easy Subtitle Generator として使えます! + + **機能** + 使用する Whisper 実装を選択: + - openai/whisper + - SYSTRAN/faster-whisper(デフォルト) + - Vaibhavs10/insanely-fast-whisper + + 次を含むさまざまなソースから字幕を生成: + - ファイル + - Youtube + - マイク + + 現在サポートされている字幕形式: + - SRT + - WebVTT + - txt(タイムラインなしのテキストファイルのみ) + + Speech to Text Translation + - 他言語から英語へ。(これは Whisper のエンドツーエンド speech-to-text 翻訳機能です) + + Text to Text Translation + - Facebook NLLB モデルで字幕ファイルを翻訳 + - DeepL API で字幕ファイルを翻訳 + + Silero VAD による音声入力の前処理。 + + UVR で BGM を分離するための音声入力の前処理。 + + pyannote モデルによる話者ダイアライゼーションの後処理 + upgradeDescription: | + HF キャッシュのシンボリックリンクパスを修正(chart 1.1.12)。 + + エンジン起動は Hugging Face hub ディレクトリ名の構築に `tr '/' '--'` を使っていましたが、 + `tr` は文字を一対一で写像するため、2 つ目の `-` が落ちていました。参照は + `models--org--repo` ではなく `models--org-repo` になり、すべての `link_repo` が + キャッシュを見逃し、llm-init がすでにモデルをダウンロード済みでもログに + `[warn] missing HF cache dir` が 3 行出ました。既存の HF キャッシュは + 再利用されます — 重みの再ダウンロードはしません。 + + 変更詳細: + - `tr '/' '--'` を `sed 's|/|--|g'` に置き換え、`/Whisper-WebUI/models/...` + 配下のソフトリンクが実際の HF hub ディレクトリを指すようにする。 + + v1.1.11: 軽量な `/__entrance_ready` プローブ(Gradio ホームページの GET なし)。 + v1.1.10: リバースプロキシを公式 OpenResty `1.29.2.5-bookworm-fat` に切り替え。 diff --git a/whisperwebuiv3/owners b/whisperwebuiv3/owners index 758f2d0ad..54214d082 100644 --- a/whisperwebuiv3/owners +++ b/whisperwebuiv3/owners @@ -1,8 +1,3 @@ owners: -- 'LittleLollipop' -- 'TShentu' -- 'hysyeah' -- 'pengpeng' -- 'harveyff' -- 'zdf-org' -- 'lovehunter9' \ No newline at end of file + - username: '@beclab' + title: 'Olares' diff --git a/whisperwebuiv3/templates/server.yaml b/whisperwebuiv3/templates/server.yaml index c7e4f89fe..ce90c4968 100644 --- a/whisperwebuiv3/templates/server.yaml +++ b/whisperwebuiv3/templates/server.yaml @@ -207,7 +207,7 @@ spec: runAsUser: 0 containers: - name: llm-init - image: docker.io/beclab/llm-init:v1.3.1 + image: docker.io/beclab/llm-init:v1.7.12 imagePullPolicy: IfNotPresent env: - name: ENGINE_KIND diff --git a/whisperwebuiv3/templates/whisperwebuiv3.yaml b/whisperwebuiv3/templates/whisperwebuiv3.yaml index b2aaa7aa4..05a7470e7 100644 --- a/whisperwebuiv3/templates/whisperwebuiv3.yaml +++ b/whisperwebuiv3/templates/whisperwebuiv3.yaml @@ -12,9 +12,14 @@ data: # /__entrance_ready (lightweight) instead of GET / to avoid re-rendering # the Gradio homepage every few seconds while idle. server { + client_body_temp_path /tmp/client_body; + proxy_temp_path /tmp/proxy; + fastcgi_temp_path /tmp/fastcgi; + uwsgi_temp_path /tmp/uwsgi; + scgi_temp_path /tmp/scgi; listen 8080; - access_log /usr/local/openresty/nginx/logs/access.log; - error_log /usr/local/openresty/nginx/logs/error.log; + access_log /dev/stdout; + error_log /dev/stderr; client_max_body_size 500m; proxy_buffering off; @@ -167,9 +172,14 @@ data: # Terminal entrance (:8081) server { + client_body_temp_path /tmp/client_body; + proxy_temp_path /tmp/proxy; + fastcgi_temp_path /tmp/fastcgi; + uwsgi_temp_path /tmp/uwsgi; + scgi_temp_path /tmp/scgi; listen 8081; - access_log /usr/local/openresty/nginx/logs/access.log; - error_log /usr/local/openresty/nginx/logs/error.log; + access_log /dev/stdout; + error_log /dev/stderr; client_max_body_size 10m; proxy_connect_timeout 30s; proxy_send_timeout 300s; @@ -193,9 +203,14 @@ data: # OpenAI-compatible API entrance (:8082) server { + client_body_temp_path /tmp/client_body; + proxy_temp_path /tmp/proxy; + fastcgi_temp_path /tmp/fastcgi; + uwsgi_temp_path /tmp/uwsgi; + scgi_temp_path /tmp/scgi; listen 8082; - access_log /usr/local/openresty/nginx/logs/access.log; - error_log /usr/local/openresty/nginx/logs/error.log; + access_log /dev/stdout; + error_log /dev/stderr; client_max_body_size 500m; proxy_buffering off; proxy_redirect off; @@ -254,9 +269,20 @@ spec: items: - key: nginx.conf path: nginx.conf + - name: nginx-runtime + emptyDir: {} containers: - name: nginx image: "docker.io/openresty/openresty:1.29.2.5-bookworm-fat" + command: + - /usr/local/openresty/bin/openresty + args: + - -g + - "daemon off; pid /tmp/nginx.pid;" + securityContext: + runAsUser: 1000 + runAsGroup: 1000 + ports: - containerPort: 8080 protocol: TCP @@ -291,6 +317,8 @@ spec: - name: nginx-config mountPath: /etc/nginx/conf.d/default.conf subPath: nginx.conf + - name: nginx-runtime + mountPath: /var/run/openresty --- apiVersion: v1