Сценарій: текст у мову (Google) з терміналу

Сьогодні я ділюсь з вами дуже корисним сценарієм для перетворення тексту в мову за допомогою мовного механізму Google. Головна перевага цього сценарію полягає в тому, що він "обходить" обмеження в 100 байт, встановлене Google. Насправді, чесно кажучи, він дотримується цього обмеження, але відправляє всі рядки автоматично, а це означає, що це обмеження залишається непоміченим користувачем. Проте найвимогливіші помітять, що перетворення не такої якості, як та, яку ми можемо отримати в Google Translate, головним чином завдяки цьому обмеженню, і що неможливо передати весь текст за один раз. Як позитивний момент слід додати, що цей сценарій також дозволяє вказати мову тексту, що перетворюється.

З’ясувавши, давайте подивимось, які кроки слід виконувати.

заходи

1. - Створіть файл із іменем t2s.sh.

2. - Скопіюйте такий вміст:

#! / bin / bash ################################## # Сценарій мови від Dan Fountain # # Змінено UsemosLinux # # TalkToDanF@gmail.com # ################################## INPUT = $ * STRINGNUM = 0 ary = ($ {INPUT: 2}) echo "---------------------------" echo "Сценарій мови Дена Фонтана" echo "TalkToDanF @ gmail.com "echo" --------------------------- "для ключа в" $ {! ary [@]} "do SHORTTMP [ $ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}" LENGTH = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "слово: $ key, $ {ary [$ ключ]} "#echo" додається до: $ STRINGNUM ", якщо [[" $ LENGTH "-lt" 100 "]]; потім #echo починає новий рядок SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} ще STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}" SHORT [ $ STRINGNUM] = "$ {ary [$ key]}" fi виконано для ключа в рядку "$ {! SHORT [@]}" do #echo ": $ key: $ {SHORT [$ key]}" echo " Гра, що грає: $ (($ key + 1)) з $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? тобто = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "готово

3. - Надайте дозволи на виконання сценарію:

sudo chmod + x t2s.sh

4. - Виконайте сценарій, що передається як параметри: а) код мови, що відповідає тексту, б) текст, який потрібно перетворити. Наприклад:

uk/t2s.sh uk Це дуже цікавий текст для перетворення.
Порада. Деякі емулятори терміналів дозволяють вставляти текст, просто перетягуючи його. Тож можна вибрати текст у Firefox і перетягнути його до терміналу.

Ось і все, сподіваюся, вам сподобається.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   йойо - сказав він

    Як круто, велике спасибі 😉

    І який гарний голос у дівчини, я думаю, я закохався 😛

    1.    темний гуз - сказав він

      Вибачте, чи можете ви мені допомогти з китайською? Він не виявляє китайських ієрогліфів, лише піньїнь.

  2.   тінь - сказав він

    Це добре, як для скрипта, який перевіряє пошту, чи для персонального будильника, який під час пробудження повідомляє вам прогноз та очікувані повідомлення xD

  3.   йойо - сказав він

    Тут я зробив тестове відео 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    давайте використовувати linux - сказав він

      Добре! Дякую!

  4.   бенктотрокс - сказав він

    Це звучить дуже добре, мені довелося лише встановити mpg123 🙂

  5.   Портаро - сказав він

    Трубка для встановлення mpg123, але це круто, якщо вона не приймає деяких слів, вона пише правильну тильду і т.д.

    EH EH

  6.   Пабло Онорато - сказав він

    База даних вірусів оновлена ​​(?)

    1.    jalbrhcp - сказав він

      apt update && ./t2.sh uk База вірусів оновлена

  7.   Олександр - сказав він

    Ха-ха-ха, чудово, я вже використовую це, чуттєвий голос, без сумніву =), дякую за поділ.

  8.   Хорхе Моратілла - сказав він

    Як користувач Mac OSX, мені не вдалося використовувати скрипт, оскільки у мене немає mpg123, тому, модифікуючи сценарій та використовуючи VLC, ми можемо залишити його працювати коректно в Mac OS X.

    http://pastebin.com/C2Mkp1Qy

    1.    роло - сказав він

      проблема полягає в тому, що vlc, безумовно, залишається увімкненим і не закривається, коли закінчує виконуватися, і ви можете використовувати cvlc, щоб запобігти відкриттю графічного інтерфейсу

      1.    роло - сказав він

        це можна було б поставити
        cvlc – відтворити і вийти «https://translate.google.com/translate_tts?tl=$[$key]}»
        так, щоб він закривався в кінці розмноження

  9.   нейсонв - сказав він

    Привіт, хлопці, я отримую цю помилку, давайте подивимось, чи хтось скаже мені, в чому проблема
    Ігрова лінія: 1 з 1
    Помилка запиту HTTP: 404 не знайдено
    [mpg123.c: 610] помилка: доступ до ресурсу http http://translate.google.com/translate_tts?tl=hola&q= невдалий.

    1.    нейсонв - сказав він

      [код] Ігровий рядок: 1 з 1
      Помилка запиту HTTP: 404 не знайдено
      [mpg123.c: 610] помилка: доступ до ресурсу http http://translate.google.com/translate_tts?tl=hola&q= невдалий. [/ код]

    2.    давайте використовувати linux - сказав він

      Проблема в тому, що ви неправильно використовуєте сценарій.
      Коли ви запускаєте його, вам потрібно передати мову тексту як перший параметр, як показано в прикладі в дописі.
      Я наводжу вам ще один приклад:
      ./t2s.sh в Це простий приклад.
      Зверніть увагу, що після ts2.sh слід "en" (що означає "англійська", тобто англійська). Для іспанської мови використовуйте "es", а потім фразу на тій мові, яку ви хочете конвертувати.
      Обійми! Павло.

  10.   Anonimo - сказав він

    ви знаєте команду говорити ні? хе-хе

    espeak -v is-the «привіт»

    1.    давайте використовувати linux - сказав він

      Так, але не те саме. Цей голос набагато кращий. 🙂

      1.    нотанімно - сказав він

        ми погоджуємось!
        Привіт!

  11.   Сара - сказав він

    Для тих, хто має проблеми з mpg123 -q або не подобається, ви можете перейти на mplayer

    mpg123 -q «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[КОРОТКА[$key]}»

    mplayer «http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}»

    1.    Guido - сказав він

      Краще "mplayer – дійсно тихо", щоб він не заповнював вихідні дані текстом

  12.   Джонатан - сказав він

    Чудова ідея використовувати google для моїх програм мені підходить як рукавичка.
    http://github.com/alfa30/t2v

  13.   темний гуз - сказав він

    Ще одне питання; Хтось може сказати мені, як записати вихідний звук ???

    1.    Хосе GDF - сказав він

      Я сам вам відповідаю, бо я щойно зрозумів. Використовуючи mpg123, я змінив рядок 38 сценарію, виглядаючи так:

      mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[КОРОТКА[$key]}»

      Я додав -w audio.wav. Це створює файл wav зі звуком фрази, але, оскільки я залишив його, його не чути. Якщо ви також хочете почути фразу, вам доведеться додати ще один рядок. Ви обидва виглядали б так:

      mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[КОРОТКА[$key]}» &
      mpg123 -q «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[КОРОТКА[$key]}»

      Звичайно, це можна зробити іншим більш ефективним та чистим способом, але принаймні це працює для мене.

      1.    темний гуз - сказав він

        Відмінник Хосе GDF, я спробував ваш метод з дуже хорошими результатами, вітаю.

      2.    соймічний - сказав він

        Щоб заощадити трафік під час другого виконання, ви можете відтворити файл .wav, який ви створили в першому

      3.    Хосе GDF - сказав він

        Ну так, використовуючи програвач, який ми встановили. Наприклад, з VLC Player це буде:

        vlc-audio.wav

        Ну, а хто каже vlc, говорить будь-який інший гравець, включаючи тих, що працюють через термінал.

        А щоб уникнути перезапису файлу кожного разу, коли використовується сценарій, для імені слід використовувати змінну. Ім'я, яке користувач повинен поставити (прочитати команду) перед початком ... Але це було б завивати локон 😀

  14.   Драрко - сказав він

    Я зробив це в PHP (для створення аудіо для телефонної системи Asterisk *)

    <?php
    $ url = 'http://translate.google.com/translate_tts?ie=UTF-8&q={запит}% 0A & tl = is & prev = input ';

    if (count ($ argv) <= 1) {
    $ name = basename ($ argv [0]);
    die ($ name. 'use:'. $ name. '
    }
    array_shift ($ argv);
    $ query = implode ('', $ argv);
    $ filename = str_replace (array ('', ',', '.'), '-', $ query);
    $ filename = str_replace ('-', '-', $ filename);

    $ url = str_replace ('{запит}', rawurlencode ($ запит), $ url);
    $ Ch = curl_init ();
    curl_setopt ($ ch, CURLOPT_URL, $ url);
    curl_setopt ($ ch, CURLOPT_HEADER, 0);
    curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, істина);
    $ результат = 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');

    1.    темний гуз - сказав він

      Як щодо того, що я вже встиг записати вихідний звук за допомогою цієї команди:
      arecord ~ ​​/ zhongwen.mp3 & ./t2s.sh zh ni hao; fg
      і в кінці ctrl + c, щоб зупинити запис.

      Я ніколи не використовував php
      Але при запуску:
      php5 text-to-speech.php - це Привіт
      консола приймає це:
      Формати sox FAIL: немає обробника для розширення файлу `mp3 ′

      Будь-який внесок дуже вдячний, я спробую ще раз пізніше.

  15.   кіріан - сказав він

    2 програми для перекладу мови Google + переклад тексту в мову:
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   Хосе - сказав він

    Я думаю, що це найкращий спосіб конвертувати, голос не такий поганий, як інші варіанти для Linux> _
    Чи є спосіб змусити його прочитати звичайний текстовий файл?
    Було б дуже корисно конвертувати цілі книги в аудіо

  17.   чуфлас - сказав він

    Ну, це у мене не працює, я не знаю чому, це виходить:

    xxxxx: ~ / Documents / Linux $ ./t2s.sh - привіт

    ---------
    Сценарій мови Дена Фонтана
    TalkToDanF@gmail.com
    ---------
    Ігрова лінія: 1 з 1
    http_open: Помилковий запит HTTP / 1.0 400
    http://translate.google.com: Немає такого файлу або каталогу

    У мене встановлений mpg123, я провів невеликі тести і нічого ... Спасибі заздалегідь

  18.   Ігнасіо Крус Мартінес - сказав він

    Гей, цей сценарій мені дуже добре послужив, і для прослуховування звуку, і для запису слів перекладача.

    Насправді, я модифікував сценарій, щоб адаптувати його до потреби, яка у мене є: Перетворити список слів у тексті (lemario) на мову; зберегти мій голос у wav, перетворити на ogg і назвати їх відповідно до прочитаного слова.

    Я зробив це в KDE, використовуючи Kdialog, щоб вказати шлях, де знаходиться файл зі списком слів, і каталог, в якому я хочу зберегти голосовий звук.

    Коли перетворення WAV в OGG завершено, для мене створюються дві папки, де зберігаються wav з одного боку та ogg з іншого.

    Спочатку це мене розлютило, бо він неправильно читав слова з наголосами, але я виявив, що в код потрібно додати "es & ie = UTF8". На якусь мить я забув кодування символів.

    Я залишаю код сценарію, який я створив на випадок, якщо він працює:

    #################################################### ######################

    #! / бін / баш

    ###################################
    # Лекція з перекладом тексту #
    # Адаптовано Ігнасіо Крус Мартінесом #
    # пошта секретна xD #
    ###################################

    Діалогове вікно #KDE, ​​щоб вказати шлях та назву леммари
    soyunarchivo = $ (kdialog –inputbox «Введіть шлях та ім'я файлу (з розширенням, якщо воно є):»)

    Діалогове вікно #KDE, ​​щоб вказати цільову папку для голосових файлів
    path = $ (kdialog –inputbox «Введіть шлях для збереження голосового звуку:»)

    # через cat читаються всі рядки текстового файлу, кожен рядок складається з одного слова
    для я в $ (cat $ soyunfile)
    do
    echo $ i

    # перетворюючи в мову за допомогою google translate, не забувайте про кодування, щоб воно читало акценти
    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 для перетворення wav-файлів у ogg
    ffmpeg -i "$ path" $ i.wav -acodec libvorbis "$ path" $ i.ogg
    зроблений

    #з цими рядками папки створюються для організації голосових файлів у форматі WAV або OGG
    mkdir "$ шлях" WAV
    mv "$ path" *. wav "$ path" WAV

    mkdir "$ path" OGG
    mv "$ path" *. ogg "$ path" OGG

    Діалогове вікно #KDE вказує на те, що завдання закінчено
    kdialog –msgbox 'Процес завершено'

    #################################################### ####################

    Тепер, чи має хтось із вас знання про ліцензію на використання сформованих голосових файлів?

    Обмеження щодо авторських прав та пов’язаних речей. Це мене цікавить, тому що я планую використовувати деякі з цих голосових файлів для підтримки людей, які збираються стати грамотними, в основному це некомерційний проект.

    І це те, що цей інструмент має найкращу інтонацію для іспанської мови, на жаль, в Linux немає нічого подібного. Мброла завдав мені чимало клопоту влаштуватися разом із Геспекером.

    Спасибі і до зустрічі.

    1.    давайте використовувати linux - сказав він

      Не уявляю ... доведеться дивитись на ліцензії Google Translator.

  19.   Armando - сказав він

    У мене сценарій не працював, мабуть, це проблема, пов’язана з URL-адресою, для тих, хто зацікавлений, це правильна URL-адреса:
    http://translate.google.com/translate_tts?tl=es&q=Hola

  20.   жуахо - сказав він

    Привіт! Я проводив тести з вашим сценарієм, і, виконуючи його, він сказав мені, що не може знайти аудіо, тому я ввів URL-адресу, і, схоже, містер Google поставив капчу ...

  21.   ' - сказав він

    оновити сценарій