Entrée vocale — STT
Telegram ou le micro fournissent de l’audio. Hermes le transmet au provider STT local, basé sur faster-whisper, qui transforme la voix en texte.
Ce module ajoute la voix à Jarvis sans dépendre d’un service cloud : faster-whisper transcrit les messages vocaux en local et NeuTTS synthétise les réponses sur CPU. Telegram reçoit ensuite une bulle vocale Opus/OGG grâce à ffmpeg. Le LLM principal reste ainsi prioritaire sur le GPU AMD.
Telegram texte opérationnel
STT + TTS locaux fonctionnels
Whisper small + NeuTTS CPU
$HOME/.hermes/tts/.Telegram ou le micro fournissent de l’audio. Hermes le transmet au provider STT local, basé sur faster-whisper, qui transforme la voix en texte.
Le texte transcrit est traité comme un message normal par Hermes et par votre modèle Ollama local.
NeuTTS transforme la réponse en WAV localement. ffmpeg convertit ensuite l’audio au format Opus/OGG requis pour une bulle vocale Telegram.
Le Golden Build conserve Qwen sur le GPU AMD et place Whisper/NeuTTS sur CPU afin d’éviter la concurrence sur la mémoire graphique UMA.
hermes gateway status
hermes config checkcp ~/.hermes/config.yaml "$HOME/.hermes/config.yaml.backup-$(date +%Y%m%d-%H%M%S)"config.yaml est créée.sudo apt update
sudo apt install -y portaudio19-dev ffmpeg libopus0 espeak-ngffmpeg les conversions, Opus le format audio, et espeak-ng sert de backend phonétique à NeuTTS.ffmpeg -version | head -n 1
espeak-ng --version | head -n 1
ldconfig -p | grep -E 'libopus|libportaudio' | headhermes config set stt.enabled true
hermes config set stt.echo_transcripts true
hermes config set stt.provider local
hermes config set stt.language fr
hermes config set stt.local.model small
hermes config set stt.local.language frsmall, et affichage du transcript pour contrôler ce que Jarvis a compris.stt de ~/.hermes/config.yaml.hermes config set stt.local.initial_prompt "Jarvis, Hermes, Ollama, Qwen, ROCm, Docker, Telegram"hermes toolsmkdir -p ~/.hermes/tts/neutts
chmod 700 ~/.hermes/tts ~/.hermes/tts/neutts~/.hermes/tts/neutts existe avec des permissions restrictives.# Copier votre propre échantillon vocal WAV :
cp METTRE_VOTRE_FICHIER_REFERENCE.wav ~/.hermes/tts/neutts/reference.wav
# Créer la transcription exacte de cet échantillon :
nano ~/.hermes/tts/neutts/reference.txtreference.wav et reference.txt existent. Le texte correspond exactement aux paroles de l’enregistrement.chmod 600 ~/.hermes/tts/neutts/reference.wav ~/.hermes/tts/neutts/reference.txt
ls -l ~/.hermes/tts/neutts/hermes config set tts.provider neutts
hermes config set tts.speed 1.0
hermes config set tts.neutts.ref_audio "$HOME/.hermes/tts/neutts/reference.wav"
hermes config set tts.neutts.ref_text "$HOME/.hermes/tts/neutts/reference.txt"
hermes config set tts.neutts.model neuphonic/neutts-nano-french-q4-gguf
hermes config set tts.neutts.device cpuneutts et le device est cpu.# Utiliser le modèle NeuTTS actuellement proposé par Hermes :
hermes config set tts.neutts.model neuphonic/neutts-air-q4-ggufneutts-air-q4-gguf comme valeur de référence. Cette alternative permet de conserver NeuTTS local si l’ancien modèle Golden n’est plus distribué.hermes config get stt
hermes config get tts
hermes config checkhermes gateway restart
hermes gateway status# Dans Telegram, envoyer une note vocale courte :
"Jarvis, réponds uniquement : transcription locale fonctionnelle."# Dans Telegram :
/voice on
/voice status# Envoyer une note vocale :
"Jarvis, donne-moi l'état actuel d'Ollama. Lecture uniquement."hermes
# Puis dans Hermes :
/voice on
/voice status
# Utiliser Ctrl+B pour démarrer l'enregistrement.journalctl --user -u hermes-gateway -n 150 --no-pager | \
grep -Ei 'stt|whisper|tts|neutts|ffmpeg|audio|telegram|error|warning'Très rapides et peu gourmands. Adaptés aux petites machines ou aux commandes simples, mais moins précis sur les noms propres et le bruit.
Bon compromis français entre précision, mémoire et latence CPU. C’est le modèle retenu dans le Golden Build.
Plus précis mais plus lourds et plus lents sur CPU. À choisir seulement si la qualité du modèle small n’est pas suffisante.
Pour un Jarvis principalement francophone, stt.language=fr évite certaines erreurs d’auto-détection sur les messages courts.
Choix Golden : local, aucune clé API, possibilité de voix de référence, mais plus lourd à installer.
Très léger, rapide sur CPU et entièrement local. Bon choix de secours si NeuTTS pose problème. La voix est moins personnalisable.
Provider local également supporté par les versions récentes d’Hermes. Intéressant pour une installation légère sans clonage de timbre.
Gratuit et simple mais non local. À éviter si l’objectif est de conserver l’intégralité de la chaîne vocale sur Jarvis.
Vérifiez stt.enabled, stt.provider, puis les logs Gateway. Relancez hermes tools si Faster-Whisper n’a pas été préparé.
Vérifiez espeak-ng, le nom du modèle, les deux fichiers de référence et leur transcription. Si le modèle Golden a disparu, utilisez l’alternative NeuTTS actuelle.
Vérifiez ffmpeg -version. NeuTTS produit du WAV et Telegram attend de l’Opus/OGG pour les bulles vocales.
Forcez stt.language=fr et stt.local.language=fr. Enrichissez éventuellement stt.local.initial_prompt avec vos termes techniques.
Conservez d’abord tts.speed=1.0. Mesurez la latence avant de modifier les paramètres ou de déplacer TTS sur GPU.
Confirmez que NeuTTS reste sur device=cpu. Le Golden Build évite volontairement de placer STT/TTS sur le GPU utilisé par Qwen.
Ne passez au module suivant que lorsque tous les points applicables sont validés.
small pour le Golden Build.tts.speed vaut 1.0./voice on active la réponse vocale.Jarvis dispose maintenant d’une chaîne voix locale complète. Le prochain module installera Camofox et la couche de recherche Web persistante.