Vocalisation d'un texte sélectionné avec Pico

Visiteur
Visiteur
ChatGPT et moi-même avons écrit un script pour vous.
Installer :
Code BASH :
urpmi svox-pico xclip ffmpeg sox mpv
Enregistrez le script, par exemple dans /home/user/pico.sh
Code BASH :
chmod +x /home/user/pico.sh
Explication :
« -selection primary » - buffer de la souris (sélection)
« -selection clipboard » - presse-papiers (copie)
Dans les paramètres de votre environnement graphique, spécifiez un raccourci clavier pour le script /home/user/pico.sh, par exemple Shift+Alt+S.
Sélectionnez maintenant le texte (dans le navigateur, dans l'éditeur de texte, n'importe où), appuyez sur Shift+Alt+S et il sera prononcé. J'utilise un script similaire pour RHVoice.
Si vous le souhaitez, j'essaierai d'ajouter une option d'égalisation pour rendre le son plus agréable.
/home/user/pico.sh :
Code BASH :
#!/bin/bash # Check if there is text on the clipboard text=$(xclip -o -selection primary) #text=$(xclip -o -selection clipboard) if [ -z "$text" ]; then notify-send "Erreur" "Le presse-papiers est vide. Mettez le texte en surbrillance et réessayez." exit 1 fi # Clearing text from unnecessary characters (optional) clean_text=$(echo "$text" | sed 's/\\n/ /g' | sed 's/\\t/ /g') # Saving text to a temporary file echo "$clean_text" > /tmp/pico.txt # Generating audio with Pico sed -i "s/'/’/g" /tmp/pico.txt && cat /tmp/pico.txt | pico2wave -w /tmp/pico.wav -l fr-FR | ffmpeg -hide_banner -loglevel fatal -i /tmp/pico.wav -acodec pcm_s16le -af volume=+5dB -ac 1 -ar 48000 -f wav - | sox --no-show-progress -t wav - -t wav - tempo 0.85 | mpv --quiet --no-config --volume=85 -
ffmpeg augmente le volume de 5 dB et effectue un resampling 16000 > 48000 Hz.
sox réduit la vitesse de 15 %, tout en conservant la tonalité naturelle, de sorte que la parole n'est pas très rapide.
Le lecteur mpv joue le son.

Visiteur
Visiteur
Code BASH :
sed -i s/лучше/лутше/Ig /tmp/rhvoice.txt && cat /tmp/rhvoice.txt | taskset -c 1 /usr/bin/RHVoice-test -o - -q max -v 100 -r 100 | /usr/bin/ffmpeg -threads 1 -i - -af silenceremove=start_periods=1:stop_periods=-1:start_threshold=-40dB:stop_threshold=-40dB:start_silence=0.13:stop_silence=0.13 -threads 1 -f wav -y - | mpv --no-config --volume=72 -
Comme vous pouvez le voir, il s'agit de supprimer les pauses inutiles, de forcer un seul cœur (taskset -c 1, threads 1) et d'éditer un mot.
Le symbole « - » signifie pipe.

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Ceci est très intéressant.
Tu utilises xclip. Donc ceci ne fonctionne pas dans un environnement Wayland ?
Tu utilises un mélange d'écriture temporaire et de "pipes". Pourquoi ne fais-tu tout par des pipes ? est-ce un choix ou une difficulté technique.
artenaki :-selection primary
Je découvre qu'il est possible d'accéder au texte sélectionné. Merci. Le message indique que le presse-papier est vide, mais ce n'est pas exactement la situation. C'est la sélection qui est vide. Peut-être faut-il dans ce cas oraliser le contenu du presse-papier ?
Yves

Visiteur
Visiteur
Édité par Visiteur Le 24/11/2024 à 06h35

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
artenaki :Veux-tu que le presse-papiers du système soit vocalisé si le buffer de la souris est vide ? Je ne sais pas comment faire.
Je ne veux rien, je réfléchis à voix haute.
Pour récupérer le contenu du presse-papier, je pense que ça correspond à la ligne qui est commentée :
Code BASH :
#text=$(xclip -o -selection clipboard)
Yves
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie