- 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)
192 KiB
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
- 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.
- 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)
- 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
- 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.
- 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.
- 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.
- 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).
- 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
- É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'Effibge-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
gfx1100est 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-ct2avecgfx1100→ 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 OKsur/v1/audio/transcriptions- Langue
frdé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
- Finaliser rebuild speaches gfx1100 → activer GPU sur Whisper large-v3
- Tester TTS ROCm → vérifier que openedai-speech utilise bien la RX 7800 XT
- Mettre à jour l'URL TTS dans OpenWebUI Admin → Audio →
http://192.168.1.11:8100 - Réservations DHCP sur le routeur pour fixer les IPs de façon permanente
- 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
- Maintenant : changer
WHISPER__MODEL→large-v3-turbo(restart speaches, 2 min) - Maintenant : changer TTS model →
tts-1dans Open WebUI (instantané) - Après :
ollama pull qwen2.5:3b+ reconfigurer mem0 pour pointer sur ce modèle - Ensuite : finaliser le rebuild
speaches:rocm-ct2 gfx1100pour 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:
- speaches entrypoint: > sh -c "sleep 5 && curl -sf -X POST http://speaches:8000/v1/models/Systran%2Ffaster-whisper-large-v3 && echo 'Modèle enregistré'"
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:
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'ancienSystran/...) ? - Le TTS Model est bien
tts-1(et nontts-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-1Piper (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
- Vérifier qui appelle quoi :
ministral-3:3bpeut ê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:latestest appelé par :- Open WebUI pour le RAG,
- et/ou mem0 pour les embeddings.
- 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.
- Ouvre
~/openedai-speech/tts-config/config.yaml(ou fichier similaire) sur folzo-Corp. - 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é
- 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 :
- VRAM occupée (modèles chargés) → normal si
ollama psmontre des modèles. GPU use 100%dansrocm-smimê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 :
- Mettre un modèle Piper français dans
voices/(par ex.fr_FR-upmc-medium.onnxou autre modèlefr_*que tu as téléchargé ).46 - Pointer
alloydessus :
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.
- 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é).
- Recrée le conteneur proprement :
cd ~/speaches
sudo docker compose down
sudo docker compose up -d
- 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.
- Crée un override systemd pour Ollama :
sudo systemctl edit ollama
Ajoute :
[Service]
Environment="OLLAMA_KEEP_ALIVE=60"
- 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 :
- vérifié que
speachesn’apparaît plus dansrocm-smi --showpidgpus, - mis
OLLAMA_KEEP_ALIVE=60et 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:
- 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: 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 ... speachesdans--showpidgpus, - power qui redescend, et
GPU useproche 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 usequi 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-ct2se 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:
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 :
- 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:
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.
- 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
- Redémarrer :
cd ~/speaches
sudo docker compose down
sudo docker compose up -d
- 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-initenregistre le modèle au démarrage viaPOST /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 FRfr_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-mediumcô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
-
https://whispernotes.app/blog/introducing-whisper-large-v3-turbo ↩︎
-
https://github.com/mdmonsurali/Offline-Fast-CPU-PIPER-TTS ↩︎
-
https://blog.stephane-robert.info/docs/developper/programmation/python/ollama/ ↩︎
-
https://dev.to/ajitkumar/the-complete-guide-to-ollama-run-large-language-models-locally-2mge ↩︎
-
https://huggingface.co/deepdml/faster-whisper-large-v3-turbo-ct2 ↩︎
-
https://www.oreateai.com/blog/downloading-whisperlargev3turbo-a-guide-to-enhanced-speech-recognition/5f278388c08fe192dc30d0c0844ee0a4 ↩︎
-
https://www.kaggle.com/datasets/rikstillman/faster-whisper-large-v3-model ↩︎
-
https://www.reddit.com/r/LocalLLaMA/comments/1ftjqg9/whisper_turbo_now_supported_in_transformers/ ↩︎
-
https://www.toolify.ai/ai-model/systran-faster-whisper-large-v3 ↩︎
-
https://console.groq.com/docs/model/whisper-large-v3-turbo ↩︎
-
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/riva/models/whisper_large_turbo ↩︎
-
image.jpg ↩︎
-
image.jpg ↩︎
-
https://github.com/mdmonsurali/Offline-Fast-CPU-PIPER-TTS ↩︎
-
https://community.amd.com/t5/gpu-developer-tools/rocm-smi-reports-low-power-usage/m-p/213365 ↩︎
-
https://www.reddit.com/r/ollama/comments/1cnxnrv/how_to_set_keepalive_1_on_ollama_linux/ ↩︎
-
https://blog.csdn.net/gitblog_00488/article/details/151533510 ↩︎
-
https://www.reddit.com/r/ollama/comments/1fh040f/question_how_to_keep_ollama_from_unloading_model/ ↩︎
-
https://www.reddit.com/r/ollama/comments/1bt1bir/unload_model_from_memory/ ↩︎
-
https://github.com/mdmonsurali/Offline-Fast-CPU-PIPER-TTS ↩︎
-
image.jpg ↩︎
-
https://huggingface.co/rhasspy/piper-voices/tree/main/fr/fr_FR/upmc/medium ↩︎
-
https://ftp.us2.freshrpms.net/linux/RPM/openmandriva/cooker/aarch64/main/release/piper-voice-fr_FR-upmc-2023.09.23-1.noarch.html ↩︎
-
https://huggingface.co/rhasspy/piper-voices/blame/0c9c5d340496a47205a799eb046aab69334a88e9/fr/fr_FR/upmc/medium/MODEL_CARD ↩︎
-
https://huggingface.co/rhasspy/piper-voices/blob/49a0d23f04e055f1766e5ad15ea2d121a90fa17a/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.json ↩︎
-
paste.txt ↩︎
-
https://www.reddit.com/r/ollama/comments/1cnxnrv/how_to_set_keepalive_1_on_ollama_linux/ ↩︎
-
image.jpg ↩︎
-
https://docs.speechmatics.com/deployments/container/gpu-speech-to-text ↩︎
-
https://learn.microsoft.com/de-de/virtualization/windowscontainers/deploy-containers/gpu-acceleration ↩︎
-
https://forums.docker.com/t/enabling-gpu-support-in-docker-containers-for-accelerated-computations/138686 ↩︎
-
https://www.reddit.com/r/docker/comments/htmrj0/how_to_allow_docker_to_access_gpu/ ↩︎
-
https://docs-beta.internal.speechmatics.com/on-prem/containers/gpu-container/gpu-inference-container ↩︎
-
https://www.reddit.com/r/docker/comments/13ud72v/creating_a_docker_container_with_memory_limits/ ↩︎
-
https://stackoverflow.com/questions/20096632/limit-memory-on-a-docker-container-doesnt-work ↩︎
-
https://www.devopsroles.com/fix-docker-cannot-allocate-memory-error/ ↩︎
-
https://community.atlassian.com/forums/Bitbucket-questions/Container-docker-exceeded-memory-limit-Confusing-cause-remedy/qaq-p/2273380 ↩︎
-
https://docs.docker.com/engine/containers/resource_constraints/ ↩︎
-
https://stackoverflow.com/questions/77893652/how-to-solve-memory-error-in-docker-container-in-linux-for-error-was-sent-sigk ↩︎
-
https://www.reddit.com/r/docker/comments/1fidnei/cant_set_a_memory_limit_in_dockercomposeyaml_am_i/ ↩︎
-
https://notes.kodekloud.com/docs/Docker-Certified-Associate-Exam-Course/Docker-Engine-Security/Resource-Limits-Memory ↩︎
-
https://huggingface.co/deepdml/faster-whisper-large-v3-turbo-ct2 ↩︎
-
https://huggingface.co/rhasspy/piper-voices/tree/main/fr/fr_FR/upmc/medium ↩︎
-
https://huggingface.co/rhasspy/piper-voices/blob/49a0d23f04e055f1766e5ad15ea2d121a90fa17a/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.json ↩︎