Astăzi vă împărtășesc un script foarte util pentru a converti textul în vorbire folosind motorul de vorbire Google. Principalul avantaj al acestui script este că „ocolește” limita de 100 de octeți impusă de Google. De fapt, pentru a fi sincer, respectă această limită, dar trimite toate liniile automat, ceea ce înseamnă că această limitare trece neobservată de utilizator. Cei mai pretențioși vor observa, totuși, că conversia nu este de aceeași calitate cu cea pe care o putem obține în Google Translate, în principal datorită acestei limite și că nu este posibil să treci întregul text dintr-o singură dată. Ca punct pozitiv, ar trebui adăugat că acest script vă permite, de asemenea, să specificați limba textului care urmează să fie convertit.
După ce am clarificat, să vedem care sunt pașii de urmat.
paşi
1. - Creați un fișier cu numele t2s.sh.
2. - Copiați următorul conținut:
#! / bin / bash ################################# # Script de vorbire de Dan Fountain # # Modificat de UsemosLinux # # TalkToDanF@gmail.com # ################################### INPUT = $ * STRINGNUM = 0 ary = ($ {INPUT: 2}) echo "---------------------------" echo "Speech Script de Dan Fountain" echo "TalkToDanF @ gmail.com "ecou" --------------------------- "pentru cheia din" $ {! ary [@]} "faceți SHORTTMP [ $ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}" LENGTH = $ (ecou $ {# SHORTTMP [$ STRINGNUM]}) #echo "cuvânt: $ cheie, $ {ary [$ cheie]} "#echo" adăugând la: $ STRINGNUM "dacă [[" $ LENGTH "-lt" 100 "]]; apoi #echo începe linia nouă SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} altceva STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}" SHORT [ $ STRINGNUM] = "$ {ary [$ key]}" a fost finalizat pentru cheia din linia "$ {! SHORT [@]}" do #echo ": $ cheia este: $ {SHORT [$ key]}" ecou " Linie de joc: $ (($ key + 1)) of $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? ie = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "gata
3. - Acordați permisiuni de executare pentru script:
sudo chmod + x t2s.sh
4. - Executați trecerea scriptului ca parametri: a) codul limbii corespunzătoare textului, b) textul care urmează să fie convertit. De exemplu:
./t2s.sh ro Acesta este un text foarte interesant de convertit.
Gata, sper să vă placă.
Ce mișto, mulțumesc mult 😉
Și ce voce frumoasă are fata, cred că m-am îndrăgostit 😛
Scuzați-mă, mă puteți ajuta cu chineza? Nu detectează caractere chinezești, ci doar pinyin.
Acest lucru este bun ca pentru un script care verifică poșta sau pentru o alarmă personalizată care, la trezire, vă spune prognoza și mesajele în așteptare xD
Aici am făcut un videoclip de test 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0
Bun! Mulțumesc!
Sună foarte bine, a trebuit să instalez doar mpg123 🙂
A trebuit să instalez mpg123, dar a fost grozav, deci dacă nu acceptă unele cuvinte, scrie o literă corectă etc.
EH EH
Baza de date a virusului a fost actualizată (?)
apt update && ./t2.sh ro Baza de date a virusului a fost actualizată
Hahaha Excelent, am deja câteva utilizări pentru ea, voce senzuală fără îndoială =), mulțumesc pentru partajare.
În calitate de utilizator Mac OSX, nu mi-a fost posibil să folosesc Scriptul deoarece nu am mpg123 activat, deci modificând Scriptul și folosind VLC îl putem lăsa să funcționeze corect pe Mac OS X.
http://pastebin.com/C2Mkp1Qy
problema este că vlc rămâne sigur și nu se închide când se termină executarea și puteți utiliza cvlc pentru a împiedica deschiderea interfeței grafice
s-ar putea pune
cvlc –play-and-exit «https://translate.google.com/translate_tts?tl=$[$key]}»
astfel încât să se închidă la sfârșitul reproducerii
Bună băieți, am această eroare, să vedem dacă cineva îmi spune care este problema
Linia de joc: 1 din 1
Solicitarea HTTP a eșuat: 404 Nu a fost găsit
Eroare [mpg123.c: 610]: acces la resursa http http://translate.google.com/translate_tts?tl=hola&q= eșuatul.
[cod] Linia de joc: 1 din 1
Solicitarea HTTP a eșuat: 404 Nu a fost găsit
Eroare [mpg123.c: 610]: acces la resursa http http://translate.google.com/translate_tts?tl=hola&q= eșuatul. [/ cod]
Problema este că utilizați scriptul greșit.
Când îl rulați, trebuie să treceți limba textului ca prim parametru, așa cum se arată în exemplul din postare.
Vă dau un alt exemplu:
./t2s.sh în Acesta este un exemplu simplu.
Observați că după ts2.sh urmează „en” (care înseamnă „engleză”, adică engleză). Pentru spaniolă, utilizați „es” și apoi expresia în limba pe care doriți să o convertiți.
Îmbrăţişare! Paul.
știi comanda speak nu? hehe
spune -v este „buna ziua”
Da, dar nu la fel. Această voce este mult mai bună. 🙂
suntem de acord!
Salutări!
Pentru cei care au probleme cu mpg123 -q sau nu le place, puteți trece la 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]}»
Mai bun „mplayer – într-adevăr liniștit”, astfel încât să nu umple rezultatul cu text
O idee grozavă de a folosi google pentru aplicațiile mele mi se potrivește ca o mănușă.
http://github.com/alfa30/t2v
Inca o intrebare; Ar putea cineva să-mi spună cum să înregistrez sunetul de ieșire ???
Vă răspund eu însumi, pentru că tocmai l-am obținut. Folosind mpg123, am modificat linia 38 a scriptului, arătând astfel:
mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}»
Am adăugat -w audio.wav. Aceasta creează un fișier wav cu sunetul expresiei, dar, după cum l-am lăsat, nu este auzit. Dacă doriți și să auziți fraza, va trebui să adăugați o altă linie. Amândoi ați arăta astfel:
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]}"
Cu siguranță s-ar putea face într-un alt mod mai eficient și mai curat, dar cel puțin funcționează pentru mine.
Excelent José GDF, am încercat metoda ta cu rezultate foarte bune, salutări.
Pentru a salva traficul în a doua execuție, puteți reproduce .wav-ul pe care l-ați generat în prima
Ei bine, da, folosind un player pe care l-am instalat. De exemplu, cu VLC Player ar fi:
vlc-audio.wav
Ei bine, cine spune vlc, spune orice alt jucător, inclusiv cei care funcționează prin terminal.
Și pentru a evita suprascrierea fișierului de fiecare dată când este utilizat scriptul, ar trebui utilizată o variabilă pentru nume. Numele pe care utilizatorul l-ar pune (citiți comanda) înainte de a începe ... Dar asta ar fi curling bucla 😀
Am făcut-o în PHP (pentru a crea audio pentru un sistem de telefon Asterisk *)
$ url = 'http://translate.google.com/translate_tts?ie=UTF-8&q={interogare}% 0A & tl = este & prev = input ';
if (count ($ argv) <= 1) {
$ nume = nume de bază ($ argv [0]);
die ($ nume. 'utilizare:'. $ nume. '
}
array_shift ($ argv);
$ interogare = implode ('', $ argv);
$ nume de fișier = str_replace (matrice ('', ',', '.'), '-', $ interogare);
$ filename = str_replace ('-', '-', $ filename);
$ url = str_replace ('{interogare}', rawurlencode ($ interogare), $ url);
$ ch = curl_init ();
curl_setopt ($ ch, CURLOPT_URL, $ url);
curl_setopt ($ ch, CURLOPT_HEADER, 0);
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, adevărat);
$ result = curl_exec ($ ch);
curl_close ($ ch);
$ cale = getcwd (). '/'. $ nume de fișier;
file_put_contents ($ cale. '. mp3', $ rezultat);
@exec ("sox {$ path} .mp3 -b 16 -r 8000 -t wavpcm {$ path} .wav");
@unlink ($ cale. '. mp3');
Ce zici că am reușit deja să înregistrez sunetul de ieșire cu această comandă:
arecord ~ / zhongwen.mp3 & ./t2s.sh zh ni hao; fg
iar la sfârșit ctrl + c pentru a opri înregistrarea.
Nu folosisem niciodată php
Dar când alergați:
php5 text-to-speech.php este Hello
konsola găzduiește acest lucru:
formate SOX FAIL: niciun handler pentru extensia de fișier `mp3 ′
Orice contribuție este foarte apreciată, voi încerca din nou mai târziu.
2 aplicații pentru traducător de limbă Google + traducere text în vorbire:
http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/
Cred că este cel mai bun mod de a converti, vocea nu este la fel de rea ca și celelalte opțiuni pentru Linux> _
Există o modalitate de a-l face să citească un fișier text simplu?
Ar fi foarte util să convertiți cărți întregi în audio
Ei bine, nu funcționează pentru mine, nu știu de ce, asta iese:
xxxxx: ~ / Documents / Linux $ ./t2s.sh este salut
---------
Script de discurs de Dan Fountain
TalkToDanF@gmail.com
---------
Linia de joc: 1 din 1
http_open: HTTP / 1.0 400 Cerere greșită
http://translate.google.com: Nu există un astfel de fișier sau director
Am instalat mpg123 și am făcut mici teste și nimic .... Mulțumesc anticipat
Hei, acest scenariu mi-a servit foarte bine, atât pentru a asculta sunetul, cât și pentru a înregistra cuvintele traducătorului.
De fapt, am modificat scriptul pentru al adapta la o nevoie pe care o am: Transformă o listă de cuvinte din text (lemario) în vorbire; salvați-mi vocea în wav, convertiți-o în ogg și denumiți-le conform cuvântului citit.
Am făcut acest lucru în KDE folosind Kdialog pentru a specifica calea în care se află fișierul cu lista de cuvinte și directorul în care vreau să fie salvat sunetul vocal.
Când se termină conversia de la WAV la OGG, se creează două foldere în care sunt salvate wav-ul pe o parte și ogg-ul pe cealaltă.
La început m-a enervat pentru că nu citea corect cuvintele cu accente, dar am constatat că trebuie să adăugați „es & ie = UTF8” în cod. Pentru o clipă am uitat codificarea caracterelor.
Vă las codul scriptului pe care l-am făcut în caz că vă ajută:
###################################################### ######################
#! / Bin / bash
###################################
# Lectie text-to-speech #
# Adaptat de Ignacio Cruz Martínez #
# mailul este secret xD #
###################################
Caseta de dialog #KDE pentru a specifica calea și numele lemarului
soyunarchivo = $ (kdialog –inputbox «Introduceți calea și numele fișierului (cu o extensie dacă are una):»)
Caseta de dialog #KDE pentru a specifica folderul de destinație pentru fișierele vocale
cale = $ (kdialog –inputbox «Introduceți calea pentru a salva sunetul vocal:»)
# prin cat se citesc toate liniile fișierului text, fiecare linie constând dintr-un singur cuvânt
pentru i în $ (cat $ soyunfile)
do
ecou $ i
# conversia la vorbire folosind Google Translate, nu uitați de codificare, astfel încât să citească accentele
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"
# folosind ffmpeg pentru a converti fișiere wav în ogg
ffmpeg -i "$ path" $ i.wav -acodec libvorbis "$ path" $ i.ogg
făcut
#cu aceste linii, folderele sunt create pentru a organiza fișierele vocale în WAV sau OGG
mkdir "$ path" WAV
mv "$ path" *. wav "$ path" WAV
mkdir "$ path" OGG
mv "$ path" *. ogg "$ path" OGG
Caseta de dialog #KDE pentru a indica finalizarea lucrării
kdialog –msgbox „Proces terminat”
###################################################### ####################
Acum, aveți cineva dintre voi cunoștințe despre licența de utilizare a fișierelor vocale generate?
Limitarea drepturilor de autor și a lucrurilor conexe. Acest lucru mă interesează, deoarece intenționez să folosesc unele dintre aceste fișiere vocale pentru a sprijini oamenii care vor deveni alfabetizați, practic este un proiect non-profit.
Și este că acest instrument are cea mai bună intonație pentru limba spaniolă, din păcate în Linux nu există nimic similar. Mbrola mi-a dat multe probleme să mă înființez împreună cu Gespeaker.
Mulțumesc și ne vedem.
Nici o idee ... ar trebui să se uite la licențele Google Translator.
Scriptul nu a funcționat pentru mine, se pare că este o problemă legată de adresa URL, pentru cei interesați aceasta este adresa URL corectă:
http://translate.google.com/translate_tts?tl=es&q=Hola
Salut! Am făcut teste cu scriptul dvs. și când l-am executat, mi-a spus că nu a putut găsi audio, așa că am introdus adresa URL și se pare că domnul google a pus un captcha ...
actualizați scriptul