Dzisiaj udostępniam wam bardzo przydatny skrypt do konwersji tekstu na mowę za pomocą silnika mowy Google. Główną zaletą tego skryptu jest to, że „omija” 100-bajtowy limit narzucony przez Google. Właściwie, szczerze mówiąc, przestrzega tego limitu, ale wysyła wszystkie wiersze automatycznie, więc to ograniczenie pozostaje niezauważone przez użytkownika. Najbardziej wymagający zauważą jednak, że konwersja nie jest tej samej jakości, co ta, którą możemy uzyskać w Tłumaczu Google, głównie ze względu na ten limit i nie da się przekazać całego tekstu za jednym zamachem. Na plus należy dodać, że skrypt ten umożliwia również określenie języka tekstu do konwersji.
Po wyjaśnieniu zobaczmy, jakie kroki należy wykonać.
Kroki do naśladowania
1.- Utwórz plik o nazwie t2s.sh.
2.- Skopiuj następującą zawartość:
#! / bin / bash ################################ # Speech Script by Dan Fountain # # Zmodyfikowane przez UsemosLinux # # TalkToDanF@gmail.com # ############################### INPUT = $ * STRINGNUM = 0 ary = ( $ {INPUT: 2}) echo "---------------------------" echo "Skrypt przemówienia autorstwa Dana Fountain" echo "TalkToDanF @ gmail .com "echo" --------------------------- "dla klucza w" $ {! ary [@]} "wykonaj SHORTTMP [$ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}" LENGTH = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "słowo: $ klucz, $ {ary [$ klucz ]} "#echo" dodawanie do: $ STRINGNUM "if [[" $ LENGTH "-lt" 100 "]]; następnie #echo rozpoczynanie nowej linii SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} else STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}" SHORT [ $ STRINGNUM] = "$ {ary [$ key]}" fi gotowe dla klucza w linii "$ {! SHORT [@]}" do #echo ": $ key to: $ {SHORT [$ key]}" echo " Linia gry: $ ((klawisz $ + 1)) z $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? ie = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "gotowe
3.- Przyznaj uprawnienia do wykonywania skryptu:
sudo chmod + x t2s.sh
4.- Wykonuje skrypt przekazując jako parametry: a) kod języka odpowiadającego tekstowi, b) tekst do konwersji. Na przykład:
./t2s.sh pl To jest bardzo interesujący tekst do konwersji.
To wszystko, mam nadzieję, że Ci się spodoba.
Super, bardzo dziękuję 😉
A jaki piękny głos ma ta dziewczyna, chyba się zakochałam 😛
Przepraszam, czy możesz mi pomóc z chińskim? Nie mogę wykryć chińskich znaków, tylko pinyin.
Jest to dobre jak w przypadku skryptu sprawdzającego pocztę lub spersonalizowanego alarmu, który po przebudzeniu podaje prognozę i oczekujące wiadomości xD
Tutaj zrobiłem film testowy 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0
Dobry! Dziękuję Ci!
Brzmi bardzo dobrze, musiałem tylko zainstalować mpg123 🙂
Rura do zainstalowania mpg123 ale jest fajnie, że jeśli nie akceptuje niektórych słów, to wypowiada właściwą literę ptaszka itp.
EH EH
Baza wirusów została zaktualizowana (?)
apt update && ./t2.sh pl Baza wirusów została zaktualizowana
Hahaha Świetnie, mam już pewne zastosowania, bez wątpienia zmysłowy głos =), dzięki za udostępnienie.
Jako użytkownik Mac OSX nie mogłem używać Skryptu, ponieważ nie mam włączonego mpg123, więc modyfikując Skrypt i używając VLC, możemy pozostawić go działającego poprawnie na Mac OS X.
http://pastebin.com/C2Mkp1Qy
problem polega na tym, że vlc z pewnością pozostaje włączony i nie zamyka się po zakończeniu wykonywania i można użyć cvlc, aby zapobiec otwarciu interfejsu graficznego
można to umieścić
cvlc –play-and-exit «https://translate.google.com/translate_tts?tl=$ái1-lex.europa.eu&q=$[SHORT[$key]}»
tak, że zamyka się na końcu reprodukcji
Cześć, widzę ten błąd, zobaczmy, czy ktoś mi powie, w czym jest problem
Linia gry: 1 z 1
Żądanie HTTP nie powiodło się: 404 nie znaleziono
Błąd [mpg123.c: 610]: dostęp do zasobu http http://translate.google.com/translate_tts?tl=hola&q= nie powiodło się.
[kod] Linia gry: 1 z 1
Żądanie HTTP nie powiodło się: 404 nie znaleziono
Błąd [mpg123.c: 610]: dostęp do zasobu http http://translate.google.com/translate_tts?tl=hola&q= nie powiodło się. [/ kod]
Problem polega na tym, że używasz skryptu nieprawidłowo.
Po uruchomieniu musisz przekazać język tekstu jako pierwszy parametr, jak pokazano w przykładzie w poście.
Podam inny przykład:
./t2s.sh w To jest prosty przykład.
Zauważ, że po ts2.sh następuje „en” (co oznacza „angielski”, czyli angielski). W przypadku hiszpańskiego użyj „es”, a następnie wyrażenia w języku, który chcesz przekonwertować.
Przytulić! Paweł.
znasz polecenie mów nie? hehe
espeak -v jest-«cześć»
Tak, ale nie to samo. Ten głos jest o wiele lepszy. 🙂
zgadzamy się!
Pozdrowienia!
Dla tych, którzy mają problemy z mpg123 -q lub nie lubią go, możesz przełączyć się na mplayera
mpg123 -q «http://translate.google.com/translate_tts?tl=$[1íritu&q=$[SHORT[$key]}»
mplayer «http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}»
Lepszy „mplayer -really-quiet”, więc nie wypełnia wyjścia tekstem
Bardzo dobry pomysł na używanie Google do moich aplikacji pasuje mi jak ulał.
http://github.com/alfa30/t2v
Jeszcze jedno pytanie; Czy ktoś mógłby mi powiedzieć, jak nagrać dźwięk wyjściowy ???
Odpowiadam ci sam, bo właśnie to dostałem. Używając mpg123, zmodyfikowałem linię 38 skryptu, wyglądającą tak:
mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}»
Dodałem -w audio.wav. Tworzy to plik wav z dźwiękiem frazy, ale tak jak go zostawiłem, nie jest on słyszalny. Jeśli chcesz również usłyszeć frazę, musisz dodać kolejną linię. Oboje wyglądalibyście tak:
mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[SHORT[$key]}» &
mpg123 -q «http://translate.google.com/translate_tts?tl=$[1íritu&q=$[SHORT[$key]}»
Na pewno można to zrobić w inny, bardziej wydajny i czysty sposób, ale przynajmniej mi się to udaje.
Znakomity José GDF, wypróbowałem twoją metodę z bardzo dobrymi wynikami, pozdrawiam.
Aby zaoszczędzić ruch w drugim wykonaniu, możesz odtworzyć plik .wav, który wygenerowałeś w pierwszym
Cóż, tak, używając odtwarzacza, który zainstalowaliśmy. Na przykład w przypadku VLC Playera byłoby to:
vlc-audio.wav
Cóż, kto mówi vlc, mówi każdy inny gracz, w tym te, które działają przez terminal.
Aby uniknąć nadpisywania pliku za każdym razem, gdy używany jest skrypt, w nazwie należy użyć zmiennej. Nazwa, którą użytkownik wprowadziłby (polecenie odczytu) przed rozpoczęciem ... Ale to byłoby zwijanie curl 😀
Zrobiłem to w PHP (aby stworzyć audio dla systemu telefonicznego Asterisk *)
$ url = 'http://translate.google.com/translate_tts?ie=UTF-8&q={query}% 0A & tl = is & prev = input ';
if (count ($ argv) <= 1) {
$ nazwa = basename ($ argv [0]);
die ($ nazwa. 'użycie:'. $ nazwa. '
}
array_shift ($ argv);
$ query = implode ('', $ argv);
$ nazwa_pliku = str_replace (tablica ('', ',', '.'), '-', $ zapytanie);
$ filename = str_replace ('-', '-', $ filename);
$ url = str_replace ('{zapytanie}', rawurlencode ($ zapytanie), $ url);
$ ch = curl_init ();
curl_setopt ($ ch, CURLOPT_URL, $ url);
curl_setopt ($ ch, CURLOPT_HEADER, 0);
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, prawda);
$ wynik = curl_exec ($ ch);
curl_close ($ ch);
$ path = getcwd (). '/'. $ filename;
file_put_contents ($ ścieżka. '. mp3', $ wynik);
@exec ("sox {$ ścieżka} .mp3 -b 16 -r 8000 -t wavpcm {$ ścieżka} .wav");
@unlink ($ path. '. mp3');
Co powiesz na to, że udało mi się już nagrać dźwięk wyjściowy za pomocą tego polecenia:
arecord ~ / zhongwen.mp3 & ./t2s.sh zh ni hao; fg
a na końcu ctrl + c, aby zatrzymać nagrywanie.
Nigdy nie korzystałem z php
Ale podczas biegania:
php5 text-to-speech.php to Hello
konsola obsługuje to:
formaty sox FAIL: brak obsługi dla rozszerzenia pliku `mp3 '
Każdy wkład jest bardzo mile widziany, spróbuję ponownie później.
2 aplikacje dla tłumacza języka Google + tłumaczenie tekstu na mowę:
http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/
Myślę, że to najlepszy sposób na konwersję, głos nie jest tak zły, jak inne opcje dla Linuksa> _
Czy istnieje sposób, aby czytać zwykły plik tekstowy?
Bardzo przydatne byłoby przekonwertowanie całych książek na audio
Cóż, u mnie to nie działa, nie wiem dlaczego, wychodzi:
xxxxx: ~ / Documents / Linux $ ./t2s.sh to witaj
---------
Scenariusz przemówienia autorstwa Dana Fountaina
TalkToDanF@gmail.com
---------
Linia gry: 1 z 1
http_open: Złe żądanie HTTP / 1.0 400
http://translate.google.com: Nie ma takiego pliku lub katalogu
Mam zainstalowany mpg123 i zrobiłem małe testy i nic…. Z góry dziękuję
Witam, ten skrypt bardzo mi służył zarówno do słuchania dźwięku, jak i do nagrywania słów tłumacza.
W rzeczywistości zmodyfikowałem skrypt, aby dostosować go do potrzeb, które mam: Przekształć listę słów w tekście (lemario) na mowę; zapisz mój głos w wav, zamień na ogg i nazwij je zgodnie z odczytanym słowem.
Zrobiłem to w KDE za pomocą Kdialog, aby określić ścieżkę, w której znajduje się plik z listą słów i katalog, w którym chcesz zapisać dźwięk głosowy.
Po zakończeniu konwersji WAV na OGG tworzy dwa foldery, w których przechowywane są pliki wav z jednej strony i ogg z drugiej.
Na początku byłem zły, ponieważ nie przeczytałem poprawnie słów z akcentami, ale stwierdziłem, że w kodzie trzeba dodać „es & ie = UTF8”. Na chwilę zapomniałem o kodowaniu znaków.
Zostawiam Ci kod skryptu, który zrobiłem na wypadek, gdyby Ci to pomogło:
################################################## ######################
#! / bin / bash
##################################
# Wykład z syntezatora mowy #
# Zaadaptowane przez Ignacio Cruz Martínez #
# poczta jest tajna xD #
##################################
Okno dialogowe #KDE do określenia ścieżki i nazwy leminu
soyunarchivo = $ (kdialog –inputbox «Wprowadź ścieżkę i nazwę pliku (z rozszerzeniem, jeśli ma):»)
Okno dialogowe #KDE, aby określić folder docelowy dla plików głosowych
path = $ (kdialog –inputbox «Wprowadź ścieżkę do zapisania dźwięku głosu:»)
# do cat odczytywane są wszystkie linie pliku tekstowego, każda linia składa się z jednego słowa
za ja w $ (cat $ soyunfile)
do
echo $ i
# konwersja na mowę przy użyciu Tłumacza Google, nie zapomnij o kodowaniu, aby odczytać akcenty
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"
# używanie ffmpeg do konwersji plików wav do ogg
ffmpeg -i "$ path" $ i.wav -acodec libvorbis "$ path" $ i.ogg
zrobić
# z tymi wierszami foldery są tworzone w celu organizowania plików głosowych w formacie WAV lub OGG
mkdir "$ path" WAV
mv "$ path" *. wav "$ path" WAV
mkdir "$ path" OGG
mv "$ path" *. ogg "$ path" OGG
Okno dialogowe #KDE wskazujące na zakończenie zadania
kdialog –msgbox 'Proces zakończony'
################################################## ###################
A teraz, czy ktoś z Was ma wiedzę na temat licencji na korzystanie z wygenerowanych plików głosowych?
Ograniczenie praw autorskich i rzeczy pokrewnych. Interesuje mnie to, ponieważ planuję wykorzystać niektóre z tych plików głosowych do wspierania ludzi, którzy mają zamiar nauczyć się czytać, w zasadzie jest to projekt non-profit.
I to jest to, że to narzędzie ma najlepszą intonację dla języka hiszpańskiego, niestety w Linuksie nie ma nic podobnego. Mbrola sprawił mi wiele kłopotów przy konfiguracji razem z Gespeakerem.
Dzięki i do zobaczenia.
Nie mam pojęcia ... musiałbym spojrzeć na licencje Google Translator.
Skrypt u mnie nie zadziałał, podobno jest to problem związany z adresem URL, dla zainteresowanych jest to poprawny URL:
http://translate.google.com/translate_tts?tl=es&q=Hola
Witaj! Robiłem testy z twoim skryptem i podczas jego wykonywania powiedział mi, że nie mógł znaleźć dźwięku, więc wpisałem adres URL i wygląda na to, że pan Google umieścił captcha ...
zaktualizuj skrypt