Script: text a veu (Google) des del terminal

El dia d'avui comparteixo amb vostès. Un script molt útil per convertir un text a veu utilitzant el motor de veu de Google. L'avantatge principal d'aquest script és que «evadeix» el límit de 100 bytes imposat per Google. En realitat, per ser honestos, respecta aquest límit però envia totes les línies en forma automàtica amb la qual cosa aquesta limitació passa desapercebuda per a l'usuari. Els més exigents notaran, però, que la conversió no és de la mateixa qualitat que la que podem obtenir a Google Translate, principalment a causa d'aquest límit i que no és possible passar el text sencer d'un només cop. Com a punt positiu, cal afegir que aquest script també permet especificar l'idioma de el text a convertir.

Feta l'aclariment, vegem quins són els passos a seguir.

Passos a seguir

1.- Crear un arxiu amb el nom t2s.sh.

2.- Copia el següent contingut:

#! / Bin / bash ################################# # Speech Script by Dan Fountain # # Modified by UsemosLinux # # TalkToDanF@gmail.com # ################################# INPUT = $ * STRINGNUM = 0 ary = ($ {INPUT: 2}) echo "---------------------------" echo "Speech Script by Dan Fountain" echo "TalkToDanF @ gmail.com "echo" --------------------------- "for key in" $ {! ary [@]} "do SHORTTMP [ $ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ari [$ key]}" LENGTH = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "word: $ key, $ {ari [$ key]} "#echo" adding to: $ STRINGNUM "if [[" $ LENGTH "-lt" 100 "]]; then #echo starting new line SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} else STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ari [$ key]}" SHORT [ $ STRINGNUM] = "$ {ari [$ key]}" fi done for key in "$ {! SHORT [@]}" do #echo "line: $ key is: $ {SHORT [$ key]}" echo " playing line: $ (($ key + 1)) of $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? Ie = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "done

3.- Atorgar permisos d'execució a l'script:

suo chmod + x t2s.sh

4.- Executar el script passant com a paràmetres: a) el codi de l'idioma corresponent a el text, b) el text que es desitja convertir. Per exemple:

./t2s.sh és Aquest és un text molt interessant per a convertir.
Consell: alguns emuladors de terminal permeten enganxar text amb només arrossegar-lo. O sigui que és possible seleccionar un text en Firefox i arrossegar-lo a l'terminal.

Això és tot, espero que ho gaudeixin.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   yoyo va dir

    Com mola, moltes gràcies 😉

    I que bonica veu té la noia, crec que em vaig enamorar 😛

    1.    darkguzz va dir

      Disculpa em pots ajudar per al xinès ?, no em detecta els caràcters xinesos, sota el pinyin.

  2.   Ombra va dir

    Això aquesta bo com per a un script que revisi el correu o per una alarma personalitzada que a l'despertar et digui el pronòstic i missatges pendents xD

  3.   yoyo va dir

    Aquí vaig fer un vídeo de prova 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    usemoslinux va dir

      Bé! Gràcies!

  4.   benctrox va dir

    S'escolta molt bé, només vaig haver de instal·lar mpg123 🙂

  5.   portar va dir

    Tube d'instal·lar mpg123 però mola mogollón, això si no accepta algunes paraules dicce a titlli dret lletra etc.

    EHEH

  6.   Pau Honorato va dir

    La base de dades de virus ha estat actualitzada (?)

    1.    jalbrhcp va dir

      apt update && ./t2.sh és La base de dades de virus ha estat actualitzada

  7.   Alexander va dir

    Jajaja Excel·lent, ja li tinc alguns usos, veu sensual sens dubte =), gràcies per compartir.

  8.   Jorge Moratilla va dir

    Com a usuari de Mac OSX, no m'ha estat possible fer servir el Script ja que no tinc posat el mpg123, de manera que modificant el Script i usant VLC, podem deixar-ho funcionant correctament en Mac OS X.

    http://pastebin.com/C2Mkp1Qy

    1.    rolo va dir

      el tema és que vlc segurament queda calat i no es tanca a l'acabar d'executar i podries fer servir cvlc per evitar que s'obri la interfície gràfica

      1.    rolo va dir

        se li podria posar
        cvlc -Play-and-exit «https://translate.google.com/translate_tts?tl=${1}&q=${SHORT[$key]}»
        perquè tancament a l'acabar la reproducció

  9.   neysonv va dir

    hola nois em surt aquest error, a veure si algú em diu com és el problema
    Playing line: 1 of 1
    HTTP request failed: 404 Not Found
    [Mpg123.c: 610] error: Access to http resource http://translate.google.com/translate_tts?tl=hola&q= la failed.

    1.    neysonv va dir

      [Code] Playing line: 1 of 1
      HTTP request failed: 404 Not Found
      [Mpg123.c: 610] error: Access to http resource http://translate.google.com/translate_tts?tl=hola&q= la failed. [/ Code]

    2.    usemoslinux va dir

      El problema és que estàs fent servir malament el script.
      Quan ho executis, has de passar-li com a primer paràmetre l'idioma de el text, com es mostra en l'exemple de l'post.
      Et dono un altre exemple:
      ./t2s.sh a This is a simple example.
      Fixa't que després d'ts2.sh segueix «a» (que vol dir «english», és a dir anglès). Per espanyol, usá «és» i després la frase en aquest idioma que vulguis convertir.
      Abraçada! Pau.

  10.   anonimo va dir

    coneixes la comanda speak no? jeje

    espeak -v és-la «hola»

    1.    usemoslinux va dir

      Sí, però no és el mateix. Aquesta veu és molt millor. 🙂

      1.    notananònim va dir

        estem d'acord!
        Salutacions!

  11.   Sara va dir

    Per a qui tingui problemes amb mpg123 -qo no li agradi pot canviar a mplayer

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

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

    1.    Guido va dir

      Millor «mplayer -really-quiet» perquè no ompli la sortida amb text

  12.   Jonathan va dir

    Muí bona idea utilitzar a google per les meves aplicacions em queda com anell a el dit.
    http://github.com/alfa30/t2v

  13.   darkguzz va dir

    Una pregunta més; algú podria dir-me com gravar l'àudio de sortida ???

    1.    José GDF va dir

      Jo mateix et responc, perquè acabo de aconseguir-ho. Usant mpg123, he modificat la línia 38 de l'script, quedant d'aquesta manera:

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

      He afegit -w audio.wav. Això crea un arxiu wav amb l'àudio de la frase, però tal qual ho he deixat, no s'escolta. Si a més, vols escoltar la frase, hauries d'afegir una altra línia. Quedaries ambdues així:

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

      Segurament es podria fer d'una altra manera més eficient i neta, però a mi al menys em funciona.

      1.    darkguzz va dir

        Excel·lent José GDF, vaig provar el teu mètode amb molt bon resultat, salutacions.

      2.    soymicmic va dir

        Per estalviar trànsit a la segona execució podries reproduir el .wav que has generat en la primera

      3.    José GDF va dir

        Doncs sí, usant un reproductor que tinguem instal·lat. Per exemple, amb VLC Player seria:

        vlc audio.wav

        Bé, qui diu vlc, diu qualsevol altre reproductor, inclosos els que funcionen per terminal.

        I per evitar la sobreescriptura de l'arxiu a cada ús de l'script, s'hauria d'usar una variable per al nom. Nom que posaria l'usuari (comandament read) abans de començar ... Però això ja seria filar encara més prim 😀

  14.   Drarko va dir

    Jo ho vaig fer en PHP (per a crear àudios per a una central telefònica Asterisk *)

    <?php
    $ Url = 'http://translate.google.com/translate_tts?ie=UTF-8&q={Query}% 0A & tl = ca & prev = input ';

    if (count ($ argv) <= 1) {
    $ Name = basename ($ argv [0]);
    die ($ name. 'usage:'. $ name. '
    }
    array_shift ($ argv);
    $ Query = implode ( '', $ argv);
    $ Filename = str_replace (array ( '', ',', '.'), '-', $ query);
    $ Filename = str_replace ( '-', '-', $ filename);

    $ Url = str_replace ( '{query}', rawurlencode ($ query), $ url);
    $ Ch = curl_init ();
    curl_setopt ($ ch, CURLOPT_URL, $ url);
    curl_setopt ($ ch, CURLOPT_HEADER, 0);
    curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
    $ Result = curl_exec ($ ch);
    curl_close ($ ch);

    $ Path = getcwd (). '/'. $ Filename;
    file_put_contents ($ path. '. mp3', $ result);
    @exec ( "sox {$ path} .mp3 -b 16 -r 8000 -t wavpcm {$ path} .wav");
    @unlink ($ path. '. mp3');

    1.    darkguzz va dir

      Que tal ja he aconseguit gravar l'àudio de sortida amb aquesta comanda:
      arecord ~ ​​/ zhongwen.mp3 & ./t2s.sh zh ni hao; fg
      i a la fi ctrl + c per aturar la gravació.

      Mai havia fet servir php
      Però a l'executar:
      php5 text-a-voz.php és Hola
      la konsola allotja això:
      sox FAIL formats: no handler for file extension `mp3 '

      De qualsevol s'agraeix molt l'aportació, ho intentaré més tard.

  15.   Kirian va dir

    2 aplicacions per Traductor d'idiomes de google + traducció de el text a veu:
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   José va dir

    Crec que és la millor manera de convertir, la veu no està tan malament com les altres opcions per a Linux> _
    Hi ha alguna manera de fer que llegeixi un arxiu de text pla?
    Seria de molta utilitat per convertir llibres sencers a àudio

  17.   xufles va dir

    Doncs a mi no em va, no es porqueee, surt això:

    xxxxx: ~ / Documents / Linux $ ./t2s.sh és hola

    ---------
    Speech Script by Dan Fountain
    TalkToDanF@gmail.com
    ---------
    Playing line: 1 of 1
    http_open: HTTP / 1.0 400 Bad Request
    http://translate.google.com: No such file or directory

    tinc instal·lat el mpg123 i he fet pruebecillas i res .... gràcies per endavant

  18.   Ignacio Cruz Martínez va dir

    Què tal, aquest script m'ha servit molt bé, tant per escoltar el so com per gravar les paraules de l'traductor.

    De fet, he modificat el script per adapatarlo a una necessitat que tinc: Transformar una llista de paraules en text (lemario) a veu; em guardi la veu en wav, converteixi a ogg i els posi el nom segons la paraula llegida.

    Això ho vaig fer al KDE emprant kdialog per especificar la ruta on està l'arxiu amb la llista de paraules i el directori on vull que es guardi l'àudio de veu.

    Quan finalitza la conversió de WAV a OGG, em crea dues carpetes on es guarden els wav per una banda i els ogg de l'altre.

    Al principi em feia bronca perquè no em llegia correctament les paraules amb accents, però vaig trobar que cal afegir «és & ie = UTF8» en el codi. Per un moment vaig oblidar la codificació de caràcters.

    Els deixo el codi de l'script que vaig realitzar per si els serveix:

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

    #! / Bin / bash

    ###################################
    # Lemario de text a veu #
    # Adaptat per Ignacio Cruz Martínez #
    # El correu és secret xD #
    ###################################

    #cuadro de diàleg del KDE per especificar ruta i nom de l'lemario
    soyunarchivo = $ (kdialog -inputbox «Entri plena ruta i el nom de l'arxiu (amb extensió si la té):»)

    #cuadro de diàleg del KDE per especificar la carpeta destinació dels arxius de veu
    ruta = $ (kdialog -inputbox «Entri plena ruta per guardar l'àudio de veu:»)

    #mediante cat es llegeixen totes les línies de l'arxiu de text, cada línia consta d'una sola paraula
    for i in $ (cat $ soyunarchivo)
    do
    echo $ i

    # Conversió a veu mitjançant google translate, no s'oblidin de la codificació perquè llegeixi accents
    mpg123 -q -w «$ ruta» $ 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»

    #usando ffmpeg per convertir els arxius wav a ogg
    ffmpeg -i «$ ruta» $ i.wav -acodec libvorbis «$ ruta» $ i.ogg
    fet

    #con aquestes línies es creen les carpetes per organitzar els arxius de veu en WAV o OGG
    mkdir «$ ruta» WAV
    mv «$ ruta» *. wav «$ ruta» WAV

    mkdir «$ ruta» OGG
    mv «$ ruta» *. ogg «$ ruta» OGG

    #cuadro de diàleg KDE per indicar que es va acabar el treball
    kdialog -msgbox 'Procés acabat'

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

    Ara bé, ¿algun de vostès té coneixement sobre la llicència d'ús dels arxius de veu generats?

    Limitacione per drets d'autor i coses relacionades. Això m'interessa perquè penso utilitzar alguns d'aquests arxius de veu per donar suport a persones que es van a alfabetitzar, bàsicament és un projecte sense ànim de lucre.

    I és que aquesta eina té la millor entonació per llenguatge espanyol, lamentablement en linux no hi ha alguna cosa semblant. Mbrola m'ha donat molta llauna per configurar juntament amb Gespeaker.

    Gràcies i ens veiem.

    1.    usemoslinux va dir

      Ni idea ... caldria veure en les llicències de Google Translator.

  19.   Armando va dir

    No em va funcionar el Script, a l'sembla és un problema relacionat amb la URL, per a qui li interessi aquesta és la URL correcta:
    http://translate.google.com/translate_tts?tl=es&q=Hola

  20.   suall va dir

    Hola! He estat fent proves amb el teu script i a l'executar m'ha dit que no trobava l'àudio, o sigui que he ficat la URL i sembla que el senyor google ha posat un captcha ...

  21.   ' va dir

    actualitzin l'script