Script: tekst naar spraak (Google) vanaf de terminal

Vandaag deel ik met jullie een heel handig script om tekst naar spraak te converteren met de spraak-engine van Google. Het belangrijkste voordeel van dit script is dat het de door Google opgelegde limiet van 100 bytes "omzeilt". Eigenlijk respecteert het, om eerlijk te zijn, deze limiet maar verzendt alle lijnen automatisch, wat betekent dat deze beperking onopgemerkt blijft door de gebruiker. De meest veeleisende gebruikers zullen echter merken dat de conversie niet van dezelfde kwaliteit is als die we kunnen verkrijgen in Google Translate, voornamelijk vanwege deze limiet en dat het niet mogelijk is om de volledige tekst in één keer door te geven. Als positief punt moet worden toegevoegd dat u met dit script ook de taal kunt specificeren van de tekst die moet worden geconverteerd.

Laten we na verduidelijking kijken wat de te volgen stappen zijn.

stappen

1.- Maak een bestand met de naam t2s.sh.

2.- Kopieer de volgende inhoud:

#! / bin / bash ################################ # Spraakscript door Dan Fountain # # Gewijzigd door UsemosLinux # # TalkToDanF@gmail.com # ################################ INPUT = $ * STRINGNUM = 0 ary = ($ {INPUT: 2}) echo "---------------------------" echo "Spraakscript door Dan Fountain" echo "TalkToDanF @ gmail.com "echo" --------------------------- "voor sleutel in" $ {! ary [@]} "do SHORTTMP [ $ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}" LENGTH = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "woord: $ key, $ {ary [$ key]} "#echo" toevoegen aan: $ STRINGNUM "if [[" $ LENGTH "-lt" 100 "]]; dan #echo die nieuwe regel begint SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} anders STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}" SHORT [ $ STRINGNUM] = "$ {ary [$ key]}" fi klaar voor toets in "$ {! SHORT [@]}" do #echo "regel: $ key is: $ {SHORT [$ key]}" echo " Speellijn: $ (($ key + 1)) van $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? ie = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "klaar

3.- Verleen uitvoeringsrechten voor het script:

sudo chmod + x t2s.sh

4.- Voer het script uit dat doorgeeft als parameters: a) de code van de taal die overeenkomt met de tekst, b) de tekst die moet worden geconverteerd. Bijvoorbeeld:

./t2s.sh nl Dit is erg interessante tekst om te converteren.
Tip: bij sommige terminalemulators kunt u tekst plakken door deze te slepen. Het is dus mogelijk om in Firefox een tekst te selecteren en deze naar de terminal te slepen.

Dat is het, ik hoop dat je ervan geniet.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Yoyo zei

    Wat cool, heel erg bedankt 😉

    En wat een mooie stem heeft het meisje, ik denk dat ik verliefd werd 😛

    1.    donkergauw zei

      Pardon, kunt u me helpen met Chinees? Het detecteert geen Chinese karakters, alleen pinyin.

  2.   Shadow zei

    Dit is goed voor een script dat de e-mail controleert of voor een persoonlijk alarm dat u bij het wakker worden de prognose en in afwachting van berichten vertelt xD

  3.   Yoyo zei

    Hier heb ik een testvideo gemaakt 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    laten we linux gebruiken zei

      Mooi zo! Dank je!

  4.   bentrox zei

    Het klinkt geweldig, ik hoefde alleen mpg123 🙂 te installeren

  5.   portier zei

    Tube om mpg123 te installeren, maar het is gaaf, dat als het sommige woorden niet accepteert, het een juiste tilde-letter etc. zegt.

    EH EH

  6.   paul honorato zei

    De virusdatabase is bijgewerkt (?)

    1.    jalbrhcp zei

      apt update && ./t2.sh nl De virusdatabase is bijgewerkt

  7.   Alexander zei

    Hahaha Uitstekend, ik heb er al een aantal toepassingen voor, sensuele stem zonder twijfel =), bedankt voor het delen.

  8.   Jorge Moratilla zei

    Als Mac OSX-gebruiker was het voor mij niet mogelijk om het Script te gebruiken omdat ik geen mpg123 heb, dus door het Script aan te passen en VLC te gebruiken, kunnen we het correct laten werken in Mac OS X.

    http://pastebin.com/C2Mkp1Qy

    1.    Rolo zei

      het probleem is dat vlc zeker aan blijft en niet sluit wanneer het klaar is met uitvoeren en je zou cvlc kunnen gebruiken om te voorkomen dat de grafische interface wordt geopend

      1.    Rolo zei

        het zou kunnen worden gezegd
        cvlc –play-and-exit «https://translate.google.com/translate_tts?tl=$[$key]}»
        zodat het sluit aan het einde van de reproductie

  9.   neysonv zei

    Hallo allemaal, ik krijg deze foutmelding, laten we eens kijken of iemand me vertelt wat het probleem is
    Speellijn: 1 van 1
    HTTP-verzoek mislukt: 404 niet gevonden
    [mpg123.c: 610] fout: toegang tot http-bron http://translate.google.com/translate_tts?tl=hola&q= het is mislukt.

    1.    neysonv zei

      [code] Speellijn: 1 van 1
      HTTP-verzoek mislukt: 404 niet gevonden
      [mpg123.c: 610] fout: toegang tot http-bron http://translate.google.com/translate_tts?tl=hola&q= het is mislukt. [/ code]

    2.    laten we linux gebruiken zei

      Het probleem is dat u het script verkeerd gebruikt.
      Als je het uitvoert, moet je de taal van de tekst doorgeven als de eerste parameter, zoals getoond in het voorbeeld in het bericht.
      Ik geef je nog een voorbeeld:
      ./t2s.sh in Dit is een eenvoudig voorbeeld.
      Merk op dat na ts2.sh het volgt op "en" (wat "engels" betekent, dat wil zeggen, Engels). Gebruik voor Spaans "es" en vervolgens de zin in de taal die u wilt converteren.
      Knuffel! Paul.

  10.   anoniem zei

    ken je het spreekcommando nee? haha

    espeak -v is-the «hallo»

    1.    laten we linux gebruiken zei

      Ja, maar niet hetzelfde. Deze stem is zo veel beter. 🙂

      1.    niet-anoniem zei

        we zijn het eens!
        Groeten!

  11.   Sara zei

    Voor degenen die problemen hebben met mpg123 -q of het niet leuk vinden, kun je overschakelen naar 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 zei

      Betere "mplayer - echt stil" zodat het de uitvoer niet met tekst vult

  12.   Jonathan zei

    Een goed idee om google te gebruiken voor mijn toepassingen bevalt mij op het lijf geschreven.
    http://github.com/alfa30/t2v

  13.   donkergauw zei

    Nog een vraag; Kan iemand me vertellen hoe ik de audio-uitvoer moet opnemen ???

    1.    Jose GDF zei

      Ik antwoord je zelf, want ik heb het net. Met mpg123 heb ik regel 38 van het script aangepast en er als volgt uit gezien:

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

      Ik heb -w audio.wav toegevoegd. Dit creëert een wav-bestand met de audio van de frase, maar zoals ik het heb achtergelaten, is het niet te horen. Als u de zin ook wilt horen, moet u nog een regel toevoegen. Jullie zouden er allebei zo uitzien:

      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]}»

      Het zou zeker op een andere, efficiëntere en schonere manier kunnen worden gedaan, maar het werkt tenminste voor mij.

      1.    donkergauw zei

        Uitstekende José GDF, ik heb je methode geprobeerd met zeer goede resultaten, groeten.

      2.    sojamisch zei

        Om verkeer in de tweede uitvoering te besparen, zou u de .wav kunnen reproduceren die u in de eerste hebt gegenereerd

      3.    Jose GDF zei

        Nou ja, met behulp van een speler die we hebben geïnstalleerd. Met VLC Player zou het bijvoorbeeld zijn:

        vlc-audio.wav

        Nou, wie vlc zegt, zegt elke andere speler, ook degenen die via terminal werken.

        En om te voorkomen dat het bestand elke keer dat het script wordt gebruikt, wordt overschreven, moet een variabele voor de naam worden gebruikt. Naam die de gebruiker zou plaatsen (leesopdracht) voordat hij begon ... Maar dat zou de krul krullen 😀

  14.   drako zei

    Ik deed het in PHP (om audio te maken voor een Asterisk-telefoonsysteem *)


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

    if (count ($ argv) <= 1) {
    $ name = basisnaam ($ argv [0]);
    die ($ naam. 'gebruik:'. $ naam. '
    }
    array_shift ($ argv);
    $ query = implode ('', $ argv);
    $ filename = str_replace (array ('', ',', '.'), '-', $ query);
    $ filename = str_replace ('-', '-', $ bestandsnaam);

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

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

    1.    donkergauw zei

      Hoe zit het met, ik ben er al in geslaagd om de uitvoeraudio op te nemen met deze opdracht:
      arecord ~ ​​/ zhongwen.mp3 & ./t2s.sh zh ni hao; fg
      en aan het einde ctrl + c om de opname te stoppen.

      Ik had nog nooit php gebruikt
      Maar tijdens het hardlopen:
      php5 text-to-speech.php is Hallo
      de konsola host dit:
      sox FAIL formaten: geen handler voor bestandsextensie `mp3 ′

      Elke bijdrage wordt zeer gewaardeerd, ik zal het later proberen.

  15.   Kirian zei

    2 apps voor google taalvertaler + vertaling van tekst naar spraak:
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   Jose zei

    Ik denk dat dit de beste manier is om te converteren, de stem is niet zo slecht als de andere opties voor Linux> _
    Is er een manier om het een gewoon tekstbestand te laten lezen?
    Het zou erg handig zijn om hele boeken naar audio te converteren

  17.   chufla's zei

    Nou, het werkt niet voor mij, ik weet niet waarom, dit komt uit:

    xxxxx: ~ / Documents / Linux $ ./t2s.sh is hallo

    ---------
    Toespraakscript door Dan Fountain
    TalkToDanF@gmail.com
    ---------
    Speellijn: 1 van 1
    http_open: HTTP / 1.0 400 ongeldig verzoek
    http://translate.google.com: Onbekend bestand of map

    Ik heb de mpg123 geïnstalleerd en ik heb kleine tests gedaan en niets…. Bij voorbaat bedankt

  18.   Ignacio Cruz Martinez zei

    Hé, dit script heeft me heel goed gediend, zowel om naar het geluid te luisteren als om de woorden van de vertaler op te nemen.

    In feite heb ik het script aangepast om het aan te passen aan een behoefte die ik heb: Transformeer een lijst met woorden in tekst (lemario) naar spraak; sla mijn stem op in wav, converteer naar ogg en noem ze volgens het gelezen woord.

    Ik deed dit in KDE met Kdialog om het pad te specificeren waar het bestand met de woordenlijst is en de map waar ik wil dat de spraakaudio wordt opgeslagen.

    Wanneer de conversie van WAV naar OGG is voltooid, worden er twee mappen gemaakt waarin de wav aan de ene kant en de ogg aan de andere worden opgeslagen.

    In het begin maakte het me boos omdat het de woorden met accenten niet correct las, maar ik vond dat je "es & ie = UTF8" in de code moest toevoegen. Even vergat ik de karaktercodering.

    Ik laat de code achter van het script dat ik heb gemaakt voor het geval het werkt:

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

    #! / Bin / bash

    ##################################
    # Tekst-naar-spraak lezing #
    # Aangepast door Ignacio Cruz Martínez #
    # de mail is geheim xD #
    ##################################

    #KDE dialoogvenster om het pad en de naam van de lemma te specificeren
    soyunarchivo = $ (kdialog –inputbox «Voer het pad en de naam van het bestand in (met een extensie als deze er een heeft):»)

    #KDE dialoogvenster om de bestemmingsmap voor spraakbestanden op te geven
    path = $ (kdialog –inputbox «Voer het pad in om de spraakaudio op te slaan:»)

    # tot en met cat worden alle regels van het tekstbestand gelezen, elke regel bestaat uit een enkel woord
    voor i in $ (cat $ soyunfile)
    do
    echo $ i

    # converteren naar spraak met behulp van google translate, vergeet codering niet zodat het accenten leest
    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"

    # ffmpeg gebruiken om wav-bestanden naar ogg te converteren
    ffmpeg -i "$ path" $ i.wav -acodec libvorbis "$ path" $ i.ogg
    gedaan

    Met deze regels worden de mappen gemaakt om de spraakbestanden in WAV of OGG te ordenen
    mkdir "$ path" WAV
    mv "$ path" *. wav "$ path" WAV

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

    #KDE dialoogvenster om aan te geven dat de taak is voltooid
    kdialog –msgbox 'Proces beëindigd'

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

    Heeft iemand van u nu kennis van de licentie om de gegenereerde spraakbestanden te gebruiken?

    Beperking voor auteursrechten en aanverwante zaken. Dit interesseert me omdat ik van plan ben om een ​​aantal van deze spraakbestanden te gebruiken om mensen te ondersteunen die kunnen leren lezen, in feite is het een non-profitproject.

    En het is dat deze tool de beste intonatie heeft voor de Spaanse taal, helaas is er in Linux niets vergelijkbaars. Mbrola heeft me veel moeite gegeven om samen met Gespeaker op te zetten.

    Bedankt en tot ziens.

    1.    laten we linux gebruiken zei

      Geen idee ... zou naar de Google Translator-licenties moeten kijken.

  19.   Armando zei

    Het script werkte niet voor mij, blijkbaar is het een probleem gerelateerd aan de URL, voor geïnteresseerden is dit de juiste URL:
    http://translate.google.com/translate_tts?tl=es&q=Hola

  20.   lol zei

    Hallo! Ik heb tests gedaan met je script en toen ik het uitvoerde, vertelde het me dat het de audio niet kon vinden, dus ik heb de URL ingevoerd en het lijkt erop dat meneer Google een captcha heeft geplaatst ...

  21.   ' zei

    update het script