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.
Això és tot, espero que ho gaudeixin.
Com mola, moltes gràcies 😉
I que bonica veu té la noia, crec que em vaig enamorar 😛
Disculpa em pots ajudar per al xinès ?, no em detecta els caràcters xinesos, sota el pinyin.
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
Aquí vaig fer un vídeo de prova 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0
Bé! Gràcies!
S'escolta molt bé, només vaig haver de instal·lar mpg123 🙂
Tube d'instal·lar mpg123 però mola mogollón, això si no accepta algunes paraules dicce a titlli dret lletra etc.
EHEH
La base de dades de virus ha estat actualitzada (?)
apt update && ./t2.sh és La base de dades de virus ha estat actualitzada
Jajaja Excel·lent, ja li tinc alguns usos, veu sensual sens dubte =), gràcies per compartir.
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
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
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ó
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.
[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]
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.
coneixes la comanda speak no? jeje
espeak -v és-la «hola»
Sí, però no és el mateix. Aquesta veu és molt millor. 🙂
estem d'acord!
Salutacions!
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]}»
Millor «mplayer -really-quiet» perquè no ompli la sortida amb text
Muí bona idea utilitzar a google per les meves aplicacions em queda com anell a el dit.
http://github.com/alfa30/t2v
Una pregunta més; algú podria dir-me com gravar l'àudio de sortida ???
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.
Excel·lent José GDF, vaig provar el teu mètode amb molt bon resultat, salutacions.
Per estalviar trànsit a la segona execució podries reproduir el .wav que has generat en la primera
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 😀
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');
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.
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/
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
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
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.
Ni idea ... caldria veure en les llicències de Google Translator.
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
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 ...
actualitzin l'script