J'ai installé SVOX pico2wave et créé un script. Maintenant, quand j'entre:
speech "Hello world"
Le moteur de synthèse vocale de l'ordinateur dit à haute voix «Bonjour tout le monde». De plus, j'utilise dans .bashrc
la variable PROMPT_COMMAND
définie comme:
PROMPT_COMMAND="speech 'Command executed.'"
Donc, le joli moteur de synthèse vocale m'annonce haut et fort que la commande est exécutée, avant de retourner l'invite dans le terminal.
Cependant, cela devient ennuyeux après un certain temps et je pensais que ce serait vraiment cool de mettre fin à chaque commande dans le terminal avec l'ordinateur parlant une autre ligne de texte (pensez du pilote automatique de Starship Enterprise).
J'ai donc créé dans .bashrc une variable de tableau, avec différents messages:
array[0]="Shields at 90%"
array[1]="Engaging proton overdrive"
array[2]="Autopilot disengaged"
array[3]="Targetting solution available"
array[4]="Alert. Incoming missile."
array[5]="Deploying countermeasures."
array[6]="Firing torpedoes."
array[7]="Engaging auto-cannon."
array[8]="Severe damage on deck 17. Sealing off."
array[9]="Deploying repair droids to deck 17."
Ce que je voudrais, c'est que chaque fois que j'exécute une commande dans le terminal, la variable PROMPT_COMMAND
soit mise à jour et lise une ligne aléatoire différente dans le tableau.
Je suppose que j'ai besoin d'une boucle, mais je ne savais pas comment la faire.
Je serais très reconnaissant pour toute aide. Merci.
la source
-l=de-DE
dans votre langue locale comme-l=en-US
.speech
exécutable? Est-ce un alias pourespeak
?Réponses:
Créez un script et enregistrez-le quelque part qui contient vos lignes et la logique pour choisir une ligne aléatoire dans votre tableau et appeler la
speech
commande sur cette ligne:Puis dans votre
.bashrc
ou.profile
setPROMPT_COMMAND
:Remplacez simplement le
speech
parecho
pour obtenir un message au lieu de la voix.la source
${array[$RANDOM % ${#array[@]}]}
être entre guillemets?set -x
pour voir de quoi je parle :)Tutoriel d'édition ultérieur:
Grâce à la réponse de Ravexina ci-dessus, le problème est désormais résolu et la solution fonctionne à merveille. Je vais donner des instructions étape par étape ci-dessous, pour les autres personnes intéressées à le faire fonctionner dans Ubuntu 18.04
1. Installez le package pico2wave SVOX:
2. Créez le script de discours
et mettez ce contenu à l'intérieur, en insérant le bon utilisateur dans le chemin:
sauvegarder et quitter.
3. Créez le script shell_speech.sh comme indiqué par Ravexina ci-dessus:
sauvegarder et quitter.
4. Rendez les scripts exécutables et ajoutez leur répertoire à PATH afin qu'ils puissent être appelés de partout:
5. Modifiez .bashrc
ajoutez la ligne suivante:
sauver et fermer
Remarque: vous pouvez ajouter autant de nouvelles lignes que vous le souhaitez dans le tableau
~/scripts/bin/shell_speech
la source
PATH
, vous n'avez pas besoin de l'inclurebash
dans votrePROMPT_COMMAND
et j'utiliserais des guillemets simples au cas où vous ajouteriez plus tard d'autres choses qui devront avoir une exécution différée:PROMPT_COMMAND='shell_speech'
/bin/bash
au lieu d'un simplebash
... (bonne pratique au cas où quelqu'un mettrait un autre bash sur votre chemin avant/bin
...). Je devrais même vous suggérer un fichier aléatoire aléatoire dans le/tmp
répertoire plutôt quetest.wav
dans votre maison ... ps> donnez-lui un regard sur la fortune .bash
façon d’en obtenir plus. Liens, script, autorisation d'écriture sur des répertoires ouverts, partagés ... De plus - vous pouvez le manquer - les scripts peuvent survivre jusqu'à leur premier objectif ou propriétaire ... et vous (ou quelqu'un d'autre) pouvez les utiliser après assez de temps pour vous ne vous souvenez pas de toutes les commandes écrites à l'intérieur (nous le faisons pour cela), dans des conditions différentes. Mettre\bin\bash
avec le chemin explicite est une bonne pratique. Pour éviter de le faire ... un risque.