# Bonjour j'ai besoin d'aide pour continuer le projet Effi, voici les infos :
Projet initial :
đ CAHIER DES CHARGES - PROJET EFFI v2.0
Assistant IA Personnel Local avec Prise de Notes Intelligente
đŻ OBJECTIFS GĂNĂRAUX
Créer une assistante IA locale nommée Effi qui :
GĂšre automatiquement une base de connaissances personnelle (notes)
ConnaĂźt parfaitement Folzo et son contexte (vie pro + perso)
Prend des initiatives autonomes (noter, corriger, enrichir, résumer)
Recherche intelligemment dans la mémoire avec compréhension sémantique
Accessible partout (desktop + mobile) via reverse proxy sécurisé
đ» INFRASTRUCTURE EXISTANTE
Matériel disponible
PC Gaming : AMD Ryzen 5800X3D, 32GB RAM, AMD Radeon 7800XT 16GB VRAM
NAS Synology : hébergement applications, reverse proxy configuré, nom de domaine
Réseau : reverse proxy fonctionnel pour accÚs externe sécurisé
Stack actuelle à faire évoluer
Open WebUI (NAS:3000) â WOL Proxy (NAS:3011) â Ollama PC (11434)
ââ mcpo (NAS:8000) â siyuan-mcp â SiYuan (NAS:6806)
đ BESOINS FONCTIONNELS - PRISE DE NOTES
Types de contenus à gérer
Vie Personnelle :
Organisation quotidienne (agenda, tĂąches)
To-do liste personnelle
Idées de voyages
Liste films/séries à regarder
Documentation tests IA et infrastructure perso
Journal personnel (optionnel)
Vie Professionnelle :
Suivi de projets (quelques projets actifs)
To-do liste professionnelle
Wiki personnel (aide-mémoires techniques, procédures)
Notes de réunions/échanges
Caractéristiques techniques requises
Format : Markdown pur (fichiers .md) â futur-proof et portable
Structure : flexible (pas encore d'habitudes établies)
MobilitĂ© : accĂšs desktop + mobile (iOS/Android) obligatoireââ
Synchronisation : temps réel ou quasi temps réel entre appareils
Sécurité : self-hosted, accessible via reverse proxy existant
projet "Effi - Assistante IA Personnelle Locale"
đ€ BESOINS FONCTIONNELS - INTERACTION IA
Niveau d'autonomie
Maximum souhaité avec confiance :
L'IA doit corriger automatiquement (orthographe, formulation, structure)
L'IA doit enrichir automatiquement (ajout contexte, liens entre notes)
L'IA doit créer des notes spontanément si échange pertinent détecté
L'IA doit proposer des améliorations visibles/validables
L'IA doit connaßtre profondément Folzo (préférences, projets, historique)
Workflows d'interaction
Mode 1 - Prise de note assistée (principal) :
Folzo écrit une note brute
Effi corrige/améliore en temps réel ou à la demande
Validation/ajustement par Folzo
Sauvegarde finale
Mode 2 - Capture automatique (autonome) :
Conversation Folzo â Effi
Effi détecte information importante
Effi crée note automatiquement (avec notification)
Folzo peut consulter/modifier aprĂšs
Mode 3 - Recherche sémantique :
RequĂȘte en langage naturel : "trouve mes problĂšmes Docker avec rĂ©seau"
Effi comprend contexte mĂȘme sans mots-clĂ©s exacts
Résultats pertinents avec extraits contextuels
đ FONCTIONNALITĂS TECHNIQUES CRITIQUES
1. Recherche Avancée (RAG Sémantique)
Embeddings locaux pour recherche par sens, pas par mots-clĂ©sâ
ModĂšle d'embedding : nomic-embed-text ou similaire (lĂ©ger, performant)â
Vector store : Qdrant ou intĂ©grĂ© Ă l'app de notesâ
ComprĂ©hension contextuelle : "projets Docker rĂ©seau" = trouve notes avec "container networking issues", "bridge problems", etc.â
2. Mémoire Persistante Multi-Sessions
Historique complet conversations Folzo â Effi accessible
Base de connaissances sur Folzo enrichie automatiquement
Contexte long-terme (projets en cours, préférences, historique décisions)
3. Synchronisation Multi-Devices
Desktop : Linux (Fedora/Bazzite) + Windows si nécessaire
Mobile : iOS/Android via app native
Sync method : self-hosted, temps rĂ©el, sans conflitâ
4. Actions Autonomes
Auto-tagging intelligent des notes (par projet, type, urgence)
Détection automatique informations à noter
Résumés automatiques de conversations longues
Création daily notes automatique chaque matin
Proposition Claude sonnet 4.6 :
Voici une évaluation complÚte des solutions pour Effi v2.0, structurée par composant critique, puis une architecture cible recommandée.
1. Couche Notes : Quel backend choisir ?
C'est la décision la plus structurante car elle conditionne la portabilité, la sync mobile et l'intégration IA.
CritĂšre
SiYuan (actuel)
Obsidian
Logseq
Format fichiers
â .sy (pas du vrai MD)
â
.md pur
â
.md
App mobile iOS/Android
â
native
â
native \& stable
â ïž instable sur mobile
Sync self-hosted
â
intégré
â
LiveSync + CouchDB
â ïž Syncthing (complexe)
API pour IA/MCP
â
siyuan-mcp
â
Local REST API plugin
â trĂšs limitĂ©
Futur-proof / portabilité
â lock-in format
â
maximal
â
bon
ĂcosystĂšme plugins IA
Faible
â
Ă©norme (Adaptive MemoryâŠ)
Moyen
Verdict : Obsidian est le choix optimal pour respecter le cahier des charges. SiYuan ne stocke pas en markdown pur (format .sy propriétaire), ce qui contredit directement l'exigence de futur-proof. Obsidian LiveSync via CouchDB auto-hébergé sur le NAS offre une sync temps réel complÚte sur iOS, Android et desktop sans aucun service cloud.
2. Mémoire Persistante \& RAG Sémantique
C'est le cĆur technique d'Effi. Trois approches Ă comparer :
Solution
Sémantique
Local 100%
Complexité
Verdict
Open WebUI RAG natif
â ïž partiel (ChromaDB)
â
Faible
Insuffisant pour les besoins
mem0 + Qdrant + Ollama
â
complet
â
Moyenne
â
Recommandé
pgvector (PostgreSQL)
â
â
Moyenne
Alternative viable
mem0 + Qdrant est la combinaison idéale : mem0 gÚre la mémoire multi-sessions avec enrichissement automatique, Qdrant sert de vector store performant, et nomic-embed-text via Ollama génÚre les embeddings localement. Un serveur MCP pour mem0 existe également et peut s'intégrer dans le pipeline mcpo existant. Il y a quelques bugs connus avec Ollama (réponse mal parsée), mais ils sont documentés et corrigeables.
3. Orchestration Autonome (le cerveau d'Effi)
C'est le composant manquant dans le stack actuel pour les modes 2 et 3 (capture automatique, daily notes, auto-tagging).
n8n est le seul outil self-hosted qui combine : agent IA Ollama natif, triggers planifiĂ©s, lecture/Ă©criture de fichiers Obsidian, webhooks Open WebUI, et connexion Qdrant â le tout sans code. Il permet de construire exactement les workflows dĂ©crits (dĂ©tection info importante â crĂ©ation note â notification).â
4. Architecture Cible Recommandée
PC GAMING (Ollama)
ââ LLM : qwen2.5:14b (raison + gĂ©nĂ©ration)
ââ Embedding : nomic-embed-text (vecteurs RAG)
NAS SYNOLOGY (containers Docker)
ââ Open WebUI :3000 â Interface chat Effi
ââ WOL Proxy :3011 â (garder existant)
ââ mcpo :8000 â outils MCP (obsidian-local-rest-api)
ââ mem0 :8765 â mĂ©moire persistante Folzo â Effi
ââ Qdrant :6333 â vector store RAG sĂ©mantique
ââ n8n :5678 â automatisation autonome
ââ CouchDB :5984 â backend sync Obsidian LiveSync
ââ Obsidian Vault (volume partagĂ© .md)
DEVICES
ââ Desktop : Obsidian app + Open WebUI (navigateur)
ââ Mobile : Obsidian iOS/Android â LiveSync â CouchDB
5. Ă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= COUCHDB_USER=master COUCHDB_PASSWORD= N8N_USER=master N8N_PASSWORD=`
## wol-proxy
Image buildĂ©e localement depuis `~/effi/wol-proxy/` â pinge `192.168.1.11:11434`, envoie un magic packet WoL si Ollama ne rĂ©pond pas.
---
## đź Stack Docker â folzo-Corp (`~/speaches/docker-compose.yml`)
## speaches â STT (Speech To Text)
text
`services: # âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ # 1. SPEACHES - Speech To Text (STT) OpenAI-compatible # â [http://192.168.1.11:8200](http://192.168.1.11:8200) # âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ speaches-stt: image: speaches:rocm-ct2 # image buildĂ©e localement (voir ci-dessous) container_name: speaches-stt restart: unless-stopped ports: - "8200:8000" devices: - /dev/kfd - /dev/dri group_add: - "44" # GID video - "991" # GID render security_opt: - seccomp=unconfined environment: - HSA_OVERRIDE_GFX_VERSION=11.0.0 - WHISPER__MODEL=Systran/faster-whisper-large-v3 - WHISPER__LANGUAGE=fr - WHISPER__COMPUTE_TYPE=int8 # float16 non supportĂ© en CPU - WHISPER__DEVICE=cpu # GPU ROCm en cours (rebuild) volumes: - speaches-models:/root/.cache/huggingface speaches-init: image: curlimages/curl:latest container_name: speaches-init restart: "no" depends_on: - speaches-stt entrypoint: > sh -c "sleep 5 && curl -sf -X POST http://speaches-stt:8000/v1/models/Systran%2Ffaster-whisper-large-v3 && echo 'ModĂšle enregistrĂ©'" volumes: speaches-models:`
## openedai-speech â TTS (Text To Speech) (`~/openedai-speech/docker-compose.yml`)
text
`services: openedai-speech: image: ghcr.io/matatonic/openedai-speech container_name: openedai-speech restart: unless-stopped ports: - "8100:8000" volumes: - ./tts-voices:/app/voices - ./tts-config:/app/config devices: - /dev/kfd - /dev/dri group_add: - "44" # GID video - "991" # GID render environment: - HSA_OVERRIDE_GFX_VERSION=11.0.0 - HIP_VISIBLE_DEVICES=0`
---
## âïž Configuration Open WebUI
## Admin Panel â Settings â Connections
- **Ollama URL**Â :Â `http://192.168.1.11:3011`
## Admin Panel â Settings â Audio
- **STT Engine**Â : OpenAI
- **STT URL**Â :Â `http://192.168.1.11:8200/v1`
- **STT Model**Â :Â `Systran/faster-whisper-large-v3`
- **TTS Engine**Â : OpenAI
- **TTS URL**Â :Â `http://192.168.1.11:8100/v1`
- **TTS Model**Â :Â `tts-1-hd`
## Admin Panel â Settings â Documents
- **Embedding Engine**Â : Ollama
- **Embedding Model**Â :Â `bge-m3:latest`
- **Vector Database**Â : Qdrant
- **Qdrant URL**Â :Â `http://qdrant:6333`â
## ModĂšles Ollama disponibles sur folzo-Corpâ
- `qwen2.5:14b`Â â LLM principal d'Effi
- `bge-m3`Â â Embeddings RAG
## Workspace Effi (Open WebUI)
- Compte admin :Â `master`
- Compte utilisateur :Â `folzo`
- System prompt global configurĂ© avec personnalitĂ© + contexte infrastructureâ
---
## đ§ Build speaches ROCm â CTranslate2 gfx1100
## ProblÚme rencontré
L'image speaches ne publie pas d'image ROCm. Il faut builder manuellement. La RX 7800 XT est `gfx1100` mais le Dockerfile par dĂ©faut cible `gfx1101` â `hipErrorInvalidDeviceFunction`.
## Solution
bash
`cd ~/speaches git clone [https://github.com/speaches-ai/speaches](https://github.com/speaches-ai/speaches) . cd src # Corriger l'architecture GPU : gfx1101 â gfx1100 sed -i 's/gfx1101/gfx1100/g' Dockerfile.rocm-ct2 grep gfx Dockerfile.rocm-ct2 # vĂ©rification # Build (~50 min la premiĂšre fois) docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .`
## Ajout MIOpen (fix cuDNN)â
text
`# Dans Dockerfile.rocm-ct2, ajouter dans le cmake : -DWITH_CUDNN=ON -DCUDnn_LIBRARY=/opt/rocm-6.3.4/lib/libMIOpen.so`
> â ïžÂ **Statut actuel** : Le rebuild avec `gfx1100` est en cours. speaches fonctionne en **CPU** (int8) en attendant â ~10s pour 5s d'audio sur le Ryzen 5800X3D.â
---
## đ ProblĂšmes rencontrĂ©s et solutions
## 1. wol-proxy â image inexistante
**ProblĂšme**Â : Image Docker inexistante sur le registryâ
**Solution**Â : Build local depuis le code Python maison
bash
`cd ~/effi && docker compose up -d --build`
## 2. Interface rĂ©seau Ubuntu plantĂ©eâ
**ProblÚme** : La carte réseau d'effi-server tombe silencieusement
**Solution**Â : Off/On via NetworkManager
bash
`sudo systemctl restart NetworkManager`
**Fix permanent**Â (pour NIC Intel i225/i226) :
bash
`echo 'ACTION=="add", SUBSYSTEM=="net", NAME=="enp3s0", RUN+="/usr/sbin/ethtool -s enp3s0 wol g"' \\ | sudo tee /etc/udev/rules.d/99-disable-net-powersave.rules`
## 3. Whisper â mauvais repo HuggingFace
**ProblÚme** : Open WebUI envoyait `Systeme/faster-whisper-tiny` (inexistant)
**Solution** : Corriger dans Settings â Audio â STT Model + changer `WHISPER__MODEL` dans docker-compose
## 4. speaches â `PRELOAD_MODELS` format invalideâ
**ProblÚme** : La variable `PRELOAD_MODELS` avec un objet JSON crash le conteneur
**Solution** : Supprimer `PRELOAD_MODELS` entiÚrement, utiliser un service `speaches-init` pour enregistrer le modÚle via API au démarrage
## 5. openedai-speech â `group render` introuvable
**ProblÚme** : `group_add: render` échoue car le groupe n'existe pas dans le conteneur
**Solution** : Utiliser les GID numériques `"44"` et `"991"` au lieu des noms
## 6. CTranslate2 float16 sur CPUâ
**ProblĂšme**Â :Â `ValueError: float16 not supported on CPU backend`
**Solution**Â :Â `WHISPER__COMPUTE_TYPE=int8`
## 7. mcpo redĂ©marre en boucleâ
**ProblÚme** : Config `mcpo-config/config.json` vide au premier démarrage
**Solution**Â :
bash
`cat > ~/effi/mcpo-config/config.json << 'EOF' {"mcpServers": {}} EOF docker compose restart mcpo`
## 8. Open WebUI lent aprĂšs rebootâ
**ProblÚme** : Conteneurs sans `restart: unless-stopped`
**Solution** : Ajouter `restart: unless-stopped` à tous les services du docker-compose
---
## đŠ Initialisation CouchDB (une seule fois)
bash
`curl -X PUT [http://master:MOT_DE_PASSE@192.168.1.27:5984/_users](http://master:MOT_DE_PASSE@192.168.1.27:5984/_users) curl -X PUT [http://master:MOT_DE_PASSE@192.168.1.27:5984/_replicator](http://master:MOT_DE_PASSE@192.168.1.27:5984/_replicator) curl -X PUT http://master:MOT_DE_PASSE@192.168.1.27:5984/obsidian-livesync`
---
## đ Ouverture de ports firewall
Sur **folzo-Corp** (Bazzite/Fedora) :
bash
`sudo firewall-cmd --add-port=8200/tcp --permanent # speaches STT sudo firewall-cmd --add-port=8100/tcp --permanent # openedai-speech TTS sudo firewall-cmd --reload`
---
## â
Ătat actuel du pipeline vocal
| Ătape | Status | DĂ©tail |
| :-- | :-- | :-- |
| STT (Whisper) | â
Fonctionnel | speaches CPU, large-v3, ~10s/phrase |
| LLM (Ollama) | â
Fonctionnel | qwen2.5:14b sur folzo-Corp |
| TTS (openedai-speech) | â
Fonctionnel | tts-1-hd, ROCm activé |
| WOL PC gaming | â
Fonctionnel | wol-proxy sur port 3011 |
| RAG Qdrant | đ§ En cours | Nextcloud â indexation Ă configurer |
---
## đ§ Prochaines Ă©tapes
- Finaliser le rebuild `speaches:rocm-ct2` avec `gfx1100` â activer GPU pour STT
- Configurer le RAG Qdrant avec les fichiers Nextcloud (~1 GB, ~1000 fichiers)
- Tester mem0 / MCP pour la mĂ©moire persistante d'Effiâ
- Configurer n8n pour les workflows automatiques
- Sync Obsidian LiveSync sur mobileâ
Avancement 2 :
## đ RĂ©sumĂ© Complet du Thread
---
## đ„ïž Infrastructure
| Machine | IP | RĂŽle | GPU/CPU |
| :-- | :-- | :-- | :-- |
| **folzo-Corp** | 192.168.1.11 | PC gaming / STT+TTS | AMD RX 7800 XT (gfx1100) |
| **effi-server** | 192.168.1.27 | Serveur IA principal | CPU Intel 4 cores / 7.6GB RAM |
| **PC Gaming Ollama** | variable | LLM Ollama | GPU dédié |
---
## đŻ Objectif du Thread
Faire tourner Whisper (STT) sur la RX 7800 XT de folzo-Corp via ROCm, en construisant CTranslate2-ROCm depuis les sources (speaches), puis migrer le TTS (openedai-speech) d'effi-server vers folzo-Corp pour libérer le CPU.
---
## đš Ătapes RĂ©alisĂ©es
## 1. Build CTranslate2-ROCm pour speaches
**ProblĂšme initial :**Â `RuntimeError: Conv1D on GPU currently requires the cuDNN library which is not integrated in this build`
**Cause :** CTranslate2-ROCm compilé sans support MIOpen (équivalent ROCm de cuDNN)
**Solution :** Dockerfile custom `~/speaches/src/Dockerfile.rocm-ct2` avec :
text
`-DWITH_CUDNN=ON -DCUDnn_INCLUDE_DIR=/opt/rocm-6.3.4/include -DCUDnn_LIBRARY=/opt/rocm-6.3.4/lib/libMIOpen.so`
Image base :Â `rocm/dev-ubuntu-24.04:6.3.4-complete`
Source CTranslate2 :Â `github.com/arlo-phoenix/CTranslate2-rocm`
---
## 2. Erreur Architecture GPU Incorrecte
**ProblĂšme :**Â `RuntimeError: parallel_for failed: hipErrorInvalidDeviceFunction: invalid device function`
**Cause :** Build compilé pour `gfx1101` mais la RX 7800 XT est `gfx1100`
**Diagnostic :**
bash
`docker run --device /dev/kfd --device /dev/dri \\ -e HSA_OVERRIDE_GFX_VERSION=11.0.0 speaches:rocm-ct2 \\ /opt/rocm-6.3.4/bin/rocminfo | grep -E "gfx|Name" # â gfx1100 (AMD Radeon RX 7800 XT)`
**Fix :**
bash
`sed -i 's/gfx1101/gfx1100/g' ~/speaches/src/Dockerfile.rocm-ct2 cd ~/speaches/src docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .`
---
## 3. Transcription fonctionnelle (CPU en attendant rebuild)
AprĂšs le premier build, speaches fonctionne en CPU (fallback) :
- `200 OK` sur `/v1/audio/transcriptions`
- Langue `fr` détectée à 99%
- RTF > 1 (13s pour 5.4s audio) â confirme CPU, pas GPU
- ONNX Runtime cherche `libcublasLt.so.12` (CUDA) â warning non bloquant, fallback CPU automatique
**Rebuild avec gfx1100 en cours** pour activer l'accélération GPU (~10x plus rapide attendu).
---
## 4. ProblÚme réseau effi-server
**SymptÎmes :** Interface filaire effi-server plantée aprÚs reboot, OpenWebUI inaccessible
**Diagnostic :**
text
`conflict detected for IP address 192.168.1.11 with host 5C:87:9C:65:95:23`
**Cause :**Â Conflit DHCP â deux machines avec la mĂȘme IPÂ `192.168.1.11`
**Fix court terme :**Â `nmcli device disconnect enp6s0 && nmcli device connect enp6s0`
**Fix permanent recommandé :** Réservations DHCP par MAC sur le routeur + `ethtool wol g` pour la carte Realtek RTL8111
---
## 5. OpenWebUI lent / erreurs 500
**SymptĂŽmes :**Â `500: Open WebUI: Server Connection Error`, lenteur UI
**Diagnostic :**
text
`ERROR: open_webui.routers.ollama: Connection error`
**Cause :** Ollama inaccessible â le PC gaming Ă©tait Ă©teint. Le `wol-proxy` sur effi-server assure le Wake-on-LAN mais le PC n'avait pas rĂ©pondu Ă temps.
**Architecture WOL :**
text
`OpenWebUI â port 3011 effi â wol-proxy â WOL magic packet â PC Gaming â proxy TCP vers 11434`
---
## 6. Deux processus zombies sur effi-server
Détectés via `ps aux` :
text
`[mcpo] [python] `
**Fix :**
bash
`docker restart mcpo`
---
## 7. Migration openedai-speech â folzo-Corp
**Raison :**Â `openedai-speech`Â consommait ~100% CPU sur effi-server (1.06GB RAM, CPU intensif)
**Ătapes :**
bash
`# ArrĂȘt sur effi docker compose stop openedai-speech && docker compose rm -f openedai-speech # Copie des donnĂ©es depuis folzo-Corp scp -r effi@192.168.1.27:~/effi/tts-voices ~/openedai-speech/ scp -r effi@192.168.1.27:~/effi/tts-config ~/openedai-speech/`
**Contenu transféré :** modÚles XTTS (~1.8GB), voix WAV (alloy/echo/nova/shimmer/fable/onyx), modÚles ONNX piper, configs YAML
**ProblĂšme group_add :**Â `Unable to find group render: no matching entries in group file`
**Fix :** Utiliser GID numériques au lieu des noms :
text
`group_add: - "44" # video - "991" # render`
---
## đ Fichiers ClĂ©s
text
`folzo-Corp: âââ ~/speaches/ â âââ src/Dockerfile.rocm-ct2 # Build CTranslate2 gfx1100 + MIOpen â âââ docker-compose.yml # speaches-stt:8200 âââ ~/openedai-speech/ âââ docker-compose.yml # TTS ROCm gfx1100 âââ tts-voices/ # Voix XTTS + ONNX âââ tts-config/ # voice_to_speaker.yaml etc. effi-server: âââ ~/effi/docker-compose.yml # OpenWebUI + WOL + n8n + qdrant...`
---
## â
Ătat Final des Services
| Service | HĂŽte | Port | Ătat | Notes |
| :-- | :-- | :-- | :-- | :-- |
| **speaches-stt** | folzo-Corp | 8200 | â
Fonctionne | CPU actuellement, rebuild gfx1100 pending |
| **openedai-speech** | folzo-Corp | 8100 | â
Démarré | ROCm gfx1100, group_add 44+991 |
| **OpenWebUI** | effi-server | 3000 | â
Fonctionne | Pointé STT+TTS vers 192.168.1.11 |
| **wol-proxy** | effi-server | 3011 | â
Fonctionne | Proxy Ollama + WOL PC gaming |
| **n8n** | effi-server | 5678 | â
Running | |
| **qdrant** | effi-server | 6333 | â
Running | Vector store RAG |
| **pipelines** | effi-server | 9099 | â
Running | mem0 memory |
| **couchdb** | effi-server | 5984 | â
Running | Obsidian LiveSync |
| **mcpo** | effi-server | 8000 | â ïž Zombie dĂ©tectĂ© | RedĂ©marrĂ© |
---
## đ Prochaines Ătapes
1. **Finaliser rebuild speaches gfx1100**Â â activer GPU sur Whisper large-v3
2. **Tester TTS ROCm** â vĂ©rifier que openedai-speech utilise bien la RX 7800 XT
3. **Mettre Ă jour l'URL TTS** dans OpenWebUI Admin â Audio â `http://192.168.1.11:8100`
4. **Réservations DHCP** sur le routeur pour fixer les IPs de façon permanente
5. **Tester pipeline vocal complet**Â : micro â STT folzo â OpenWebUI effi â LLM Ollama â TTS folzo â speaker
Le probleme est que lorsque je fais un vocal avec Effi ma charge CPU explose entre le llm d'effi, le llm de la memoire, le whisper pour la comprehension et la generation vocal, mon pc et ma 7800xt ne suive pas. Alors j'ai besoin de toi pour faire le point et voire quel solution nous pouvons trouver pour ameliorer ca
Le goulot d'Ă©tranglement est clair : ton pipeline vocal empile **4 processus lourds sĂ©quentiels** sur la mĂȘme RX 7800 XT, dont deux qui mobilisent le GPU simultanĂ©ment. Voici l'analyse et le plan d'optimisation par ordre d'impact.
## Diagnostic : qui consomme quoi
| Composant | ModÚle actuel | CPU/GPU | VRAM estimée |
| :-- | :-- | :-- | :-- |
| STT (speaches) | `large-v3` sur **CPU** | CPU 100% | â |
| LLM principal | `qwen2.5:14b` | GPU | ~8.5 GB |
| TTS (openedai-speech) | `tts-1-hd` = XTTS v2 | GPU | ~4 GB [^1_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.[^1_2]
Dans `~/speaches/docker-compose.yml` sur folzo-Corp :
```yaml
environment:
- WHISPER__MODEL=Systran/faster-whisper-large-v3-turbo # â Ă©tait large-v3
- WHISPER__COMPUTE_TYPE=int8
- WHISPER__DEVICE=cpu
```
```bash
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.[^1_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_1][^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.[^1_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Ă© :[^1_5]
```python
# 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 :
```bash
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 :[^1_6]
```
VRAM aprĂšs tous les fixes :
qwen2.5:14b â 8.5 GB
qwen2.5:3b (mem0) â 2.0 GB
Whisper large-v3-t â 1.5 GB
âââââââââââââââââââââââââââââ
Total â 12.0 GB / 16 GB â
confortable
```
***
## Plan d'action prioritaire
1. **Maintenant** : changer `WHISPER__MODEL` â `large-v3-turbo` (restart speaches, 2 min)
2. **Maintenant** : changer TTS model â `tts-1` dans Open WebUI (instantanĂ©)
3. **AprĂšs** : `ollama pull qwen2.5:3b` + reconfigurer mem0 pour pointer sur ce modĂšle
4. **Ensuite** : finaliser le rebuild `speaches:rocm-ct2 gfx1100` pour passer Whisper sur GPU
Les fixes \#1 et \#2 seuls devraient **diviser par 3-4 la charge ressentie** lors d'une conversation vocale, sans aucun impact notable sur la qualité perçue.
[^1_10][^1_11][^1_12][^1_13][^1_14][^1_15][^1_7][^1_8][^1_9]
â
[^1_1]: https://git.robby.blue/ml/openedai-speech
[^1_2]: https://whispernotes.app/blog/introducing-whisper-large-v3-turbo
[^1_3]: https://github.com/matatonic/openedai-speech
[^1_4]: https://github.com/mdmonsurali/Offline-Fast-CPU-PIPER-TTS
[^1_5]: https://docs.mem0.ai/components/llms/config
[^1_6]: https://whishper.net/reference/models/
[^1_7]: https://blog.stephane-robert.info/docs/developper/programmation/python/ollama/
[^1_8]: https://dev.to/ajitkumar/the-complete-guide-to-ollama-run-large-language-models-locally-2mge
[^1_9]: https://docs.ollama.com/faq
[^1_10]: https://docs.mem0.ai/components/embedders/models/ollama
[^1_11]: https://github.com/mem0ai/mem0/issues/2758
[^1_12]: https://github.com/ggml-org/whisper.cpp/discussions/3074
[^1_13]: https://komelin.com/blog/using-small-llms-locally
[^1_14]: https://www.youtube.com/watch?v=Q-4pkwHiAkA
[^1_15]: https://www.whishper.net/reference/models/
---
# 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 :
```bash
nano ~/speaches/docker-compose.yml
```
RepĂšre la ligne `WHISPER__MODEL` et remplace :
```yaml
# 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 :
```bash
cd ~/speaches && docker compose up -d speaches-stt
```
Surveille le téléchargement du modÚle (environ 1.5 GB) :
```bash
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é :
```bash
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](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` :
```yaml
# â 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 :
```yaml
# â Avant
group_add:
- video
# â
AprĂšs
group_add:
- "44" # video
- "991" # render
```
***
## Fichier final corrigé
```yaml
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 :
```bash
cd ~/speaches && docker compose up -d
```
Puis surveille les logs :
```bash
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`.[^5_1][^5_2]
## Correction Ă appliquer
Deux lignes Ă changer dans `~/speaches/docker-compose.yml` :
```yaml
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) :
```bash
cd ~/speaches
docker compose down
docker compose up -d
```
Surveille le téléchargement (~800 MB, plus léger que large-v3) :
```bash
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 !
[^5_10][^5_11][^5_12][^5_13][^5_14][^5_15][^5_3][^5_4][^5_5][^5_6][^5_7][^5_8][^5_9]
â
[^5_1]: https://huggingface.co/deepdml/faster-whisper-large-v3-turbo-ct2
[^5_2]: https://github.com/SYSTRAN/faster-whisper/issues/1030
[^5_3]: https://huggingface.co/Systran/faster-whisper-large-v3
[^5_4]: https://www.toolify.ai/ai-model/systran-faster-whisper-large-v3
[^5_5]: https://github.com/SYSTRAN/faster-whisper
[^5_6]: https://console.groq.com/docs/model/whisper-large-v3-turbo
[^5_7]: https://github.com/SYSTRAN/faster-whisper/issues/1025
[^5_8]: https://catalog.ngc.nvidia.com/orgs/nvidia/teams/riva/models/whisper_large_turbo
[^5_9]: https://github.com/SYSTRAN/faster-whisper/issues/567
[^5_10]: https://www.oreateai.com/blog/downloading-whisperlargev3turbo-a-guide-to-enhanced-speech-recognition/5f278388c08fe192dc30d0c0844ee0a4
[^5_11]: https://www.kaggle.com/datasets/rikstillman/faster-whisper-large-v3-model
[^5_12]: https://github.com/openai/whisper
[^5_13]: https://www.reddit.com/r/LocalLLaMA/comments/1ftjqg9/whisper_turbo_now_supported_in_transformers/
[^5_14]: https://huggingface.co/openai/whisper-large-v3-turbo
[^5_15]: https://github.com/systran/faster-whisper
---
# 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é :
```bash
nano ~/speaches/docker-compose.yml
```
Remplace tout le contenu par :
```yaml
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 :
```bash
cd ~/speaches && docker compose up -d
```
---
# encore une erreur :
olzo@folzo-Corp:~/speaches\$ docker logs -f speaches-stt
2026-02-22 11:59:59,545:DEBUG:speaches.main:create_app:102:Config: stt_model_ttl=300 tts_model_ttl=300 vad_model_ttl=-1 api_key=None log_level='debug' host='0.0.0.0' port=8000 allow_origins=None enable_ui=True whisper=WhisperConfig(inference_device='auto', device_index=0, compute_type='int8', cpu_threads=0, num_workers=1) loopback_host_url=None chat_completion_base_url='http://localhost:11434/v1' chat_completion_api_key=SecretStr('**********') unstable_ort_opts=OrtOptions(exclude_providers=['TensorrtExecutionProvider'], provider_priority={'CUDAExecutionProvider': 100}, provider_opts={}) otel_exporter_otlp_endpoint=None otel_service_name='speaches' preload_models=[]
2026-02-22 12:00:00,459:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 12:00:00,513:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 12:00:00,631:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
2026-02-22 12:00:00,760:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
new
2026-02-22 12:00:00,771:INFO:speaches.main:create_app:202:
To view the gradio web ui of speaches open your browser and visit:
http://localhost:8000/
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on [http://0.0.0.0:8000](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](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](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](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](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
2026-02-22 12:00:02,520:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 12:00:02,714:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=ctranslate2\&filter=automatic-speech-recognition\&cardData=True HTTP/11" 200 244215
Invalid model-index. Not loading eval results into CardData.
2026-02-22 12:00:02,846:WARNING:huggingface_hub.repocard_data:__init__:368:Invalid model-index. Not loading eval results into CardData.
2026-02-22 12:00:02,972:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873
2026-02-22 12:00:02,974:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 12:00:02,976:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 12:00:02,978:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 12:00:02,978:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 12:00:03,079:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/model.bin HTTP/11" 302 0
2026-02-22 12:00:03,079:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/config.json HTTP/11" 307 0
2026-02-22 12:00:03,085:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311507184 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock
2026-02-22 12:00:03,085:DEBUG:filelock:acquire:334:Lock 131631311507184 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock
2026-02-22 12:00:03,094:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/config.json HTTP/11" 200 0
2026-02-22 12:00:03,095:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311513904 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0351d1d6870005e865747b781b5d7c23ea0459cd.lock
2026-02-22 12:00:03,095:DEBUG:filelock:acquire:334:Lock 131631311513904 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0351d1d6870005e865747b781b5d7c23ea0459cd.lock
2026-02-22 12:00:03,128:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/tokenizer.json HTTP/11" 307 0
2026-02-22 12:00:03,131:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/vocabulary.json HTTP/11" 307 0
2026-02-22 12:00:03,143:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/tokenizer.json HTTP/11" 200 0
2026-02-22 12:00:03,143:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311512464 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/17456db595adc78a973f97d69d8cb50bc87c0b1c.lock
2026-02-22 12:00:03,143:DEBUG:filelock:acquire:334:Lock 131631311512464 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/17456db595adc78a973f97d69d8cb50bc87c0b1c.lock
2026-02-22 12:00:03,146:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/vocabulary.json HTTP/11" 200 0
2026-02-22 12:00:03,146:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311512944 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0adcd01e7c237205d593b707e66dd5d7bc785d2d.lock
2026-02-22 12:00:03,146:DEBUG:filelock:acquire:334:Lock 131631311512944 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0adcd01e7c237205d593b707e66dd5d7bc785d2d.lock
2026-02-22 12:00:03,155:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/README.md HTTP/11" 307 0
2026-02-22 12:00:03,183:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /deepdml/faster-whisper-large-v3-turbo-ct2/resolve/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/preprocessor_config.json HTTP/11" 307 0
2026-02-22 12:00:03,194:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/config.json HTTP/11" 200 None
2026-02-22 12:00:03,195:DEBUG:filelock:release:364:Attempting to release lock 131631311513904 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0351d1d6870005e865747b781b5d7c23ea0459cd.lock
2026-02-22 12:00:03,195:DEBUG:filelock:release:367:Lock 131631311513904 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0351d1d6870005e865747b781b5d7c23ea0459cd.lock
2026-02-22 12:00:03,196:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/xet-read-token/4df90f75321148c3a29a9e2351b7ddf8f5b115a8 HTTP/11" 200 365
2026-02-22 12:00:03,198:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/preprocessor_config.json HTTP/11" 200 0
2026-02-22 12:00:03,198:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311506848 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/931c77a740890c46365c7ae0c9d350ba3cca908f.lock
2026-02-22 12:00:03,198:DEBUG:filelock:acquire:334:Lock 131631311506848 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/931c77a740890c46365c7ae0c9d350ba3cca908f.lock
2026-02-22 12:00:03,243:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/tokenizer.json HTTP/11" 200 None
2026-02-22 12:00:03,248:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/vocabulary.json HTTP/11" 200 None
2026-02-22 12:00:03,254:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/README.md HTTP/11" 200 0
2026-02-22 12:00:03,255:DEBUG:filelock:acquire:331:Attempting to acquire lock 131631311404352 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/fb53844bcca20e84e58c86859351b0af33771b87.lock
2026-02-22 12:00:03,255:DEBUG:filelock:acquire:334:Lock 131631311404352 acquired on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/fb53844bcca20e84e58c86859351b0af33771b87.lock
2026-02-22 12:00:03,286:DEBUG:filelock:release:364:Attempting to release lock 131631311512944 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0adcd01e7c237205d593b707e66dd5d7bc785d2d.lock
2026-02-22 12:00:03,286:DEBUG:filelock:release:367:Lock 131631311512944 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/0adcd01e7c237205d593b707e66dd5d7bc785d2d.lock
2026-02-22 12:00:03,299:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/preprocessor_config.json HTTP/11" 200 340
2026-02-22 12:00:03,300:DEBUG:filelock:release:364:Attempting to release lock 131631311506848 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/931c77a740890c46365c7ae0c9d350ba3cca908f.lock
2026-02-22 12:00:03,300:DEBUG:filelock:release:367:Lock 131631311506848 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/931c77a740890c46365c7ae0c9d350ba3cca908f.lock
2026-02-22 12:00:03,300:DEBUG:filelock:release:364:Attempting to release lock 131631311512464 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/17456db595adc78a973f97d69d8cb50bc87c0b1c.lock
2026-02-22 12:00:03,300:DEBUG:filelock:release:367:Lock 131631311512464 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/17456db595adc78a973f97d69d8cb50bc87c0b1c.lock
2026-02-22 12:00:03,357:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/resolve-cache/models/deepdml/faster-whisper-large-v3-turbo-ct2/4df90f75321148c3a29a9e2351b7ddf8f5b115a8/README.md HTTP/11" 200 None
2026-02-22 12:00:03,358:DEBUG:filelock:release:364:Attempting to release lock 131631311404352 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/fb53844bcca20e84e58c86859351b0af33771b87.lock
2026-02-22 12:00:03,358:DEBUG:filelock:release:367:Lock 131631311404352 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/fb53844bcca20e84e58c86859351b0af33771b87.lock
2026-02-22 12:00:17,998:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: c557b30f-5a36-4f95-8a19-2180897c60ea.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="c557b30f-5a36-4f95-8a19-2180897c60ea.mp3"'}), size: 45165
2026-02-22 12:00:18,106:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 5.58s of audio in 0.10827s (RTF: 0.01940251379999863)
2026-02-22 12:00:18,107:DEBUG:asyncio:__init__:64:Using selector: EpollSelector
2026-02-22 12:00:18,107:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using `POST /v1/models`
INFO: 192.168.1.27:53486 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found
2026-02-22 12:00:18,112:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: c557b30f-5a36-4f95-8a19-2180897c60ea.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="c557b30f-5a36-4f95-8a19-2180897c60ea.mp3"'}), size: 45165
2026-02-22 12:00:18,181:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 5.58s of audio in 0.06847s (RTF: 0.01227030716826021)
2026-02-22 12:00:18,181:DEBUG:asyncio:__init__:64:Using selector: EpollSelector
2026-02-22 12:00:18,181:ERROR:speaches.main:_custom_http_exception_handler:154:HTTP error: 404: Model 'Systran/faster-whisper-large-v3-turbo' is not installed locally. You can download the model using `POST /v1/models`
INFO: 192.168.1.27:53496 - "POST /v1/audio/transcriptions HTTP/1.1" 404 Not Found
2026-02-22 12:00:32,620:DEBUG:filelock:release:364:Attempting to release lock 131631311507184 on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock
2026-02-22 12:00:32,620:DEBUG:filelock:release:367:Lock 131631311507184 released on /root/.cache/huggingface/hub/.locks/models--deepdml--faster-whisper-large-v3-turbo-ct2/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da.lock
Fetching 6 files: 100%|ââââââââââ| 6/6 [00:29<00:00, 4.94s/it]
INFO: 172.18.0.3:55182 - "POST /v1/models/deepdml/faster-whisper-large-v3-turbo-ct2 HTTP/1.1" 200 OK
Tout se passe bien ! Voici ce que les logs indiquent :
- â
**ModÚle téléchargé** : `Fetching 6 files: 100%` en 29 secondes
- â
**speaches-init a enregistrĂ© le modĂšle** : `POST /v1/models/deepdml/faster-whisper-large-v3-turbo-ct2` â **200 OK**
- â ïž **Les erreurs 404** en cours de route viennent d'Open WebUI qui cherchait encore l'ancien nom `Systran/faster-whisper-large-v3-turbo` â c'est normal, il faut mettre Ă jour la config
## Action : mettre Ă jour Open WebUI
Dans l'interface Open WebUI sur **effi-server** :
**Admin Panel â Settings â Audio â STT Model**
```
# Avant
Systran/faster-whisper-large-v3
# AprĂšs
deepdml/faster-whisper-large-v3-turbo-ct2
```
Sauvegarde, puis **teste une transcription vocale** dans Effi.
Dans les logs speaches, tu devrais maintenant voir apparaĂźtre un bloc du type :
```
Transcribing audio...
RTF: 0.0X â doit ĂȘtre < 0.5 (beaucoup plus rapide qu'avant)
```
Dis-moi le RTF que tu observes â ça confirmera le gain de vitesse â et on passera au **Fix \#2** (basculer TTS sur Piper pour libĂ©rer 4 GB VRAM).
---
## Fix \#2 â Basculer TTS vers Piper (libĂšre 4 GB VRAM)
C'est le fix le plus simple, tout se passe dans Open WebUI.
**Admin Panel â Settings â Audio â TTS Model**
```
# Avant
tts-1-hd â XTTS v2, ~4 GB VRAM sur la 7800 XT
# AprĂšs
tts-1 â Piper, tourne sur CPU, quasi aucune ressource
```
Sauvegarde. C'est tout â pas de redĂ©marrage de conteneur nĂ©cessaire.
***
## Ce que ça change concrÚtement
| | Avant | AprĂšs |
| :-- | :-- | :-- |
| TTS backend | XTTS v2 (GPU) | Piper (CPU) |
| VRAM consommée | ~4 GB | ~0 GB |
| Qualité voix | TrÚs naturelle | Correcte, légÚrement synthétique |
| Latence génération | ~2-3s | ~0.3s (quasi instantané) |
La qualité Piper est un cran en dessous d'XTTS, mais la latence est **bien meilleure** pour un usage conversationnel. Si la qualité vocale te manque vraiment, on pourra revenir à `tts-1-hd` une fois le budget VRAM optimisé avec le Fix \#3.
***
Dis-moi quand c'est fait, on attaquera le **Fix \#3** â configurer mem0 pour utiliser `qwen2.5:3b` au lieu du 14b pour les opĂ©rations mĂ©moire.
---
# la configuration est bonne ? :
L'image est trÚs petite et difficile à lire en détail. Les deux points clés à vérifier :
**â
Ce qui doit ĂȘtre configurĂ© :**
| Champ | Valeur attendue |
| :-- | :-- |
| **STT Engine** | OpenAI |
| **STT URL** | `http://192.168.1.11:8200/v1` |
| **STT Model** | `deepdml/faster-whisper-large-v3-turbo-ct2` |
| **TTS Engine** | OpenAI |
| **TTS URL** | `http://192.168.1.11:8100/v1` |
| **TTS Model** | `tts-1` |
Peux-tu confirmer que ces valeurs correspondent à ce que tu vois à l'écran ? En particulier :
- Le **STT Model** est bien `deepdml/faster-whisper-large-v3-turbo-ct2` (et non l'ancien `Systran/...`) ?
- Le **TTS Model** est bien `tts-1` (et non `tts-1-hd`) ?
Si tout est bon, on passe au **Fix \#3** â mem0 avec `qwen2.5:3b`.
[^9_1]
â
[^9_1]: image.jpg
---
# et la voix est reglé sur alloy c'est la bonne ?
**Oui, `alloy` fonctionne** avec `tts-1` (Piper). C'est un bon choix pour commencer.
Une petite nuance Ă avoir en tĂȘte : avec `tts-1-hd` (XTTS), les voix utilisaient les fichiers WAV que tu avais dans `tts-voices/` comme rĂ©fĂ©rence de clonage vocal. Avec `tts-1` (Piper), `alloy` pointe vers un modĂšle ONNX anglais â ça fonctionnera en français mais avec une lĂ©gĂšre "sonoritĂ© anglophone" possible sur certains mots.
Si la voix te semble trop robotique ou mal accentuée en français, on pourra plus tard configurer une voix Piper française native (ex : `fr_FR-upmc-medium`). Mais pour l'instant c'est largement suffisant pour valider le pipeline.
***
**Fix \#2 est terminĂ© â
**
Récap de ce qu'on a fait :
- â
Fix \#1 â STT : `large-v3-turbo-ct2` (CPU beaucoup plus rapide)
- â
Fix \#2 â TTS : `tts-1` Piper (libĂšre ~4 GB VRAM)
***
## Fix \#3 â mem0 avec `qwen2.5:3b`
On attaque la partie la plus impactante sur le GPU. D'abord, télécharge le petit modÚle sur **folzo-Corp** :
```bash
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 :**
```bash
watch -n 1 rocm-smi --showpidgpus
```
**Terminal 2 â voir ce que font les conteneurs Docker :**
```bash
docker stats
```
**Terminal 3 â logs Ollama (tourne en natif sur folzo-Corp) :**
```bash
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.
[^11_1]
â
[^11_1]: image.jpg
---
# 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 :**
```bash
for pid in 2330840 2331861 2278476; do
echo "PID $pid: $(cat /proc/$pid/cmdline | tr '\0' ' ')"
done
```
**Fix docker stats (manque sudo) :**
```bash
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 :
```bash
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 :**
```bash
ollama ps
```
**Fix speaches â retirer les devices GPU si on reste en CPU :**
```bash
nano ~/speaches/docker-compose.yml
```
Commenter les devices et group_add :
```yaml
#devices:
# - /dev/kfd
# - /dev/dri
#group_add:
# - "44"
# - "991"
#security_opt:
# - seccomp=unconfined
```
```bash
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 :
```text
ministral-3:3b â 4.6 GB VRAM (mĂ©moire / outils)
bge-m3:latest â 1.2 GB VRAM (embeddings RAG)
```
Ces deux modĂšles restent chargĂ©s ~5 minutes aprĂšs chaque utilisation (`UNTIL 4 minutes from now`). Câest le comportement normal dâOllama : il garde les modĂšles « chauds » pour accĂ©lĂ©rer les requĂȘtes suivantes. Mais si tu enchaĂźnes les interactions avec Effi, ils restent quasiment tout le temps en VRAM.
### Ce que tu peux faire tout de suite
1. **Vérifier qui appelle quoi :**
- `ministral-3:3b` peut ĂȘtre :
- le modÚle de mem0 (mémoire),
- un modĂšle dâoutils dans Open WebUI (pipelines MCP),
- ou un modĂšle de fallback pour le chat.
- `bge-m3:latest` est appelé par :
- Open WebUI pour le RAG,
- et/ou mem0 pour les embeddings.
2. **Voir la charge réelle GPU vs « juste chargé »**
Quand tu ne parles plus Ă Effi, regarde :
```bash
rocm-smi --showuse
```
Si lâoccupation GPU est proche de 0% mais la VRAM reste haute, ce nâest pas un problĂšme de charge, juste de modĂšles en cache. Le 100% que tu vois dans le moniteur GNOME est souvent la **file dâattente GPU saturĂ©e** au moment des requĂȘtes, pas en permanence.
***
### Rendre Effi moins « anglophone »
Piper (`tts-1`) utilise par dĂ©faut un modĂšle anglais, dâoĂč lâaccent. On peut lui forcer une voix française.
1. Ouvre `~/openedai-speech/tts-config/config.yaml` (ou fichier similaire) sur folzo-Corp.
2. Cherche la section de la voix `alloy` (ou la voix par défaut) et bascule-la sur un modÚle Piper français, par exemple un de ceux listés ici.[^14_1]
Exemple de mapping (structure typique) âŻ:[^14_2][^14_3]
```yaml
voices:
alloy:
engine: piper
model: fr_FR-upmc-medium # ou autre modÚle fr_* installé
```
3. Redémarre le conteneur :
```bash
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.
â
[^14_1]: https://github.com/mdmonsurali/Offline-Fast-CPU-PIPER-TTS
[^14_2]: https://github.com/matatonic/openedai-speech
[^14_3]: https://git.robby.blue/ml/openedai-speech
---
# quand je parle plus a effi :
folzo@folzo-Corp:~\$ rocm-smi --showuse
============================ ROCm System Management Interface ============================
=================================== % time GPU is busy ===================================
GPU[0] : GPU use (%): 100
==========================================================================================
================================== End of ROCm SMI Log ===================================
folzo@folzo-Corp:~\$
Là on a deux choses différentes :
1. **VRAM occupĂ©e** (modĂšles chargĂ©s) â normal si `ollama ps` montre des modĂšles.
2. **`GPU use 100%` dans `rocm-smi` mĂȘme au repos** â ça ressemble Ă un bug de monitoring / DPM, pas forcĂ©ment Ă un calcul rĂ©el, surtout si la conso reste basse.
Avant de tout chambouler, vérifions si le GPU travaille vraiment.
***
## 1. Vérifier la conso réelle du GPU
Lance :
```bash
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.[^15_1][^15_2]
***
## 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.[^15_3][^15_4]
Ădite le service systemd dâOllama :
```bash
sudo systemctl edit ollama
```
Ajoute :
```ini
[Service]
Environment="OLLAMA_KEEP_ALIVE=60"
```
Puis :
```bash
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).[^15_4][^15_3]
***
## 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 :
```bash
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.
[^15_10][^15_5][^15_6][^15_7][^15_8][^15_9]
â
[^15_1]: https://community.amd.com/t5/gpu-developer-tools/rocm-smi-reports-low-power-usage/m-p/213365
[^15_2]: https://github.com/ROCm/ROCm/issues/504
[^15_3]: https://docs.ollama.com/faq
[^15_4]: https://www.reddit.com/r/ollama/comments/1cnxnrv/how_to_set_keepalive_1_on_ollama_linux/
[^15_5]: https://www.reddit.com/r/ollama/comments/1fh040f/question_how_to_keep_ollama_from_unloading_model/
[^15_6]: https://github.com/ollama/ollama/issues/11085
[^15_7]: https://github.com/ollama/ollama/issues/5272
[^15_8]: https://github.com/ollama/ollama/issues/10597
[^15_9]: https://www.reddit.com/r/ollama/comments/1bt1bir/unload_model_from_memory/
[^15_10]: https://blog.csdn.net/gitblog_00488/article/details/151533510
---
# 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âŻ:
```yaml
tts-1:
alloy:
model: voices/en_US-libritts_r-medium.onnx
speaker: 79
# ...
```
Pour avoir une voix française, tu dois :
1. Mettre un modÚle Piper français dans `voices/` (par ex. `fr_FR-upmc-medium.onnx` ou autre modÚle `fr_*` que tu as téléchargé ).[^16_1]
2. Pointer `alloy` dessus :
```yaml
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 :
```bash
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.
â
[^16_1]: https://github.com/mdmonsurali/Offline-Fast-CPU-PIPER-TTS
---
# 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` :
```bash
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Ă©)âŻ:
```bash
nano ~/openedai-speech/tts-config/config.yaml # ou le nom équivalent
```
Remplace le bloc `tts-1` par :
```yaml
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
```bash
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).
[^17_1]
â
[^17_1]: image.jpg
---
# 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/](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** :
```bash
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.[^18_1]
### 2. Configurer `tts-1` pour utiliser cette voix
Ădite ta config :
```bash
nano ~/openedai-speech/tts-config/config.yaml
```
Et adapte la section `tts-1` comme ceci :
```yaml
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
```bash
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`.
[^18_10][^18_2][^18_3][^18_4][^18_5][^18_6][^18_7][^18_8][^18_9]
â
[^18_1]: https://huggingface.co/rhasspy/piper-voices/tree/main/fr/fr_FR/upmc/medium
[^18_2]: https://ftp.us2.freshrpms.net/linux/RPM/openmandriva/cooker/aarch64/main/release/piper-voice-fr_FR-upmc-2023.09.23-1.noarch.html
[^18_3]: https://huggingface.co/rhasspy/piper-voices/blame/0c9c5d340496a47205a799eb046aab69334a88e9/fr/fr_FR/upmc/medium/MODEL_CARD
[^18_4]: https://github.com/JohnnySn0w/piper-rocm
[^18_5]: https://github.com/rhasspy/piper/releases
[^18_6]: https://github.com/home-assistant/core/issues/105819
[^18_7]: https://github.com/rhasspy/piper/blob/master/README.md
[^18_8]: https://github.com/rhasspy/piper
[^18_9]: https://huggingface.co/rhasspy/piper-voices/blob/49a0d23f04e055f1766e5ad15ea2d121a90fa17a/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.json
[^18_10]: https://github.com/home-assistant/addons/issues/3411
---
# 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` :
```bash
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** :
```text
PID 2278476
PID 2526746
```
On veut savoir qui câest exactement.
## 1. Identifier les processus GPU
Sur **folzo-Corp** :
```bash
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 :
```bash
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).
[^20_1]
â
[^20_1]: paste.txt
---
# 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 :
```text
PID 2278476
PID 2526746
```
Lance Ă nouveau :
```bash
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 :
```bash
ollama ps
```
On doit voir si un modÚle (par ex. `ministral-3:3b` ou `qwen2.5:14b`) reste en génération ou boucle.
Colle aussi cette sortie, et on décidera si on :
- coupe un process fautif,
- réduit `keep_alive`,
- ou corrige un pipeline (mem0 / RAG) qui spamme le LLM.
---
# folzo@folzo-Corp:~\$ for pid in 2278476 2526746; do
echo "PID \$pid: $(cat /proc/$pid/cmdline | tr '\\0' ' ')"
done
PID 2278476: /home/ubuntu/speaches/.venv/bin/python .venv/bin/uvicorn speaches.main:create_app --host 0.0.0.0 --port 8000 --factory
cat: /proc/2526746/cmdline: No such file or directory (os error 2)
PID 2526746:
folzo@folzo-Corp:~\$ ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTIL
bge-m3:latest 790764642607 1.2 GB 100% GPU 4096 2 minutes from now
ministral-3:3b f04aa1c738f6 4.6 GB 100% GPU 4096 2 minutes from now
folzo@folzo-Corp:~\$
On a enfin les coupables clairement identifiés :
- **PID 2278476 = speaches (STT)** â tient le GPU inutilement.
- **`ministral-3:3b` + `bge-m3:latest`** â modĂšles Ollama encore chauds (normal), mais ils ne devraient pas continuer Ă consommer 90 W longtemps aprĂšs.
On va réduire la consommation en 3 petits réglages.
***
## 1. Forcer speaches Ă ne plus toucher le GPU
Tu as dĂ©jĂ commentĂ© les `devices` dans `~/speaches/docker-compose.yml`. VĂ©rifions quâil nâest plus attachĂ© au GPU.
1. Vérifier le docker-compose :
```bash
cat ~/speaches/docker-compose.yml
```
Assure-toi que tu nâas bien **aucune** section `devices:` active dans `speaches:` (tout commentĂ© ou supprimĂ©).
2. Recrée le conteneur proprement :
```bash
cd ~/speaches
sudo docker compose down
sudo docker compose up -d
```
3. Vérifie cÎté ROCm :
```bash
rocm-smi --showpidgpus
```
PID `speaches` (python/uvicorn) ne doit plus apparaĂźtre. Si câest bon, tu as supprimĂ© une source de charge GPU permanente.
***
## 2. Réduire le temps de cache des modÚles Ollama
On veut que `bge-m3` (embeddings) et `ministral-3:3b` (mémoire/outils) soient **déchargés** plus vite quand Effi est idle.
1. Crée un override systemd pour Ollama :
```bash
sudo systemctl edit ollama
```
Ajoute :
```ini
[Service]
Environment="OLLAMA_KEEP_ALIVE=60"
```
2. Recharge et redémarre Ollama :
```bash
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`.[^22_1][^22_2]
***
## 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 :
```bash
ollama stop ministral-3:3b
ollama stop bge-m3:latest
```
Puis vérifier :
```bash
ollama ps # doit ĂȘtre vide
rocm-smi --showpower --showuse
```
Tu devrais voir la puissance retomber autour de 20â30 W et `GPU use` proche de 0% aprĂšs quelques secondes.
***
Quand tu auras :
1) vĂ©rifiĂ© que `speaches` nâapparaĂźt plus dans `rocm-smi --showpidgpus`,
2) mis `OLLAMA_KEEP_ALIVE=60` et redémarré Ollama,
on pourra refaire un test complet (conversation Effi â attendre 1â2 minutes â `rocm-smi --showpower --showpidgpus`) pour confirmer que le GPU se calme enfin comme prĂ©vu.
â
[^22_1]: https://docs.ollama.com/faq
[^22_2]: https://www.reddit.com/r/ollama/comments/1cnxnrv/how_to_set_keepalive_1_on_ollama_linux/
---
# 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 :
```yaml
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 :
```bash
nano ~/speaches/docker-compose.yml
```
Remplace la partie `speaches` par :
```yaml
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 :
```bash
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 :
```bash
rocm-smi --showpidgpus
rocm-smi --showpower --showuse
```
Tu devrais voir :
- plus aucun PID `python ... speaches` dans `--showpidgpus`,
- **power** qui redescend, et `GPU use` proche de 0% lorsque tu ne parles pas.
Les modĂšles Ollama (`ministral-3:3b`, `bge-m3`) resteront chargĂ©s en VRAM pour la fluiditĂ©, mais ne consommeront presque rien tant quâil nây a pas de requĂȘtes, ce qui correspond exactement Ă ce que tu veux.[^23_1]
â
[^23_1]: https://docs.ollama.com/faq
---
# 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 :
```bash
rocm-smi --showpidgpus
rocm-smi --showpower --showuse
```
Tu devrais voir :
- plus **aucun PID python/uvicorn speaches** dans `--showpidgpus`,
- une **puissance bien plus basse** (idĂ©alement <40â50 W) et un `GPU use` qui retombe vers 0% quand tu es idle.
Si câest le cas, on a rĂ©glĂ© la cause principale : speaches ne garde plus la 7800 XT en charge permanente, les modĂšles Ollama restent en VRAM pour la fluiditĂ© mais ne consomment presque rien en dehors des requĂȘtes.
---
# j'a iune erreur je dois configurer quelque chose dans openwebui ?
Lâerreur vient de **speaches** (STT) qui renvoie un 500 sur `/v1/audio/transcriptions`, pas dâOpen WebUI.
On vient de modifier le conteneur (plus de GPU), donc il y a probablement une stacktrace cÎté logs.
Sur **folzo-Corp** :
```bash
docker logs -f speaches-stt
```
Refais un test vocal dans Effi et regarde ce qui sâaffiche au moment de lâerreur (les 10â20 derniĂšres lignes).
Colle-moi ce bloc de logs, on va voir si :
- le modĂšle `deepdml/faster-whisper-large-v3-turbo-ct2` se charge bien en CPU,
- ou si speaches sâattend Ă un provider GPU et plante sans `/dev/kfd`.
[^25_1]
â
[^25_1]: image.jpg
---
# folzo@folzo-Corp:~/speaches\$ sudo docker logs -f speaches-stt
2026-02-22 13:05:13,331:DEBUG:speaches.main:create_app:102:Config: stt_model_ttl=300 tts_model_ttl=300 vad_model_ttl=-1 api_key=None log_level='debug' host='0.0.0.0' port=8000 allow_origins=None enable_ui=True whisper=WhisperConfig(inference_device='auto', device_index=0, compute_type='int8', cpu_threads=0, num_workers=1) loopback_host_url=None chat_completion_base_url='http://localhost:11434/v1' chat_completion_api_key=SecretStr('**********') unstable_ort_opts=OrtOptions(exclude_providers=['TensorrtExecutionProvider'], provider_priority={'CUDAExecutionProvider': 100}, provider_opts={}) otel_exporter_otlp_endpoint=None otel_service_name='speaches' preload_models=[]
2026-02-22 13:05:14,290:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 13:05:14,321:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 13:05:14,537:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
2026-02-22 13:05:14,547:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
new
2026-02-22 13:05:14,571:INFO:speaches.main:create_app:202:
To view the gradio web ui of speaches open your browser and visit:
http://localhost:8000/
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on [http://0.0.0.0:8000](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](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](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](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](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 :
```bash
nano ~/speaches/docker-compose.yml
```
Dans `environment:` de `speaches`, remplace :
```yaml
- WHISPER__COMPUTE_TYPE=int8
```
par :
```yaml
- WHISPER__COMPUTE_TYPE=float32
```
(Ăventuellement tu peux tester `int16` plus tard pour un compromis perf/prĂ©cision.)
Sauvegarde, puis redémarre :
```bash
cd ~/speaches
sudo docker compose down
sudo docker compose up -d
```
***
## 2. Tester Ă nouveau le vocal
Ensuite :
1. Vérifie vite fait les logs au démarrage :
```bash
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.
[^26_1][^26_10][^26_2][^26_3][^26_4][^26_5][^26_6][^26_7][^26_8][^26_9]
â
[^26_1]: https://docs.speechmatics.com/deployments/container/gpu-speech-to-text
[^26_2]: https://forums.docker.com/t/enabling-gpu-support-in-docker-containers-for-accelerated-computations/138686
[^26_3]: https://docs.docker.com/desktop/features/gpu/
[^26_4]: https://www.reddit.com/r/docker/comments/htmrj0/how_to_allow_docker_to_access_gpu/
[^26_5]: https://speech.fish.audio/install/
[^26_6]: https://github.com/manzolo/openai-whisper-docker
[^26_7]: https://speaches.ai/installation/
[^26_8]: https://github.com/speaches-ai/speaches/issues/561
[^26_9]: https://docs-beta.internal.speechmatics.com/on-prem/containers/gpu-container/gpu-inference-container
[^26_10]: https://learn.microsoft.com/de-de/virtualization/windowscontainers/deploy-containers/gpu-acceleration
---
# toujours une erreur ; folzo@folzo-Corp:~/speaches\$ sudo docker logs -f speaches-stt
2026-02-22 13:10:20,319:DEBUG:speaches.main:create_app:102:Config: stt_model_ttl=300 tts_model_ttl=300 vad_model_ttl=-1 api_key=None log_level='debug' host='0.0.0.0' port=8000 allow_origins=None enable_ui=True whisper=WhisperConfig(inference_device='auto', device_index=0, compute_type='float32', cpu_threads=0, num_workers=1) loopback_host_url=None chat_completion_base_url='http://localhost:11434/v1' chat_completion_api_key=SecretStr('**********') unstable_ort_opts=OrtOptions(exclude_providers=['TensorrtExecutionProvider'], provider_priority={'CUDAExecutionProvider': 100}, provider_opts={}) otel_exporter_otlp_endpoint=None otel_service_name='speaches' preload_models=[]
2026-02-22 13:10:21,202:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 13:10:21,253:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 13:10:21,380:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
2026-02-22 13:10:21,496:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
new
2026-02-22 13:10:21,522:INFO:speaches.main:create_app:202:
To view the gradio web ui of speaches open your browser and visit:
http://localhost:8000/
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on [http://0.0.0.0:8000](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](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](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](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](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
2026-02-22 13:10:23,321:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
2026-02-22 13:10:23,499:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=ctranslate2\&filter=automatic-speech-recognition\&cardData=True HTTP/11" 200 244215
Invalid model-index. Not loading eval results into CardData.
2026-02-22 13:10:23,559:WARNING:huggingface_hub.repocard_data:__init__:368:Invalid model-index. Not loading eval results into CardData.
2026-02-22 13:10:23,674:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873
Fetching 6 files: 100%|ââââââââââ| 6/6 [00:00<00:00, 92521.41it/s]
INFO: 172.18.0.3:32990 - "POST /v1/models/deepdml/faster-whisper-large-v3-turbo-ct2 HTTP/1.1" 200 OK
2026-02-22 13:10:38,591:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: a8eff92c-6bac-4320-b80d-e66e9b9c1c55.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="a8eff92c-6bac-4320-b80d-e66e9b9c1c55.mp3"'}), size: 25389
2026-02-22 13:10:38,669:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 3.12s of audio in 0.07752s (RTF: 0.024845482053373974)
2026-02-22 13:10:38,669:DEBUG:asyncio:__init__:64:Using selector: EpollSelector
2026-02-22 13:10:38,674:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model silero_vad_v5
2026-02-22 13:10:38,674:DEBUG:speaches.executors.shared.base_model_manager:get_ort_providers_with_options:23:Available ONNX Runtime providers: ['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']
2026-02-22 13:10:38,674:DEBUG:speaches.executors.shared.base_model_manager:get_ort_providers_with_options:33:Using ONNX Runtime providers: [('CUDAExecutionProvider', {}), ('CPUExecutionProvider', {})]
2026-02-22 13:10:38.675920860 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider\& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory
2026-02-22 13:10:38.675933100 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html\#requirements), make sure they're in the PATH, and that your GPU is supported.
2026-02-22 13:10:38.679662590 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider\& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory
2026-02-22 13:10:38.679701570 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html\#requirements), make sure they're in the PATH, and that your GPU is supported.
2026-02-22 13:10:38,681:INFO:speaches.executors.shared.base_model_manager:_load:75:Model silero_vad_v5 loaded in 0.01s
2026-02-22 13:10:38,681:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1
2026-02-22 13:10:38,691:DEBUG:speaches.executors.silero_vad_v5:__call__:138:VAD model inference took 0.0102s
2026-02-22 13:10:38,691:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0
2026-02-22 13:10:38,692:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading
2026-02-22 13:10:38,692:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0181s for 3.12s audio
2026-02-22 13:10:38,692:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model deepdml/faster-whisper-large-v3-turbo-ct2
2026-02-22 13:10:38,800:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/deepdml/faster-whisper-large-v3-turbo-ct2/revision/main HTTP/11" 200 2873
2026-02-22 13:10:41,242:INFO:speaches.executors.shared.base_model_manager:_load:75:Model deepdml/faster-whisper-large-v3-turbo-ct2 loaded in 2.55s
2026-02-22 13:10:41,242:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=1
2026-02-22 13:10:41,242:INFO:faster_whisper:transcribe:391:Processing audio with duration 00:03.120
2026-02-22 13:10:41,242:INFO:faster_whisper:transcribe:428:VAD filter removed 00:00.880 of audio
2026-02-22 13:10:41,262:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=0
2026-02-22 13:10:41,262:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:91:Model deepdml/faster-whisper-large-v3-turbo-ct2 is idle, scheduling offload in 300s
INFO: 192.168.1.27:45124 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
result = await app( \# type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1134, in __call__
await super().__call__(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
raise exc
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
await self.app(scope, receive, _send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
await route.handle(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 125, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 111, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 391, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 292, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool
return await anyio.to_thread.run_sync(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run
result = context.run(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/routers/stt.py", line 171, in transcribe_file
res = transcription_executor.model_manager.handle_transcription_request(transcription_request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 231, in handle_transcription_request
return self.handle_non_streaming_transcription_request(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/tracing.py", line 31, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 161, in handle_non_streaming_transcription_request
segments, transcription_info = whisper_model.transcribe(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 451, in transcribe
) = self.model.detect_language(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1777, in detect_language
encoder_output = self.encode(
^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1358, in encode
return self.model.encode(features, to_cpu=to_cpu)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: No SGEMM backend on CPU
2026-02-22 13:10:41,277:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: a8eff92c-6bac-4320-b80d-e66e9b9c1c55.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="a8eff92c-6bac-4320-b80d-e66e9b9c1c55.mp3"'}), size: 25389
2026-02-22 13:10:41,367:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 3.12s of audio in 0.08957s (RTF: 0.028709025000586197)
2026-02-22 13:10:41,368:DEBUG:asyncio:__init__:64:Using selector: EpollSelector
2026-02-22 13:10:41,371:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:silero_vad_v5 model already loaded
2026-02-22 13:10:41,371:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1
2026-02-22 13:10:41,378:DEBUG:speaches.executors.silero_vad_v5:__call__:138:VAD model inference took 0.0068s
2026-02-22 13:10:41,378:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0
2026-02-22 13:10:41,378:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading
2026-02-22 13:10:41,379:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0074s for 3.12s audio
2026-02-22 13:10:41,379:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:deepdml/faster-whisper-large-v3-turbo-ct2 model already loaded
2026-02-22 13:10:41,379:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:81:Model was set to expire in 300s, cancelling
2026-02-22 13:10:41,379:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=1
2026-02-22 13:10:41,379:INFO:faster_whisper:transcribe:391:Processing audio with duration 00:03.120
2026-02-22 13:10:41,379:INFO:faster_whisper:transcribe:428:VAD filter removed 00:00.880 of audio
2026-02-22 13:10:41,401:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for deepdml/faster-whisper-large-v3-turbo-ct2, self.ref_count=0
2026-02-22 13:10:41,401:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:91:Model deepdml/faster-whisper-large-v3-turbo-ct2 is idle, scheduling offload in 300s
INFO: 192.168.1.27:45128 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
result = await app( \# type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1134, in __call__
await super().__call__(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
raise exc
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
await self.app(scope, receive, _send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
await route.handle(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 125, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 111, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 391, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 292, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool
return await anyio.to_thread.run_sync(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run
result = context.run(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/routers/stt.py", line 171, in transcribe_file
res = transcription_executor.model_manager.handle_transcription_request(transcription_request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 231, in handle_transcription_request
return self.handle_non_streaming_transcription_request(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/tracing.py", line 31, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 161, in handle_non_streaming_transcription_request
segments, transcription_info = whisper_model.transcribe(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 451, in transcribe
) = self.model.detect_language(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1777, in detect_language
encoder_output = self.encode(
^^^^^^^^^^^^
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1358, in encode
return self.model.encode(features, to_cpu=to_cpu)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: No SGEMM backend on CPU
LĂ on a enfin quelque chose de propre : le modĂšle tourne bien, mais il manque une brique BLAS CPU dans lâimage speaches.
Lâerreur clĂ© est :
- `RuntimeError: No SGEMM backend on CPU`
Ăa vient de CTranslate2/faster-whisper qui a besoin dâun backend SGEMM (OpenBLAS / MKL / etc.) pour faire les multiplications de matrices en float32 sur CPU. Dans lâimage `speaches:rocm-ct2` que tu utilises, tout est cĂąblĂ© pour le GPU (ROCm), et le chemin CPU « pur » nâa pas ce backend, donc ça plante dĂšs quâon enlĂšve le GPU.
Tu as donc deux options réalistes :
***
## Option A â Revenir Ă lâusage GPU pour STT (simple, efficace)
Comme tu as dĂ©jĂ optimisĂ© la charge globale (LLM + TTS + mem), remettre Whisper sur GPU nâest plus un drame, surtout avec `large-v3-turbo` qui est plus lĂ©ger.
1. **Remettre lâaccĂšs GPU dans le compose :**
```yaml
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
```
2. Redémarrer :
```bash
cd ~/speaches
sudo docker compose down
sudo docker compose up -d
```
3. 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.
[^27_1][^27_10][^27_2][^27_3][^27_4][^27_5][^27_6][^27_7][^27_8][^27_9]
â
[^27_1]: https://github.com/docker/for-linux/issues/841
[^27_2]: https://stackoverflow.com/questions/20096632/limit-memory-on-a-docker-container-doesnt-work
[^27_3]: https://www.devopsroles.com/fix-docker-cannot-allocate-memory-error/
[^27_4]: https://community.atlassian.com/forums/Bitbucket-questions/Container-docker-exceeded-memory-limit-Confusing-cause-remedy/qaq-p/2273380
[^27_5]: https://docs.docker.com/engine/containers/resource_constraints/
[^27_6]: https://forums.docker.com/t/cannot-allocate-memory/1163
[^27_7]: https://stackoverflow.com/questions/77893652/how-to-solve-memory-error-in-docker-container-in-linux-for-error-was-sent-sigk
[^27_8]: https://www.reddit.com/r/docker/comments/1fidnei/cant_set_a_memory_limit_in_dockercomposeyaml_am_i/
[^27_9]: https://notes.kodekloud.com/docs/Docker-Certified-Associate-Exam-Course/Docker-Engine-Security/Resource-Limits-Memory
[^27_10]: https://www.reddit.com/r/docker/comments/13ud72v/creating_a_docker_container_with_memory_limits/
---
# 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:
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: `
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à :
```text
"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`Â :
```yaml
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).[^29_1]
- Langue forcée : `WHISPER__LANGUAGE=fr`.
- Compute type CPU : `float32` (évite les erreurs int8).
- `speaches-init` enregistre le modÚle au démarrage via `POST /v1/models/...`.
Commandes de déploiement :
```bash
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`Â :
```bash
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)Â :
```yaml
tts-1:
alloy:
model: voices/fr_FR-upmc-medium.onnx
speaker: 0 # 0 = Jessica, 1 = Pierre (tu peux changer si besoin)
tts-1-hd:
alloy:
model: xtts
speaker: voices/alloy.wav
# ⊠autres voix XTTS inchangées
```
- `tts-1` = backend Piper (CPU), voix par défaut **alloy** ⊠modÚle FR `fr_FR-upmc-medium`.
- Lâancienne config `tts-1-hd` (XTTS GPU) reste, mais nâest plus utilisĂ©e.
Docker compose (rappel)Â :
```yaml
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 :
```bash
cd ~/openedai-speech
sudo docker compose restart openedai-speech
```
***
## 3. Configuration Open WebUI (effi-server)
Dans **Admin Panel â Settings â Audio** :
- **STT Engine**Â : `OpenAI`
- **STT URL**Â : `http://192.168.1.11:8200/v1`
- **STT Model**Â : `deepdml/faster-whisper-large-v3-turbo-ct2`
- **TTS Engine**Â : `OpenAI`
- **TTS URL**Â : `http://192.168.1.11:8100/v1`
- **TTS Model**Â : `tts-1`
- **Voice / Speaker** : `alloy` (qui correspond à `fr_FR-upmc-medium` cÎté Piper)
Câest cette combinaison qui donne :
- STT rapide, précis en français (large-v3-turbo CT2 sur GPU).[^29_2][^29_1]
- TTS français fluide, léger cÎté CPU (Piper `fr_FR-upmc-medium`).[^29_3]
- 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.
[^29_4]
â
[^29_1]: https://huggingface.co/deepdml/faster-whisper-large-v3-turbo-ct2
[^29_2]: https://github.com/SYSTRAN/faster-whisper/issues/1030
[^29_3]: https://huggingface.co/rhasspy/piper-voices/tree/main/fr/fr_FR/upmc/medium
[^29_4]: https://huggingface.co/rhasspy/piper-voices/blob/49a0d23f04e055f1766e5ad15ea2d121a90fa17a/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.json