Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/07/2011, à 17:56

Compte supprimé

Script de lecture de long texte

Bonjour à tous

J'essaye depuis peu de permettre à l'utilisateur malvoyant de pouvoir lire des textes longs.
Pour ce faire j'ai créé un script shell grâce auquel il suffit de sélectionner le texte pour le faire lire (ceci existait déjà dans la doc) mais pour les textes longs ceci peut s'avérer dissuasif de devoir tout lire d'un seul coup ou de devoir sélectionner une certaine zone sur l'écran.
voici le script:

#!/bin/bash
# on acquière le texte à lire
xclip -o >> $HOME/.script_texte

# on entre les différents paramètres
VOIX=/usr/share/mbrola/voices/fr1
fichier="/home/benoit/.script_texte"
TYPE=mb-fr1
NBR_LIGNE=`wc -l $HOME/.script_texte | awk {'print $1'}`
NBR_CARACTERE=`wc -c $HOME/.script_texte | awk {'print $1'}`

# On demande à l'utilisateur son choix de lecture
espeak -v $TYPE -s 160 -p 40 "Le texte selectionné comporte $NBR_LIGNE ligne de texte et $NBR_CARACTERE caractères. Voulez-vous hacher la lecture?" | /usr/bin/mbrola -e $VOIX - -.au | aplay &
zenity --title="Lecture" --question --text="couper la lecture?"
CHOIX=$?

if [ "$CHOIX" = "0" ]; then
{
espeak -v $TYPE -s 160 -p 40 "Lecture mot par mot ou ligne par ligne" | /usr/bin/mbrola -e $VOIX - -.au | aplay &
zenity --title="comment couper la lecture?" --question --text="couper en mot ou en ligne" --ok-label="mots" --cancel-label="lignes"
CHOIX_LECTURE=$?
if [ "$CHOIX_LECTURE" = "1" ]; then
{
IFS=$'\n'       # nouveau séparateur de champ, le caractère fin de ligne
#zenity --title="poursuivre la lecture" --question --text="Appuyer sur Stop pour intérrompre" --ok-label="Stop" --cancel-label="Lire"
#LP=$? 
for ligne in $(<$fichier)
do
   espeak -v $TYPE -s 160 -p 40 "$ligne" | /usr/bin/mbrola -e $VOIX - -.au | aplay
done
rm /home/benoit/.script_texte
}
else
{
for mot in $(<$fichier)
do
   espeak -v $TYPE -s 160 -p 40 "$mot" | /usr/bin/mbrola -e $VOIX - -.au | aplay
done
rm /home/benoit/.script_texte
}
fi
}
else
{
espeak -v $TYPE -s 160 -p 40 -f $HOME/.script_texte | /usr/bin/mbrola -e $VOIX - -.au | aplay;
rm /home/benoit/.script_texte
}
fi
exit

Pour l'instant, il permet de choisir entre trois modes de lecture:
mot par mot
ligne par ligne
tout d'un coup

Ce qu'il reste à faire et que je ne vois pas comment les mettre en oeuvre est:
pouvoir stopper/ redémarrer la lecture (peut être via un fichier mémoire dans lequel on enregistrerai ce qui n'a pas encore été lu)

#2 Le 26/07/2011, à 19:57

kinouchou

Re : Script de lecture de long texte

Bonjour,

Pourquoi n'utilises-tu pas la mise en pause d'orca au lieu de faire un script?