diff --git a/speachesv3/Chart.yaml b/speachesv3/Chart.yaml index 5c6232bf1..2af17b2cd 100644 --- a/speachesv3/Chart.yaml +++ b/speachesv3/Chart.yaml @@ -15,8 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.1.11 - +version: 1.1.19 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. diff --git a/speachesv3/OlaresManifest.yaml b/speachesv3/OlaresManifest.yaml index 3e224a36e..ff669ba9c 100644 --- a/speachesv3/OlaresManifest.yaml +++ b/speachesv3/OlaresManifest.yaml @@ -7,10 +7,14 @@ metadata: description: OpenAI-compatible TTS/STT server appid: speachesv3 title: Speaches - version: '1.1.11' + version: '1.1.19' categories: - - Utilities_v112 - - AI + - Utilities_v112 + - AI + - models + tags: + - engine + - audio sharedEntrances: - name: speaches host: sharedentrances-speaches @@ -103,11 +107,17 @@ spec: locale: - en-US - zh-CN + - de-DE + - es-ES + - it-IT + - fr-FR + - ja-JP doc: https://speaches.ai/ license: - text: MIT url: https://github.com/speaches-ai/speaches/blob/main/LICENSE upgradeDescription: | + Run the official OpenResty entrance as UID/GID 1000 with writable runtime paths. Switch the reverse-proxy image from Bitnami OpenResty (`beclab/aboveos-bitnami-openresty:1.25.3-2`) to the official OpenResty image `openresty/openresty:1.29.2.5-bookworm-fat`. Align nginx config mounts and log paths with the official image layout (`/etc/nginx/conf.d/default.conf`, `/usr/local/openresty/nginx/logs/...`), and drop Bitnami-specific `OPENRESTY_CONF_FILE` wiring. diff --git a/speachesv3/i18n/de-DE/OlaresManifest.yaml b/speachesv3/i18n/de-DE/OlaresManifest.yaml new file mode 100644 index 000000000..ee124ffe9 --- /dev/null +++ b/speachesv3/i18n/de-DE/OlaresManifest.yaml @@ -0,0 +1,49 @@ +metadata: + title: Speaches + description: OpenAI-kompatibler TTS/STT-Server +spec: + fullDescription: | + Speaches ist ein OpenAI-API-kompatibler Server für Streaming-Transkription, Übersetzung und Spracherzeugung. Speech-to-Text nutzt faster-whisper; für Text-to-Speech kommen piper und Kokoro zum Einsatz. Das Projekt strebt an, Ollama — aber für TTS/STT-Modelle — zu sein. + + **Hauptfunktionen** + - Text-to-Speech mit Kokoro- und Piper-Modellen. + - Speech-to-Text mit faster-whisper für hochwertige Transkription. + - OpenAI-kompatible API (/v1/audio/speech, /v1/audio/transcriptions usw.). + - Eingebaute Gradio-Web-UI für interaktives Testen. + - Eingebautes Terminal für CLI-Modellverwaltung (herunterladen, auflisten, entfernen). + - GPU-Beschleunigung (NVIDIA CUDA) mit CPU-Fallback. + - Shared Entrance für nahtlose Integration mit anderen Olares-Apps. + + **Modellspeicher (App Common, gemeinsam)** + HF-Modelle liegen im gemeinsamen App-Common-Store `appCommon/huggingface`, + gemountet unter dem festen Containerpfad `/cache/hf/hub`. Ein llm-init-Download-only- + Sidecar lädt die vorinstallierten STT/TTS-Modelle in diesen Store; Speaches mountet + denselben Store und wartet, bis beide Modelle vorhanden sind, bevor es startet. + + **Vorinstallierte Modelle** + - Kokoro-82M-v1.0-ONNX (TTS) — leichtgewichtige, hochwertige Sprachsynthese. + - faster-whisper-small (STT) — schnelle und genaue Spracherkennung. + - Weitere Modelle können über den Terminal-Entrance heruntergeladen werden. + + **Nutzung** + - Öffnen Sie die Speaches-UI, um TTS/STT interaktiv über die Gradio-Oberfläche zu testen. + - Nutzen Sie das Terminal, um weitere Modelle von HuggingFace herunterzuladen. + - Andere Olares-Apps können die API über den Shared Entrance oder den API-Entrance aufrufen. + - Die API ist vollständig kompatibel mit OpenAI-SDKs und -Bibliotheken. + upgradeDescription: | + Reverse-Proxy-Image von Bitnami OpenResty (`beclab/aboveos-bitnami-openresty:1.25.3-2`) auf das offizielle OpenResty-Image `openresty/openresty:1.29.2.5-bookworm-fat` umgestellt. + + Nginx-Config-Mounts und Log-Pfade an das Layout des offiziellen Images angeglichen (`/etc/nginx/conf.d/default.conf`, `/usr/local/openresty/nginx/logs/...`), Bitnami-spezifische `OPENRESTY_CONF_FILE`-Verdrahtung entfernt. + + llm-init-Image auf `beclab/llm-init:v1.3.1` angehoben. + + V3-Migration der Shared App Speaches (Engine 0.8.2). + - speachesserver- / speaches-Untercharts zu einem einzigen Chart zusammengeführt. + - Das Engine-Deployment heißt jetzt nach der appid (speachesv3); nginx- + Entrance (speachesingress) und Terminal sind getrennte Workloads, alle über + workloadReplicas deklariert. + - Modelle liegen nun im gemeinsamen App-Common-Store appCommon/huggingface + (festes /cache/hf/hub) statt im pro-Nutzer-Verzeichnis Huggingface/speaches. + - Neues llm-init-Download-only-Sidecar lädt die vorinstallierten STT/TTS- + Modelle in den gemeinsamen Store; die Engine wartet, bis beide vorhanden sind. + - HF-Mirror/Token kommen per valueFrom aus dem System-HF-Konto des Nutzers. diff --git a/speachesv3/i18n/es-ES/OlaresManifest.yaml b/speachesv3/i18n/es-ES/OlaresManifest.yaml new file mode 100644 index 000000000..dbdb1611d --- /dev/null +++ b/speachesv3/i18n/es-ES/OlaresManifest.yaml @@ -0,0 +1,49 @@ +metadata: + title: Speaches + description: Servidor TTS/STT compatible con OpenAI +spec: + fullDescription: | + Speaches es un servidor compatible con la API de OpenAI que admite transcripción, traducción y generación de voz en streaming. Speech-to-Text usa faster-whisper; Text-to-Speech usa piper y Kokoro. El proyecto aspira a ser Ollama, pero para modelos TTS/STT. + + **Características principales** + - Text-to-Speech con modelos Kokoro y Piper. + - Speech-to-Text con faster-whisper para transcripción de alta calidad. + - API compatible con OpenAI (/v1/audio/speech, /v1/audio/transcriptions, etc.). + - Web UI Gradio integrada para pruebas interactivas. + - Terminal integrada para gestión de modelos por CLI (descargar, listar, eliminar). + - Aceleración GPU (NVIDIA CUDA) con respaldo en CPU. + - Entrada compartida para integración fluida con otras apps de Olares. + + **Almacenamiento de modelos (App Common, compartido)** + Los modelos HF viven en el almacén App Common compartido `appCommon/huggingface`, + montado en la ruta fija del contenedor `/cache/hf/hub`. Un sidecar llm-init solo-descarga + obtiene los modelos STT/TTS preinstalados en ese almacén; Speaches monta + el mismo almacén y espera a que ambos modelos estén presentes antes de arrancar. + + **Modelos preinstalados** + - Kokoro-82M-v1.0-ONNX (TTS) — síntesis de voz ligera y de alta calidad. + - faster-whisper-small (STT) — reconocimiento de voz rápido y preciso. + - Se pueden descargar modelos adicionales vía la entrada Terminal. + + **Uso** + - Abra la UI de Speaches para probar TTS/STT interactivamente con Gradio. + - Use el Terminal para descargar más modelos desde HuggingFace. + - Otras apps de Olares pueden llamar a la API vía la entrada compartida o la entrada API. + - La API es totalmente compatible con SDKs y bibliotecas de OpenAI. + upgradeDescription: | + Cambiar la imagen del reverse-proxy de Bitnami OpenResty (`beclab/aboveos-bitnami-openresty:1.25.3-2`) a la imagen oficial OpenResty `openresty/openresty:1.29.2.5-bookworm-fat`. + + Alinear montajes de config nginx y rutas de logs con el layout de la imagen oficial (`/etc/nginx/conf.d/default.conf`, `/usr/local/openresty/nginx/logs/...`), y eliminar el cableado Bitnami `OPENRESTY_CONF_FILE`. + + Subir la imagen llm-init a `beclab/llm-init:v1.3.1`. + + Migración V3 de la app compartida Speaches (motor 0.8.2). + - Subcharts speachesserver / speaches aplanados en un solo chart. + - El Deployment del motor se nombra según el appid (speachesv3); la entrada + nginx (speachesingress) y el terminal son workloads separados, todos declarados + vía workloadReplicas. + - Los modelos viven ahora en el almacén App Common compartido appCommon/huggingface + (/cache/hf/hub fijo), en lugar del directorio por usuario Huggingface/speaches. + - Un nuevo sidecar llm-init solo-descarga descarga los modelos STT/TTS + preinstalados al almacén compartido; el motor espera a que ambos estén presentes. + - Espejo/token HF se obtienen de la cuenta HF del sistema del usuario vía valueFrom. diff --git a/speachesv3/i18n/fr-FR/OlaresManifest.yaml b/speachesv3/i18n/fr-FR/OlaresManifest.yaml new file mode 100644 index 000000000..f05300414 --- /dev/null +++ b/speachesv3/i18n/fr-FR/OlaresManifest.yaml @@ -0,0 +1,49 @@ +metadata: + title: Speaches + description: Serveur TTS/STT compatible OpenAI +spec: + fullDescription: | + Speaches est un serveur compatible API OpenAI prenant en charge la transcription, la traduction et la génération de parole en streaming. Speech-to-Text s'appuie sur faster-whisper ; Text-to-Speech utilise piper et Kokoro. Ce projet vise à être Ollama, mais pour les modèles TTS/STT. + + **Fonctionnalités clés** + - Text-to-Speech avec les modèles Kokoro et Piper. + - Speech-to-Text avec faster-whisper pour une transcription de haute qualité. + - API compatible OpenAI (/v1/audio/speech, /v1/audio/transcriptions, etc.). + - Interface Web Gradio intégrée pour les tests interactifs. + - Terminal intégré pour la gestion CLI des modèles (télécharger, lister, supprimer). + - Accélération GPU (NVIDIA CUDA) avec repli CPU. + - Entrée partagée pour une intégration fluide avec d'autres apps Olares. + + **Stockage des modèles (App Common, partagé)** + Les modèles HF vivent dans le magasin App Common partagé `appCommon/huggingface`, + monté au chemin conteneur fixe `/cache/hf/hub`. Un sidecar llm-init download-only + récupère les modèles STT/TTS préinstallés dans ce magasin ; Speaches monte + le même magasin et attend que les deux modèles soient présents avant de démarrer. + + **Modèles préinstallés** + - Kokoro-82M-v1.0-ONNX (TTS) — synthèse vocale légère et de haute qualité. + - faster-whisper-small (STT) — reconnaissance vocale rapide et précise. + - Des modèles supplémentaires peuvent être téléchargés via l'entrée Terminal. + + **Utilisation** + - Ouvrez l'UI Speaches pour tester TTS/STT interactivement via Gradio. + - Utilisez le Terminal pour télécharger d'autres modèles depuis HuggingFace. + - D'autres apps Olares peuvent appeler l'API via l'entrée partagée ou l'entrée API. + - L'API est pleinement compatible avec les SDK et bibliothèques OpenAI. + upgradeDescription: | + Remplacer l'image reverse-proxy Bitnami OpenResty (`beclab/aboveos-bitnami-openresty:1.25.3-2`) par l'image officielle OpenResty `openresty/openresty:1.29.2.5-bookworm-fat`. + + Aligner les montages de config nginx et les chemins de logs sur le layout de l'image officielle (`/etc/nginx/conf.d/default.conf`, `/usr/local/openresty/nginx/logs/...`), et supprimer le câblage Bitnami `OPENRESTY_CONF_FILE`. + + Mettre à jour l'image llm-init vers `beclab/llm-init:v1.3.1`. + + Migration V3 de l'app partagée Speaches (moteur 0.8.2). + - Sous-charts speachesserver / speaches aplatis en un seul chart. + - Le Deployment du moteur est nommé d'après l'appid (speachesv3) ; l'entrée + nginx (speachesingress) et le terminal sont des workloads séparés, tous déclarés + via workloadReplicas. + - Les modèles vivent désormais dans le magasin App Common partagé appCommon/huggingface + (/cache/hf/hub fixe), remplaçant le répertoire par utilisateur Huggingface/speaches. + - Un nouveau sidecar llm-init download-only télécharge les modèles STT/TTS + préinstallés dans le magasin partagé ; le moteur attend que les deux soient présents. + - Miroir/jeton HF issus du compte HF système de l'utilisateur via valueFrom. diff --git a/speachesv3/i18n/it-IT/OlaresManifest.yaml b/speachesv3/i18n/it-IT/OlaresManifest.yaml new file mode 100644 index 000000000..a4bc42928 --- /dev/null +++ b/speachesv3/i18n/it-IT/OlaresManifest.yaml @@ -0,0 +1,49 @@ +metadata: + title: Speaches + description: Server TTS/STT compatibile OpenAI +spec: + fullDescription: | + Speaches è un server compatibile con l'API OpenAI per trascrizione, traduzione e generazione vocale in streaming. Speech-to-Text usa faster-whisper; Text-to-Speech usa piper e Kokoro. Il progetto punta a essere Ollama, ma per modelli TTS/STT. + + **Funzionalità principali** + - Text-to-Speech con modelli Kokoro e Piper. + - Speech-to-Text con faster-whisper per trascrizione di alta qualità. + - API compatibile OpenAI (/v1/audio/speech, /v1/audio/transcriptions, ecc.). + - Web UI Gradio integrata per test interattivi. + - Terminale integrato per gestione modelli da CLI (download, elenco, rimozione). + - Accelerazione GPU (NVIDIA CUDA) con fallback CPU. + - Entrance condivisa per integrazione fluida con altre app Olares. + + **Archiviazione modelli (App Common, condivisa)** + I modelli HF risiedono nello store App Common condiviso `appCommon/huggingface`, + montato nel percorso fisso del container `/cache/hf/hub`. Un sidecar llm-init solo-download + recupera i modelli STT/TTS preinstallati in quello store; Speaches monta + lo stesso store e attende che entrambi i modelli siano presenti prima di avviarsi. + + **Modelli preinstallati** + - Kokoro-82M-v1.0-ONNX (TTS) — sintesi vocale leggera e di alta qualità. + - faster-whisper-small (STT) — riconoscimento vocale rapido e accurato. + - Ulteriori modelli scaricabili tramite l'entrance Terminal. + + **Utilizzo** + - Apri la UI Speaches per testare TTS/STT interattivamente con Gradio. + - Usa il Terminal per scaricare altri modelli da HuggingFace. + - Altre app Olares possono chiamare l'API tramite entrance condivisa o entrance API. + - L'API è pienamente compatibile con SDK e librerie OpenAI. + upgradeDescription: | + Passaggio dell'immagine reverse-proxy da Bitnami OpenResty (`beclab/aboveos-bitnami-openresty:1.25.3-2`) all'immagine ufficiale OpenResty `openresty/openresty:1.29.2.5-bookworm-fat`. + + Allineati mount della config nginx e percorsi di log al layout dell'immagine ufficiale (`/etc/nginx/conf.d/default.conf`, `/usr/local/openresty/nginx/logs/...`), e rimossa la wiring Bitnami `OPENRESTY_CONF_FILE`. + + Aggiornata l'immagine llm-init a `beclab/llm-init:v1.3.1`. + + Migrazione V3 dell'app condivisa Speaches (motore 0.8.2). + - Sub-chart speachesserver / speaches uniti in un unico chart. + - Il Deployment del motore prende il nome dall'appid (speachesv3); l'entrance + nginx (speachesingress) e il terminal sono workload separati, tutti dichiarati + via workloadReplicas. + - I modelli vivono nello store App Common condiviso appCommon/huggingface + (/cache/hf/hub fisso), al posto della directory per-utente Huggingface/speaches. + - Un nuovo sidecar llm-init solo-download scarica i modelli STT/TTS + preinstallati nello store condiviso; il motore attende che entrambi siano presenti. + - Specchio/token HF provenienti dall'account HF di sistema dell'utente via valueFrom. diff --git a/speachesv3/i18n/ja-JP/OlaresManifest.yaml b/speachesv3/i18n/ja-JP/OlaresManifest.yaml new file mode 100644 index 000000000..0269c92dd --- /dev/null +++ b/speachesv3/i18n/ja-JP/OlaresManifest.yaml @@ -0,0 +1,49 @@ +metadata: + title: Speaches + description: OpenAI 互換 TTS/STT サーバー +spec: + fullDescription: | + Speaches はストリーミング文字起こし、翻訳、音声生成に対応した OpenAI API 互換サーバーです。Speech-to-Text は faster-whisper、Text-to-Speech は piper と Kokoro を使用します。TTS/STT モデル向けの Ollama を目指すプロジェクトです。 + + **主な機能** + - Kokoro および Piper モデルによる Text-to-Speech。 + - faster-whisper による高品質 Speech-to-Text。 + - OpenAI 互換 API(/v1/audio/speech、/v1/audio/transcriptions など)。 + - 対話テスト用の内蔵 Gradio Web UI。 + - CLI モデル管理用の内蔵ターミナル(ダウンロード、一覧、削除)。 + - GPU 加速(NVIDIA CUDA)と CPU フォールバック。 + - 他の Olares アプリとスムーズに連携する共有エントランス。 + + **モデルストレージ(App Common、共有)** + HF モデルは共有クロスアプリ App Common ストア `appCommon/huggingface` にあり、 + 固定コンテナパス `/cache/hf/hub` にマウントされます。llm-init のダウンロード専用 + サイドカーが事前インストール STT/TTS モデルをそのストアへ取得し、Speaches は + 同じストアをマウントして両モデルが揃うまで起動を待ちます。 + + **事前インストールモデル** + - Kokoro-82M-v1.0-ONNX(TTS)— 軽量で高品質な音声合成。 + - faster-whisper-small(STT)— 高速で正確な音声認識。 + - 追加モデルはターミナルエントランスからダウンロード可能。 + + **使い方** + - Speaches UI を開き Gradio で TTS/STT を対話的にテスト。 + - ターミナルで HuggingFace から追加モデルをダウンロード。 + - 他の Olares アプリは共有エントランスまたは API エントランス経由で API を呼び出し可能。 + - API は OpenAI SDK・ライブラリと完全互換。 + upgradeDescription: | + リバースプロキシイメージを Bitnami OpenResty(`beclab/aboveos-bitnami-openresty:1.25.3-2`)から公式 OpenResty イメージ `openresty/openresty:1.29.2.5-bookworm-fat` に切替。 + + nginx 設定マウントとログパスを公式イメージレイアウト(`/etc/nginx/conf.d/default.conf`、`/usr/local/openresty/nginx/logs/...`)に合わせ、Bitnami 固有の `OPENRESTY_CONF_FILE` 配線を削除。 + + llm-init イメージを `beclab/llm-init:v1.3.1` に更新。 + + Speaches の V3 共有アプリ移行(エンジン 0.8.2)。 + - speachesserver / speaches サブチャートを単一チャートに平坦化。 + - エンジン Deployment は appid 名(speachesv3); nginx + エントランス(speachesingress)とターミナルは別ワークロードで、すべて + workloadReplicas 経由で宣言。 + - モデルはユーザーごとの Huggingface/speaches ではなく、共有 App Common + ストア appCommon/huggingface(固定 /cache/hf/hub)に配置。 + - 新しい llm-init ダウンロード専用サイドカーが事前インストール STT/TTS + モデルを共有ストアへ取得; エンジンは両方が揃うまで待機。 + - HF ミラー/トークンは valueFrom でユーザーのシステム HF アカウントから取得。 diff --git a/speachesv3/owners b/speachesv3/owners index d8e1be557..54214d082 100644 --- a/speachesv3/owners +++ b/speachesv3/owners @@ -1,8 +1,3 @@ owners: -- 'LittleLollipop' -- 'TShentu' -- 'hysyeah' -- 'pengpeng' -- 'harveyff' -- 'zdf-org' -- 'lovehunter9' + - username: '@beclab' + title: 'Olares' diff --git a/speachesv3/templates/ingress.yaml b/speachesv3/templates/ingress.yaml index 461f293cd..ba2333f8b 100644 --- a/speachesv3/templates/ingress.yaml +++ b/speachesv3/templates/ingress.yaml @@ -8,9 +8,14 @@ data: nginx.conf: | # Speaches Gradio UI entrance (:8080, main) 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; @@ -93,9 +98,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; @@ -122,9 +132,14 @@ data: # Speaches 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; @@ -189,9 +204,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 @@ -221,6 +247,8 @@ spec: - name: nginx-config mountPath: /etc/nginx/conf.d/default.conf subPath: nginx.conf + - name: nginx-runtime + mountPath: /var/run/openresty --- apiVersion: v1 diff --git a/speachesv3/templates/llm-init.yaml b/speachesv3/templates/llm-init.yaml index a1b3479c1..1f8857785 100644 --- a/speachesv3/templates/llm-init.yaml +++ b/speachesv3/templates/llm-init.yaml @@ -70,7 +70,7 @@ spec: # fetches a single repo, which is why earlier the Kokoro source was # silently skipped). v1.2.3 also has the nullengine download-only path # (empty ENGINE_KIND). - image: docker.io/beclab/llm-init:v1.3.1 + image: docker.io/beclab/llm-init:v1.7.12 imagePullPolicy: IfNotPresent env: # Empty ENGINE_KIND selects download-only mode (nullengine).