Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| piper-tts [Le 22/04/2026, 22:46] – L'Africain | piper-tts [Le 05/05/2026, 13:18] (Version actuelle) – L'Africain | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | + | {{tag> |
| ====== Piper TTS (voix neuronales de haute qualité) ====== | ====== Piper TTS (voix neuronales de haute qualité) ====== | ||
| - | **[[Piper]]** est un moteur de synthèse | + | **Piper** est un moteur de synthèse |
| - | =====Installation===== | + | * [[https:// |
| - | ====Automatique==== | + | * [[https://huggingface.co/ |
| - | Vous pouvez installer le [[snap]] **Pied**, qui devrait installer automatiquement Piper pour vous avec les voix de votre choix et le paramétrer pour être votre moteur par défaut. | + | |
| - | ====Semi-automatique==== | + | |
| - | Ce script va installer Piper, et le paramétrer pour qu’il soit votre lecteur par défaut: | + | |
| - | <code bash> | + | |
| - | #!/bin/sh | + | |
| - | set -e | + | |
| - | # --- Configuration des voix cibles --- | + | ===== Installation ===== |
| - | VOICE_FEMME=" | + | |
| - | VOICE_HOMME=" | + | |
| - | DEFAULT_VOICE=$VOICE_FEMME | + | |
| - | INSTALL_DIR=${INSTALL_DIR: | + | ==== Script automatique |
| - | CONFIG_DIR=${CONFIG_DIR: | + | |
| - | MODULES_DIR=" | + | |
| - | SPEECHD_CONF=" | + | |
| - | CONFIG_PATH=" | + | |
| - | PIPER_BIN_GZ_URL=" | + | |
| - | echo " | + | Ce script installe Piper, télécharge les voix françaises et configure Speech Dispatcher pour qu'il utilise Piper par défaut. Il fonctionne sur **Ubuntu 24.04** avec **Speech Dispatcher 0.12**. |
| - | killall speech-dispatcher piper sox paplay 2>/ | + | |
| - | echo " | + | <code bash> |
| - | sudo apt -qq update && sudo apt -qq install jq sox curl speech-dispatcher python3-speechd pulseaudio-utils -y | + | # |
| + | # Installation | ||
| - | mkdir -p " | + | set -e |
| - | mkdir -p " | + | |
| - | echo "\033[1;36m2. Création du script de lecture (Wrapper)...\033[0m" | + | # --- Configuration --- |
| - | # Ce script permet de stopper proprement le son si on change de phrase | + | PIPER_VERSION="2023.11.14-2" |
| - | cat << ' | + | INSTALL_DIR="$HOME/.local/share/speech-dispatcher-piper" |
| - | #!/bin/bash | + | VOICES_DIR="$INSTALL_DIR/ |
| - | DATA=" | + | PIPER_BIN="$INSTALL_DIR/ |
| - | VOICE="$2" | + | VOICE_BASE_URL="https:// |
| - | VOLUME="$3" | + | DEFAULT_VOICE="fr_FR-siwis-medium" |
| - | RATE="$4" | + | |
| - | PITCH="$5" | + | |
| - | # On récupère automatiquement le dossier du script | + | echo "[1/6] Installation des dépendances..." |
| - | BASE_DIR="$(dirname " | + | sudo apt-get update -qq |
| - | TMP_WAV=$(mktemp | + | sudo apt-get install -y -qq alsa-utils pulseaudio-utils curl wget speech-dispatcher |
| - | PAP_PID="" | + | |
| - | # Si la lecture est annulée, on coupe paplay et on nettoie le fichier | + | echo "[2/6] Téléchargement de Piper..." |
| - | trap 'rm -f "$TMP_WAV"; | + | mkdir -p "$INSTALL_DIR" |
| + | ARCH=$(uname -m | sed 's/x86_64/ | ||
| + | PIPER_ARCHIVE=" | ||
| + | PIPER_URL=" | ||
| - | SAMPLE_RATE=$(jq -r .audio.sample_rate < "$BASE_DIR/voices/$VOICE.onnx.json") | + | if [ ! -f "$PIPER_BIN" |
| + | wget -q --show-progress | ||
| + | tar -xzf "/ | ||
| + | rm "/tmp/$PIPER_ARCHIVE" | ||
| + | fi | ||
| - | # Génération de l' | + | echo "[3/6] Création du lien symbolique..." |
| - | printf | + | sudo ln -sf "$PIPER_BIN" /usr/local/ |
| - | | sox -v "$VOLUME" | + | |
| - | # Lecture | + | echo "[4/6] Téléchargement des voix françaises..." |
| - | paplay | + | mkdir -p "$VOICES_DIR" |
| - | PAP_PID=$! | + | |
| - | wait $PAP_PID | + | |
| - | EOF | + | |
| - | chmod +x "$INSTALL_DIR/ | + | |
| - | echo "\033[1; | + | for VOICE in "fr_FR-siwis-medium siwis/ |
| - | # Déclaration des voix (incluant le français de Belgique 'fr-BE') | + | |
| - | echo " | + | |
| - | echo " | + | if [ ! -f "$VOICES_DIR/${NAME}.onnx" |
| - | echo " | + | wget -q --show-progress |
| - | echo " | + | |
| + | wget -q --show-progress | ||
| + | | ||
| + | fi | ||
| + | done | ||
| - | # Déclaration des commandes | + | SAMPLE_RATE=$(grep -o '"sample_rate": |
| - | cat << EOF >> | + | |
| - | GenericCmdDependency | + | echo "[5/6] Configuration de Speech-Dispatcher..." |
| - | GenericCmdDependency " | + | |
| - | GenericCmdDependency " | + | |
| - | GenericExecuteSynth " | + | sudo tee /etc/ |
| + | # Module Piper pour Speech-Dispatcher — généré automatiquement | ||
| + | # Utilise paplay (PulseAudio) pour compatibilité avec Firefox et autres applications | ||
| - | GenericRateAdd | + | GenericExecuteSynth " |
| - | GenericPitchAdd | + | |
| - | GenericVolumeAdd | + | # Les deux formes sont nécessaires : speech-dispatcher envoie parfois " |
| + | # selon l' | ||
| + | AddVoice " | ||
| + | AddVoice " | ||
| + | AddVoice " | ||
| + | AddVoice " | ||
| + | |||
| + | GenericDefaultVoice " | ||
| + | |||
| + | GenericRateAdd 0 | ||
| + | GenericPitchAdd | ||
| + | GenericVolumeAdd | ||
| GenericRateMultiply 1 | GenericRateMultiply 1 | ||
| - | GenericPitchMultiply | + | GenericPitchMultiply |
| GenericVolumeMultiply 1 | GenericVolumeMultiply 1 | ||
| - | EOF | + | PIPER_CONF |
| - | # Activation du module | + | # Activer piper dans speechd.conf |
| - | if ! [ -f "$SPEECHD_CONF" | + | if ! grep -q ' |
| - | if ! grep -q "piper-generic" | + | sudo sed -i ' |
| - | echo " | + | /etc/speech-dispatcher/ |
| fi | fi | ||
| - | sed -i 's/^DefaultModule.*/DefaultModule piper-generic/' "$SPEECHD_CONF" | + | sudo sed -i 's|^DefaultModule .*|DefaultModule piper|' /etc/speech-dispatcher/speechd.conf |
| + | sudo sed -i 's|^# | ||
| + | sudo sed -i 's|^#* *DefaultVoiceType.*|DefaultVoiceType " | ||
| - | echo " | + | # Supprimer la config utilisateur qui pourrait interférer |
| - | if [ -x "$INSTALL_DIR/piper/piper" ]; then | + | if [ -d "$HOME/.config/speech-dispatcher" ]; then |
| - | | + | |
| - | else | + | echo " |
| - | echo " > Piper introuvable. Téléchargement en cours..." | + | |
| - | PIPER_BIN_GZ=$(mktemp) | + | |
| - | curl -L -o " | + | |
| - | tar -xzf " | + | |
| - | rm " | + | |
| - | echo " | + | |
| fi | fi | ||
| - | # Ré-écriture du script de téléchargement des voix | + | echo "[6/6] Test..." |
| - | cat <<' | + | pkill -f speech-dispatcher 2>/dev/null; sleep 1 |
| - | #!/bin/sh | + | speech-dispatcher |
| - | VOICE=$1 | + | sleep 1 |
| - | BASE_URL="https:// | + | spd-say |
| - | cd " | + | |
| - | if ! [ -f "voices/ | + | echo "" |
| - | echo " | + | echo "Installation terminée !" |
| - | | + | echo " |
| - | | + | echo " |
| - | | + | echo " |
| - | | + | </ |
| - | curl -L -o " | + | Rendez le script exécutable et lancez-le : |
| - | curl -L -o " | + | |
| - | else | + | |
| - | echo " > La voix $VOICE est déjà présente. Téléchargement ignoré." | + | |
| - | fi | + | |
| - | EOF | + | |
| - | chmod +x " | + | |
| - | echo " | + | <code bash> |
| - | " | + | chmod +x install-piper.sh |
| - | " | + | ./install-piper.sh |
| + | </code> | ||
| - | echo " | + | ==== Installation manuelle ==== |
| - | speech-dispatcher -d | + | |
| - | sleep 1 | + | |
| - | echo " | + | === 1. Télécharger le binaire Piper === |
| - | echo "Test audio en cours..." | + | |
| - | + | ||
| - | spd-say "Votre script de synthèse vocale est maintenant parfait." | + | |
| - | </ | + | |
| - | ====Manuellement==== | + | |
| - | ===Installation=== | + | |
| - | 1. Téléchargez l' | + | |
| <code bash> | <code bash> | ||
| - | # Télécharger et extraire | + | # Détecter l' |
| - | wget https:// | + | ARCH=$(uname -m | sed ' |
| - | tar -xzf piper_amd64.tar.gz | + | |
| - | sudo mv piper / | + | # Télécharger et extraire |
| + | mkdir -p ~/ | ||
| + | wget https:// | ||
| + | | ||
| + | tar -xzf /tmp/piper.tar.gz | ||
| + | |||
| + | # Créer un lien symbolique accessible globalement | ||
| + | sudo ln -sf ~/ | ||
| </ | </ | ||
| - | 2. Téléchargez une voix française (par exemple " | + | === 2. Télécharger les voix françaises === |
| <code bash> | <code bash> | ||
| - | # Créez un dossier pour les voix | + | VOICES_DIR=~/.local/share/speech-dispatcher-piper/voices |
| - | sudo mkdir -p /usr/share/piper-voices/ | + | mkdir -p " |
| - | cd /usr/share/ | + | BASE=https://huggingface.co/ |
| - | # Téléchargez la voix française | + | # Voix féminine siwis (medium, recommandée) |
| - | sudo wget https://huggingface.co/rhasspy/ | + | wget " |
| - | sudo wget https://huggingface.co/rhasspy/ | + | wget " |
| + | |||
| + | # Voix masculine upmc (medium) | ||
| + | wget " | ||
| + | wget " | ||
| </ | </ | ||
| - | **Test direct | + | **Test direct |
| <code bash> | <code bash> | ||
| - | echo " | + | printf ' |
| - | piper --model /usr/share/piper-voices/ | + | piper --model |
| - | aplay / | + | |
| </ | </ | ||
| - | ===Configuration avec Speech Dispatcher=== | + | === 3. Configurer |
| - | [[: | + | Éditez |
| - | <file conf> | + | < |
| - | # Piper TTS generic module configuration | + | # Module |
| + | # Utilise paplay (PulseAudio) — compatible Firefox et autres applications | ||
| - | GenericExecuteSynth "piper --model /usr/share/piper-voices/fr_FR-siwis-medium.onnx --output_raw" | + | GenericExecuteSynth "printf ' |
| - | AddVoice " | + | # IMPORTANT : déclarer les voix avec " |
| + | # speech-dispatcher envoie l'un ou l' | ||
| + | AddVoice | ||
| + | AddVoice | ||
| + | AddVoice " | ||
| + | AddVoice " | ||
| - | DefaultLanguage | + | GenericDefaultVoice |
| - | GenericAddLanguage " | + | GenericRateAdd 0 |
| + | GenericPitchAdd 0 | ||
| + | GenericVolumeAdd 0 | ||
| + | GenericRateMultiply 1 | ||
| + | GenericPitchMultiply 1 | ||
| + | GenericVolumeMultiply 1 | ||
| </ | </ | ||
| - | Ajoutez le module à Speech Dispatcher en [[: | + | Puis dans ''/ |
| < | < | ||
| - | AddModule "piper-generic" " | + | AddModule " |
| + | DefaultModule piper | ||
| + | DefaultLanguage " | ||
| + | DefaultVoiceType " | ||
| </ | </ | ||
| - | Puis activez-le par défaut | + | Redémarrez Speech Dispatcher |
| <code bash> | <code bash> | ||
| - | echo ' | + | pkill -f speech-dispatcher; |
| </ | </ | ||
| - | Redémarrez Speech Dispatcher | + | Testez |
| <code bash> | <code bash> | ||
| - | sudo systemctl restart speech-dispatcher | + | spd-say " |
| </ | </ | ||
| - | **Voix françaises disponibles pour Piper :** | + | ===== Voix françaises disponibles |
| + | |||
| + | ^ Identifiant ^ Genre ^ Qualité ^ Taille approximative ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | Toutes les voix disponibles : [[https:// | ||
| + | |||
| + | ===== Points importants ===== | ||
| + | |||
| + | <note important> | ||
| + | Speech Dispatcher envoie parfois le code langue '' | ||
| + | |||
| + | <note important> | ||
| + | '' | ||
| + | |||
| + | <note tip> | ||
| + | Si le dossier '' | ||
| + | <code bash>mv ~/ | ||
| + | </ | ||
| + | |||
| + | ===== Intégration avec Firefox ===== | ||
| + | |||
| + | Firefox utilise Speech Dispatcher | ||
| + | |||
| + | - Vérifiez dans '' | ||
| + | - Ouvrez une page d' | ||
| + | - Cliquez sur l' | ||
| + | |||
| + | Firefox devrait lire avec la voix Piper configurée. | ||
| + | |||
| + | ===== Dépannage ===== | ||
| + | |||
| + | **Aucun son avec spd-say :** | ||
| + | <code bash> | ||
| + | # Lancer en mode debug pour voir les erreurs | ||
| + | sudo rm -rf / | ||
| + | pkill -f speech-dispatcher; | ||
| + | speech-dispatcher -s -l 5 -D & | ||
| + | sleep 2 | ||
| + | spd-say " | ||
| + | sleep 3 | ||
| + | pkill -f speech-dispatcher | ||
| + | # Chercher la commande réellement exécutée | ||
| + | grep "synth command\|no_voice" | ||
| + | </ | ||
| + | |||
| + | Si vous voyez '' | ||
| + | |||
| + | **Tester | ||
| + | <code bash> | ||
| + | printf ' | ||
| + | --model ~/ | ||
| + | --output-raw | paplay --raw --rate=22050 --format=s16le --channels=1 | ||
| + | </ | ||
| + | |||
| + | Si cette commande fonctionne mais pas '' | ||
| + | |||
| + | ===== Voir aussi ===== | ||
| - | ^ Voix ^ Qualité ^ Taille ^ | + | * [[: |
| - | | '' | + | * [[: |
| - | | '' | + | * [[https:// |
| - | | '' | + | * [[https:// |
| - | **Liens utiles :** | + | ---- |
| - | * [[https:// | + | |
| - | * [[https:// | + | |
