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.
Dat is het, ik hoop dat je ervan geniet.
Wat cool, heel erg bedankt 😉
En wat een mooie stem heeft het meisje, ik denk dat ik verliefd werd 😛
Pardon, kunt u me helpen met Chinees? Het detecteert geen Chinese karakters, alleen pinyin.
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
Hier heb ik een testvideo gemaakt 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0
Mooi zo! Dank je!
Het klinkt geweldig, ik hoefde alleen mpg123 🙂 te installeren
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
De virusdatabase is bijgewerkt (?)
apt update && ./t2.sh nl De virusdatabase is bijgewerkt
Hahaha Uitstekend, ik heb er al een aantal toepassingen voor, sensuele stem zonder twijfel =), bedankt voor het delen.
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
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
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
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.
[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]
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.
ken je het spreekcommando nee? haha
espeak -v is-the «hallo»
Ja, maar niet hetzelfde. Deze stem is zo veel beter. 🙂
we zijn het eens!
Groeten!
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])
Betere "mplayer - echt stil" zodat het de uitvoer niet met tekst vult
Een goed idee om google te gebruiken voor mijn toepassingen bevalt mij op het lijf geschreven.
http://github.com/alfa30/t2v
Nog een vraag; Kan iemand me vertellen hoe ik de audio-uitvoer moet opnemen ???
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.
Uitstekende José GDF, ik heb je methode geprobeerd met zeer goede resultaten, groeten.
Om verkeer in de tweede uitvoering te besparen, zou u de .wav kunnen reproduceren die u in de eerste hebt gegenereerd
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 😀
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');
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.
2 apps voor google taalvertaler + vertaling van tekst naar spraak:
http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/
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
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
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.
Geen idee ... zou naar de Google Translator-licenties moeten kijken.
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
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 ...
update het script