Ir para o conteúdo

Este conteúdo ainda está em francês

A página está traduzida, mas o conteúdo detalhado ainda não. As fichas, os guias e os catálogos continuam em francês: preferimos mostrar-lhe o original a uma tradução automática aproximada. Ver o site em francês

Guide 8 sur 12

Dictée et lecture à voix haute, sans connexion

La chaîne vocale complète — micro, transcription, modèle, synthèse — sur une machine à quelques watts. C'est ce qui rend l'outil accessible à ceux qui ne lisent pas encore, ou plus.

Démarrer le pas à pas 6 étapes · 1 h 30 · une étape à l'écran, avec Précédent / Suivant

Niveau Intermédiaire
Durée 1 h 30
Étapes 6
Catégorie Usages
Avant de commencer
  • Un micro USB ou un casque-micro correct
  • Un haut-parleur ou une sortie audio
  • Les outils de compilation (voir le guide llama.cpp)
1

La chaîne complète

schéma
Micro  ->  whisper.cpp  ->  texte  ->  LLM  ->  texte  ->  Piper  ->  Haut-parleur
           (écoute)                    (réfléchit)              (parle)

Chaque maillon est libre, tient en quelques centaines de mégaoctets, et fonctionne sans réseau. L'ensemble tourne sur un Raspberry Pi 4.

Pourquoi c'est importantL'illectronisme n'est pas qu'une affaire d'écran : c'est aussi la lecture et l'écriture. Une interface vocale ouvre l'outil aux enfants qui apprennent encore à lire, aux personnes âgées et aux publics allophones. C'est le premier usage à monter dans un déploiement inclusif.
2

Installer whisper.cpp

shell
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp

# Modèle small : le meilleur compromis pour le français
sh ./models/download-ggml-model.sh small

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
ModèlePoidsQualité en françaisMachine minimale
tiny75 MoApproximativeRaspberry Pi 4
base142 MoCorrecte sur audio propreRaspberry Pi 4
small466 MoBonneRaspberry Pi 5, mini-PC
medium1,5 GoTrès bonneMini-PC 16 Go, GPU
3

Transcrire

shell
# Enregistrer 5 secondes au format attendu : 16 kHz, mono
arecord -f S16_LE -r 16000 -c 1 -d 5 test.wav

# Transcrire en français
./build/bin/whisper-cli -m models/ggml-small.bin -l fr -f test.wav

# Sortie en sous-titres
./build/bin/whisper-cli -m models/ggml-small.bin -l fr -osrt -f cours.wav
Le format audio compteWhisper attend du 16 kHz mono. Un fichier en 44,1 kHz stéréo donne des résultats erratiques. Convertissez au besoin : ffmpeg -i source.mp3 -ar 16000 -ac 1 sortie.wav.
4

Installer Piper

shell
# Binaire précompilé, à adapter à l'architecture
wget https://github.com/rhasspy/piper/releases/latest/download/piper_linux_aarch64.tar.gz
tar -xzf piper_linux_aarch64.tar.gz && cd piper

# Une voix française (le .json accompagne obligatoirement le .onnx)
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/fr/fr_FR/siwis/medium/fr_FR-siwis-medium.onnx
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/fr/fr_FR/siwis/medium/fr_FR-siwis-medium.onnx.json

echo "Bonjour, je fonctionne sans connexion." \
  | ./piper -m fr_FR-siwis-medium.onnx -f sortie.wav

aplay sortie.wav

Chaque voix pèse quelques dizaines de mégaoctets et la synthèse est plus rapide que le temps réel, y compris sur Raspberry Pi 4.

5

Assembler la borne vocale

bash
#!/usr/bin/env bash
# borne-vocale.sh — appuyez sur Entrée, parlez, écoutez la réponse
set -euo pipefail

WHISPER=~/whisper.cpp
PIPER=~/piper
MODELE_LLM=qwen3:4b

while true; do
  read -rp "Entrée pour parler (5 s), Ctrl+C pour quitter... "

  arecord -f S16_LE -r 16000 -c 1 -d 5 /tmp/question.wav 2>/dev/null

  question=$("$WHISPER"/build/bin/whisper-cli \
      -m "$WHISPER"/models/ggml-small.bin -l fr -nt -f /tmp/question.wav 2>/dev/null)
  echo "Vous : $question"

  reponse=$(ollama run "$MODELE_LLM" "Réponds en deux phrases maximum. $question")
  echo "SATI : $reponse"

  echo "$reponse" | "$PIPER"/piper -m "$PIPER"/fr_FR-siwis-medium.onnx -f /tmp/reponse.wav
  aplay -q /tmp/reponse.wav
done
shell
chmod +x borne-vocale.sh
./borne-vocale.sh
6

Régler la latence

Sur un Raspberry Pi 5, comptez environ : deux à quatre secondes de transcription, une à deux secondes avant le premier mot du modèle, moins d'une seconde de synthèse. Le total reste sous les dix secondes, ce qui est acceptable pour un dialogue posé.

  • Passer whisper de small à base divise la transcription par deux, au prix de quelques erreurs.
  • Contraindre la réponse à deux phrases dans le prompt réduit fortement le temps de génération.
  • Découper la réponse en phrases et lancer la synthèse au fil de l'eau donne l'impression d'une réaction immédiate.
  • Garder le modèle chargé (OLLAMA_KEEP_ALIVE) évite plusieurs secondes de rechargement à chaque tour.
voix whisper Piper accessibilité