Skrypt: zamiana tekstu na mowę (Google) z terminala

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.
Wskazówka: niektóre emulatory terminali umożliwiają wklejanie tekstu po prostu przeciągając go. Możliwe jest więc zaznaczenie tekstu w przeglądarce Firefox i przeciągnięcie go do terminala.

To wszystko, mam nadzieję, że Ci się spodoba.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Yoyo powiedział

    Super, bardzo dziękuję 😉

    A jaki piękny głos ma ta dziewczyna, chyba się zakochałam 😛

    1.    mroczny powiedział

      Przepraszam, czy możesz mi pomóc z chińskim? Nie mogę wykryć chińskich znaków, tylko pinyin.

  2.   Shadow powiedział

    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

  3.   Yoyo powiedział

    Tutaj zrobiłem film testowy 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    użyjmy Linuksa powiedział

      Dobry! Dziękuję Ci!

  4.   benktroks powiedział

    Brzmi bardzo dobrze, musiałem tylko zainstalować mpg123 🙂

  5.   porter powiedział

    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

  6.   Pablo Honorato . , , , , , , , , , , , , , , ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, , powiedział

    Baza wirusów została zaktualizowana (?)

    1.    jalbrhcp powiedział

      apt update && ./t2.sh pl Baza wirusów została zaktualizowana

  7.   Alexander powiedział

    Hahaha Świetnie, mam już pewne zastosowania, bez wątpienia zmysłowy głos =), dzięki za udostępnienie.

  8.   Jorge Moratilla powiedział

    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

    1.    Rolo powiedział

      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

      1.    Rolo powiedział

        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

  9.   Neysonv powiedział

    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ę.

    1.    Neysonv powiedział

      [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]

    2.    użyjmy Linuksa powiedział

      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ł.

  10.   Anonimo powiedział

    znasz polecenie mów nie? hehe

    espeak -v jest-«cześć»

    1.    użyjmy Linuksa powiedział

      Tak, ale nie to samo. Ten głos jest o wiele lepszy. 🙂

      1.    notatka anonimowa powiedział

        zgadzamy się!
        Pozdrowienia!

  11.   Sara powiedział

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

    1.    Guido powiedział

      Lepszy „mplayer -really-quiet”, więc nie wypełnia wyjścia tekstem

  12.   Jonathan powiedział

    Bardzo dobry pomysł na używanie Google do moich aplikacji pasuje mi jak ulał.
    http://github.com/alfa30/t2v

  13.   mroczny powiedział

    Jeszcze jedno pytanie; Czy ktoś mógłby mi powiedzieć, jak nagrać dźwięk wyjściowy ???

    1.    Jose GDF powiedział

      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.

      1.    mroczny powiedział

        Znakomity José GDF, wypróbowałem twoją metodę z bardzo dobrymi wynikami, pozdrawiam.

      2.    sojmiczno-symimiczny powiedział

        Aby zaoszczędzić ruch w drugim wykonaniu, możesz odtworzyć plik .wav, który wygenerowałeś w pierwszym

      3.    Jose GDF powiedział

        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 😀

  14.   drako powiedział

    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');

    1.    mroczny powiedział

      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.

  15.   Kirian powiedział

    2 aplikacje dla tłumacza języka Google + tłumaczenie tekstu na mowę:
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   José powiedział

    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

  17.   chufla powiedział

    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ę

  18.   Ignacio Cruz Martinez powiedział

    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.

    1.    użyjmy Linuksa powiedział

      Nie mam pojęcia ... musiałbym spojrzeć na licencje Google Translator.

  19.   Armando powiedział

    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

  20.   kupa śmiechu powiedział

    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 ...

  21.   ' powiedział

    zaktualizuj skrypt