Files
Denis Defolie d20976fea2 Assistant vocal local ESP32 : étapes 1 à 15, et 15b écrite
État du projet au premier commit :
- firmware ESP32 : micro I2S, lecture anti-gigue, MQTT (état retenu, testament),
  mains libres, domotique de démonstration, chien de garde, présence du serveur ;
- serveur Python : sessions, VAD, faster-whisper, pyannote, identification,
  droits par profil, domotique, mot de réveil, Piper ;
- broker Mosquitto : configuration, comptes et ACL (non activés en développement) ;
- étape 15b écrite, en attente d'essai : agent MQTT pour machines Linux.

Étapes 1 à 15 validées. 203 tests, pyright sans erreur.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:41:11 +02:00

63 lines
2.1 KiB
TOML

[build-system]
requires = ["setuptools>=69"]
build-backend = "setuptools.build_meta"
[project]
name = "voice-server"
version = "0.1.0"
description = "Serveur d'assistant vocal local (MQTT, faster-whisper, Piper)"
requires-python = ">=3.11"
license = { text = "MIT" }
# Dépendances épinglées : indispensables dès l'étape 1 (outils série) et l'étape 3 (MQTT).
dependencies = [
"pyserial==3.5",
"paho-mqtt==2.1.0",
"numpy==2.5.3", # >= 2.2.2 exigé par pyannote 4 (étape 8) ; testé avec toute la chaîne
"PyYAML==6.0.2",
"python-dotenv==1.0.1",
"soxr==0.5.0.post1",
]
[project.optional-dependencies]
# Installées à l'étape 6 (transcription et synthèse vocale).
# Versions minimales pour Python 3.13 : faster-whisper 1.0 exige av<13 (compilé
# depuis les sources, sans roue 3.13) et piper-tts 1.2 dépend de piper-phonemize,
# sans roue au-delà de Python 3.11. piper-tts 1.3+ embarque espeak-ng.
speech = [
"faster-whisper==1.2.1",
"piper-tts==1.8.0",
]
# Installées à l'étape 8 (diarisation). La VAD de l'étape 7 n'en a pas besoin :
# Silero est livré avec faster-whisper. torch en version CPU : « make install-diarization »
# passe par l'index de pytorch.org, sinon pip installe plusieurs Go de bibliothèques CUDA.
# pyannote 3.3 est antérieur à ce torch ; pyannote 4 exige numpy >= 2.2.2.
diarization = [
"torch==2.14.0",
"torchaudio==2.11.0",
"pyannote.audio==4.0.7",
]
# Étape 13 (mot de réveil) : dépendances d'openwakeword en mode ONNX. openwakeword 0.6.0
# lui-même s'installe SANS ses dépendances (« make install-wakeword ») : il exige
# tflite-runtime, qui n'existe pas pour Python 3.13 et ne sert pas en ONNX.
wakeword = [
"onnxruntime==1.30.0",
"scipy==1.18.1",
"scikit-learn==1.9.1",
"tqdm==4.70.1",
"requests==2.34.2",
]
dev = [
"pyright==1.1.389",
"pytest==8.3.4",
]
[tool.setuptools.packages.find]
where = ["."]
include = ["voice_server*"]
[tool.pytest.ini_options]
# Les tests importent voice_server depuis server/, sans installation préalable.
pythonpath = ["."]
testpaths = ["tests"]