Script: text to speech (Google) dal terminale

Oggi condivido con voi uno script molto utile per convertire il testo in parlato utilizzando il motore vocale di Google. Il vantaggio principale di questo script è che "aggira" il limite di 100 byte imposto da Google. In realtà, ad essere onesti, rispetta questo limite ma invia tutte le linee automaticamente, il che significa che questa limitazione passa inosservata all'utente. I più esigenti noteranno però che la conversione non è della stessa qualità di quella che possiamo ottenere in Google Translate, principalmente a causa di questo limite e che non è possibile far passare l'intero testo in un colpo solo. Come punto positivo, va aggiunto che questo script consente anche di specificare la lingua del testo da convertire.

Chiarito, vediamo quali sono i passaggi da seguire.

Passi da intraprendere

1. - Crea un file con il nome t2s.sh.

2. - Copia il seguente contenuto:

#! / bin / bash ################################ # Script vocale di Dan Fountain # # Modificato da UsemosLinux # # TalkToDanF@gmail.com # ############################### INPUT = $ * STRINGNUM = 0 ary = ($ {INPUT: 2}) echo "---------------------------" echo "Speech Script di Dan Fountain" echo "TalkToDanF @ gmail.com "echo" --------------------------- "per la chiave in" $ {! ary [@]} "fai SHORTTMP [ $ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}" LENGTH = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "parola: $ key, $ {ary [$ key]} "#echo" aggiunta a: $ STRINGNUM "if [[" $ LENGTH "-lt" 100 "]]; quindi #echo inizia una nuova riga SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} altrimenti STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}" SHORT [ $ STRINGNUM] = "$ {ary [$ key]}" fi fatto per la chiave nella riga "$ {! SHORT [@]}" do #echo ": $ key è: $ {SHORT [$ key]}" echo " Linea di riproduzione: $ (($ key + 1)) di $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? ie = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "fatto

3. - Concedi autorizzazioni di esecuzione allo script:

sudo chmod + x t2s.sh

4. - Eseguire lo script passando come parametri: a) il codice della lingua corrispondente al testo, b) il testo da convertire. Per esempio:

./t2s.sh it Questo è un testo molto interessante da convertire.
Suggerimento: alcuni emulatori di terminale ti consentono di incollare il testo semplicemente trascinandolo. Quindi è possibile selezionare un testo in Firefox e trascinarlo sul terminale.

Questo è tutto, spero che ti piaccia.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Yoyo suddetto

    Che bello, grazie mille 😉

    E che bella voce ha la ragazza, penso di essermi innamorato 😛

    1.    darkguzz suddetto

      Mi scusi, potete aiutarmi con il cinese? Non rileva i caratteri cinesi, solo il pinyin.

  2.   Shadow suddetto

    Questo va bene come per uno script che controlla la posta o per un allarme personalizzato che al risveglio ti dice le previsioni e i messaggi in sospeso xD

  3.   Yoyo suddetto

    Qui ho fatto un video di prova 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    usiamo linux suddetto

      Buona! Grazie!

  4.   bentrox suddetto

    Suona molto bene, ho dovuto installare solo mpg123 🙂

  5.   facchino suddetto

    Ho dovuto installare mpg123 ma è stato bello, quindi se non accetta alcune parole, dice una lettera di spunta a destra ecc.

    EH EH

  6.   Pablo Onorato suddetto

    Il database dei virus è stato aggiornato (?)

    1.    jalbrhcp suddetto

      apt update && ./t2.sh it Il database dei virus è stato aggiornato

  7.   Alexander suddetto

    Hahaha Eccellente, ne ho già alcuni usi, voce sensuale senza dubbio =), grazie per la condivisione.

  8.   Giorgio Moratilla suddetto

    Come utente Mac OSX, non è stato possibile per me utilizzare lo script poiché non ho mpg123, quindi modificando lo script e utilizzando VLC, possiamo lasciarlo funzionare correttamente in Mac OS X.

    http://pastebin.com/C2Mkp1Qy

    1.    Rolo suddetto

      il problema è che vlc rimane sicuramente acceso e non si chiude quando termina l'esecuzione e potresti usare cvlc per impedire l'apertura dell'interfaccia grafica

      1.    Rolo suddetto

        potrebbe essere messo
        cvlc –play-and-exit «https://translate.google.com/translate_tts?tl=$[$key]}»
        in modo che si chiuda alla fine della riproduzione

  9.   neysonv suddetto

    Ciao ragazzi ricevo questo errore, vediamo se qualcuno mi dice qual è il problema
    Linea di gioco: 1 di 1
    Richiesta HTTP non riuscita: 404 non trovato
    [mpg123.c: 610] errore: accesso alla risorsa http http://translate.google.com/translate_tts?tl=hola&q= il fallito.

    1.    neysonv suddetto

      [codice] Linea di riproduzione: 1 di 1
      Richiesta HTTP non riuscita: 404 non trovato
      [mpg123.c: 610] errore: accesso alla risorsa http http://translate.google.com/translate_tts?tl=hola&q= il fallito. [/ codice]

    2.    usiamo linux suddetto

      Il problema è che stai usando lo script in modo sbagliato.
      Quando lo esegui, devi passare la lingua del testo come primo parametro, come mostrato nell'esempio nel post.
      Ti faccio un altro esempio:
      ./t2s.sh in Questo è un semplice esempio.
      Notare che dopo ts2.sh segue "en" (che significa "inglese", cioè inglese). Per lo spagnolo, usa "es" e poi la frase nella lingua che desideri convertire.
      Abbraccio! Paolo.

  10.   anonimo suddetto

    conosci il comando di pronuncia no? hehe

    espeak -v è-il «ciao»

    1.    usiamo linux suddetto

      Sì, ma non lo stesso. Questa voce è molto meglio. 🙂

      1.    nota anonima suddetto

        siamo d'accordo!
        Saluti!

  11.   Sara suddetto

    Per coloro che hanno problemi con mpg123 -q o non gli piace, puoi passare a 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 suddetto

      Meglio "mplayer –really-quiet" in modo da non riempire l'output di testo

  12.   Jonathan suddetto

    Un'ottima idea di usare Google per le mie applicazioni mi sta come un guanto.
    http://github.com/alfa30/t2v

  13.   darkguzz suddetto

    Un'altra domanda; Qualcuno potrebbe dirmi come registrare l'audio in uscita ???

    1.    Jose GDF suddetto

      Ti rispondo io stesso, perché l'ho appena ricevuto. Usando mpg123, ho modificato la riga 38 dello script, in questo modo:

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

      Ho aggiunto -w audio.wav. Questo crea un file wav con l'audio della frase, ma come l'ho lasciato, non si sente. Se vuoi ascoltare anche la frase, devi aggiungere un'altra riga. Sareste entrambi così:

      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-lex.europa.eu&q=$[SHORT[$key]}»

      Sicuramente potrebbe essere fatto in un altro modo più efficiente e pulito, ma almeno per me funziona.

      1.    darkguzz suddetto

        Ottimo José GDF, ho provato il tuo metodo con ottimi risultati, saluti.

      2.    soimico suddetto

        Per risparmiare traffico nella seconda esecuzione potresti riprodurre il .wav che hai generato nella prima

      3.    Jose GDF suddetto

        Ebbene sì, utilizzando un lettore che abbiamo installato. Ad esempio, con VLC Player sarebbe:

        vlc-audio.wav

        Bene, chi dice vlc, dice qualsiasi altro giocatore, compresi quelli che funzionano da terminale.

        E per evitare di sovrascrivere il file ogni volta che viene utilizzato lo script, è necessario utilizzare una variabile per il nome. Nome che l'utente inserirà (comando di lettura) prima di iniziare ... Ma sarebbe arricciare il ricciolo 😀

  14.   Draco suddetto

    L'ho fatto in PHP (per creare audio per un sistema telefonico Asterisk *)


    $ url = "http://translate.google.com/translate_tts?ie=UTF-8&q={query}% 0A & tl = è & prev = input ';

    if (count ($ argv) <= 1) {
    $ nome = basename ($ argv [0]);
    die ($ nome. 'utilizzo:'. $ nome. '
    }
    array_shift ($ argv);
    $ query = implode ('', $ argv);
    $ filename = str_replace (array ('', ',', '.'), '-', $ query);
    $ nomefile = str_replace ('-', '-', $ nomefile);

    $ 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);
    $ risultato = curl_exec ($ ch);
    curl_close ($ ch);

    $ percorso = getcwd (). '/'. $ nomefile;
    file_put_contents ($ percorso. '. mp3', $ risultato);
    @exec ("sox {$ percorso} .mp3 -b 16 -r 8000 -t wavpcm {$ percorso} .wav");
    @unlink ($ percorso. '. mp3');

    1.    darkguzz suddetto

      Che ne dici se sono già riuscito a registrare l'audio in uscita con questo comando:
      arecord ~ ​​/ zhongwen.mp3 & ./t2s.sh zh ni hao; fg
      e alla fine ctrl + c per interrompere la registrazione.

      Non avevo mai usato php
      Ma durante l'esecuzione:
      php5 text-to-speech.php è Hello
      la konsola ospita questo:
      Formati sox FAIL: nessun gestore per l'estensione file `mp3 ′

      Ogni contributo è molto apprezzato, riproverò più tardi.

  15.   Kiriano suddetto

    2 app per traduttore di lingua google + traduzione da testo a discorso:
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   Joseph suddetto

    Penso che sia il modo migliore per convertire, la voce non è così male come le altre opzioni per Linux> _
    C'è un modo per far leggere un file di testo normale?
    Sarebbe molto utile convertire interi libri in audio

  17.   chuflas suddetto

    Beh, per me non funziona, non so perché, viene fuori:

    xxxxx: ~ / Documents / Linux $ ./t2s.sh è ciao

    ---------
    Discorso di Dan Fountain
    TalkToDanF@gmail.com
    ---------
    Linea di gioco: 1 di 1
    http_open: HTTP / 1.0 400 richiesta non valida
    http://translate.google.com: Nessun file o directory con questo nome

    Ho installato mpg123 e ho fatto piccoli test e niente…. Grazie in anticipo

  18.   Ignacio Cruz Martinez suddetto

    Ciao, questo copione mi è servito molto bene, sia per ascoltare il suono che per registrare le parole del traduttore.

    Infatti, ho modificato il copione per adattarlo a una mia esigenza: trasformare un elenco di parole in testo (lemario) in discorso; salva la mia voce in wav, converti in ogg e nominali in base alla parola letta.

    L'ho fatto in KDE usando Kdialog per specificare il percorso in cui si trova il file con l'elenco delle parole e la directory in cui voglio che l'audio della voce venga salvato.

    Quando la conversione da WAV a OGG è terminata, crea due cartelle in cui vengono memorizzati il ​​wav su un lato e l'ogg sull'altro.

    All'inizio mi ha fatto arrabbiare perché non leggeva correttamente le parole con gli accenti, ma ho scoperto che devi aggiungere "es & ie = UTF8" nel codice. Per un attimo ho dimenticato la codifica dei caratteri.

    Vi lascio il codice dello script che ho realizzato nel caso vi aiuti:

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

    #! / Bin / bash

    ################################
    # Lezione di sintesi vocale #
    # Adattato da Ignacio Cruz Martínez #
    # la posta è segreta xD #
    ################################

    Finestra di dialogo #KDE per specificare il percorso e il nome del lemmario
    soyunarchivo = $ (kdialog –inputbox «Inserisci il percorso e il nome del file (con un'estensione se ne ha una):»)

    Finestra di dialogo #KDE per specificare la cartella di destinazione per i file vocali
    path = $ (kdialog –inputbox «Inserisci il percorso per salvare l'audio vocale:»)

    # attraverso cat vengono lette tutte le righe del file di testo, ogni riga consiste di una singola parola
    for i in $ (cat $ soyunfile)
    do
    echo $ i

    # conversione in parlato utilizzando google translate, non dimenticare la codifica in modo che legga gli accenti
    mpg123 -q -w "$ path" $ 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"

    # utilizzando ffmpeg per convertire i file wav in ogg
    ffmpeg -i "$ percorso" $ i.wav -acodec libvorbis "$ percorso" $ i.ogg
    fatto

    #con queste righe vengono create le cartelle per organizzare i file vocali in WAV o OGG
    mkdir "$ percorso" WAV
    mv "$ percorso" *. wav "$ percorso" WAV

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

    Finestra di dialogo #KDE per indicare che il lavoro è terminato
    kdialog –msgbox "Processo terminato"

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

    Qualcuno di voi conosce la licenza per utilizzare i file vocali generati?

    Limitazione per copyright e cose correlate. Questo mi interessa perché ho intenzione di utilizzare alcuni di questi file vocali per supportare le persone che stanno per diventare alfabetizzate, fondamentalmente è un progetto senza scopo di lucro.

    Ed è che questo strumento ha la migliore intonazione per la lingua spagnola, sfortunatamente in Linux non c'è niente di simile. Mbrola mi ha dato molti problemi a mettermi in piedi insieme a Gespeaker.

    Grazie e arrivederci.

    1.    usiamo linux suddetto

      Non ne ho idea ... dovrei guardare le licenze di Google Translator.

  19.   Armando suddetto

    Lo Script per me non ha funzionato, a quanto pare è un problema legato all'URL, per chi fosse interessato questo è l'URL corretto:
    http://translate.google.com/translate_tts?tl=es&q=Hola

  20.   LOL suddetto

    Ciao! Ho fatto dei test con il tuo script e durante l'esecuzione, mi ha detto che non riusciva a trovare l'audio, quindi ho inserito l'URL e sembra che il signor Google abbia messo un captcha ...

  21.   ' suddetto

    aggiorna lo script