Script: synthèse vocale (Google) depuis le terminal

Aujourd'hui, je partage avec vous un script très utile pour convertir du texte en parole à l'aide du moteur vocal de Google. Le principal avantage de ce script est qu'il "contourne" la limite de 100 octets imposée par Google. En fait, pour être honnête, il respecte cette limite mais envoie toutes les lignes automatiquement, donc cette limitation passe inaperçue par l'utilisateur. Les plus exigeants remarqueront cependant que la conversion n'est pas de la même qualité que celle que l'on peut obtenir dans Google Translate, principalement en raison de cette limite et qu'il n'est pas possible de passer tout le texte d'un seul coup. Comme point positif, il faut ajouter que ce script permet également de spécifier la langue du texte à convertir.

Après avoir clarifié, voyons quelles sont les étapes à suivre.

Pas à suivre

1. - Créez un fichier avec le nom t2s.sh.

2. - Copiez le contenu suivant:

#! / bin / bash ############################### # Speech Script par Dan Fountain # # Modifié par UsemosLinux # # TalkToDanF@gmail.com # ############################## INPUT = $ * STRINGNUM = 0 ary = ( $ {INPUT: 2}) echo "---------------------------" echo "Script de discours de Dan Fountain" echo "TalkToDanF @ gmail .com "echo" --------------------------- "pour la clé dans" $ {! ary [@]} "faire SHORTTMP [$ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}" LENGTH = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "mot: $ clé, $ {ary [$ clé ]} "#echo" ajout à: $ STRINGNUM "if [[" $ LENGTH "-lt" 100 "]]; puis #echo commençant une nouvelle ligne SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} else STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}" SHORT [ $ STRINGNUM] = "$ {ary [$ key]}" fi done for key in "$ {! SHORT [@]}" do #echo "line: $ key is: $ {SHORT [$ key]}" echo " Ligne de lecture: $ (($ key + 1)) sur $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? ie = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "terminé

3. - Accordez les autorisations d'exécution au script:

sudo chmod + x t2s.sh

4. - Exécutez le script en passant comme paramètres: a) le code de langue correspondant au texte, b) le texte à convertir. Par exemple:

./t2s.sh fr C'est un texte très intéressant à convertir.
Astuce: certains émulateurs de terminal vous permettent de coller du texte en le faisant simplement glisser. Il est donc possible de sélectionner un texte dans Firefox et de le faire glisser vers le terminal.

Voilà, j'espère que vous l'apprécierez.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Yoyo dit

    Comme c'est cool, merci beaucoup 😉

    Et quelle belle voix a la fille, je pense que je suis tombée amoureuse 😛

    1.    sombreguzz dit

      Excusez-moi, pouvez-vous m'aider avec le chinois? Je ne peux pas détecter les caractères chinois, seulement le pinyin.

  2.   Shadow dit

    C'est bon comme pour un script qui vérifie le courrier ou pour une alarme personnalisée qui au réveil vous indique les prévisions et les messages en attente xD

  3.   Yoyo dit

    Ici j'ai fait une vidéo de test 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    utilisons Linux dit

      Bien! Je vous remercie!

  4.   Bentrox dit

    Cela semble très bien, je n'ai eu qu'à installer mpg123 🙂

  5.   porter dit

    Tube pour installer mpg123 mais c'est cool, que s'il n'accepte pas certains mots, il dit une bonne lettre de graduation, etc.

    EH EH

  6.   paul honorato dit

    La base de données virale a été mise à jour (?)

    1.    jalbrhcp dit

      apt update && ./t2.sh fr La base de données virale a été mise à jour

  7.   Alexandre dit

    Hahaha Excellent, j'en ai déjà quelques usages, voix sensuelle sans aucun doute =), merci pour le partage.

  8.   Jorge Moratilla dit

    En tant qu'utilisateur Mac OSX, il ne m'a pas été possible d'utiliser le script car je n'ai pas mpg123, donc en modifiant le script et en utilisant VLC, nous pouvons le laisser fonctionner correctement sous Mac OS X.

    http://pastebin.com/C2Mkp1Qy

    1.    Rolo dit

      le problème est que vlc reste sûrement activé et ne se ferme pas quand il a fini de s'exécuter et vous pouvez utiliser cvlc pour empêcher l'interface graphique de s'ouvrir

      1.    Rolo dit

        ça pourrait être mis
        cvlc –play-and-exit «https://translate.google.com/translate_tts?tl=$ái1-lex.europa.eu&q=$[SHORT[$key]}»
        pour qu'il se ferme à la fin de la reproduction

  9.   neysonv dit

    Salut les gars, j'ai cette erreur, voyons si quelqu'un me dit quel est le problème
    Ligne de jeu: 1 sur 1
    Échec de la requête HTTP: 404 introuvable
    Erreur [mpg123.c: 610]: accès à la ressource http http://translate.google.com/translate_tts?tl=hola&q= l'échec.

    1.    neysonv dit

      [code] Ligne de lecture: 1 sur 1
      Échec de la requête HTTP: 404 introuvable
      Erreur [mpg123.c: 610]: accès à la ressource http http://translate.google.com/translate_tts?tl=hola&q= l'échec. [/ code]

    2.    utilisons Linux dit

      Le problème est que vous utilisez mal le script.
      Lorsque vous l'exécutez, vous devez passer la langue du texte comme premier paramètre, comme indiqué dans l'exemple de l'article.
      Je vous donne un autre exemple:
      ./t2s.sh in Ceci est un exemple simple.
      Notez qu'après ts2.sh, il suit "en" (qui signifie "anglais", c'est-à-dire anglais). Pour l'espagnol, utilisez «es», puis la phrase dans cette langue que vous souhaitez convertir.
      Étreinte! Paul.

  10.   anonyme dit

    vous connaissez la commande de parole non? hehe

    espeak -v est-le «bonjour»

    1.    utilisons Linux dit

      Oui mais pas pareil. Cette voix est tellement meilleure. 🙂

      1.    note anonyme dit

        nous sommes d'accord!
        Salutations!

  11.   Sara dit

    Pour ceux qui ont des problèmes avec mpg123 -q ou qui ne l'aiment pas, vous pouvez passer à mplayer

    mpg123 -q «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[SHORT[$key]}»

    mplayer «http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}»

    1.    Guido dit

      Meilleur "mplayer -really-quiet" pour qu'il ne remplisse pas la sortie avec du texte

  12.   Jonathan dit

    Une bonne idée d'utiliser google pour mes applications me va comme un gant.
    http://github.com/alfa30/t2v

  13.   sombreguzz dit

    Une question de plus; Quelqu'un pourrait-il me dire comment enregistrer l'audio de sortie ???

    1.    Joseph GDF dit

      Je vous réponds moi-même, parce que je viens de l'avoir. En utilisant mpg123, j'ai modifié la ligne 38 du script, ressemblant à ceci:

      mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}»

      J'ai ajouté -w audio.wav. Cela crée un fichier wav avec l'audio de la phrase, mais comme je l'ai laissé, il n'est pas entendu. Si vous souhaitez également entendre la phrase, vous devrez ajouter une autre ligne. Vous ressembleriez tous les deux à ceci:

      mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[SHORT[$key]}» &
      mpg123 -q «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[SHORT[$key]}»

      Cela pourrait sûrement être fait d'une autre manière plus efficace et plus propre, mais au moins cela fonctionne pour moi.

      1.    sombreguzz dit

        Excellent José GDF, j'ai essayé votre méthode avec de très bons résultats, salutations.

      2.    soymique dit

        Pour économiser du trafic dans la deuxième exécution, vous pouvez reproduire le .wav que vous avez généré dans la première

      3.    Joseph GDF dit

        Eh bien oui, en utilisant un lecteur que nous avons installé. Par exemple, avec VLC Player, ce serait:

        vlc-audio.wav

        Eh bien, qui dit vlc, dit tout autre joueur, y compris ceux qui fonctionnent par terminal.

        Et pour éviter d'écraser le fichier à chaque fois que le script est utilisé, une variable doit être utilisée pour le nom. Nom que l'utilisateur mettrait (commande de lecture) avant de commencer ... Mais ce serait boucler la boucle 😀

  14.   Drakô dit

    Je l'ai fait en PHP (pour créer des audios pour un central téléphonique Asterisk *)


    $ url = 'http://translate.google.com/translate_tts?ie=UTF-8&q={requête}% 0A & tl = est & prev = entrée ';

    si (compte ($ argv) <= 1) {
    $ nom = nom de base ($ argv [0]);
    die ($ name. 'usage:'. $ name. '
    }
    array_shift ($ argv);
    $ query = implode ('', $ argv);
    $ filename = str_replace (array ('', ',', '.'), '-', $ query);
    $ filename = str_replace ('-', '-', $ filename);

    $ url = str_replace ('{requête}', rawurlencode ($ query), $ url);
    $ Ch = curl_init ();
    curl_setopt ($ ch, CURLOPT_URL, $ url);
    curl_setopt ($ ch, CURLOPT_HEADER, 0);
    curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, vrai);
    $ résultat = curl_exec ($ ch);
    curl_close ($ ch);

    $ chemin = getcwd (). '/'. $ nom de fichier;
    file_put_contents ($ chemin. '. mp3', $ résultat);
    @exec ("sox {$ chemin} .mp3 -b 16 -r 8000 -t wavpcm {$ chemin} .wav");
    @unlink ($ chemin. '. mp3');

    1.    sombreguzz dit

      Et si j'ai déjà réussi à enregistrer l'audio de sortie avec cette commande:
      arecord ~ ​​/ zhongwen.mp3 & ./t2s.sh zh ni hao; fg
      et à la fin ctrl + c pour arrêter l'enregistrement.

      Je n'avais jamais utilisé php
      Mais lors de l'exécution:
      php5 text-to-speech.php est Hello
      la konsola héberge ceci:
      formats sox FAIL: pas de gestionnaire pour l'extension de fichier `mp3 ′

      Toute contribution est grandement appréciée, je réessayerai plus tard.

  15.   Kirian dit

    2 applications pour le traducteur de langue Google + la traduction de texte en parole:
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   Joseph dit

    Je pense que c'est le meilleur moyen de convertir, la voix n'est pas aussi mauvaise que les autres options pour Linux> _
    Existe-t-il un moyen de le faire lire un fichier texte brut?
    Il serait très utile de convertir des livres entiers en audio

  17.   chaussons dit

    Eh bien, ça ne marche pas pour moi, je ne sais pas pourquoi, ça sort:

    xxxxx: ~ / Documents / Linux $ ./t2s.sh est bonjour

    ---------
    Script de discours par Dan Fountain
    TalkToDanF@gmail.com
    ---------
    Ligne de jeu: 1 sur 1
    http_open: HTTP / 1.0 400 Requête incorrecte
    http://translate.google.com: Aucun fichier ou répertoire de ce nom

    J'ai installé le mpg123 et j'ai fait de petits tests et rien…. Merci d'avance

  18.   Ignacio Cruz Martinez dit

    Bonjour, ce script m'a très bien servi, à la fois pour écouter le son et pour enregistrer les paroles du traducteur.

    En fait, j'ai modifié le script pour l'adapter à un besoin que j'ai: Transformer une liste de mots dans un texte (lemario) en parole; enregistrer ma voix en wav, convertir en ogg et les nommer selon le mot lu

    J'ai fait cela dans KDE en utilisant Kdialog pour spécifier le chemin où se trouve le fichier avec la liste de mots et le répertoire où je veux que l'audio vocal soit enregistré.

    Lorsque la conversion WAV en OGG est terminée, il crée deux dossiers dans lesquels le wav d'un côté et l'ogg de l'autre sont stockés.

    Au début, j'étais en colère parce que je n'avais pas lu correctement les mots avec des accents, mais j'ai trouvé qu'il fallait ajouter "es & ie = UTF8" dans le code. Pendant un moment, j'ai oublié l'encodage des caractères.

    Je vous laisse le code du script que j'ai fait au cas où cela vous aiderait:

    ################################################ #####################

    #! / Bin / bash

    ###############################
    # Conférence de synthèse vocale #
    # Adapté par Ignacio Cruz Martínez #
    # le mail est secret xD #
    ###############################

    Boîte de dialogue #KDE pour spécifier le chemin et le nom du lemmary
    soyunarchivo = $ (kdialog –inputbox «Entrez le chemin et le nom du fichier (avec une extension s'il en a une):»)

    Boîte de dialogue #KDE pour spécifier le dossier de destination des fichiers vocaux
    path = $ (kdialog –inputbox «Entrez le chemin pour enregistrer l'audio vocal:»)

    # par cat toutes les lignes du fichier texte sont lues, chaque ligne se compose d'un seul mot
    pour i en $ (cat $ soyunfile)
    do
    echo $ i

    # conversion en parole en utilisant google translate, n'oubliez pas l'encodage pour qu'il lit les accents
    mpg123 -q -w "$ chemin" $ i.wav "http://translate.google.com/translate_tts?tl=es&ie=UTF8&q=$i"
    mpg123 -q "http://translate.google.com/translate_tts?tl=es&ie=UTF8&q=$i"

    # utiliser ffmpeg pour convertir des fichiers wav en ogg
    ffmpeg -i "$ chemin" $ i.wav -acodec libvorbis "$ chemin" $ i.ogg
    fait

    # avec ces lignes les dossiers sont créés pour organiser les fichiers vocaux en WAV ou OGG
    mkdir "$ chemin" WAV
    mv "$ chemin" *. wav "$ chemin" WAV

    mkdir "$ chemin" OGG
    mv "$ chemin" *. ogg "$ chemin" OGG

    Boîte de dialogue #KDE pour indiquer que le travail est terminé
    kdialog –msgbox 'Processus terminé'

    ################################################ ###################

    Maintenant, est-ce que l'un de vous a des connaissances sur la licence d'utilisation des fichiers vocaux générés?

    Limitation du droit d'auteur et des choses connexes. Cela m'intéresse car je prévois d'utiliser certains de ces fichiers vocaux pour soutenir les personnes qui vont devenir alphabétisées, c'est essentiellement un projet à but non lucratif.

    Et c'est que cet outil a la meilleure intonation pour la langue espagnole, malheureusement sous Linux il n'y a rien de similaire. Mbrola m'a donné beaucoup de mal à monter avec Gespeaker.

    Merci et à bientôt.

    1.    utilisons Linux dit

      Aucune idée ... il faudrait regarder les licences Google Translator.

  19.   Armando dit

    Le script n'a pas fonctionné pour moi, apparemment c'est un problème lié à l'URL, pour ceux qui sont intéressés c'est l'URL correcte:
    http://translate.google.com/translate_tts?tl=es&q=Hola

  20.   Juajo dit

    Salut! J'ai fait des tests avec votre script et lors de son exécution, il m'a dit qu'il ne pouvait pas trouver l'audio, donc j'ai entré l'URL et il semble que M. google a mis un captcha ...

  21.   ' dit

    mettre à jour le script