Initial release: DictIA v0.8.14-alpha (fork de Speakr, AGPL-3.0)

This commit is contained in:
InnovA AI
2026-03-16 21:47:37 +00:00
commit 42772a31ed
365 changed files with 103572 additions and 0 deletions

View File

@@ -0,0 +1,101 @@
# =============================================================================
# DictIA 16 — Docker Compose
# GPU : RTX 5070 Ti (16 Go VRAM)
# =============================================================================
#
# Services :
# - dictia : Application principale DictIA
# - whisperx-asr : Service de transcription WhisperX Large-v3
# - ollama : LLM local Mistral 7B (résumés, chat, Q&A)
#
# Démarrage :
# 1. cp config/env.dictia16.example .env
# 2. docker compose -f config/docker-compose.dictia16.yml up -d
# 3. Télécharger Mistral : docker exec ollama ollama pull mistral
#
# Note : Aucune clé API nécessaire — tout tourne en local (100% privé).
# =============================================================================
services:
# ---------------------------------------------------------------------------
# Application DictIA
# ---------------------------------------------------------------------------
dictia:
image: dictia:latest
container_name: dictia
restart: unless-stopped
ports:
- "8899:8899"
env_file:
- ../.env
environment:
- LOG_LEVEL=ERROR
volumes:
- ../uploads:/data/uploads
- ../instance:/data/instance
# Décommenter pour l'export automatique :
# - ../exports:/data/exports
# Décommenter pour le traitement automatique :
# - ../auto-process:/data/auto-process
depends_on:
- whisperx-asr
- ollama
networks:
- dictia-net
# ---------------------------------------------------------------------------
# WhisperX ASR — Transcription locale (WhisperX Large-v3)
# RTX 5070 Ti : BATCH_SIZE=32, COMPUTE_TYPE=float16
# ---------------------------------------------------------------------------
whisperx-asr:
image: murtazanasir/whisperx-asr-service:latest
container_name: whisperx-asr
restart: unless-stopped
environment:
- HF_TOKEN=${HF_TOKEN}
- DEVICE=cuda
- COMPUTE_TYPE=float16
- BATCH_SIZE=32
- DEFAULT_MODEL=large-v3
volumes:
- whisperx-models:/root/.cache
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
networks:
- dictia-net
# ---------------------------------------------------------------------------
# Ollama — LLM local Mistral 7B
# Résumés, points d'action, Q&A — 100% local, aucune donnée externe
# ---------------------------------------------------------------------------
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
volumes:
- ollama-models:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
networks:
- dictia-net
networks:
dictia-net:
driver: bridge
volumes:
whisperx-models:
driver: local
ollama-models:
driver: local

View File

@@ -0,0 +1,75 @@
# =============================================================================
# DictIA 8 — Docker Compose
# GPU : RTX 5060 (8 Go VRAM)
# =============================================================================
#
# Services :
# - dictia : Application principale DictIA
# - whisperx-asr : Service de transcription WhisperX Large-v3
#
# Démarrage :
# 1. cp config/env.dictia8.example .env
# 2. Remplir TEXT_MODEL_API_KEY dans .env
# 3. docker compose -f config/docker-compose.dictia8.yml up -d
# =============================================================================
services:
# ---------------------------------------------------------------------------
# Application DictIA
# ---------------------------------------------------------------------------
dictia:
image: dictia:latest
container_name: dictia
restart: unless-stopped
ports:
- "8899:8899"
env_file:
- ../.env
environment:
- LOG_LEVEL=ERROR
volumes:
- ../uploads:/data/uploads
- ../instance:/data/instance
# Décommenter pour l'export automatique :
# - ../exports:/data/exports
# Décommenter pour le traitement automatique :
# - ../auto-process:/data/auto-process
depends_on:
- whisperx-asr
networks:
- dictia-net
# ---------------------------------------------------------------------------
# WhisperX ASR — Transcription locale (WhisperX Large-v3)
# RTX 5060 : BATCH_SIZE=16, COMPUTE_TYPE=float16
# ---------------------------------------------------------------------------
whisperx-asr:
image: murtazanasir/whisperx-asr-service:latest
container_name: whisperx-asr
restart: unless-stopped
environment:
- HF_TOKEN=${HF_TOKEN}
- DEVICE=cuda
- COMPUTE_TYPE=float16
- BATCH_SIZE=16
- DEFAULT_MODEL=large-v3
volumes:
- whisperx-models:/root/.cache
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
networks:
- dictia-net
networks:
dictia-net:
driver: bridge
volumes:
whisperx-models:
driver: local

View File

@@ -0,0 +1,134 @@
# =============================================================================
# DictIA 16 — Configuration (.env)
# GPU : RTX 5070 Ti (16 Go VRAM)
# =============================================================================
#
# Architecture :
# - Transcription : WhisperX Large-v3 (local, ~5,5 Go VRAM)
# - LLM (résumés) : Mistral 7B local via Ollama (~6,4 Go VRAM)
# - Mode : Séquentiel (transcription puis résumé)
# - Total VRAM : ~11,9 Go / 16 Go (marge ~4,1 Go)
#
# Démarrage rapide :
# 1. cp config/env.dictia16.example .env
# 2. Aucune clé API nécessaire — tout tourne en local
# 3. docker compose -f config/docker-compose.dictia16.yml up -d
# =============================================================================
# =============================================================================
# MODÈLE DE TEXTE — Résumés, titres, chat (LLM LOCAL)
# =============================================================================
# DictIA 16 utilise Mistral 7B en local via Ollama.
# Aucune donnée ne quitte le serveur — 100% privé.
TEXT_MODEL_BASE_URL=http://ollama:11434/v1
TEXT_MODEL_API_KEY=not-required
TEXT_MODEL_NAME=mistral
# --- Modèle de chat séparé (optionnel) ---
# Même modèle par défaut, mais peut être changé pour un modèle plus rapide.
# CHAT_MODEL_API_KEY=not-required
# CHAT_MODEL_BASE_URL=http://ollama:11434/v1
# CHAT_MODEL_NAME=mistral
# =============================================================================
# TRANSCRIPTION — WhisperX ASR local (REQUIS)
# =============================================================================
# WhisperX tourne en local dans un conteneur Docker séparé.
# Le service ASR est défini dans docker-compose.dictia16.yml.
ASR_BASE_URL=http://whisperx-asr:9000
# Diarisation (identification automatique des locuteurs) — recommandé
ASR_DIARIZE=true
ASR_RETURN_SPEAKER_EMBEDDINGS=true
# Nombre de locuteurs attendus (optionnel — aide la précision)
# ASR_MIN_SPEAKERS=1
# ASR_MAX_SPEAKERS=6
# =============================================================================
# PARAMÈTRES ADMINISTRATEUR
# =============================================================================
ADMIN_USERNAME=admin
ADMIN_EMAIL=admin@votreentreprise.com
ADMIN_PASSWORD=changeme
# =============================================================================
# ACCÈS ET INSCRIPTION
# =============================================================================
# Désactiver l'inscription publique (accès sur invitation uniquement)
ALLOW_REGISTRATION=false
# Restreindre l'inscription aux domaines autorisés
# Exemple : REGISTRATION_ALLOWED_DOMAINS=votreentreprise.com
REGISTRATION_ALLOWED_DOMAINS=
# =============================================================================
# FUSEAU HORAIRE
# =============================================================================
# Exemples : America/Toronto, America/Montreal, America/New_York, UTC
TIMEZONE="America/Toronto"
# =============================================================================
# LIMITES DE TOKENS
# =============================================================================
SUMMARY_MAX_TOKENS=8000
CHAT_MAX_TOKENS=5000
# =============================================================================
# COMPRESSION AUDIO
# =============================================================================
AUDIO_COMPRESS_UPLOADS=true
AUDIO_CODEC=mp3
AUDIO_BITRATE=128k
# =============================================================================
# FONCTIONNALITÉS OPTIONNELLES
# =============================================================================
# Inquire Mode — recherche IA sur tous les enregistrements
# Peut être activé sur DictIA 16 (plus de VRAM disponible)
ENABLE_INQUIRE_MODE=false
# Traitement automatique de fichiers (dossier surveillé)
ENABLE_AUTO_PROCESSING=false
# AUTO_PROCESS_MODE=admin_only
# AUTO_PROCESS_WATCH_DIR=/data/auto-process
# Export automatique
ENABLE_AUTO_EXPORT=false
# AUTO_EXPORT_DIR=/data/exports
# AUTO_EXPORT_TRANSCRIPTION=true
# AUTO_EXPORT_SUMMARY=true
# Suppression automatique / rétention
ENABLE_AUTO_DELETION=false
# GLOBAL_RETENTION_DAYS=90
# DELETION_MODE=audio_only
# =============================================================================
# PARTAGE
# =============================================================================
ENABLE_INTERNAL_SHARING=false
ENABLE_PUBLIC_SHARING=true
USERS_CAN_DELETE=true
# =============================================================================
# FILES D'ATTENTE DE TRAITEMENT
# =============================================================================
JOB_QUEUE_WORKERS=2
SUMMARY_QUEUE_WORKERS=2
JOB_MAX_RETRIES=3
# =============================================================================
# BASE DE DONNÉES ET STOCKAGE
# =============================================================================
SQLALCHEMY_DATABASE_URI=sqlite:////data/instance/transcriptions.db
UPLOAD_FOLDER=/data/uploads
# =============================================================================
# JOURNALISATION
# =============================================================================
# ERROR = production (minimal), INFO = débogage, DEBUG = développement
LOG_LEVEL=ERROR

View File

@@ -0,0 +1,126 @@
# =============================================================================
# DictIA 8 — Configuration (.env)
# GPU : RTX 5060 (8 Go VRAM)
# =============================================================================
#
# Architecture :
# - Transcription : WhisperX Large-v3 (local, ~5,5 Go VRAM)
# - LLM (résumés) : API cloud via OpenRouter (VRAM insuffisante pour LLM local)
#
# Démarrage rapide :
# 1. cp config/env.dictia8.example .env
# 2. Remplir TRANSCRIPTION_API_KEY et TEXT_MODEL_API_KEY
# 3. docker compose -f config/docker-compose.dictia8.yml up -d
# =============================================================================
# =============================================================================
# MODÈLE DE TEXTE — Résumés, titres, chat (REQUIS)
# =============================================================================
# DictIA 8 utilise un LLM cloud via OpenRouter (VRAM insuffisante pour LLM local).
# Inscrivez-vous sur https://openrouter.ai pour obtenir une clé API.
TEXT_MODEL_BASE_URL=https://openrouter.ai/api/v1
TEXT_MODEL_API_KEY=votre_cle_openrouter
TEXT_MODEL_NAME=openai/gpt-4o-mini
# =============================================================================
# TRANSCRIPTION — WhisperX ASR local (REQUIS)
# =============================================================================
# WhisperX tourne en local dans un conteneur Docker séparé.
# Le service ASR est défini dans docker-compose.dictia8.yml.
ASR_BASE_URL=http://whisperx-asr:9000
# Diarisation (identification automatique des locuteurs) — recommandé
ASR_DIARIZE=true
ASR_RETURN_SPEAKER_EMBEDDINGS=true
# Nombre de locuteurs attendus (optionnel — aide la précision)
# ASR_MIN_SPEAKERS=1
# ASR_MAX_SPEAKERS=6
# =============================================================================
# PARAMÈTRES ADMINISTRATEUR
# =============================================================================
ADMIN_USERNAME=admin
ADMIN_EMAIL=admin@votreentreprise.com
ADMIN_PASSWORD=changeme
# =============================================================================
# ACCÈS ET INSCRIPTION
# =============================================================================
# Désactiver l'inscription publique (accès sur invitation uniquement)
ALLOW_REGISTRATION=false
# Restreindre l'inscription aux domaines autorisés
# Exemple : REGISTRATION_ALLOWED_DOMAINS=votreentreprise.com
REGISTRATION_ALLOWED_DOMAINS=
# =============================================================================
# FUSEAU HORAIRE
# =============================================================================
# Exemples : America/Toronto, America/Montreal, America/New_York, UTC
TIMEZONE="America/Toronto"
# =============================================================================
# LIMITES DE TOKENS
# =============================================================================
SUMMARY_MAX_TOKENS=8000
CHAT_MAX_TOKENS=5000
# =============================================================================
# COMPRESSION AUDIO
# =============================================================================
AUDIO_COMPRESS_UPLOADS=true
AUDIO_CODEC=mp3
AUDIO_BITRATE=128k
# =============================================================================
# FONCTIONNALITÉS OPTIONNELLES
# =============================================================================
# Inquire Mode — recherche IA sur tous les enregistrements
# Désactivé sur DictIA 8 (VRAM insuffisante pour embeddings locaux)
ENABLE_INQUIRE_MODE=false
# Traitement automatique de fichiers (dossier surveillé)
ENABLE_AUTO_PROCESSING=false
# AUTO_PROCESS_MODE=admin_only
# AUTO_PROCESS_WATCH_DIR=/data/auto-process
# Export automatique
ENABLE_AUTO_EXPORT=false
# AUTO_EXPORT_DIR=/data/exports
# AUTO_EXPORT_TRANSCRIPTION=true
# AUTO_EXPORT_SUMMARY=true
# Suppression automatique / rétention
ENABLE_AUTO_DELETION=false
# GLOBAL_RETENTION_DAYS=90
# DELETION_MODE=audio_only
# =============================================================================
# PARTAGE
# =============================================================================
ENABLE_INTERNAL_SHARING=false
ENABLE_PUBLIC_SHARING=true
USERS_CAN_DELETE=true
# =============================================================================
# FILES D'ATTENTE DE TRAITEMENT
# =============================================================================
JOB_QUEUE_WORKERS=2
SUMMARY_QUEUE_WORKERS=2
JOB_MAX_RETRIES=3
# =============================================================================
# BASE DE DONNÉES ET STOCKAGE
# =============================================================================
SQLALCHEMY_DATABASE_URI=sqlite:////data/instance/transcriptions.db
UPLOAD_FOLDER=/data/uploads
# =============================================================================
# JOURNALISATION
# =============================================================================
# ERROR = production (minimal), INFO = débogage, DEBUG = développement
LOG_LEVEL=ERROR