Files
Effi/archive/Perplexity/Bonjour j'ai besoin d'aide pour continuer le proje.md
Folzo 97348e9a12 Add ComfyUI models documentation and download script
- Complete MODELS.md with detailed model descriptions
- Interactive download script for 5+ specialized SDXL models
- Updated README with model selection guide
- Fix docker-compose volumes path (/root/ComfyUI)
- API workflows for OpenWebUI integration

Models documented:
- RealVisXL (portraits)
- Juggernaut XL (versatile)
- DreamShaper (art/fantasy)
- SDXL Lightning (fast)
- Proteus (realism)
2026-04-06 01:05:18 +02:00

192 KiB
Raw Permalink Blame History

Bonjour j'ai besoin d'aide pour continuer le projet Effi, voici les infos :

Projet initial : 📋 CAHIER DES CHARGES - PROJET EFFI v2.0 Assistant IA Personnel Local avec Prise de Notes Intelligente 🎯 OBJECTIFS GÉNÉRAUX Créer une assistante IA locale nommée Effi qui : Gère automatiquement une base de connaissances personnelle (notes) Connaît parfaitement Folzo et son contexte (vie pro + perso) Prend des initiatives autonomes (noter, corriger, enrichir, résumer) Recherche intelligemment dans la mémoire avec compréhension sémantique Accessible partout (desktop + mobile) via reverse proxy sécurisé 💻 INFRASTRUCTURE EXISTANTE Matériel disponible PC Gaming : AMD Ryzen 5800X3D, 32GB RAM, AMD Radeon 7800XT 16GB VRAM NAS Synology : hébergement applications, reverse proxy configuré, nom de domaine Réseau : reverse proxy fonctionnel pour accès externe sécurisé Stack actuelle à faire évoluer Open WebUI (NAS:3000) → WOL Proxy (NAS:3011) → Ollama PC (11434) └─ mcpo (NAS:8000) → siyuan-mcp → SiYuan (NAS:6806) 📝 BESOINS FONCTIONNELS - PRISE DE NOTES Types de contenus à gérer Vie Personnelle : Organisation quotidienne (agenda, tâches) To-do liste personnelle Idées de voyages Liste films/séries à regarder Documentation tests IA et infrastructure perso Journal personnel (optionnel) Vie Professionnelle : Suivi de projets (quelques projets actifs) To-do liste professionnelle Wiki personnel (aide-mémoires techniques, procédures) Notes de réunions/échanges Caractéristiques techniques requises Format : Markdown pur (fichiers .md) → futur-proof et portable Structure : flexible (pas encore d'habitudes établies) Mobilité : accès desktop + mobile (iOS/Android) obligatoire​​ Synchronisation : temps réel ou quasi temps réel entre appareils Sécurité : self-hosted, accessible via reverse proxy existant projet "Effi - Assistante IA Personnelle Locale"

🤖 BESOINS FONCTIONNELS - INTERACTION IA Niveau d'autonomie Maximum souhaité avec confiance : L'IA doit corriger automatiquement (orthographe, formulation, structure) L'IA doit enrichir automatiquement (ajout contexte, liens entre notes) L'IA doit créer des notes spontanément si échange pertinent détecté L'IA doit proposer des améliorations visibles/validables L'IA doit connaître profondément Folzo (préférences, projets, historique) Workflows d'interaction Mode 1 - Prise de note assistée (principal) : Folzo écrit une note brute Effi corrige/améliore en temps réel ou à la demande Validation/ajustement par Folzo Sauvegarde finale Mode 2 - Capture automatique (autonome) : Conversation Folzo ↔ Effi Effi détecte information importante Effi crée note automatiquement (avec notification) Folzo peut consulter/modifier après Mode 3 - Recherche sémantique : Requête en langage naturel : "trouve mes problèmes Docker avec réseau" Effi comprend contexte même sans mots-clés exacts Résultats pertinents avec extraits contextuels 🔍 FONCTIONNALITÉS TECHNIQUES CRITIQUES

  1. Recherche Avancée (RAG Sémantique) Embeddings locaux pour recherche par sens, pas par mots-clés​ Modèle d'embedding : nomic-embed-text ou similaire (léger, performant)​ Vector store : Qdrant ou intégré à l'app de notes​ Compréhension contextuelle : "projets Docker réseau" = trouve notes avec "container networking issues", "bridge problems", etc.​
  2. Mémoire Persistante Multi-Sessions Historique complet conversations Folzo ↔ Effi accessible Base de connaissances sur Folzo enrichie automatiquement Contexte long-terme (projets en cours, préférences, historique décisions)
  3. Synchronisation Multi-Devices Desktop : Linux (Fedora/Bazzite) + Windows si nécessaire Mobile : iOS/Android via app native Sync method : self-hosted, temps réel, sans conflit​
  4. Actions Autonomes Auto-tagging intelligent des notes (par projet, type, urgence) Détection automatique informations à noter Résumés automatiques de conversations longues Création daily notes automatique chaque matin

Proposition Claude sonnet 4.6 :

Voici une évaluation complète des solutions pour Effi v2.0, structurée par composant critique, puis une architecture cible recommandée.

  1. Couche Notes : Quel backend choisir ? C'est la décision la plus structurante car elle conditionne la portabilité, la sync mobile et l'intégration IA. Critère SiYuan (actuel) Obsidian Logseq Format fichiers ❌ .sy (pas du vrai MD) ✅ .md pur ✅ .md App mobile iOS/Android ✅ native ✅ native & stable ⚠️ instable sur mobile Sync self-hosted ✅ intégré ✅ LiveSync + CouchDB ⚠️ Syncthing (complexe) API pour IA/MCP ✅ siyuan-mcp ✅ Local REST API plugin ❌ très limité Futur-proof / portabilité ❌ lock-in format ✅ maximal ✅ bon Écosystème plugins IA Faible ✅ énorme (Adaptive Memory…) Moyen Verdict : Obsidian est le choix optimal pour respecter le cahier des charges. SiYuan ne stocke pas en markdown pur (format .sy propriétaire), ce qui contredit directement l'exigence de futur-proof. Obsidian LiveSync via CouchDB auto-hébergé sur le NAS offre une sync temps réel complète sur iOS, Android et desktop sans aucun service cloud.
  2. Mémoire Persistante & RAG Sémantique C'est le cœur technique d'Effi. Trois approches à comparer : Solution Sémantique Local 100% Complexité Verdict Open WebUI RAG natif ⚠️ partiel (ChromaDB) ✅ Faible Insuffisant pour les besoins mem0 + Qdrant + Ollama ✅ complet ✅ Moyenne ✅ Recommandé pgvector (PostgreSQL) ✅ ✅ Moyenne Alternative viable mem0 + Qdrant est la combinaison idéale : mem0 gère la mémoire multi-sessions avec enrichissement automatique, Qdrant sert de vector store performant, et nomic-embed-text via Ollama génère les embeddings localement. Un serveur MCP pour mem0 existe également et peut s'intégrer dans le pipeline mcpo existant. Il y a quelques bugs connus avec Ollama (réponse mal parsée), mais ils sont documentés et corrigeables.
  3. Orchestration Autonome (le cerveau d'Effi) C'est le composant manquant dans le stack actuel pour les modes 2 et 3 (capture automatique, daily notes, auto-tagging). n8n est le seul outil self-hosted qui combine : agent IA Ollama natif, triggers planifiés, lecture/écriture de fichiers Obsidian, webhooks Open WebUI, et connexion Qdrant — le tout sans code. Il permet de construire exactement les workflows décrits (détection info importante → création note → notification).​
  4. Architecture Cible Recommandée PC GAMING (Ollama) └─ LLM : qwen2.5:14b (raison + génération) └─ Embedding : nomic-embed-text (vecteurs RAG)

NAS SYNOLOGY (containers Docker) ├─ Open WebUI :3000 → Interface chat Effi ├─ WOL Proxy :3011 → (garder existant) ├─ mcpo :8000 → outils MCP (obsidian-local-rest-api) ├─ mem0 :8765 → mémoire persistante Folzo ↔ Effi ├─ Qdrant :6333 → vector store RAG sémantique ├─ n8n :5678 → automatisation autonome ├─ CouchDB :5984 → backend sync Obsidian LiveSync └─ Obsidian Vault (volume partagé .md)

DEVICES ├─ Desktop : Obsidian app + Open WebUI (navigateur) └─ Mobile : Obsidian iOS/Android ← LiveSync → CouchDB

  1. Évaluation par Workflow Fonctionnel Mode 1 – Prise de note assistée : Open WebUI + pipeline Adaptive Memory v2 + mcpo → obsidian-local-rest-api pour lire/écrire les fichiers .md directement depuis le chat.​ Mode 2 – Capture automatique : n8n détecte les conversations Open WebUI via webhook, envoie à un agent Ollama qui juge la pertinence, et écrit la note via l'API Obsidian avec notification.​ Mode 3 – Recherche sémantique : Requête naturelle → Open WebUI → mem0 recherche dans Qdrant par similarité sémantique (nomic-embed-text) → retourne les extraits contextuels.​ Daily notes + auto-tagging : n8n schedule trigger chaque matin → création note journalière dans Obsidian + re-indexation des nouvelles notes dans Qdrant via embedding Ollama. Plan de Migration Déployer CouchDB sur NAS → configurer Obsidian LiveSync (desktop + mobile)​ Migrer les données SiYuan vers Obsidian (export markdown existant dans SiYuan) Déployer Qdrant sur NAS (container Docker, volume persistant) Déployer mem0 configuré avec Ollama + Qdrant + nomic-embed-text Déployer n8n et construire les 3 workflows (capture, daily notes, auto-tagging) Brancher mcpo sur obsidian-local-rest-api plugin (remplace siyuan-mcp) Configurer Open WebUI avec pipeline Adaptive Memory v2 + RAG Knowledge Collection pointant vers le vault Obsidian Charge Système Estimée sur NAS Le NAS reste léger (mem0, Qdrant, n8n, CouchDB sont peu gourmands). Tout le compute lourd (inférence LLM, génération embeddings) reste sur le PC via Ollama, ce qui est parfaitement cohérent avec ton infrastructure. Le 7800XT avec 16GB VRAM peut faire tourner qwen2.5:14b confortablement, laissant de la marge pour nomic-embed-text en parallèle.​

Avancement 1 :

📋 Projet Effi — Documentation complète

🎯 Objectif

Effi est un assistant IA personnel 100% self-hosted, avec :

  • Personnalité joyeuse, mémoire persistante entre sessions
  • Discussion vocale (STT + TTS)
  • Recherche internet (Brave Search)
  • Prise de notes automatique dans AFFiNE
  • Analyse d'images
  • RAG sur fichiers personnels (PDF/DOC depuis Nextcloud)

🖥️ Infrastructure matérielle

Machine IP Rôle CPU/GPU
effi-server 192.168.1.27 Serveur principal Docker Intel J5040 / ~7.6 GB RAM
folzo-Corp (PC gaming) 192.168.1.11 Ollama LLM + STT + TTS AMD Ryzen 5800X3D / RX 7800 XT 16 GB VRAM

🐳 Stack Docker — effi-server (~/effi/docker-compose.yml)

Services actifs

Service Image Port Rôle
open-webui ghcr.io/open-webui/open-webui:main 3000 Interface principale Effi
qdrant qdrant/qdrant 6333-6334 Base vectorielle RAG
couchdb couchdb:3.3 5984 Sync Obsidian LiveSync
n8n n8nio/n8n 5678 Automatisation workflows
mcpo ghcr.io/open-webui/mcpo 8000 Proxy MCP pour outils
wol-proxy effi-wol-proxy (build local) 3011 Wake-on-LAN PC gaming

Fichier .env (~/effi/.env)

text

OLLAMA_HOST=192.168.1.11 PC_GAMING_MAC=XX:XX:XX:XX:XX:XX WEBUI_SECRET_KEY=<clé_aléatoire> COUCHDB_USER=master COUCHDB_PASSWORD=<mot_de_passe> N8N_USER=master N8N_PASSWORD=<mot_de_passe>

wol-proxy

Image buildée localement depuis ~/effi/wol-proxy/ — pinge 192.168.1.11:11434, envoie un magic packet WoL si Ollama ne répond pas.


🎮 Stack Docker — folzo-Corp (~/speaches/docker-compose.yml)

speaches — STT (Speech To Text)

text

services: # ───────────────────────────────────────────────────────── # 1. SPEACHES - Speech To Text (STT) OpenAI-compatible # → [http://192.168.1.11:8200](http://192.168.1.11:8200) # ───────────────────────────────────────────────────────── speaches-stt: image: speaches:rocm-ct2 # image buildée localement (voir ci-dessous) container_name: speaches-stt restart: unless-stopped ports: - "8200:8000" devices: - /dev/kfd - /dev/dri group_add: - "44" # GID video - "991" # GID render security_opt: - seccomp=unconfined environment: - HSA_OVERRIDE_GFX_VERSION=11.0.0 - WHISPER__MODEL=Systran/faster-whisper-large-v3 - WHISPER__LANGUAGE=fr - WHISPER__COMPUTE_TYPE=int8 # float16 non supporté en CPU - WHISPER__DEVICE=cpu # GPU ROCm en cours (rebuild) volumes: - speaches-models:/root/.cache/huggingface speaches-init: image: curlimages/curl:latest container_name: speaches-init restart: "no" depends_on: - speaches-stt entrypoint: > sh -c "sleep 5 && curl -sf -X POST http://speaches-stt:8000/v1/models/Systran%2Ffaster-whisper-large-v3 && echo 'Modèle enregistré'" volumes: speaches-models:

openedai-speech — TTS (Text To Speech) (~/openedai-speech/docker-compose.yml)

text

services: openedai-speech: image: ghcr.io/matatonic/openedai-speech container_name: openedai-speech restart: unless-stopped ports: - "8100:8000" volumes: - ./tts-voices:/app/voices - ./tts-config:/app/config devices: - /dev/kfd - /dev/dri group_add: - "44" # GID video - "991" # GID render environment: - HSA_OVERRIDE_GFX_VERSION=11.0.0 - HIP_VISIBLE_DEVICES=0


⚙️ Configuration Open WebUI

Admin Panel → Settings → Connections

  • Ollama URL : http://192.168.1.11:3011

Admin Panel → Settings → Audio

  • STT Engine : OpenAI
  • STT URL : http://192.168.1.11:8200/v1
  • STT Model : Systran/faster-whisper-large-v3
  • TTS Engine : OpenAI
  • TTS URL : http://192.168.1.11:8100/v1
  • TTS Model : tts-1-hd

Admin Panel → Settings → Documents

  • Embedding Engine : Ollama
  • Embedding Model : bge-m3:latest
  • Vector Database : Qdrant
  • Qdrant URL : http://qdrant:6333​

Modèles Ollama disponibles sur folzo-Corp​

  • qwen2.5:14b — LLM principal d'Effi
  • bge-m3 — Embeddings RAG

Workspace Effi (Open WebUI)

  • Compte admin : master
  • Compte utilisateur : folzo
  • System prompt global configuré avec personnalité + contexte infrastructure​

🔧 Build speaches ROCm — CTranslate2 gfx1100

Problème rencontré

L'image speaches ne publie pas d'image ROCm. Il faut builder manuellement. La RX 7800 XT est gfx1100 mais le Dockerfile par défaut cible gfx1101 → hipErrorInvalidDeviceFunction.

Solution

bash

cd ~/speaches git clone [https://github.com/speaches-ai/speaches](https://github.com/speaches-ai/speaches) . cd src # Corriger l'architecture GPU : gfx1101 → gfx1100 sed -i 's/gfx1101/gfx1100/g' Dockerfile.rocm-ct2 grep gfx Dockerfile.rocm-ct2 # vérification # Build (~50 min la première fois) docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .

Ajout MIOpen (fix cuDNN)​

text

# Dans Dockerfile.rocm-ct2, ajouter dans le cmake : -DWITH_CUDNN=ON -DCUDnn_LIBRARY=/opt/rocm-6.3.4/lib/libMIOpen.so

⚠️ Statut actuel : Le rebuild avec gfx1100 est en cours. speaches fonctionne en CPU (int8) en attendant — ~10s pour 5s d'audio sur le Ryzen 5800X3D.​


🐛 Problèmes rencontrés et solutions

1. wol-proxy — image inexistante

Problème : Image Docker inexistante sur le registry​ Solution : Build local depuis le code Python maison

bash

cd ~/effi && docker compose up -d --build

2. Interface réseau Ubuntu plantée​

Problème : La carte réseau d'effi-server tombe silencieusement Solution : Off/On via NetworkManager

bash

sudo systemctl restart NetworkManager

Fix permanent (pour NIC Intel i225/i226) :

bash

echo 'ACTION=="add", SUBSYSTEM=="net", NAME=="enp3s0", RUN+="/usr/sbin/ethtool -s enp3s0 wol g"' \\ | sudo tee /etc/udev/rules.d/99-disable-net-powersave.rules

3. Whisper — mauvais repo HuggingFace

Problème : Open WebUI envoyait Systeme/faster-whisper-tiny (inexistant) Solution : Corriger dans Settings → Audio → STT Model + changer WHISPER__MODEL dans docker-compose

4. speaches — PRELOAD_MODELS format invalide​

Problème : La variable PRELOAD_MODELS avec un objet JSON crash le conteneur Solution : Supprimer PRELOAD_MODELS entièrement, utiliser un service speaches-init pour enregistrer le modèle via API au démarrage

5. openedai-speech — group render introuvable

Problème : group_add: render échoue car le groupe n'existe pas dans le conteneur Solution : Utiliser les GID numériques "44" et "991" au lieu des noms

6. CTranslate2 float16 sur CPU​

Problème : ValueError: float16 not supported on CPU backend Solution : WHISPER__COMPUTE_TYPE=int8

7. mcpo redémarre en boucle​

Problème : Config mcpo-config/config.json vide au premier démarrage Solution :

bash

cat > ~/effi/mcpo-config/config.json << 'EOF' {"mcpServers": {}} EOF docker compose restart mcpo

8. Open WebUI lent après reboot​

Problème : Conteneurs sans restart: unless-stopped Solution : Ajouter restart: unless-stopped à tous les services du docker-compose


📦 Initialisation CouchDB (une seule fois)

bash

curl -X PUT [http://master:MOT_DE_PASSE@192.168.1.27:5984/_users](http://master:MOT_DE_PASSE@192.168.1.27:5984/_users) curl -X PUT [http://master:MOT_DE_PASSE@192.168.1.27:5984/_replicator](http://master:MOT_DE_PASSE@192.168.1.27:5984/_replicator) curl -X PUT http://master:MOT_DE_PASSE@192.168.1.27:5984/obsidian-livesync


🔌 Ouverture de ports firewall

Sur folzo-Corp (Bazzite/Fedora) :

bash

sudo firewall-cmd --add-port=8200/tcp --permanent # speaches STT sudo firewall-cmd --add-port=8100/tcp --permanent # openedai-speech TTS sudo firewall-cmd --reload


✅ État actuel du pipeline vocal

Étape Status Détail
STT (Whisper) ✅ Fonctionnel speaches CPU, large-v3, ~10s/phrase
LLM (Ollama) ✅ Fonctionnel qwen2.5:14b sur folzo-Corp
TTS (openedai-speech) ✅ Fonctionnel tts-1-hd, ROCm activé
WOL PC gaming ✅ Fonctionnel wol-proxy sur port 3011
RAG Qdrant 🔧 En cours Nextcloud → indexation à configurer

🚧 Prochaines étapes

  • Finaliser le rebuild speaches:rocm-ct2 avec gfx1100 → activer GPU pour STT
  • Configurer le RAG Qdrant avec les fichiers Nextcloud (~1 GB, ~1000 fichiers)
  • Tester mem0 / MCP pour la mémoire persistante d'Effi​
  • Configurer n8n pour les workflows automatiques
  • Sync Obsidian LiveSync sur mobile​

Avancement 2 :

📋 Résumé Complet du Thread


🖥️ Infrastructure

Machine IP Rôle GPU/CPU
folzo-Corp 192.168.1.11 PC gaming / STT+TTS AMD RX 7800 XT (gfx1100)
effi-server 192.168.1.27 Serveur IA principal CPU Intel 4 cores / 7.6GB RAM
PC Gaming Ollama variable LLM Ollama GPU dédié

🎯 Objectif du Thread

Faire tourner Whisper (STT) sur la RX 7800 XT de folzo-Corp via ROCm, en construisant CTranslate2-ROCm depuis les sources (speaches), puis migrer le TTS (openedai-speech) d'effi-server vers folzo-Corp pour libérer le CPU.


🔨 Étapes Réalisées

1. Build CTranslate2-ROCm pour speaches

Problème initial : RuntimeError: Conv1D on GPU currently requires the cuDNN library which is not integrated in this build

Cause : CTranslate2-ROCm compilé sans support MIOpen (équivalent ROCm de cuDNN)

Solution : Dockerfile custom ~/speaches/src/Dockerfile.rocm-ct2 avec :

text

-DWITH_CUDNN=ON -DCUDnn_INCLUDE_DIR=/opt/rocm-6.3.4/include -DCUDnn_LIBRARY=/opt/rocm-6.3.4/lib/libMIOpen.so

Image base : rocm/dev-ubuntu-24.04:6.3.4-complete Source CTranslate2 : github.com/arlo-phoenix/CTranslate2-rocm


2. Erreur Architecture GPU Incorrecte

Problème : RuntimeError: parallel_for failed: hipErrorInvalidDeviceFunction: invalid device function

Cause : Build compilé pour gfx1101 mais la RX 7800 XT est gfx1100

Diagnostic :

bash

docker run --device /dev/kfd --device /dev/dri \\ -e HSA_OVERRIDE_GFX_VERSION=11.0.0 speaches:rocm-ct2 \\ /opt/rocm-6.3.4/bin/rocminfo | grep -E "gfx|Name" # → gfx1100 (AMD Radeon RX 7800 XT)

Fix :

bash

sed -i 's/gfx1101/gfx1100/g' ~/speaches/src/Dockerfile.rocm-ct2 cd ~/speaches/src docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .


3. Transcription fonctionnelle (CPU en attendant rebuild)

Après le premier build, speaches fonctionne en CPU (fallback) :

  • 200 OK sur /v1/audio/transcriptions
  • Langue fr détectée à 99%
  • RTF > 1 (13s pour 5.4s audio) → confirme CPU, pas GPU
  • ONNX Runtime cherche libcublasLt.so.12 (CUDA) → warning non bloquant, fallback CPU automatique

Rebuild avec gfx1100 en cours pour activer l'accélération GPU (~10x plus rapide attendu).


4. Problème réseau effi-server

Symptômes : Interface filaire effi-server plantée après reboot, OpenWebUI inaccessible

Diagnostic :

text

conflict detected for IP address 192.168.1.11 with host 5C:87:9C:65:95:23

Cause : Conflit DHCP — deux machines avec la même IP 192.168.1.11

Fix court terme : nmcli device disconnect enp6s0 && nmcli device connect enp6s0

Fix permanent recommandé : Réservations DHCP par MAC sur le routeur + ethtool wol g pour la carte Realtek RTL8111


5. OpenWebUI lent / erreurs 500

Symptômes : 500: Open WebUI: Server Connection Error, lenteur UI

Diagnostic :

text

ERROR: open_webui.routers.ollama: Connection error

Cause : Ollama inaccessible — le PC gaming était éteint. Le wol-proxy sur effi-server assure le Wake-on-LAN mais le PC n'avait pas répondu à temps.

Architecture WOL :

text

OpenWebUI → port 3011 effi → wol-proxy → WOL magic packet → PC Gaming → proxy TCP vers 11434


6. Deux processus zombies sur effi-server

Détectés via ps aux :

text

[mcpo] <defunct> [python] <defunct>

Fix :

bash

docker restart mcpo


7. Migration openedai-speech → folzo-Corp

Raison : openedai-speech consommait ~100% CPU sur effi-server (1.06GB RAM, CPU intensif)

Étapes :

bash

# Arrêt sur effi docker compose stop openedai-speech && docker compose rm -f openedai-speech # Copie des données depuis folzo-Corp scp -r effi@192.168.1.27:~/effi/tts-voices ~/openedai-speech/ scp -r effi@192.168.1.27:~/effi/tts-config ~/openedai-speech/

Contenu transféré : modèles XTTS (~1.8GB), voix WAV (alloy/echo/nova/shimmer/fable/onyx), modèles ONNX piper, configs YAML

Problème group_add : Unable to find group render: no matching entries in group file

Fix : Utiliser GID numériques au lieu des noms :

text

group_add: - "44" # video - "991" # render


📁 Fichiers Clés

text

folzo-Corp: ├── ~/speaches/ │ ├── src/Dockerfile.rocm-ct2 # Build CTranslate2 gfx1100 + MIOpen │ └── docker-compose.yml # speaches-stt:8200 └── ~/openedai-speech/ ├── docker-compose.yml # TTS ROCm gfx1100 ├── tts-voices/ # Voix XTTS + ONNX └── tts-config/ # voice_to_speaker.yaml etc. effi-server: └── ~/effi/docker-compose.yml # OpenWebUI + WOL + n8n + qdrant...


✅ État Final des Services

Service Hôte Port État Notes
speaches-stt folzo-Corp 8200 ✅ Fonctionne CPU actuellement, rebuild gfx1100 pending
openedai-speech folzo-Corp 8100 ✅ Démarré ROCm gfx1100, group_add 44+991
OpenWebUI effi-server 3000 ✅ Fonctionne Pointé STT+TTS vers 192.168.1.11
wol-proxy effi-server 3011 ✅ Fonctionne Proxy Ollama + WOL PC gaming
n8n effi-server 5678 ✅ Running
qdrant effi-server 6333 ✅ Running Vector store RAG
pipelines effi-server 9099 ✅ Running mem0 memory
couchdb effi-server 5984 ✅ Running Obsidian LiveSync
mcpo effi-server 8000 ⚠️ Zombie détecté Redémarré

🔜 Prochaines Étapes

  1. Finaliser rebuild speaches gfx1100 → activer GPU sur Whisper large-v3
  2. Tester TTS ROCm → vérifier que openedai-speech utilise bien la RX 7800 XT
  3. Mettre à jour l'URL TTS dans OpenWebUI Admin → Audio → http://192.168.1.11:8100
  4. Réservations DHCP sur le routeur pour fixer les IPs de façon permanente
  5. Tester pipeline vocal complet : micro → STT folzo → OpenWebUI effi → LLM Ollama → TTS folzo → speaker

Le probleme est que lorsque je fais un vocal avec Effi ma charge CPU explose entre le llm d'effi, le llm de la memoire, le whisper pour la comprehension et la generation vocal, mon pc et ma 7800xt ne suive pas. Alors j'ai besoin de toi pour faire le point et voire quel solution nous pouvons trouver pour ameliorer ca

Le goulot d'étranglement est clair : ton pipeline vocal empile 4 processus lourds séquentiels sur la même RX 7800 XT, dont deux qui mobilisent le GPU simultanément. Voici l'analyse et le plan d'optimisation par ordre d'impact.

Diagnostic : qui consomme quoi

Composant Modèle actuel CPU/GPU VRAM estimée
STT (speaches) large-v3 sur CPU CPU 100% —
LLM principal qwen2.5:14b GPU ~8.5 GB
TTS (openedai-speech) tts-1-hd = XTTS v2 GPU ~4 GB 1
mem0 mémoire qwen2.5:14b (même modèle) GPU (séquentiel, mais occupe le slot)
Total ~12.5 GB

Le 7800 XT avec 16 GB est donc à ~78% de VRAM occupée au repos entre le LLM et le TTS, sans même compter Whisper sur GPU. Le CPU explose à cause de large-v3 en mode software. Il y a 3 fixes immédiats et 1 optimisation structurelle.


Fix #1 — STT : large-v3-turbo (gain x5 immédiat)

large-v3-turbo a exactement la même précision que large-v3 mais est 5x plus rapide. C'est le fix le plus impactant à faire maintenant, sans changer d'architecture.2

Dans ~/speaches/docker-compose.yml sur folzo-Corp :

environment:
  - WHISPER__MODEL=Systran/faster-whisper-large-v3-turbo  # ← était large-v3
  - WHISPER__COMPUTE_TYPE=int8
  - WHISPER__DEVICE=cpu
docker compose pull speaches-stt && docker compose up -d speaches-stt

Résultat attendu : ~2-3s pour 5s d'audio au lieu de ~10-13s, sur le même CPU.2


Fix #2 — TTS : basculer de XTTS vers Piper (libère 4 GB VRAM)

openedai-speech supporte deux backends : tts-1-hd = XTTS v2 (GPU, ~4 GB VRAM), et tts-1 = Piper (CPU uniquement, très rapide, négligeable en ressources). Piper génère la parole quasi en temps réel sur CPU, la qualité est légèrement inférieure à XTTS mais amplement suffisante pour un usage conversationnel.1 3

Dans Open WebUI Admin → Settings → Audio : → Changer TTS Model de tts-1-hd vers tts-1

Résultat : 4 GB VRAM libérés, le CPU de folzo-Corp reste très peu chargé (Piper est ultra-léger ). Après ce fix, le budget VRAM tombe à ~8.5 GB utilisés.4


Fix #3 — mem0 : modèle dédié léger pour la mémoire

mem0 appelle le LLM pour extraire/stocker les souvenirs — tâche simple qui n'a pas besoin de 14B paramètres. La config mem0 permet de spécifier un modèle séparé :5

# Dans la config mem0 (pipeline Open WebUI ou service dédié)
config = {
    "llm": {
        "provider": "ollama",
        "config": {
            "model": "qwen2.5:3b",        # ← au lieu de qwen2.5:14b
            "ollama_base_url": "http://192.168.1.11:11434"
        }
    },
    "embedder": {
        "provider": "ollama",
        "config": {
            "model": "bge-m3",
            "ollama_base_url": "http://192.168.1.11:11434"
        }
    }
}

Télécharge d'abord le modèle sur folzo-Corp :

ollama pull qwen2.5:3b

qwen2.5:3b occupe ~2 GB VRAM. Avec les fixes #2 et #3, le budget VRAM total devient : 8.5 GB (14b) + 2 GB (3b) = ~10.5 GB, ce qui laisse 5.5 GB libres — suffisamment pour enfin activer Whisper sur GPU (voir étape suivante).


Fix #4 — STT sur GPU (après les fixes #2 et #3)

Une fois 5.5 GB libres, Whisper large-v3-turbo sur GPU ne prend que ~1.5 GB VRAM. Le rebuild speaches ROCm gfx1100 devient utile ici. Avec Piper sur CPU et mem0 sur un 3b :6

VRAM après tous les fixes :
  qwen2.5:14b        → 8.5 GB
  qwen2.5:3b (mem0)  → 2.0 GB
  Whisper large-v3-t → 1.5 GB
  ─────────────────────────────
  Total              → 12.0 GB / 16 GB  ✅ confortable

Plan d'action prioritaire

  1. Maintenant : changer WHISPER__MODEL → large-v3-turbo (restart speaches, 2 min)
  2. Maintenant : changer TTS model → tts-1 dans Open WebUI (instantané)
  3. Après : ollama pull qwen2.5:3b + reconfigurer mem0 pour pointer sur ce modèle
  4. Ensuite : finaliser le rebuild speaches:rocm-ct2 gfx1100 pour passer Whisper sur GPU

Les fixes #1 et #2 seuls devraient diviser par 3-4 la charge ressentie lors d'une conversation vocale, sans aucun impact notable sur la qualité perçue. 7 8 9 10 11 12 13 14 15

⁂

go pour ce plan d'action, je te laisse m'accompagner etape par etape

Parfait, on y va étape par étape. On commence par le Fix #1 — c'est le plus rapide et le gain est immédiat.


Étape 1 — Whisper large-v3-turbo

Sur folzo-Corp, édite le docker-compose de speaches :

nano ~/speaches/docker-compose.yml

Repère la ligne WHISPER__MODEL et remplace :

# Avant
- WHISPER__MODEL=Systran/faster-whisper-large-v3
# Après
- WHISPER__MODEL=Systran/faster-whisper-large-v3-turbo

Puis redémarre le service pour qu'il télécharge le nouveau modèle :

cd ~/speaches && docker compose up -d speaches-stt

Surveille le téléchargement du modèle (environ 1.5 GB) :

docker logs -f speaches-stt

Le conteneur est prêt quand tu vois une ligne indiquant que le modèle est chargé et qu'il écoute.


Pour tester rapidement une fois chargé :

curl -s http://192.168.1.11:8200/v1/audio/transcriptions \
  -F "file=@/un/fichier.wav" \
  -F "model=Systran/faster-whisper-large-v3-turbo" | jq .

Dis-moi ce que tu observes dans les logs, et si la transcription de test fonctionne — on passera ensuite au Fix #2 (basculer TTS vers Piper).


voici le docker compose : "cd ~/speaches && docker compose up -d speaches-stt

" est-ce bon ?


je me suis louper voici le docker compose : "# ═══════════════════════════════════════════════════════════

PC GAMING - Stack STT ROCm

Machine : folzo-Corp (192.168.1.11)

GPU : AMD RX 7800 XT (16 GB VRAM) — ROCm gfx1101

═══════════════════════════════════════════════════════════

services:

─────────────────────────────────────────────────────────

1. SPEACHES - Speech To Text (STT) OpenAI-compatible

→ http://192.168.1.11:8200

→ Utilisé par Open WebUI sur effi-server

─────────────────────────────────────────────────────────

speaches: image: speaches:rocm-ct2 container_name: speaches-stt restart: unless-stopped ports:

  • "8200:8000" devices:
  • /dev/kfd
  • /dev/dri group_add:
  • video security_opt:
  • seccomp=unconfined environment:
  • HSA_OVERRIDE_GFX_VERSION=11.0.0
  • WHISPER__MODEL=Systran/faster-whisper-large-v3-turbo
  • WHISPER__LANGUAGE=fr
  • WHISPER__COMPUTE_TYPE=int8
  • WHISPER__DEVICE=cpu volumes:
  • speaches-models:/root/.cache/huggingface

─────────────────────────────────────────────────────────

2. SPEACHES-INIT - Enregistre le modèle au démarrage

→ S'exécute une fois puis s'arrête

─────────────────────────────────────────────────────────

speaches-init: image: curlimages/curl:latest container_name: speaches-init restart: "no" depends_on:

volumes: speaches-models:

" est-ce bon ?

Presque bon ! Il y a 2 corrections à faire avant de lancer.


Correction 1 — speaches-init pointe encore l'ancien modèle

La ligne du curl dans speaches-init n'a pas été mise à jour. Elle va tenter d'enregistrer large-v3 au lieu de large-v3-turbo :

# ❌ Avant
curl -sf -X POST http://speaches:8000/v1/models/Systran%2Ffaster-whisper-large-v3

# ✅ Après
curl -sf -X POST http://speaches:8000/v1/models/Systran%2Ffaster-whisper-large-v3-turbo

Correction 2 — group_add doit utiliser les GID numériques

Comme on l'a déjà résolu pour openedai-speech, les noms de groupes ne sont pas résolus dans le conteneur ROCm :

# ❌ Avant
group_add:
  - video

# ✅ Après
group_add:
  - "44"    # video
  - "991"   # render

Fichier final corrigé

services:
  speaches:
    image: speaches:rocm-ct2
    container_name: speaches-stt
    restart: unless-stopped
    ports:
      - "8200:8000"
    devices:
      - /dev/kfd
      - /dev/dri
    group_add:
      - "44"
      - "991"
    security_opt:
      - seccomp=unconfined
    environment:
      - HSA_OVERRIDE_GFX_VERSION=11.0.0
      - WHISPER__MODEL=Systran/faster-whisper-large-v3-turbo
      - WHISPER__LANGUAGE=fr
      - WHISPER__COMPUTE_TYPE=int8
      - WHISPER__DEVICE=cpu
    volumes:
      - speaches-models:/root/.cache/huggingface

  speaches-init:
    image: curlimages/curl:latest
    container_name: speaches-init
    restart: "no"
    depends_on:
      - speaches
    entrypoint: >
      sh -c "sleep 5 &&
      curl -sf -X POST http://speaches:8000/v1/models/Systran%2Ffaster-whisper-large-v3-turbo &&
      echo 'Modèle enregistré'"

volumes:
  speaches-models:

Une fois le fichier sauvegardé, lance :

cd ~/speaches && docker compose up -d

Puis surveille les logs :

docker logs -f speaches-stt

Tu devrais voir le téléchargement du modèle large-v3-turbo (~1.5 GB). Dis-moi quand c'est prêt !


Invalid model-index. Not loading eval results into CardData.

2026-02-22 11:50:36,197:WARNING:huggingface_hub.repocard_data:init:368:Invalid model-index. Not loading eval results into CardData. 2026-02-22 11:50:36,303:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=automatic-speech-recognition&search=istupakov%2Fparakeet-tdt&cardData=True HTTP/11" 200 1633 2026-02-22 11:50:36,417:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=onnx&filter=text-to-speech&filter=speaches&filter=piper&cardData=True HTTP/11" 200 63637 2026-02-22 11:50:36,546:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=onnx&filter=text-to-speech&filter=speaches&filter=kokoro&cardData=True HTTP/11" 200 1911 2026-02-22 11:50:36,546:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' not found INFO: 172.18.0.3:36816 - "POST /v1/models/Systran/faster-whisper-large-v3-turbo HTTP/1.1" 404 Not Found 2026-02-22 11:55:36,172:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: 1020a792-24f0-4380-a1c6-a8961d5fc7a9.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="1020a792-24f0-4380-a1c6-a8961d5fc7a9.mp3"'}), size: 27885 2026-02-22 11:55:36,254:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 3.42s of audio in 0.08189s (RTF: 0.023945732459518514) 2026-02-22 11:55:36,254:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 11:55:36,255:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using POST /v1/models INFO: 192.168.1.27:47886 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found 2026-02-22 11:55:36,259:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: 1020a792-24f0-4380-a1c6-a8961d5fc7a9.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="1020a792-24f0-4380-a1c6-a8961d5fc7a9.mp3"'}), size: 27885 2026-02-22 11:55:36,317:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 3.42s of audio in 0.05753s (RTF: 0.01682135614254022) 2026-02-22 11:55:36,317:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 11:55:36,318:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using POST /v1/models INFO: 192.168.1.27:47892 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found 2026-02-22 11:55:55,631:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: 597236d0-11de-45db-8bfc-038ebb55e7c5.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="597236d0-11de-45db-8bfc-038ebb55e7c5.mp3"'}), size: 27885 2026-02-22 11:55:55,702:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 3.42s of audio in 0.07090s (RTF: 0.020731435089619908) 2026-02-22 11:55:55,702:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 11:55:55,703:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using POST /v1/models INFO: 192.168.1.27:50708 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found 2026-02-22 11:55:55,707:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: 597236d0-11de-45db-8bfc-038ebb55e7c5.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="597236d0-11de-45db-8bfc-038ebb55e7c5.mp3"'}), size: 27885 2026-02-22 11:55:55,762:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 3.42s of audio in 0.05481s (RTF: 0.016025735087636914) 2026-02-22 11:55:55,762:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 11:55:55,763:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using POST /v1/models INFO: 192.168.1.27:50712 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found 2026-02-22 11:56:03,959:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: 3a76309e-53f9-409d-a80c-b13a605ae34d.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="3a76309e-53f9-409d-a80c-b13a605ae34d.mp3"'}), size: 6189 2026-02-22 11:56:04,026:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 0.72s of audio in 0.06635s (RTF: 0.09215139444778389) 2026-02-22 11:56:04,026:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 11:56:04,026:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using POST /v1/models INFO: 192.168.1.27:47664 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found 2026-02-22 11:56:04,031:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: 3a76309e-53f9-409d-a80c-b13a605ae34d.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="3a76309e-53f9-409d-a80c-b13a605ae34d.mp3"'}), size: 6189 2026-02-22 11:56:04,080:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 0.72s of audio in 0.04893s (RTF: 0.06796120000621562) 2026-02-22 11:56:04,080:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 11:56:04,080:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using POST /v1/models INFO: 192.168.1.27:47674 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found

Le problème est clair : Systran n'a pas publié de version officielle faster-whisper-large-v3-turbo. Le modèle n'existe pas sous ce nom sur HuggingFace. Il faut utiliser une conversion communautaire en CTranslate2 — deepdml/faster-whisper-large-v3-turbo-ct2.16 17

Correction à appliquer

Deux lignes à changer dans ~/speaches/docker-compose.yml :

services:
  speaches:
    # ...
    environment:
      - WHISPER__MODEL=deepdml/faster-whisper-large-v3-turbo-ct2  # ← corrigé

  speaches-init:
    entrypoint: >
      sh -c "sleep 5 &&
      curl -sf -X POST http://speaches:8000/v1/models/deepdml%2Ffaster-whisper-large-v3-turbo-ct2 &&
      echo 'Modèle enregistré'"

Puis redémarre tout proprement (le modèle en cache large-v3 reste intact, on ajoute juste le nouveau) :

cd ~/speaches
docker compose down
docker compose up -d

Surveille le téléchargement (~800 MB, plus léger que large-v3) :

docker logs -f speaches-stt

Tu devrais voir speaches-init confirmer Modèle enregistré au bout de ~30s, puis speaches-stt être prêt. Dis-moi ce que donnent les logs ! 18 19 20 21 22 23 24 25 26 27 28 29 30

⁂

GNU nano 8.4 /home/folzo/speaches/docker-compose.yml

services: speaches: image: speaches:rocm-ct2 container_name: speaches-stt restart: unless-stopped ports:

  • "8200:8000" devices:
  • /dev/kfd
  • /dev/dri group_add:
  • "44"
  • "991" security_opt:
  • seccomp=unconfined environment:
  • HSA_OVERRIDE_GFX_VERSION=11.0.0
  • WHISPER__MODEL=deepdml/faster-whisper-large-v3-turbo-ct2
  • WHISPER__LANGUAGE=fr
  • WHISPER__COMPUTE_TYPE=int8
  • WHISPER__DEVICE=cpu volumes:
  • speaches-models:/root/.cache/huggingface

speaches-init: entrypoint: > sh -c "sleep 5 && curl -sf -X POST http://speaches:8000/v1/models/deepdml%2Ffaster-whisper-large-v3-turbo-ct2 && echo 'Modèle enregistré'"

volumes: speaches-models:

^Cfolzo@folzo-Corp:~/speachesnano /speaches/docker-compose.yml folzo@folzo-Corp:/speaches$ cd ~/speaches docker compose down docker compose up -d service "speaches-init" has neither an image nor a build context specified: invalid compose project service "speaches-init" has neither an image nor a build context specified: invalid compose project

Le service speaches-init a perdu son champ image pendant l'édition. Voici le fichier complet corrigé :

nano ~/speaches/docker-compose.yml

Remplace tout le contenu par :

services:
  speaches:
    image: speaches:rocm-ct2
    container_name: speaches-stt
    restart: unless-stopped
    ports:
      - "8200:8000"
    devices:
      - /dev/kfd
      - /dev/dri
    group_add:
      - "44"
      - "991"
    security_opt:
      - seccomp=unconfined
    environment:
      - HSA_OVERRIDE_GFX_VERSION=11.0.0
      - WHISPER__MODEL=deepdml/faster-whisper-large-v3-turbo-ct2
      - WHISPER__LANGUAGE=fr
      - WHISPER__COMPUTE_TYPE=int8
      - WHISPER__DEVICE=cpu
    volumes:
      - speaches-models:/root/.cache/huggingface

  speaches-init:
    image: curlimages/curl:latest
    container_name: speaches-init
    restart: "no"
    depends_on:
      - speaches
    entrypoint: >
      sh -c "sleep 5 &&
      curl -sf -X POST http://speaches:8000/v1/models/deepdml%2Ffaster-whisper-large-v3-turbo-ct2 &&
      echo 'Modèle enregistré'"

volumes:
  speaches-models:

Sauvegarde avec Ctrl+O → Entrée → Ctrl+X, puis :

cd ~/speaches && docker compose up -d

encore une erreur :

olzo@folzo-Corp:~/speaches$ docker logs -f speaches-stt 2026-02-22 11:59:59,545:DEBUG:speaches.main:create_app:102:Config: stt_model_ttl=300 tts_model_ttl=300 vad_model_ttl=-1 api_key=None log_level='debug' host='0.0.0.0' port=8000 allow_origins=None enable_ui=True whisper=WhisperConfig(inference_device='auto', device_index=0, compute_type='int8', cpu_threads=0, num_workers=1) loopback_host_url=None chat_completion_base_url='http://localhost:11434/v1' chat_completion_api_key=SecretStr('**********') unstable_ort_opts=OrtOptions(exclude_providers=['TensorrtExecutionProvider'], provider_priority={'CUDAExecutionProvider': 100}, provider_opts={}) otel_exporter_otlp_endpoint=None otel_service_name='speaches' preload_models=[] 2026-02-22 12:00:00,459:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 12:00:00,513:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 12:00:00,631:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0 2026-02-22 12:00:00,760:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0 new 2026-02-22 12:00:00,771:INFO:speaches.main:create_app:202:

To view the gradio web ui of speaches open your browser and visit:

http://localhost:8000/

INFO: Started server process [1] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) 2026-02-22 12:00:01,198:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 12:00:01,198:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 12:00:01,320:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 12:00:01,320:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 12:00:02,520:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 12:00:02,714:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=ctranslate2&filter=automatic-speech-recognition&cardData=True HTTP/11" 200 244215 Invalid model-index. Not loading eval results into CardData. 2026-02-22 12:00:02,846:WARNING:huggingface_hub.repocard_data:init:368:Invalid model-index. Not loading eval results into CardData. 2026-02-22 12:00:02,972:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873 2026-02-22 12:00:02,974:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 12:00:02,976:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 12:00:02,978:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 12:00:02,978:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 12:00:03,079:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/model.bin HTTP/11" 302 0 2026-02-22 12:00:03,079:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/config.json HTTP/11" 307 0 2026-02-22 12:00:03,085:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311507184 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 12:00:03,085:DEBUG:filelock:acquire:334:Lock 131631311507184 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 12:00:03,094:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/config.json HTTP/11" 200 0 2026-02-22 12:00:03,095:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311513904 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0351d1d6870005e865747b781b5d7c23ea0459cd.lock 2026-02-22 12:00:03,095:DEBUG:filelock:acquire:334:Lock 131631311513904 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0351d1d6870005e865747b781b5d7c23ea0459cd.lock 2026-02-22 12:00:03,128:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/tokenizer.json HTTP/11" 307 0 2026-02-22 12:00:03,131:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/vocabulary.json HTTP/11" 307 0 2026-02-22 12:00:03,143:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/tokenizer.json HTTP/11" 200 0 2026-02-22 12:00:03,143:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311512464 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/17456db595adc78a973f97d69d8cb50bc87c0b1c.lock 2026-02-22 12:00:03,143:DEBUG:filelock:acquire:334:Lock 131631311512464 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/17456db595adc78a973f97d69d8cb50bc87c0b1c.lock 2026-02-22 12:00:03,146:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/vocabulary.json HTTP/11" 200 0 2026-02-22 12:00:03,146:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311512944 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0adcd01e7c237205d593b707e66dd5d7bc785d2d.lock 2026-02-22 12:00:03,146:DEBUG:filelock:acquire:334:Lock 131631311512944 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0adcd01e7c237205d593b707e66dd5d7bc785d2d.lock 2026-02-22 12:00:03,155:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/README.md HTTP/11" 307 0 2026-02-22 12:00:03,183:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/preprocessor_config.json HTTP/11" 307 0 2026-02-22 12:00:03,194:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/config.json HTTP/11" 200 None 2026-02-22 12:00:03,195:DEBUG:filelock:release:364:Attempting to release lock 131631311513904 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0351d1d6870005e865747b781b5d7c23ea0459cd.lock 2026-02-22 12:00:03,195:DEBUG:filelock:release:367:Lock 131631311513904 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0351d1d6870005e865747b781b5d7c23ea0459cd.lock 2026-02-22 12:00:03,196:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/xet-read-token/4df90f75321148c3a29a9e2351b7ddf8f5b115a8 HTTP/11" 200 365 2026-02-22 12:00:03,198:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/preprocessor_config.json HTTP/11" 200 0 2026-02-22 12:00:03,198:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311506848 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/931c77a740890c46365c7ae0c9d350ba3cca908f.lock 2026-02-22 12:00:03,198:DEBUG:filelock:acquire:334:Lock 131631311506848 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/931c77a740890c46365c7ae0c9d350ba3cca908f.lock 2026-02-22 12:00:03,243:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/tokenizer.json HTTP/11" 200 None 2026-02-22 12:00:03,248:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/vocabulary.json HTTP/11" 200 None 2026-02-22 12:00:03,254:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/README.md HTTP/11" 200 0 2026-02-22 12:00:03,255:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311404352 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/fb53844bcca20e84e58c86859351b0af33771b87.lock 2026-02-22 12:00:03,255:DEBUG:filelock:acquire:334:Lock 131631311404352 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/fb53844bcca20e84e58c86859351b0af33771b87.lock 2026-02-22 12:00:03,286:DEBUG:filelock:release:364:Attempting to release lock 131631311512944 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0adcd01e7c237205d593b707e66dd5d7bc785d2d.lock 2026-02-22 12:00:03,286:DEBUG:filelock:release:367:Lock 131631311512944 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0adcd01e7c237205d593b707e66dd5d7bc785d2d.lock 2026-02-22 12:00:03,299:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/preprocessor_config.json HTTP/11" 200 340 2026-02-22 12:00:03,300:DEBUG:filelock:release:364:Attempting to release lock 131631311506848 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/931c77a740890c46365c7ae0c9d350ba3cca908f.lock 2026-02-22 12:00:03,300:DEBUG:filelock:release:367:Lock 131631311506848 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/931c77a740890c46365c7ae0c9d350ba3cca908f.lock 2026-02-22 12:00:03,300:DEBUG:filelock:release:364:Attempting to release lock 131631311512464 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/17456db595adc78a973f97d69d8cb50bc87c0b1c.lock 2026-02-22 12:00:03,300:DEBUG:filelock:release:367:Lock 131631311512464 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/17456db595adc78a973f97d69d8cb50bc87c0b1c.lock 2026-02-22 12:00:03,357:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/README.md HTTP/11" 200 None 2026-02-22 12:00:03,358:DEBUG:filelock:release:364:Attempting to release lock 131631311404352 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/fb53844bcca20e84e58c86859351b0af33771b87.lock 2026-02-22 12:00:03,358:DEBUG:filelock:release:367:Lock 131631311404352 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/fb53844bcca20e84e58c86859351b0af33771b87.lock 2026-02-22 12:00:17,998:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: c557b30f-5a36-4f95-8a19-2180897c60ea.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="c557b30f-5a36-4f95-8a19-2180897c60ea.mp3"'}), size: 45165 2026-02-22 12:00:18,106:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 5.58s of audio in 0.10827s (RTF: 0.01940251379999863) 2026-02-22 12:00:18,107:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 12:00:18,107:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using POST /v1/models INFO: 192.168.1.27:53486 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found 2026-02-22 12:00:18,112:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: c557b30f-5a36-4f95-8a19-2180897c60ea.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="c557b30f-5a36-4f95-8a19-2180897c60ea.mp3"'}), size: 45165 2026-02-22 12:00:18,181:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 5.58s of audio in 0.06847s (RTF: 0.01227030716826021) 2026-02-22 12:00:18,181:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 12:00:18,181:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using POST /v1/models INFO: 192.168.1.27:53496 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found 2026-02-22 12:00:32,620:DEBUG:filelock:release:364:Attempting to release lock 131631311507184 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 12:00:32,620:DEBUG:filelock:release:367:Lock 131631311507184 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock Fetching 6 files: 100%|██████████| 6/6 [00:29<00:00, 4.94s/it] INFO: 172.18.0.3:55182 - "POST /v1/models/deepdml/faster-whisper-large-v3-turbo-ct2 HTTP/1.1" 200 OK

Tout se passe bien ! Voici ce que les logs indiquent :

  • ✅ Modèle téléchargé : Fetching 6 files: 100% en 29 secondes
  • ✅ speaches-init a enregistré le modèle : POST /v1/models/deepdml/faster-whisper-large-v3-turbo-ct2 → 200 OK
  • ⚠️ Les erreurs 404 en cours de route viennent d'Open WebUI qui cherchait encore l'ancien nom Systran/faster-whisper-large-v3-turbo — c'est normal, il faut mettre à jour la config

Action : mettre à jour Open WebUI

Dans l'interface Open WebUI sur effi-server :

Admin Panel → Settings → Audio → STT Model

# Avant
Systran/faster-whisper-large-v3

# Après
deepdml/faster-whisper-large-v3-turbo-ct2

Sauvegarde, puis teste une transcription vocale dans Effi.

Dans les logs speaches, tu devrais maintenant voir apparaître un bloc du type :

Transcribing audio...
RTF: 0.0X  ← doit être < 0.5 (beaucoup plus rapide qu'avant)

Dis-moi le RTF que tu observes — ça confirmera le gain de vitesse — et on passera au Fix #2 (basculer TTS sur Piper pour libérer 4 GB VRAM).


Fix #2 — Basculer TTS vers Piper (libère 4 GB VRAM)

C'est le fix le plus simple, tout se passe dans Open WebUI.

Admin Panel → Settings → Audio → TTS Model

# Avant
tts-1-hd   ← XTTS v2, ~4 GB VRAM sur la 7800 XT

# Après
tts-1      ← Piper, tourne sur CPU, quasi aucune ressource

Sauvegarde. C'est tout — pas de redémarrage de conteneur nécessaire.


Ce que ça change concrètement

Avant Après
TTS backend XTTS v2 (GPU) Piper (CPU)
VRAM consommée ~4 GB ~0 GB
Qualité voix Très naturelle Correcte, légèrement synthétique
Latence génération ~2-3s ~0.3s (quasi instantané)

La qualité Piper est un cran en dessous d'XTTS, mais la latence est bien meilleure pour un usage conversationnel. Si la qualité vocale te manque vraiment, on pourra revenir à tts-1-hd une fois le budget VRAM optimisé avec le Fix #3.


Dis-moi quand c'est fait, on attaquera le Fix #3 — configurer mem0 pour utiliser qwen2.5:3b au lieu du 14b pour les opérations mémoire.


la configuration est bonne ? :

L'image est très petite et difficile à lire en détail. Les deux points clés à vérifier :

✅ Ce qui doit être configuré :

Champ Valeur attendue
STT Engine OpenAI
STT URL http://192.168.1.11:8200/v1
STT Model deepdml/faster-whisper-large-v3-turbo-ct2
TTS Engine OpenAI
TTS URL http://192.168.1.11:8100/v1
TTS Model tts-1

Peux-tu confirmer que ces valeurs correspondent à ce que tu vois à l'écran ? En particulier :

  • Le STT Model est bien deepdml/faster-whisper-large-v3-turbo-ct2 (et non l'ancien Systran/...) ?
  • Le TTS Model est bien tts-1 (et non tts-1-hd) ?

Si tout est bon, on passe au Fix #3 — mem0 avec qwen2.5:3b. 31

⁂

et la voix est reglé sur alloy c'est la bonne ?

Oui, alloy fonctionne avec tts-1 (Piper). C'est un bon choix pour commencer.

Une petite nuance à avoir en tête : avec tts-1-hd (XTTS), les voix utilisaient les fichiers WAV que tu avais dans tts-voices/ comme référence de clonage vocal. Avec tts-1 (Piper), alloy pointe vers un modèle ONNX anglais — ça fonctionnera en français mais avec une légère "sonorité anglophone" possible sur certains mots.

Si la voix te semble trop robotique ou mal accentuée en français, on pourra plus tard configurer une voix Piper française native (ex : fr_FR-upmc-medium). Mais pour l'instant c'est largement suffisant pour valider le pipeline.


Fix #2 est terminé ✅

Récap de ce qu'on a fait :

  • ✅ Fix #1 — STT : large-v3-turbo-ct2 (CPU beaucoup plus rapide)
  • ✅ Fix #2 — TTS : tts-1 Piper (libère ~4 GB VRAM)

Fix #3 — mem0 avec qwen2.5:3b

On attaque la partie la plus impactante sur le GPU. D'abord, télécharge le petit modèle sur folzo-Corp :

ollama pull qwen2.5:3b

Pendant ce temps, montre-moi comment mem0 est configuré actuellement — soit le fichier de config, soit le pipeline Open WebUI qui l'utilise. C'est sur effi-server, probablement dans ~/effi/ ou dans les pipelines Open WebUI.


ok parfait, mais j'ai toujours un probleme mon gpu touurne a fon longtemps apres avoir demander quelque chose a effi, est-ce normal comment voir ce qui demande du gpu ?

GPU à 100% longtemps après une requête, c'est anormal. La VRAM à 8.93 GB correspond au modèle qwen2.5:14b chargé — c'est normal. Mais le 100% d'utilisation persistant pointe vers un process qui tourne encore. Il faut identifier lequel.

Diagnostic en temps réel

Sur folzo-Corp, ouvre deux terminaux :

Terminal 1 — identifier le process GPU :

watch -n 1 rocm-smi --showpidgpus

Terminal 2 — voir ce que font les conteneurs Docker :

docker stats

Terminal 3 — logs Ollama (tourne en natif sur folzo-Corp) :

journalctl -u ollama -f --no-pager
# ou si lancé manuellement :
ollama ps

Les coupables les plus probables

Process Signe dans les logs Pourquoi ça dure
Ollama (qwen2.5:14b) ollama ps montre le modèle actif mem0 déclenche un 2ème appel LLM après la réponse
openedai-speech Conteneur à >50% CPU/GPU dans docker stats Génère l'audio XTTS en post-traitement
bge-m3 embeddings Pic GPU après la réponse Open WebUI indexe la conversation dans Qdrant

Lance ces commandes pendant qu'Effi "refroidit" et dis-moi ce que rocm-smi --showpidgpus et ollama ps affichent — on identifiera le coupable précis. 32

⁂

eral.languages arr[str,1] = ["en"]

févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 15: qwen2.block_count u32 = 36 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 16: qwen2.context_length u32 = 32768 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 17: qwen2.embedding_length u32 = 2048 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 18: qwen2.feed_forward_length u32 = 11008 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 19: qwen2.attention.head_count u32 = 16 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 20: qwen2.attention.head_count_kv u32 = 2 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 21: qwen2.rope.freq_base f32 = 1000000.000000 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 22: qwen2.attention.layer_norm_rms_epsilon f32 = 0.000001 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 23: general.file_type u32 = 15 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 24: tokenizer.ggml.model str = gpt2 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 25: tokenizer.ggml.pre str = qwen2 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 26: tokenizer.ggml.tokens arr[str,151936] = ["!", "\"", "#", "$", "%", "&", "'", ... févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 27: tokenizer.ggml.token_type arr[i32,151936] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 28: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",... févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 29: tokenizer.ggml.eos_token_id u32 = 151645 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 30: tokenizer.ggml.padding_token_id u32 = 151643 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 31: tokenizer.ggml.bos_token_id u32 = 151643 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 32: tokenizer.ggml.add_bos_token bool = false févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 33: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>... févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - kv 34: general.quantization_version u32 = 2 févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - type f32: 181 tensors févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - type q4_K: 216 tensors févr. 22 13:11:11 folzo-Corp ollama[4303]: llama_model_loader: - type q6_K: 37 tensors févr. 22 13:11:11 folzo-Corp ollama[4303]: print_info: file format = GGUF V3 (latest) févr. 22 13:11:11 folzo-Corp ollama[4303]: print_info: file type = Q4_K - Medium févr. 22 13:11:11 folzo-Corp ollama[4303]: print_info: file size = 1.79 GiB (4.99 BPW) févr. 22 13:11:12 folzo-Corp ollama[4303]: load: printing all EOG tokens: févr. 22 13:11:12 folzo-Corp ollama[4303]: load: - 151643 ('<|endoftext|>') févr. 22 13:11:12 folzo-Corp ollama[4303]: load: - 151645 ('<|im_end|>') févr. 22 13:11:12 folzo-Corp ollama[4303]: load: - 151662 ('<|fim_pad|>') févr. 22 13:11:12 folzo-Corp ollama[4303]: load: - 151663 ('<|repo_name|>') févr. 22 13:11:12 folzo-Corp ollama[4303]: load: - 151664 ('<|file_sep|>') févr. 22 13:11:12 folzo-Corp ollama[4303]: load: special tokens cache size = 22 févr. 22 13:11:12 folzo-Corp ollama[4303]: load: token to piece cache size = 0.9310 MB févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: arch = qwen2 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: vocab_only = 0 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: no_alloc = 0 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_ctx_train = 32768 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_embd = 2048 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_embd_inp = 2048 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_layer = 36 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_head = 16 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_head_kv = 2 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_rot = 128 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_swa = 0 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: is_swa_any = 0 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_embd_head_k = 128 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_embd_head_v = 128 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_gqa = 8 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_embd_k_gqa = 256 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_embd_v_gqa = 256 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: f_norm_eps = 0.0e+00 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: f_norm_rms_eps = 1.0e-06 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: f_clamp_kqv = 0.0e+00 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: f_max_alibi_bias = 0.0e+00 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: f_logit_scale = 0.0e+00 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: f_attn_scale = 0.0e+00 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_ff = 11008 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_expert = 0 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_expert_used = 0 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_expert_groups = 0 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_group_used = 0 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: causal attn = 1 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: pooling type = -1 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: rope type = 2 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: rope scaling = linear févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: freq_base_train = 1000000.0 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: freq_scale_train = 1 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_ctx_orig_yarn = 32768 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: rope_yarn_log_mul= 0.0000 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: rope_finetuned = unknown févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: model type = 3B févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: model params = 3.09 B févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: general.name = Qwen2.5 3B Instruct févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: vocab type = BPE févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_vocab = 151936 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: n_merges = 151387 févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: BOS token = 151643 '<|endoftext|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: EOS token = 151645 '<|im_end|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: EOT token = 151645 '<|im_end|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: PAD token = 151643 '<|endoftext|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: LF token = 198 'Ċ' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: FIM PRE token = 151659 '<|fim_prefix|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: FIM SUF token = 151661 '<|fim_suffix|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: FIM MID token = 151660 '<|fim_middle|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: FIM PAD token = 151662 '<|fim_pad|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: FIM REP token = 151663 '<|repo_name|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: FIM SEP token = 151664 '<|file_sep|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: EOG token = 151643 '<|endoftext|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: EOG token = 151645 '<|im_end|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: EOG token = 151662 '<|fim_pad|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: EOG token = 151663 '<|repo_name|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: EOG token = 151664 '<|file_sep|>' févr. 22 13:11:12 folzo-Corp ollama[4303]: print_info: max token length = 256 févr. 22 13:11:12 folzo-Corp ollama[4303]: load_tensors: loading model tensors, this can take a while... (mmap = true) févr. 22 13:11:12 folzo-Corp ollama[4303]: load_tensors: offloading 36 repeating layers to GPU févr. 22 13:11:12 folzo-Corp ollama[4303]: load_tensors: offloading output layer to GPU févr. 22 13:11:12 folzo-Corp ollama[4303]: load_tensors: offloaded 37/37 layers to GPU févr. 22 13:11:12 folzo-Corp ollama[4303]: load_tensors: CPU_Mapped model buffer size = 243.43 MiB févr. 22 13:11:12 folzo-Corp ollama[4303]: load_tensors: ROCm0 model buffer size = 1834.83 MiB févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: constructing llama_context févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: n_seq_max = 1 févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: n_ctx = 4096 févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: n_ctx_seq = 4096 févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: n_batch = 512 févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: n_ubatch = 512 févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: causal_attn = 1 févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: flash_attn = auto févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: kv_unified = false févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: freq_base = 1000000.0 févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: freq_scale = 1 févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: n_ctx_seq (4096) < n_ctx_train (32768) -- the full capacity of the model will not be utilized févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: ROCm_Host output buffer size = 0.59 MiB févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_kv_cache: ROCm0 KV buffer size = 144.00 MiB févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_kv_cache: size = 144.00 MiB ( 4096 cells, 36 layers, 1/1 seqs), K (f16): 72.00 MiB, V (f16): 72.00 MiB févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: Flash Attention was auto, set to enabled févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: ROCm0 compute buffer size = 300.75 MiB févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: ROCm_Host compute buffer size = 12.01 MiB févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: graph nodes = 1231 févr. 22 13:11:12 folzo-Corp ollama[4303]: llama_context: graph splits = 2 févr. 22 13:11:12 folzo-Corp ollama[4303]: time=2026-02-22T13:11:12.929+01:00 level=INFO source=server.go:1388 msg="llama runner started in 2.46 seconds" févr. 22 13:11:12 folzo-Corp ollama[4303]: time=2026-02-22T13:11:12.929+01:00 level=INFO source=sched.go:537 msg="loaded runners" count=2 févr. 22 13:11:12 folzo-Corp ollama[4303]: time=2026-02-22T13:11:12.929+01:00 level=INFO source=server.go:1350 msg="waiting for llama runner to start responding" févr. 22 13:11:12 folzo-Corp ollama[4303]: time=2026-02-22T13:11:12.929+01:00 level=INFO source=server.go:1388 msg="llama runner started in 2.46 seconds" févr. 22 13:11:12 folzo-Corp ollama[4303]: time=2026-02-22T13:11:12.960+01:00 level=WARN source=runner.go:153 msg="truncating input prompt" limit=4096 prompt=5856 keep=4 new=4096 févr. 22 13:11:23 folzo-Corp ollama[4303]: [GIN] 2026/02/22 - 13:11:23 | 200 | 15.107434932s | 192.168.1.27 | POST "/v1/chat/completions"

Toutes les 1,0s: rocm-smi --showpidgpus folzo-Corp: Sun Feb 22 13:11:39 2026

============================ ROCm System Management Interface ============================ ================================== GPUs Indexed by PID =================================== PID 2330840 is using 1 DRM device(s): 0 PID 2331861 is using 1 DRM device(s): 0 PID 2278476 is using 1 DRM device(s): 0

================================== End of ROCm SMI Log ===================================

folzo@folzo-Corp:$ docker stats permission denied while trying to connect to the docker API at unix:///var/run/docker.sock folzo@folzo-Corp:$

Excellente capture ! Plusieurs infos importantes à analyser.

Ce que révèlent les logs

Bonne nouvelle — qwen2.5:3b est bien chargé :

loaded runners count=2   ← 14b ET 3b en VRAM simultanément
ROCm0 model buffer size = 1834.83 MiB  ← c'est le 3b

Problème détecté — contexte tronqué :

truncating input prompt limit=4096 prompt=5856

mem0 envoie 5856 tokens au 3b qui n'a que 4096 de contexte — il tronque silencieusement. On corrigera ça.

3 PIDs GPU — il faut identifier lesquels :

for pid in 2330840 2331861 2278476; do
  echo "PID $pid: $(cat /proc/$pid/cmdline | tr '\0' ' ')"
done

Fix docker stats (manque sudo) :

sudo docker stats --no-stream

Action immédiate — augmenter le contexte du 3b

Le 3b a un contexte limité par défaut à 4096. Il faut créer un Modelfile custom :

ollama show qwen2.5:3b --modelfile > /tmp/qwen3b.modelfile
echo "PARAMETER num_ctx 8192" >> /tmp/qwen3b.modelfile
ollama create qwen2.5:3b-mem0 -f /tmp/qwen3b.modelfile

Puis dans la config mem0, pointer vers qwen2.5:3b-mem0 au lieu de qwen2.5:3b.

Lance d'abord les deux commandes de diagnostic et montre-moi les résultats — surtout les noms des PIDs GPU.


folzo@folzo-Corp:~$ for pid in 2330840 2331861 2278476; do

echo "PID $pid: $(cat /proc/$pid/cmdline | tr '\0' ' ')" done PID 2330840: /usr/local/bin/ollama runner --model /usr/share/ollama/.ollama/models/blobs/sha256-daec91ffb5dd0c27411bd71f29932917c49cf529a641d0168496c3a501e3062c --port 38881 PID 2331861: /usr/local/bin/ollama runner --model /usr/share/ollama/.ollama/models/blobs/sha256-5ee4f07cdb9beadbbb293e85803c569b01bd37ed059d2715faa7bb405f31caa6 --port 33289 PID 2278476: /home/ubuntu/speaches/.venv/bin/python .venv/bin/uvicorn speaches.main:create_app --host 0.0.0.0 --port 8000 --factory folzo@folzo-Corp:$ sudo docker stats --no-stream [sudo: authenticate] Password: CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 3a5af44bc8bb speaches-stt 0.14% 2.701GiB / 30.25GiB 8.93% 1.62GB / 14.8MB 1.28GB / 3.3GB 73 36c0ce71710d openedai-speech 0.05% 3.124GiB / 30.25GiB 10.33% 439kB / 394kB 1.2GB / 1.2GB 48 folzo@folzo-Corp:$

Très bonne capture ! Je vois 3 problèmes clés.

Analyse des PIDs GPU

PID 2330840 → Ollama runner (modèle sha256-daec91...)  ← 14b ou 3b ?
PID 2331861 → Ollama runner (modèle sha256-5ee4f0...)  ← 14b ou 3b ?
PID 2278476 → speaches STT  ← utilise le GPU malgré WHISPER__DEVICE=cpu !

Problème #1 — speaches utilise quand même le GPU. Malgré WHISPER__DEVICE=cpu, les devices /dev/kfd et /dev/dri sont passés au conteneur, ROCm s'initialise quand même et consomme de la VRAM. C'est lui qui maintient le GPU actif.

Problème #2 — openedai-speech consomme 3.1 GB RAM malgré le passage à tts-1 → les modèles XTTS sont probablement encore chargés en mémoire.

Problème #3 — deux runners Ollama actifs simultanément → 14b + 3b en VRAM en même temps.


Diagnostics immédiats

Identifier les deux modèles Ollama chargés :

ollama ps

Fix speaches — retirer les devices GPU si on reste en CPU :

nano ~/speaches/docker-compose.yml

Commenter les devices et group_add :

#devices:
#  - /dev/kfd
#  - /dev/dri
#group_add:
#  - "44"
#  - "991"
#security_opt:
#  - seccomp=unconfined
cd ~/speaches && docker compose up -d

Ça libérera immédiatement la VRAM utilisée par speaches. Montre-moi d'abord ollama ps pour qu'on voit quels modèles sont actifs.


j'ai changé qwen 2.5:3b par ministral pour la limitation de token et pour la rapidité, voici les resultats :

folzo@folzo-Corp:$ ollama ps NAME ID SIZE PROCESSOR CONTEXT UNTIL qwen2.5:14b 7cdf5a0187d5 13 GB 20%/80% CPU/GPU 16690 4 minutes from now folzo@folzo-Corp:$ #devices:

- /dev/kfd

- /dev/dri

#group_add:

- "44"

- "991"

#security_opt:

- seccomp=unconfined

folzo@folzo-Corp:$ ollama ps NAME ID SIZE PROCESSOR CONTEXT UNTIL ministral-3:3b f04aa1c738f6 4.6 GB 100% GPU 4096 4 minutes from now bge-m3:latest 790764642607 1.2 GB 100% GPU 4096 4 minutes from now folzo@folzo-Corp:$ ollama ps

Par contre ca tourne toujours longtemps apres les interaction avec effi. Mais concernant la voit c'est plus rapide par contre effi a une voix anglaise...

Tu as déjà fait deux excellents moves : ministral-3:3b pour la mémoire et Piper (tts-1) pour le TTS. On voit maintenant clairement ce qui consomme le GPU :

ministral-3:3b  → 4.6 GB VRAM (mémoire / outils)
bge-m3:latest   → 1.2 GB VRAM (embeddings RAG)

Ces deux modèles restent chargés ~5 minutes après chaque utilisation (UNTIL 4 minutes from now). C’est le comportement normal d’Ollama : il garde les modèles « chauds » pour accélérer les requêtes suivantes. Mais si tu enchaînes les interactions avec Effi, ils restent quasiment tout le temps en VRAM.

Ce que tu peux faire tout de suite

  1. Vérifier qui appelle quoi :
    • ministral-3:3b peut être :
      • le modèle de mem0 (mémoire),
      • un modèle d’outils dans Open WebUI (pipelines MCP),
      • ou un modèle de fallback pour le chat.
    • bge-m3:latest est appelé par :
      • Open WebUI pour le RAG,
      • et/ou mem0 pour les embeddings.
  2. Voir la charge réelle GPU vs « juste chargé » Quand tu ne parles plus à Effi, regarde :
rocm-smi --showuse

Si l’occupation GPU est proche de 0% mais la VRAM reste haute, ce n’est pas un problème de charge, juste de modèles en cache. Le 100% que tu vois dans le moniteur GNOME est souvent la file d’attente GPU saturée au moment des requêtes, pas en permanence.


Rendre Effi moins « anglophone »

Piper (tts-1) utilise par défaut un modèle anglais, d’où l’accent. On peut lui forcer une voix française.

  1. Ouvre ~/openedai-speech/tts-config/config.yaml (ou fichier similaire) sur folzo-Corp.
  2. Cherche la section de la voix alloy (ou la voix par défaut) et bascule-la sur un modèle Piper français, par exemple un de ceux listés ici.33

Exemple de mapping (structure typique)  :34 35

voices:
  alloy:
    engine: piper
    model: fr_FR-upmc-medium   # ou autre modèle fr_* installé
  1. Redémarre le conteneur :
cd ~/openedai-speech && docker compose restart openedai-speech

Si tu veux, on peut faire étape par étape sur le fichier de config Piper : tu peux me coller le contenu de tts-config (ou un extrait anonymisé), et je te dirai exactement quoi modifier pour une voix française propre.

⁂

quand je parle plus a effi :

folzo@folzo-Corp:~$ rocm-smi --showuse

============================ ROCm System Management Interface ============================ =================================== % time GPU is busy =================================== GPU[0] : GPU use (%): 100

================================== End of ROCm SMI Log =================================== folzo@folzo-Corp:~$

Là on a deux choses différentes :

  1. VRAM occupée (modèles chargés) → normal si ollama ps montre des modèles.
  2. GPU use 100% dans rocm-smi même au repos → ça ressemble à un bug de monitoring / DPM, pas forcément à un calcul réel, surtout si la conso reste basse.

Avant de tout chambouler, vérifions si le GPU travaille vraiment.


1. Vérifier la conso réelle du GPU

Lance :

rocm-smi --showpower --showclk

Si tu vois un truc du genre :

  • Power autour de 20–40 W
  • Fréquence mémoire / core basse

… alors le « 100% » est juste un compteur mal interprété, le GPU est en fait idle.36 37


2. Limiter le temps de cache des modèles Ollama

Par défaut, Ollama garde les modèles jusqu’à 5 minutes après la dernière requête. Tu peux réduire ce délai globalement.38 39

Édite le service systemd d’Ollama :

sudo systemctl edit ollama

Ajoute :

[Service]
Environment="OLLAMA_KEEP_ALIVE=60"

Puis :

sudo systemctl daemon-reload
sudo systemctl restart ollama

Effet : tout modèle est déchargé 60s après la dernière requête. Tu peux même mettre OLLAMA_KEEP_ALIVE=0 si tu veux qu’il soit déchargé tout de suite après chaque réponse (au prix d’un temps de première token plus long).39 38


3. Pour forcer un déchargement immédiat

À la main, tu peux aussi éjecter les modèles dès que tu as fini ta session Effi :

ollama stop ministral-3:3b
ollama stop bge-m3:latest

Si tu m’indiques les valeurs de rocm-smi --showpower --showclk, je te dirai si ton GPU est réellement en charge ou juste « marqué à 100% » alors qu’il roupille. 40 41 42 43 44 45

⁂

pour le probleme de voi c'est bien ce fichier que je dois modifier ?

tts-1: some_other_voice_name_you_want: model: voices/choose your own model.onnx speaker: set your own speaker alloy: model: voices/en_US-libritts_r-medium.onnx speaker: 79 # 64, 79, 80, 101, 130 echo: model: voices/en_US-libritts_r-medium.onnx speaker: 134 # 52, 102, 134 echo-alt: model: voices/en_US-ryan-high.onnx speaker: # default speaker fable: model: voices/en_GB-northern_english_male-medium.onnx speaker: # default speaker onyx: model: voices/en_US-libritts_r-medium.onnx speaker: 159 # 55, 90, 132, 136, 137, 159 nova: model: voices/en_US-libritts_r-medium.onnx speaker: 107 # 57, 61, 107, 150, 162 shimmer: model: voices/en_US-libritts_r-medium.onnx speaker: 163 tts-1-hd: alloy-alt: model: xtts speaker: voices/alloy-alt.wav alloy: model: xtts speaker: voices/alloy.wav echo: model: xtts speaker: voices/echo.wav fable: model: xtts speaker: voices/fable.wav onyx: model: xtts speaker: voices/onyx.wav nova: model: xtts speaker: voices/nova.wav shimmer: model: xtts speaker: voices/shimmer.wav me: model: xtts_v2.0.2 # you can specify an older xtts version speaker: voices/me.wav # this could be you language: auto enable_text_splitting: True length_penalty: 1.0 repetition_penalty: 10 speed: 1.0 temperature: 0.75 top_k: 50 top_p: 0.85 comment: You can add a comment here also, which will be persistent and otherwise ignored.?

Oui, c’est exactement ce fichier qu’il faut modifier.

Actuellement, pour tts-1 tu as uniquement des modèles anglais :

tts-1:
  alloy:
    model: voices/en_US-libritts_r-medium.onnx
    speaker: 79
  # ...

Pour avoir une voix française, tu dois :

  1. Mettre un modèle Piper français dans voices/ (par ex. fr_FR-upmc-medium.onnx ou autre modèle fr_* que tu as téléchargé ).46
  2. Pointer alloy dessus :
tts-1:
  alloy:
    model: voices/fr_FR-upmc-medium.onnx   # ← modèle FR
    speaker: 0                             # ou l’index de speaker adapté

Tu peux laisser le bloc tts-1-hd tel quel, il ne sera pas utilisé tant que tu restes sur tts-1 dans Open WebUI.

Après modification :

cd ~/openedai-speech
docker compose restart openedai-speech

Ensuite, teste Effi : si la voix reste anglaise, envoie-moi la liste des fichiers dans ~/openedai-speech/tts-voices pour qu’on choisisse un modèle FR précis.

⁂

si je veux cette voix comment je peux faire ?

La voix que tu montres est le modèle Piper fr_FR-upmc-medium, locutrice “jessica”. Pour l’utiliser avec tts-1 :

1. Télécharger le modèle ONNX

Sur folzo-Corp, dans le dossier openedai-speech :

cd ~/openedai-speech/tts-voices
# adapte l’URL si besoin, mais le fichier doit s’appeler ainsi :
wget https://github.com/rhasspy/piper/releases/download/v1.2.0/fr_FR-upmc-medium.onnx

(Le nom exact du fichier doit correspondre à ce que tu mettras dans la config.)

2. Modifier la config tts-1

Édite ton fichier de config (celui que tu as collé) :

nano ~/openedai-speech/tts-config/config.yaml    # ou le nom équivalent

Remplace le bloc tts-1 par :

tts-1:
  alloy:
    model: voices/fr_FR-upmc-medium.onnx
    speaker: 0    # Jessica (0), Pierre (1) selon le modèle

Tu peux laisser les autres voix telles quelles ou les supprimer, ce n’est pas obligatoire.

3. Redémarrer openedai-speech

cd ~/openedai-speech
docker compose restart openedai-speech

Dans Open WebUI, laisse TTS Model = tts-1 et voix alloy. Effi devrait maintenant parler avec la voix française fr_FR-upmc-medium. Si tu entends encore de l’anglais ou un mauvais speaker, on ajustera juste l’index speaker (0 ou 1). 47

⁂

le lien que tu m'a donné nme marche plus. voici les derniers telechargement sur piper qui dattent de 2024 : https://github.com/rhasspy/piper/releases/

Parfait, on va le prendre directement à la source Hugging Face.

1. Télécharger les fichiers de la voix fr_FR-upmc-medium

Sur folzo-Corp :

cd ~/openedai-speech/tts-voices

# Modèle
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx

# Config JSON associée (souvent utilisée par Piper)
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.json

Ces fichiers sont listés ici.48

2. Configurer tts-1 pour utiliser cette voix

Édite ta config :

nano ~/openedai-speech/tts-config/config.yaml

Et adapte la section tts-1 comme ceci :

tts-1:
  alloy:
    model: voices/fr_FR-upmc-medium.onnx
    speaker: 0   # 0 = Jessica, 1 = Pierre (tu pourras changer si besoin)

Tu peux laisser les autres entrées, elles ne seront pas utilisées tant que tu choisis la voix alloy côté Open WebUI.

3. Redémarrer le TTS

cd ~/openedai-speech
docker compose restart openedai-speech

Ensuite, dans Open WebUI :

  • TTS Engine : OpenAI
  • TTS Model : tts-1
  • Voice : alloy

Teste une phrase française avec Effi. Si la voix ne te plaît pas ou que tu tombes sur Pierre au lieu de Jessica, on ajustera juste speaker: 1 au lieu de 0. 49 50 51 52 53 54 55 56 57

⁂

folzo@folzo-Corp:~/openedai-speech/tts-voices$ cd ~/openedai-speech

docker compose restart openedai-speech permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.51/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.oneoff%3DFalse%22%3Atrue%2C%22com.docker.compose.project%3Dopenedai-speech%22%3Atrue%7D%7D": dial unix /var/run/docker.sock: connect: permission denied folzo@folzo-Corp:~/openedai-speech$

Il te manque juste les droits Docker, il faut ajouter sudo.

Dans ~/openedai-speech :

cd ~/openedai-speech
sudo docker compose restart openedai-speech

Entre ton mot de passe, attends que le conteneur redémarre, puis teste Effi avec :

  • TTS Model = tts-1
  • Voice = alloy

Si la voix n’est pas celle que tu veux (Jessica vs Pierre), dis-le et on ajustera juste la valeur speaker (0 ou 1) dans la config.


top pour la voix merci c'est vriament pas mal pour le moment. Maintenant concentron nous sur l'utilisation de la carte graphique :

============================ ROCm System Management Interface ============================ ================================== GPUs Indexed by PID =================================== PID 2278476 is using 1 DRM device(s): 0 PID 2526746 is using 1 DRM device(s): 0

================================== End of ROCm SMI Log ===================================

Parfait pour la voix, on revient sur le GPU.

On voit encore 2 PIDs qui utilisent le GPU :

PID 2278476
PID 2526746

On veut savoir qui c’est exactement.

1. Identifier les processus GPU

Sur folzo-Corp :

for pid in 2278476 2526746; do
  echo "PID $pid: $(cat /proc/$pid/cmdline | tr '\0' ' ')"
done

Colle-moi la sortie. On saura si c’est :

  • un runner Ollama (qwen/ministral/bge),
  • ou encore speaches qui tient le GPU.

2. Vérifier la conso réelle

En parallèle :

rocm-smi --showuse --showpower --showclk

Ça nous dira si :

  • le GPU est vraiment à fond (power élevé, fréquences hautes),
  • ou juste marqué à 100% avec une faible conso (bug de reporting). 58
⁂

ca c'est juste apres la conversation

folzo@folzo-Corp:~$ rocm-smi --showpower --showclkfrq

============================ ROCm System Management Interface ============================ =================================== Power Consumption ==================================== GPU[0] : Average Graphics Package Power (W): 53.0

============================== Supported clock frequencies =============================== GPU[0] : Supported dcefclk frequencies on GPU0 GPU[0] : 0: 145Mhz GPU[0] : 1: 1563Mhz * GPU[0] : GPU[0] : Supported fclk frequencies on GPU0 GPU[0] : 0: 601Mhz GPU[0] : 1: 1000Mhz GPU[0] : 2: 1200Mhz GPU[0] : 3: 1600Mhz GPU[0] : 4: 1801Mhz GPU[0] : 5: 1950Mhz GPU[0] : 6: 2201Mhz GPU[0] : 7: 2301Mhz * GPU[0] : GPU[0] : Supported mclk frequencies on GPU0 GPU[0] : 0: 96Mhz GPU[0] : 1: 456Mhz GPU[0] : 2: 772Mhz GPU[0] : 3: 1218Mhz * GPU[0] : GPU[0] : Supported sclk frequencies on GPU0 GPU[0] : 0: 500Mhz GPU[0] : 1: 43Mhz * GPU[0] : 2: 2124Mhz GPU[0] : GPU[0] : Supported socclk frequencies on GPU0 GPU[0] : 0: 300Mhz GPU[0] : 1: 1500Mhz * GPU[0] : GPU[0] : Supported PCIe frequencies on GPU0 GPU[0] : 0: 2.5GT/s x1 GPU[0] : 1: 5.0GT/s x4 GPU[0] : 2: 16.0GT/s x16 * GPU[0] :

========================================================================================== ================================== End of ROCm SMI Log =================================== folzo@folzo-Corp:~$

et ca c'est 1min apres la conversation : folzo@folzo-Corp:~$ rocm-smi --showpower --showclkfrq

============================ ROCm System Management Interface ============================ =================================== Power Consumption ==================================== GPU[0] : Average Graphics Package Power (W): 93.0

============================== Supported clock frequencies =============================== GPU[0] : Supported dcefclk frequencies on GPU0 GPU[0] : 0: 145Mhz GPU[0] : 1: 1563Mhz * GPU[0] : GPU[0] : Supported fclk frequencies on GPU0 GPU[0] : 0: 601Mhz GPU[0] : 1: 1000Mhz GPU[0] : 2: 1200Mhz GPU[0] : 3: 1600Mhz GPU[0] : 4: 1801Mhz GPU[0] : 5: 1950Mhz GPU[0] : 6: 2201Mhz GPU[0] : 7: 2301Mhz * GPU[0] : GPU[0] : Supported mclk frequencies on GPU0 GPU[0] : 0: 96Mhz GPU[0] : 1: 456Mhz GPU[0] : 2: 772Mhz GPU[0] : 3: 1218Mhz * GPU[0] : GPU[0] : Supported sclk frequencies on GPU0 GPU[0] : 0: 500Mhz GPU[0] : 1: 2734Mhz * GPU[0] : 2: 2124Mhz GPU[0] : GPU[0] : Supported socclk frequencies on GPU0 GPU[0] : 0: 300Mhz GPU[0] : 1: 1500Mhz * GPU[0] : GPU[0] : Supported PCIe frequencies on GPU0 GPU[0] : 0: 2.5GT/s x1 GPU[0] : 1: 5.0GT/s x4 GPU[0] : 2: 16.0GT/s x16 * GPU[0] :

========================================================================================== ================================== End of ROCm SMI Log =================================== folzo@folzo-Corp:~$

La conso à 93 W une minute après la fin de la conversation montre que le GPU calcule encore sérieusement, pas juste un bug d’affichage. Il faut maintenant identifier qui le fait.

1. Identifier les process GPU actuels

Tu avais ça :

PID 2278476
PID 2526746

Lance à nouveau :

for pid in 2278476 2526746; do
  echo "PID $pid: $(cat /proc/$pid/cmdline | tr '\0' ' ')"
done

Ça va nous dire si :

  • c’est un runner Ollama (ministral / bge / qwen),
  • ou encore speaches (STT),
  • ou autre chose.

Colle-moi la sortie.


2. Vérifier quels modèles Ollama sont actifs

Juste après une conversation avec Effi, lance :

ollama ps

On doit voir si un modèle (par ex. ministral-3:3b ou qwen2.5:14b) reste en génération ou boucle.

Colle aussi cette sortie, et on décidera si on :

  • coupe un process fautif,
  • réduit keep_alive,
  • ou corrige un pipeline (mem0 / RAG) qui spamme le LLM.

folzo@folzo-Corp:~$ for pid in 2278476 2526746; do

echo "PID $pid: $(cat /proc/$pid/cmdline | tr '\0' ' ')" done PID 2278476: /home/ubuntu/speaches/.venv/bin/python .venv/bin/uvicorn speaches.main:create_app --host 0.0.0.0 --port 8000 --factory cat: /proc/2526746/cmdline: No such file or directory (os error 2) PID 2526746: folzo@folzo-Corp:$ ollama ps NAME ID SIZE PROCESSOR CONTEXT UNTIL bge-m3:latest 790764642607 1.2 GB 100% GPU 4096 2 minutes from now ministral-3:3b f04aa1c738f6 4.6 GB 100% GPU 4096 2 minutes from now folzo@folzo-Corp:$

On a enfin les coupables clairement identifiés :

  • PID 2278476 = speaches (STT) → tient le GPU inutilement.
  • ministral-3:3b + bge-m3:latest → modèles Ollama encore chauds (normal), mais ils ne devraient pas continuer à consommer 90 W longtemps après.

On va réduire la consommation en 3 petits réglages.


1. Forcer speaches à ne plus toucher le GPU

Tu as déjà commenté les devices dans ~/speaches/docker-compose.yml. Vérifions qu’il n’est plus attaché au GPU.

  1. Vérifier le docker-compose :
cat ~/speaches/docker-compose.yml

Assure-toi que tu n’as bien aucune section devices: active dans speaches: (tout commenté ou supprimé).

  1. Recrée le conteneur proprement :
cd ~/speaches
sudo docker compose down
sudo docker compose up -d
  1. Vérifie côté ROCm :
rocm-smi --showpidgpus

PID speaches (python/uvicorn) ne doit plus apparaître. Si c’est bon, tu as supprimé une source de charge GPU permanente.


2. Réduire le temps de cache des modèles Ollama

On veut que bge-m3 (embeddings) et ministral-3:3b (mémoire/outils) soient déchargés plus vite quand Effi est idle.

  1. Crée un override systemd pour Ollama :
sudo systemctl edit ollama

Ajoute :

[Service]
Environment="OLLAMA_KEEP_ALIVE=60"
  1. Recharge et redémarre Ollama :
sudo systemctl daemon-reload
sudo systemctl restart ollama

Résultat : chaque modèle est déchargé 60 secondes après la dernière requête au lieu de rester plusieurs minutes. Si tu veux plus agressif, tu pourras descendre à OLLAMA_KEEP_ALIVE=10.59 60


3. Forcer le calme après une session Effi

En attendant de voir l’effet de KEEP_ALIVE, tu peux explicitement vider la VRAM juste après un long échange vocal :

ollama stop ministral-3:3b
ollama stop bge-m3:latest

Puis vérifier :

ollama ps       # doit être vide
rocm-smi --showpower --showuse

Tu devrais voir la puissance retomber autour de 20–30 W et GPU use proche de 0% après quelques secondes.


Quand tu auras :

  1. vérifié que speaches n’apparaît plus dans rocm-smi --showpidgpus,
  2. mis OLLAMA_KEEP_ALIVE=60 et redémarré Ollama,

on pourra refaire un test complet (conversation Effi → attendre 1–2 minutes → rocm-smi --showpower --showpidgpus) pour confirmer que le GPU se calme enfin comme prévu.

⁂

folzo@folzo-Corp:~$ cat ~/speaches/docker-compose.yml

services: speaches: image: speaches:rocm-ct2 container_name: speaches-stt restart: unless-stopped ports:

  • "8200:8000" devices:
  • /dev/kfd
  • /dev/dri group_add:
  • "44"
  • "991" security_opt:
  • seccomp=unconfined environment:
  • HSA_OVERRIDE_GFX_VERSION=11.0.0
  • WHISPER__MODEL=deepdml/faster-whisper-large-v3-turbo-ct2
  • WHISPER__LANGUAGE=fr
  • WHISPER__COMPUTE_TYPE=int8
  • WHISPER__DEVICE=cpu volumes:
  • speaches-models:/root/.cache/huggingface

speaches-init: image: curlimages/curl:latest container_name: speaches-init restart: "no" depends_on:

volumes: speaches-models: folzo@folzo-Corp:~$

Je n'ai pas envi de reduire le temps des models ollama, je veux garder en fluidité lors des echanges ecrit avec effi, ca ne me derange que les modeles restent chargé en memoire, quand ils sont pas utilisé ils utilise pas de gpu. par contre la le gpu reste utilisé a 100% longtemps apres les echange ce que je ne comprenais pas

Parfait, on va garder la fluidité côté Ollama et juste éteindre la source de charge permanente : speaches sur GPU.

Actuellement ton docker-compose attache encore le GPU :

    devices:
      - /dev/kfd
      - /dev/dri
    group_add:
      - "44"
      - "991"
    security_opt:
      - seccomp=unconfined

Même avec WHISPER__DEVICE=cpu, la présence de /dev/kfd fait que ROCm initialise la carte et la garde active, d’où la conso élevée.

1. Désactiver complètement le GPU pour speaches

Édite le fichier :

nano ~/speaches/docker-compose.yml

Remplace la partie speaches par :

  speaches:
    image: speaches:rocm-ct2
    container_name: speaches-stt
    restart: unless-stopped
    ports:
      - "8200:8000"
    # AUCUN accès GPU ici
    environment:
      - HSA_OVERRIDE_GFX_VERSION=11.0.0
      - WHISPER__MODEL=deepdml/faster-whisper-large-v3-turbo-ct2
      - WHISPER__LANGUAGE=fr
      - WHISPER__COMPUTE_TYPE=int8
      - WHISPER__DEVICE=cpu
    volumes:
      - speaches-models:/root/.cache/huggingface

Donc tu supprimes complètement :

  • devices:
  • group_add:
  • security_opt:

Puis :

cd ~/speaches
sudo docker compose down
sudo docker compose up -d

2. Vérifier que le GPU est enfin au repos après STT

1–2 minutes après une conversation Effi :

rocm-smi --showpidgpus
rocm-smi --showpower --showuse

Tu devrais voir :

  • plus aucun PID python ... speaches dans --showpidgpus,
  • power qui redescend, et GPU use proche de 0% lorsque tu ne parles pas.

Les modèles Ollama (ministral-3:3b, bge-m3) resteront chargés en VRAM pour la fluidité, mais ne consommeront presque rien tant qu’il n’y a pas de requêtes, ce qui correspond exactement à ce que tu veux.61

⁂

folzo@folzo-Corp:~$ nano ~/speaches/docker-compose.yml

folzo@folzo-Corp:~$ cd /speaches sudo docker compose down sudo docker compose up -d [sudo: authenticate] Password: [+] down 3/3 ✔ Container speaches-init Removed 0.1s ✔ Container speaches-stt Removed 1.4s ✔ Network speaches_default Removed 0.1s [+] up 3/3 ✔ Network speaches_default Created 0.0s ✔ Container speaches-stt Created 0.1s ✔ Container speaches-init Created 0.1s folzo@folzo-Corp:/speaches$ normalement c'est bon ?

Oui, le redéploiement est OK. Vérifions que le GPU est enfin tranquille quand tu ne parles pas.

Sur folzo-Corp, sans interaction avec Effi pendant 30–60s :

rocm-smi --showpidgpus
rocm-smi --showpower --showuse

Tu devrais voir :

  • plus aucun PID python/uvicorn speaches dans --showpidgpus,
  • une puissance bien plus basse (idéalement <40–50 W) et un GPU use qui retombe vers 0% quand tu es idle.

Si c’est le cas, on a réglé la cause principale : speaches ne garde plus la 7800 XT en charge permanente, les modèles Ollama restent en VRAM pour la fluidité mais ne consomment presque rien en dehors des requêtes.


j'a iune erreur je dois configurer quelque chose dans openwebui ?

L’erreur vient de speaches (STT) qui renvoie un 500 sur /v1/audio/transcriptions, pas d’Open WebUI.

On vient de modifier le conteneur (plus de GPU), donc il y a probablement une stacktrace côté logs.

Sur folzo-Corp :

docker logs -f speaches-stt

Refais un test vocal dans Effi et regarde ce qui s’affiche au moment de l’erreur (les 10–20 dernières lignes).

Colle-moi ce bloc de logs, on va voir si :

  • le modèle deepdml/faster-whisper-large-v3-turbo-ct2 se charge bien en CPU,
  • ou si speaches s’attend à un provider GPU et plante sans /dev/kfd. 62
⁂

folzo@folzo-Corp:~/speaches$ sudo docker logs -f speaches-stt

2026-02-22 13:05:13,331:DEBUG:speaches.main:create_app:102:Config: stt_model_ttl=300 tts_model_ttl=300 vad_model_ttl=-1 api_key=None log_level='debug' host='0.0.0.0' port=8000 allow_origins=None enable_ui=True whisper=WhisperConfig(inference_device='auto', device_index=0, compute_type='int8', cpu_threads=0, num_workers=1) loopback_host_url=None chat_completion_base_url='http://localhost:11434/v1' chat_completion_api_key=SecretStr('**********') unstable_ort_opts=OrtOptions(exclude_providers=['TensorrtExecutionProvider'], provider_priority={'CUDAExecutionProvider': 100}, provider_opts={}) otel_exporter_otlp_endpoint=None otel_service_name='speaches' preload_models=[] 2026-02-22 13:05:14,290:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 13:05:14,321:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 13:05:14,537:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0 2026-02-22 13:05:14,547:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0 new 2026-02-22 13:05:14,571:INFO:speaches.main:create_app:202:

To view the gradio web ui of speaches open your browser and visit:

http://localhost:8000/

INFO: Started server process [1] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) 2026-02-22 13:05:15,016:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 13:05:15,016:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 13:05:15,063:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 13:05:15,063:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 13:05:15,854:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 13:05:16,031:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=ctranslate2&filter=automatic-speech-recognition&cardData=True HTTP/11" 200 244215 2026-02-22 13:05:16,083:WARNING:huggingface_hub.repocard_data:init:368:Invalid model-index. Not loading eval results into CardData. Invalid model-index. Not loading eval results into CardData. 2026-02-22 13:05:16,228:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873 Fetching 6 files: 100%|██████████| 6/6 [00:00<00:00, 67108.86it/s] INFO: 172.18.0.3:42604 - "POST /v1/models/deepdml/faster-whisper-large-v3-turbo-ct2 HTTP/1.1" 200 OK 2026-02-22 13:06:38,231:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: f876c35d-0a33-43d9-a9f8-d5c35ba83fa4.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="f876c35d-0a33-43d9-a9f8-d5c35ba83fa4.mp3"'}), size: 39405 2026-02-22 13:06:38,316:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 4.86s of audio in 0.08465s (RTF: 0.01741720123301306) 2026-02-22 13:06:38,316:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 13:06:38,320:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model silero_vad_v5 2026-02-22 13:06:38,321:DEBUG:speaches.executors.shared.base_model_manager:get_ort_providers_with_options:23:Available ONNX Runtime providers: ['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider'] 2026-02-22 13:06:38,321:DEBUG:speaches.executors.shared.base_model_manager:get_ort_providers_with_options:33:Using ONNX Runtime providers: [('CUDAExecutionProvider', {}), ('CPUExecutionProvider', {})] 2026-02-22 13:06:38.323054163 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory

2026-02-22 13:06:38.323066733 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements), make sure they're in the PATH, and that your GPU is supported. 2026-02-22 13:06:38.328087859 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory

2026-02-22 13:06:38.328097539 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements), make sure they're in the PATH, and that your GPU is supported. 2026-02-22 13:06:38,329:INFO:speaches.executors.shared.base_model_manager:_load:75:Model silero_vad_v5 loaded in 0.01s 2026-02-22 13:06:38,329:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1 2026-02-22 13:06:38,346:DEBUG:speaches.executors.silero_vad_v5:call:138:VAD model inference took 0.0167s 2026-02-22 13:06:38,346:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0 2026-02-22 13:06:38,346:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading 2026-02-22 13:06:38,346:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0260s for 4.86s audio 2026-02-22 13:06:38,347:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model deepdml/faster-whisper-large-v3-turbo-ct2 2026-02-22 13:06:38,461:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873 INFO: 192.168.1.27:51524 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1134, in call await super().call(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in call raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in call await self.app(scope, receive, _send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 125, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 111, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 391, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 292, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run result = context.run(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/routers/stt.py", line 171, in transcribe_file res = transcription_executor.model_manager.handle_transcription_request(transcription_request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 231, in handle_transcription_request return self.handle_non_streaming_transcription_request(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/tracing.py", line 31, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 154, in handle_non_streaming_transcription_request with self.load_model(request.model) as whisper: File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 103, in enter self._load() File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 74, in _load self.model = self.load_fn() ^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 142, in load_fn=lambda: self._load_fn(model_id), ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 134, in _load_fn return WhisperModel( ^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 647, in init self.model = ctranslate2.models.Whisper( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: Requested int8 compute type, but the target device or backend do not support efficient int8 computation. 2026-02-22 13:06:39,503:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: f876c35d-0a33-43d9-a9f8-d5c35ba83fa4.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="f876c35d-0a33-43d9-a9f8-d5c35ba83fa4.mp3"'}), size: 39405 2026-02-22 13:06:39,579:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 4.86s of audio in 0.07575s (RTF: 0.01558649218104657) 2026-02-22 13:06:39,579:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 13:06:39,583:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:silero_vad_v5 model already loaded 2026-02-22 13:06:39,583:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1 2026-02-22 13:06:39,592:DEBUG:speaches.executors.silero_vad_v5:call:138:VAD model inference took 0.0097s 2026-02-22 13:06:39,593:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0 2026-02-22 13:06:39,593:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading 2026-02-22 13:06:39,593:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0104s for 4.86s audio 2026-02-22 13:06:39,593:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:deepdml/faster-whisper-large-v3-turbo-ct2 model already loaded 2026-02-22 13:06:39,593:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model deepdml/faster-whisper-large-v3-turbo-ct2 2026-02-22 13:06:39,700:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873 INFO: 192.168.1.27:51540 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1134, in call await super().call(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in call raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in call await self.app(scope, receive, _send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 125, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 111, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 391, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 292, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run result = context.run(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/routers/stt.py", line 171, in transcribe_file res = transcription_executor.model_manager.handle_transcription_request(transcription_request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 231, in handle_transcription_request return self.handle_non_streaming_transcription_request(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/tracing.py", line 31, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 154, in handle_non_streaming_transcription_request with self.load_model(request.model) as whisper: File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 103, in enter self._load() File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 74, in _load self.model = self.load_fn() ^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 142, in load_fn=lambda: self._load_fn(model_id), ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 134, in _load_fn return WhisperModel( ^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 647, in init self.model = ctranslate2.models.Whisper( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: Requested int8 compute type, but the target device or backend do not support efficient int8 computation. 2026-02-22 13:08:09,485:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: 4e0c529c-2fa4-4183-b569-b3379565bfe4.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="4e0c529c-2fa4-4183-b569-b3379565bfe4.mp3"'}), size: 34029 2026-02-22 13:08:09,585:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 4.2s of audio in 0.09908s (RTF: 0.023590347381763247) 2026-02-22 13:08:09,585:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 13:08:09,588:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:silero_vad_v5 model already loaded 2026-02-22 13:08:09,588:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1 2026-02-22 13:08:09,595:DEBUG:speaches.executors.silero_vad_v5:call:138:VAD model inference took 0.0066s 2026-02-22 13:08:09,660:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0 2026-02-22 13:08:09,660:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading 2026-02-22 13:08:09,660:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0713s for 4.20s audio 2026-02-22 13:08:09,660:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:deepdml/faster-whisper-large-v3-turbo-ct2 model already loaded 2026-02-22 13:08:09,660:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model deepdml/faster-whisper-large-v3-turbo-ct2 2026-02-22 13:08:09,767:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873 INFO: 192.168.1.27:55642 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1134, in call await super().call(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in call raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in call await self.app(scope, receive, _send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 125, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 111, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 391, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 292, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run result = context.run(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/routers/stt.py", line 171, in transcribe_file res = transcription_executor.model_manager.handle_transcription_request(transcription_request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 231, in handle_transcription_request return self.handle_non_streaming_transcription_request(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/tracing.py", line 31, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 154, in handle_non_streaming_transcription_request with self.load_model(request.model) as whisper: File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 103, in enter self._load() File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 74, in _load self.model = self.load_fn() ^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 142, in load_fn=lambda: self._load_fn(model_id), ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 134, in _load_fn return WhisperModel( ^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 647, in init self.model = ctranslate2.models.Whisper( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: Requested int8 compute type, but the target device or backend do not support efficient int8 computation. 2026-02-22 13:08:10,409:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: 4e0c529c-2fa4-4183-b569-b3379565bfe4.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="4e0c529c-2fa4-4183-b569-b3379565bfe4.mp3"'}), size: 34029 2026-02-22 13:08:10,491:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 4.2s of audio in 0.08204s (RTF: 0.01953266142837016) 2026-02-22 13:08:10,491:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 13:08:10,495:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:silero_vad_v5 model already loaded 2026-02-22 13:08:10,495:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1 2026-02-22 13:08:10,501:DEBUG:speaches.executors.silero_vad_v5:call:138:VAD model inference took 0.0066s 2026-02-22 13:08:10,527:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0 2026-02-22 13:08:10,527:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading 2026-02-22 13:08:10,527:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0324s for 4.20s audio 2026-02-22 13:08:10,527:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:deepdml/faster-whisper-large-v3-turbo-ct2 model already loaded 2026-02-22 13:08:10,527:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model deepdml/faster-whisper-large-v3-turbo-ct2 2026-02-22 13:08:10,637:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873 INFO: 192.168.1.27:55650 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1134, in call await super().call(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in call raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in call await self.app(scope, receive, _send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 125, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 111, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 391, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 292, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run result = context.run(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/routers/stt.py", line 171, in transcribe_file res = transcription_executor.model_manager.handle_transcription_request(transcription_request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 231, in handle_transcription_request return self.handle_non_streaming_transcription_request(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/tracing.py", line 31, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 154, in handle_non_streaming_transcription_request with self.load_model(request.model) as whisper: File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 103, in enter self._load() File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 74, in _load self.model = self.load_fn() ^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/shared/base_model_manager.py", line 142, in load_fn=lambda: self._load_fn(model_id), ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 134, in _load_fn return WhisperModel( ^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 647, in init self.model = ctranslate2.models.Whisper( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: Requested int8 compute type, but the target device or backend do not support efficient int8 computation.

Parfait, on a l’erreur clé ici :

ValueError: Requested int8 compute type, but the target device or backend do not support efficient int8 computation.

En gros : le modèle CTranslate2 que tu utilises (deepdml/faster-whisper-large-v3-turbo-ct2) ne supporte pas vraiment int8 sur CPU dans ce conteneur. On vient de retirer le GPU, donc il n’a plus de backend adapté pour l’int8.

Il suffit de passer le compute type en float32 (ou int16) côté speaches.


1. Modifier le compute type dans speaches

Sur folzo-Corp :

nano ~/speaches/docker-compose.yml

Dans environment: de speaches, remplace :

- WHISPER__COMPUTE_TYPE=int8

par :

- WHISPER__COMPUTE_TYPE=float32

(Éventuellement tu peux tester int16 plus tard pour un compromis perf/précision.)

Sauvegarde, puis redémarre :

cd ~/speaches
sudo docker compose down
sudo docker compose up -d

2. Tester à nouveau le vocal

Ensuite :

  1. Vérifie vite fait les logs au démarrage :
sudo docker logs -f speaches-stt

Tu ne dois plus voir l’exception Requested int8 compute type. 2. Re-teste un vocal avec Effi.

Si ça fonctionne, on a :

  • STT en CPU (plus de charge GPU résiduelle),
  • modèle large-v3-turbo (donc rapide),
  • TTS Piper FR,
  • et la 7800XT qui ne bosse que pour les LLM/embeddings.

Dis-moi juste si le vocal repasse bien après ce changement. 63 64 65 66 67 68 69 70 71 72

⁂

toujours une erreur ; folzo@folzo-Corp:~/speaches$ sudo docker logs -f speaches-stt

2026-02-22 13:10:20,319:DEBUG:speaches.main:create_app:102:Config: stt_model_ttl=300 tts_model_ttl=300 vad_model_ttl=-1 api_key=None log_level='debug' host='0.0.0.0' port=8000 allow_origins=None enable_ui=True whisper=WhisperConfig(inference_device='auto', device_index=0, compute_type='float32', cpu_threads=0, num_workers=1) loopback_host_url=None chat_completion_base_url='http://localhost:11434/v1' chat_completion_api_key=SecretStr('**********') unstable_ort_opts=OrtOptions(exclude_providers=['TensorrtExecutionProvider'], provider_priority={'CUDAExecutionProvider': 100}, provider_opts={}) otel_exporter_otlp_endpoint=None otel_service_name='speaches' preload_models=[] 2026-02-22 13:10:21,202:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 13:10:21,253:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 13:10:21,380:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0 2026-02-22 13:10:21,496:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0 new 2026-02-22 13:10:21,522:INFO:speaches.main:create_app:202:

To view the gradio web ui of speaches open your browser and visit:

http://localhost:8000/

INFO: Started server process [1] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) 2026-02-22 13:10:21,936:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 13:10:21,936:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 13:10:21,994:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 13:10:21,994:INFO:httpx:_send_single_request:1025:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK" 2026-02-22 13:10:23,321:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443 2026-02-22 13:10:23,499:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=ctranslate2&filter=automatic-speech-recognition&cardData=True HTTP/11" 200 244215 Invalid model-index. Not loading eval results into CardData. 2026-02-22 13:10:23,559:WARNING:huggingface_hub.repocard_data:init:368:Invalid model-index. Not loading eval results into CardData. 2026-02-22 13:10:23,674:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873 Fetching 6 files: 100%|██████████| 6/6 [00:00<00:00, 92521.41it/s] INFO: 172.18.0.3:32990 - "POST /v1/models/deepdml/faster-whisper-large-v3-turbo-ct2 HTTP/1.1" 200 OK 2026-02-22 13:10:38,591:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: a8eff92c-6bac-4320-b80d-e66e9b9c1c55.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="a8eff92c-6bac-4320-b80d-e66e9b9c1c55.mp3"'}), size: 25389 2026-02-22 13:10:38,669:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 3.12s of audio in 0.07752s (RTF: 0.024845482053373974) 2026-02-22 13:10:38,669:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 13:10:38,674:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model silero_vad_v5 2026-02-22 13:10:38,674:DEBUG:speaches.executors.shared.base_model_manager:get_ort_providers_with_options:23:Available ONNX Runtime providers: ['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider'] 2026-02-22 13:10:38,674:DEBUG:speaches.executors.shared.base_model_manager:get_ort_providers_with_options:33:Using ONNX Runtime providers: [('CUDAExecutionProvider', {}), ('CPUExecutionProvider', {})] 2026-02-22 13:10:38.675920860 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory

2026-02-22 13:10:38.675933100 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements), make sure they're in the PATH, and that your GPU is supported. 2026-02-22 13:10:38.679662590 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory

2026-02-22 13:10:38.679701570 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements), make sure they're in the PATH, and that your GPU is supported. 2026-02-22 13:10:38,681:INFO:speaches.executors.shared.base_model_manager:_load:75:Model silero_vad_v5 loaded in 0.01s 2026-02-22 13:10:38,681:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1 2026-02-22 13:10:38,691:DEBUG:speaches.executors.silero_vad_v5:call:138:VAD model inference took 0.0102s 2026-02-22 13:10:38,691:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0 2026-02-22 13:10:38,692:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading 2026-02-22 13:10:38,692:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0181s for 3.12s audio 2026-02-22 13:10:38,692:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model deepdml/faster-whisper-large-v3-turbo-ct2 2026-02-22 13:10:38,800:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873 2026-02-22 13:10:41,242:INFO:speaches.executors.shared.base_model_manager:_load:75:Model deepdml/faster-whisper-large-v3-turbo-ct2 loaded in 2.55s 2026-02-22 13:10:41,242:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=1 2026-02-22 13:10:41,242:INFO:faster_whisper:transcribe:391:Processing audio with duration 00:03.120 2026-02-22 13:10:41,242:INFO:faster_whisper:transcribe:428:VAD filter removed 00:00.880 of audio 2026-02-22 13:10:41,262:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=0 2026-02-22 13:10:41,262:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:91:Model deepdml/faster-whisper-large-v3-turbo-ct2 is idle, scheduling offload in 300s INFO: 192.168.1.27:45124 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1134, in call await super().call(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in call raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in call await self.app(scope, receive, _send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 125, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 111, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 391, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 292, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run result = context.run(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/routers/stt.py", line 171, in transcribe_file res = transcription_executor.model_manager.handle_transcription_request(transcription_request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 231, in handle_transcription_request return self.handle_non_streaming_transcription_request(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/tracing.py", line 31, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 161, in handle_non_streaming_transcription_request segments, transcription_info = whisper_model.transcribe( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 451, in transcribe ) = self.model.detect_language( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1777, in detect_language encoder_output = self.encode( ^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1358, in encode return self.model.encode(features, to_cpu=to_cpu) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: No SGEMM backend on CPU 2026-02-22 13:10:41,277:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: a8eff92c-6bac-4320-b80d-e66e9b9c1c55.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="a8eff92c-6bac-4320-b80d-e66e9b9c1c55.mp3"'}), size: 25389 2026-02-22 13:10:41,367:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 3.12s of audio in 0.08957s (RTF: 0.028709025000586197) 2026-02-22 13:10:41,368:DEBUG:asyncio:init:64:Using selector: EpollSelector 2026-02-22 13:10:41,371:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:silero_vad_v5 model already loaded 2026-02-22 13:10:41,371:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1 2026-02-22 13:10:41,378:DEBUG:speaches.executors.silero_vad_v5:call:138:VAD model inference took 0.0068s 2026-02-22 13:10:41,378:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0 2026-02-22 13:10:41,378:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading 2026-02-22 13:10:41,379:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0074s for 3.12s audio 2026-02-22 13:10:41,379:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:deepdml/faster-whisper-large-v3-turbo-ct2 model already loaded 2026-02-22 13:10:41,379:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:81:Model was set to expire in 300s, cancelling 2026-02-22 13:10:41,379:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=1 2026-02-22 13:10:41,379:INFO:faster_whisper:transcribe:391:Processing audio with duration 00:03.120 2026-02-22 13:10:41,379:INFO:faster_whisper:transcribe:428:VAD filter removed 00:00.880 of audio 2026-02-22 13:10:41,401:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=0 2026-02-22 13:10:41,401:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:91:Model deepdml/faster-whisper-large-v3-turbo-ct2 is idle, scheduling offload in 300s INFO: 192.168.1.27:45128 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1134, in call await super().call(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in call raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in call await self.app(scope, receive, _send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 125, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 111, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 391, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 292, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run result = context.run(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/routers/stt.py", line 171, in transcribe_file res = transcription_executor.model_manager.handle_transcription_request(transcription_request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 231, in handle_transcription_request return self.handle_non_streaming_transcription_request(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/tracing.py", line 31, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 161, in handle_non_streaming_transcription_request segments, transcription_info = whisper_model.transcribe( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 451, in transcribe ) = self.model.detect_language( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1777, in detect_language encoder_output = self.encode( ^^^^^^^^^^^^ File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1358, in encode return self.model.encode(features, to_cpu=to_cpu) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: No SGEMM backend on CPU

Là on a enfin quelque chose de propre : le modèle tourne bien, mais il manque une brique BLAS CPU dans l’image speaches.

L’erreur clé est :

  • RuntimeError: No SGEMM backend on CPU

Ça vient de CTranslate2/faster-whisper qui a besoin d’un backend SGEMM (OpenBLAS / MKL / etc.) pour faire les multiplications de matrices en float32 sur CPU. Dans l’image speaches:rocm-ct2 que tu utilises, tout est câblé pour le GPU (ROCm), et le chemin CPU « pur » n’a pas ce backend, donc ça plante dès qu’on enlève le GPU.

Tu as donc deux options réalistes :


Option A — Revenir à l’usage GPU pour STT (simple, efficace)

Comme tu as déjà optimisé la charge globale (LLM + TTS + mem), remettre Whisper sur GPU n’est plus un drame, surtout avec large-v3-turbo qui est plus léger.

  1. Remettre l’accès GPU dans le compose :
  speaches:
    image: speaches:rocm-ct2
    container_name: speaches-stt
    restart: unless-stopped
    ports:
      - "8200:8000"
    devices:
      - /dev/kfd
      - /dev/dri
    group_add:
      - "44"
      - "991"
    security_opt:
      - seccomp=unconfined
    environment:
      - HSA_OVERRIDE_GFX_VERSION=11.0.0
      - WHISPER__MODEL=deepdml/faster-whisper-large-v3-turbo-ct2
      - WHISPER__LANGUAGE=fr
      - WHISPER__COMPUTE_TYPE=int8
      - WHISPER__DEVICE=auto
  1. Redémarrer :
cd ~/speaches
sudo docker compose down
sudo docker compose up -d
  1. Surveiller la charge GPU : elle montera pendant la transcription, puis retomber à un niveau bas après quelques secondes, les autres optimisations (Piper CPU, ministral 3B pour mem, etc.) faisant leur effet.

C’est la voie la plus pragmatique : tu profites à fond de la 7800XT pour STT + LLM, tout en gardant le CPU tranquille.


Option B — Rebuilder une image speaches CPU-only (plus long)

Si tu tiens absolument à garder STT 100% CPU dans un conteneur séparé, il faudrait :

  • repartir d’une image de base CPU (pas la ROCm),
  • installer CTranslate2 compilé avec support BLAS CPU,
  • et reconstruire speaches avec cette stack.

C’est faisable mais assez long (rebuild complet, ajustements de Dockerfile, tests). On peut le faire ensemble, mais ce sera plusieurs étapes de compilation.


À mon avis, au vu de l’état actuel de ta stack (LLM optimisé, TTS sur CPU, mémoire sur petit modèle), Option A est un bon compromis : tu retrouves un vocal fonctionnel, très rapide, avec une charge GPU cohérente et le CPU globalement cool. Si tu veux qu’on parte sur l’option B (image CPU-only), dis-le et on montera un plan de build pas à pas. 73 74 75 76 77 78 79 80 81 82

⁂

026-02-22 13:12:57,132:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock

2026-02-22 13:12:57,133:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,183:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,183:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,233:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,233:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,283:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,283:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,333:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,334:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,384:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,384:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,434:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,434:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,484:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,484:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,534:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,534:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,585:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,585:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,635:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,635:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,685:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,685:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,735:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,736:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,786:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,786:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,836:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,836:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,886:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,887:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,937:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,937:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:57,987:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:57,987:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:58,037:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:58,037:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:58,088:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:58,088:DEBUG:filelock:acquire:343:Lock 140358771067648 not acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock, waiting 0.05 seconds ... 2026-02-22 13:12:58,093:DEBUG:filelock:release:364:Attempting to release lock 140358748802176 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:58,093:DEBUG:filelock:release:367:Lock 140358748802176 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock Fetching 6 files: 100%|██████████| 6/6 [00:28<00:00, 4.79s/it] INFO: 172.18.0.3:49268 - "POST /v1/models/deepdml/faster-whisper-large-v3-turbo-ct2 HTTP/1.1" 200 OK 2026-02-22 13:12:58,138:DEBUG:filelock:acquire:331:Attempting to acquire lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:58,138:DEBUG:filelock:acquire:334:Lock 140358771067648 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:58,138:DEBUG:filelock:release:364:Attempting to release lock 140358771067648 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:12:58,138:DEBUG:filelock:release:367:Lock 140358771067648 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock 2026-02-22 13:13:06,496:INFO:speaches.executors.shared.base_model_manager:_load:75:Model deepdml/faster-whisper-large-v3-turbo-ct2 loaded in 14.80s 2026-02-22 13:13:06,496:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=1 2026-02-22 13:13:06,496:INFO:faster_whisper:transcribe:391:Processing audio with duration 00:05.280 2026-02-22 13:13:06,496:INFO:faster_whisper:transcribe:428:VAD filter removed 00:01.184 of audio 2026-02-22 13:13:11,105:INFO:faster_whisper:transcribe:463:Detected language 'fr' with probability 0.99 2026-02-22 13:13:11,328:INFO:speaches.executors.whisper:handle_non_streaming_transcription_request:181:Transcribed 5.28 seconds of audio in 19.632597505988088 seconds 2026-02-22 13:13:11,328:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=0 2026-02-22 13:13:11,328:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:91:Model deepdml/faster-whisper-large-v3-turbo-ct2 is idle, scheduling offload in 300s 2026-02-22 13:13:11,328:ERROR:speaches.routers.stt:transcription_response_to_http_response:105:Unexpected streaming transcription response type: <class 'openai.types.audio.transcription.Transcription'> INFO: 192.168.1.27:37238 - "POST /v1/audio/transcriptions HTTP/1.1" 200 OK

Là on est bon côté backend : Whisper s’exécute correctement, en français, sur deepdml/faster-whisper-large-v3-turbo-ct2 (5.28 s audio, 19.6 s de traitement CPU). L’erreur que tu vois encore côté Open WebUI vient juste d’un mauvais type de réponse retourné par speaches.

Ligne clé :

Unexpected streaming transcription response type: <class 'openai.types.audio.transcription.Transcription'>

Speaches renvoie un objet Transcription (réponse non-streaming), alors qu’il a cru être en mode « streaming chunk ». Open WebUI, lui, considère la requête comme streaming (il envoie des chunks) et s’attend à un flux d’events.

Fix simple côté Open WebUI

Dans Admin Panel → Settings → Audio (STT) :

  • Assure-toi que :
    • STT Engine : OpenAI
    • STT URL : http://192.168.1.11:8200/v1
    • STT Model : deepdml/faster-whisper-large-v3-turbo-ct2
  • Désactive (si présent) tout mode « streaming » pour STT (certains builds d’Open WebUI ont un toggle « Streaming STT » ou similaire). Il faut que la requête soit de type /v1/audio/transcriptions classique, pas streaming.

Ensuite, dans Open WebUI, teste le micro en mode message unique (un clic, tu parles, tu relâches, ça envoie), et non en dictée continue.

Le log speaches montre déjà :

"POST /v1/audio/transcriptions HTTP/1.1" 200 OK

Donc côté serveur tout est bon, la transcription est bien produite. Il reste juste à ce qu’Open WebUI consomme la réponse comme une transcription simple, pas comme un flux.

Si après avoir vérifié ça tu as encore une erreur, envoie-moi la notification exacte affichée dans l’UI (copier/coller du message rouge complet), et on ajustera le paramétrage Open WebUI (certains thèmes ajoutent un flag chunked dans la requête STT qu’on peut désactiver).


ok c'est bon ca marche, on est bon niveau reconnaissance vocale et voix. FAit moi un descriptif complet de cette configuration audio pour que je puisse facilement la reproduire stp

Voici le descriptif complet de ta config audio Effi (STT + TTS), telle qu’on l’a stabilisée.


1. STT – Speaches (Whisper) sur folzo-Corp

Conteneur Docker speaches-stt (folzo-Corp)

Fichier ~/speaches/docker-compose.yml :

services:
  speaches:
    image: speaches:rocm-ct2
    container_name: speaches-stt
    restart: unless-stopped
    ports:
      - "8200:8000"
    devices:
      - /dev/kfd
      - /dev/dri
    group_add:
      - "44"
      - "991"
    security_opt:
      - seccomp=unconfined
    environment:
      - HSA_OVERRIDE_GFX_VERSION=11.0.0
      - WHISPER__MODEL=deepdml/faster-whisper-large-v3-turbo-ct2
      - WHISPER__LANGUAGE=fr
      - WHISPER__COMPUTE_TYPE=float32
      - WHISPER__DEVICE=auto
    volumes:
      - speaches-models:/root/.cache/huggingface

  speaches-init:
    image: curlimages/curl:latest
    container_name: speaches-init
    restart: "no"
    depends_on:
      - speaches
    entrypoint: >
      sh -c "sleep 5 &&
      curl -sf -X POST http://speaches:8000/v1/models/deepdml%2Ffaster-whisper-large-v3-turbo-ct2 &&
      echo 'Modèle enregistré'"

volumes:
  speaches-models:

Points importants :

  • Modèle STT : deepdml/faster-whisper-large-v3-turbo-ct2 (CT2, turbo).83
  • Langue forcée : WHISPER__LANGUAGE=fr.
  • Compute type CPU : float32 (évite les erreurs int8).
  • speaches-init enregistre le modèle au démarrage via POST /v1/models/....

Commandes de déploiement :

cd ~/speaches
sudo docker compose up -d

2. TTS – openedai-speech + Piper FR sur folzo-Corp

Fichiers de voix Piper

Dans ~/openedai-speech/tts-voices :

cd ~/openedai-speech/tts-voices
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.json

Config openedai-speech

Fichier ~/openedai-speech/tts-config/config.yaml (partie utile) :

tts-1:
  alloy:
    model: voices/fr_FR-upmc-medium.onnx
    speaker: 0    # 0 = Jessica, 1 = Pierre (tu peux changer si besoin)

tts-1-hd:
  alloy:
    model: xtts
    speaker: voices/alloy.wav
  # … autres voix XTTS inchangées
  • tts-1 = backend Piper (CPU), voix par défaut alloy ↦ modèle FR fr_FR-upmc-medium.
  • L’ancienne config tts-1-hd (XTTS GPU) reste, mais n’est plus utilisée.

Docker compose (rappel) :

services:
  openedai-speech:
    image: ghcr.io/matatonic/openedai-speech
    container_name: openedai-speech
    restart: unless-stopped
    ports:
      - "8100:8000"
    volumes:
      - ./tts-voices:/app/voices
      - ./tts-config:/app/config
    devices:
      - /dev/kfd
      - /dev/dri
    group_add:
      - "44"
      - "991"
    environment:
      - HSA_OVERRIDE_GFX_VERSION=11.0.0
      - HIP_VISIBLE_DEVICES=0

Redémarrage :

cd ~/openedai-speech
sudo docker compose restart openedai-speech

3. Configuration Open WebUI (effi-server)

Dans Admin Panel → Settings → Audio :

  • STT Engine : OpenAI
  • STT URL : http://192.168.1.11:8200/v1
  • STT Model : deepdml/faster-whisper-large-v3-turbo-ct2
  • TTS Engine : OpenAI
  • TTS URL : http://192.168.1.11:8100/v1
  • TTS Model : tts-1
  • Voice / Speaker : alloy (qui correspond à fr_FR-upmc-medium côté Piper)

C’est cette combinaison qui donne :

  • STT rapide, précis en français (large-v3-turbo CT2 sur GPU).84 83
  • TTS français fluide, léger côté CPU (Piper fr_FR-upmc-medium).85
  • GPU principalement utilisé par les LLM (qwen/ministral, bge-m3), plus de charge « fantôme » après les échanges.

Avec ce descriptif, tu peux reconstruire l’audio d’Effi sur une autre machine en reprenant exactement ces trois blocs : compose speaches, compose openedai-speech + config, et réglages Open WebUI. 86

⁂

  1. https://git.robby.blue/ml/openedai-speech ↩︎

  2. https://whispernotes.app/blog/introducing-whisper-large-v3-turbo ↩︎

  3. https://github.com/matatonic/openedai-speech ↩︎

  4. https://github.com/mdmonsurali/Offline-Fast-CPU-PIPER-TTS ↩︎

  5. https://docs.mem0.ai/components/llms/config ↩︎

  6. https://whishper.net/reference/models/ ↩︎

  7. https://docs.mem0.ai/components/embedders/models/ollama ↩︎

  8. https://github.com/mem0ai/mem0/issues/2758 ↩︎

  9. https://github.com/ggml-org/whisper.cpp/discussions/3074 ↩︎

  10. https://komelin.com/blog/using-small-llms-locally ↩︎

  11. https://www.youtube.com/watch?v=Q-4pkwHiAkA ↩︎

  12. https://www.whishper.net/reference/models/ ↩︎

  13. https://blog.stephane-robert.info/docs/developper/programmation/python/ollama/ ↩︎

  14. https://dev.to/ajitkumar/the-complete-guide-to-ollama-run-large-language-models-locally-2mge ↩︎

  15. https://docs.ollama.com/faq ↩︎

  16. https://huggingface.co/deepdml/faster-whisper-large-v3-turbo-ct2 ↩︎

  17. https://github.com/SYSTRAN/faster-whisper/issues/1030 ↩︎

  18. https://www.oreateai.com/blog/downloading-whisperlargev3turbo-a-guide-to-enhanced-speech-recognition/5f278388c08fe192dc30d0c0844ee0a4 ↩︎

  19. https://www.kaggle.com/datasets/rikstillman/faster-whisper-large-v3-model ↩︎

  20. https://github.com/openai/whisper ↩︎

  21. https://www.reddit.com/r/LocalLLaMA/comments/1ftjqg9/whisper_turbo_now_supported_in_transformers/ ↩︎

  22. https://huggingface.co/openai/whisper-large-v3-turbo ↩︎

  23. https://github.com/systran/faster-whisper ↩︎

  24. https://huggingface.co/Systran/faster-whisper-large-v3 ↩︎

  25. https://www.toolify.ai/ai-model/systran-faster-whisper-large-v3 ↩︎

  26. https://github.com/SYSTRAN/faster-whisper ↩︎

  27. https://console.groq.com/docs/model/whisper-large-v3-turbo ↩︎

  28. https://github.com/SYSTRAN/faster-whisper/issues/1025 ↩︎

  29. https://catalog.ngc.nvidia.com/orgs/nvidia/teams/riva/models/whisper_large_turbo ↩︎

  30. https://github.com/SYSTRAN/faster-whisper/issues/567 ↩︎

  31. image.jpg ↩︎

  32. image.jpg ↩︎

  33. https://github.com/mdmonsurali/Offline-Fast-CPU-PIPER-TTS ↩︎

  34. https://github.com/matatonic/openedai-speech ↩︎

  35. https://git.robby.blue/ml/openedai-speech ↩︎

  36. https://community.amd.com/t5/gpu-developer-tools/rocm-smi-reports-low-power-usage/m-p/213365 ↩︎

  37. https://github.com/ROCm/ROCm/issues/504 ↩︎

  38. https://docs.ollama.com/faq ↩︎

  39. https://www.reddit.com/r/ollama/comments/1cnxnrv/how_to_set_keepalive_1_on_ollama_linux/ ↩︎

  40. https://blog.csdn.net/gitblog_00488/article/details/151533510 ↩︎

  41. https://www.reddit.com/r/ollama/comments/1fh040f/question_how_to_keep_ollama_from_unloading_model/ ↩︎

  42. https://github.com/ollama/ollama/issues/11085 ↩︎

  43. https://github.com/ollama/ollama/issues/5272 ↩︎

  44. https://github.com/ollama/ollama/issues/10597 ↩︎

  45. https://www.reddit.com/r/ollama/comments/1bt1bir/unload_model_from_memory/ ↩︎

  46. https://github.com/mdmonsurali/Offline-Fast-CPU-PIPER-TTS ↩︎

  47. image.jpg ↩︎

  48. https://huggingface.co/rhasspy/piper-voices/tree/main/fr/fr_FR/upmc/medium ↩︎

  49. https://github.com/home-assistant/addons/issues/3411 ↩︎

  50. https://ftp.us2.freshrpms.net/linux/RPM/openmandriva/cooker/aarch64/main/release/piper-voice-fr_FR-upmc-2023.09.23-1.noarch.html ↩︎

  51. https://huggingface.co/rhasspy/piper-voices/blame/0c9c5d340496a47205a799eb046aab69334a88e9/fr/fr_FR/upmc/medium/MODEL_CARD ↩︎

  52. https://github.com/JohnnySn0w/piper-rocm ↩︎

  53. https://github.com/rhasspy/piper/releases ↩︎

  54. https://github.com/home-assistant/core/issues/105819 ↩︎

  55. https://github.com/rhasspy/piper/blob/master/README.md ↩︎

  56. https://github.com/rhasspy/piper ↩︎

  57. https://huggingface.co/rhasspy/piper-voices/blob/49a0d23f04e055f1766e5ad15ea2d121a90fa17a/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.json ↩︎

  58. paste.txt ↩︎

  59. https://docs.ollama.com/faq ↩︎

  60. https://www.reddit.com/r/ollama/comments/1cnxnrv/how_to_set_keepalive_1_on_ollama_linux/ ↩︎

  61. https://docs.ollama.com/faq ↩︎

  62. image.jpg ↩︎

  63. https://docs.speechmatics.com/deployments/container/gpu-speech-to-text ↩︎

  64. https://learn.microsoft.com/de-de/virtualization/windowscontainers/deploy-containers/gpu-acceleration ↩︎

  65. https://forums.docker.com/t/enabling-gpu-support-in-docker-containers-for-accelerated-computations/138686 ↩︎

  66. https://docs.docker.com/desktop/features/gpu/ ↩︎

  67. https://www.reddit.com/r/docker/comments/htmrj0/how_to_allow_docker_to_access_gpu/ ↩︎

  68. https://speech.fish.audio/install/ ↩︎

  69. https://github.com/manzolo/openai-whisper-docker ↩︎

  70. https://speaches.ai/installation/ ↩︎

  71. https://github.com/speaches-ai/speaches/issues/561 ↩︎

  72. https://docs-beta.internal.speechmatics.com/on-prem/containers/gpu-container/gpu-inference-container ↩︎

  73. https://github.com/docker/for-linux/issues/841 ↩︎

  74. https://www.reddit.com/r/docker/comments/13ud72v/creating_a_docker_container_with_memory_limits/ ↩︎

  75. https://stackoverflow.com/questions/20096632/limit-memory-on-a-docker-container-doesnt-work ↩︎

  76. https://www.devopsroles.com/fix-docker-cannot-allocate-memory-error/ ↩︎

  77. https://community.atlassian.com/forums/Bitbucket-questions/Container-docker-exceeded-memory-limit-Confusing-cause-remedy/qaq-p/2273380 ↩︎

  78. https://docs.docker.com/engine/containers/resource_constraints/ ↩︎

  79. https://forums.docker.com/t/cannot-allocate-memory/1163 ↩︎

  80. https://stackoverflow.com/questions/77893652/how-to-solve-memory-error-in-docker-container-in-linux-for-error-was-sent-sigk ↩︎

  81. https://www.reddit.com/r/docker/comments/1fidnei/cant_set_a_memory_limit_in_dockercomposeyaml_am_i/ ↩︎

  82. https://notes.kodekloud.com/docs/Docker-Certified-Associate-Exam-Course/Docker-Engine-Security/Resource-Limits-Memory ↩︎

  83. https://huggingface.co/deepdml/faster-whisper-large-v3-turbo-ct2 ↩︎

  84. https://github.com/SYSTRAN/faster-whisper/issues/1030 ↩︎

  85. https://huggingface.co/rhasspy/piper-voices/tree/main/fr/fr_FR/upmc/medium ↩︎

  86. https://huggingface.co/rhasspy/piper-voices/blob/49a0d23f04e055f1766e5ad15ea2d121a90fa17a/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.json ↩︎