Скрипт: преобразование текста в речь (Google) с терминала

Сегодня я делюсь с вами очень полезным скриптом для преобразования текста в речь с помощью движка Google Speech. Основное преимущество этого сценария заключается в том, что он «обходит» ограничение в 100 байт, установленное Google. На самом деле, если честно, он соблюдает это ограничение, но отправляет все строки автоматически, а это означает, что это ограничение остается незамеченным пользователем. Однако самые требовательные заметят, что качество преобразования не такое, как у Google Translate, в основном из-за этого ограничения и невозможности передать весь текст одним махом. В качестве положительного момента следует добавить, что этот сценарий также позволяет указать язык текста, который нужно преобразовать.

Уточнив, давайте посмотрим, какие шаги нужно предпринять.

меры

1.- Создайте файл с именем t2s.sh.

2.- Скопируйте следующий контент:

#! / bin / bash ################################ # Сценарий речи Дэна Фонтана # # Изменено 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 "word: $ key, $ {ary [$ ключ]} "#echo" добавление к: $ STRINGNUM "if [[" $ LENGTH "-lt" 100 "]]; затем #echo, начиная с новой строки SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} else STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}" SHORT [ $ STRINGNUM] = "$ {ary [$ key]}" завершено для ключа в строке "$ {! SHORT [@]}" do #echo ": $ key is: $ {SHORT [$ key]}" echo " Игровая линия: $ (($ key + 1)) из $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? ie = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "готово

3.- Предоставьте скрипту права на выполнение:

sudo chmod + x t2s.sh

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

./t2s.sh ru Это очень интересный текст для преобразования.
Совет: некоторые эмуляторы терминала позволяют вставлять текст, просто перетаскивая его. Таким образом, можно выделить текст в Firefox и перетащить его на терминал.

Вот и все, надеюсь, вам понравится.


Оставьте свой комментарий

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

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Йойо сказал

    Как здорово, спасибо большое

    А какой у девушки красивый голос, кажется, я влюбился 😛

    1.    темнокожий сказал

      Простите, вы можете мне помочь с китайским? Он не распознает китайские иероглифы, только пиньинь.

  2.   Shadow сказал

    Это хорошо как для сценария, проверяющего почту, так и для персонализированного сигнала тревоги, который при пробуждении сообщает вам прогноз и ожидающие сообщения xD

  3.   Йойо сказал

    Здесь я сделал тестовое видео 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    давайте использовать Linux сказал

      Хорошо! Спасибо!

  4.   Benctrox сказал

    Звучит очень хорошо, мне оставалось только установить mpg123 🙂

  5.   Portaro сказал

    Мне пришлось установить mpg123, но это было круто, поэтому, если он не принимает некоторые слова, он говорит правильную букву галочки и т. Д.

    EH EH

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

    Обновлена ​​вирусная база (?)

    1.    jalbrhcp сказал

      apt update && ./t2.sh ru Обновлена ​​вирусная база данных.

  7.   Alexander сказал

    Хахаха Отлично, у меня уже есть несколько применений, чувственный голос без сомнения =), спасибо, что поделились.

  8.   Хорхе Моратилла сказал

    Как пользователь Mac OSX, у меня не было возможности использовать скрипт, так как у меня нет mpg123, поэтому, изменив скрипт и используя VLC, мы можем оставить его правильно работающим в Mac OS X.

    http://pastebin.com/C2Mkp1Qy

    1.    Роло сказал

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

      1.    Роло сказал

        это можно было бы поставить
        cvlc –play-and-exit «https://translate.google.com/translate_tts?tl=$[$key]}»
        чтобы он закрылся в конце воспроизведения

  9.   Neysonv сказал

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

    1.    Neysonv сказал

      [code] Игровая линия: 1 из 1
      Ошибка HTTP-запроса: 404 Not Found
      [mpg123.c: 610] ошибка: доступ к http-ресурсу http://translate.google.com/translate_tts?tl=hola&q= неудачный. [/ код]

    2.    давайте использовать Linux сказал

      Проблема в том, что вы неправильно используете сценарий.
      Когда вы запустите его, вы должны передать язык текста в качестве первого параметра, как показано в примере в сообщении.
      Приведу еще один пример:
      ./t2s.sh в Это простой пример.
      Обратите внимание, что после ts2.sh следует «en» (что означает «английский», то есть английский). Для испанского используйте «es», а затем фразу на том языке, который вы хотите преобразовать.
      Объятие! Павел.

  10.   анонимный сказал

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

    espeak -v is-«привет»

    1.    давайте использовать Linux сказал

      Да, но не то же самое. Этот голос намного лучше. 🙂

      1.    анонимная записка сказал

        мы согласны!
        Привет!

  11.   Сара сказал

    Для тех, у кого проблемы с mpg123 -q или он не нравится, можно переключиться на 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]}»)

    1.    Guido сказал

      Лучше "mplayer -really-quiet", чтобы он не заполнял вывод текстом

  12.   Джонатан сказал

    Прекрасная идея использовать гугл для своих приложений меня устраивает.
    http://github.com/alfa30/t2v

  13.   темнокожий сказал

    Еще один вопрос; Может кто-нибудь подскажет, как записать выходной звук ???

    1.    Хосе ГДФ сказал

      Я сам вам отвечаю, потому что только что получил. Используя mpg123, я изменил строку 38 скрипта, которая выглядит так:

      mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}»)

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

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

      Конечно, это можно было бы сделать другим более эффективным и чистым способом, но, по крайней мере, это работает для меня.

      1.    темнокожий сказал

        Отлично, José GDF, я попробовал ваш метод с очень хорошими результатами, привет.

      2.    соевый сказал

        Чтобы сэкономить трафик при втором выполнении, вы можете воспроизвести .wav, созданный при первом выполнении.

      3.    Хосе ГДФ сказал

        Ну да, с помощью установленного нами плеера. Например, с VLC Player это будет:

        vlc аудио.wav

        Ну кто говорит vlc, тот говорит любой другой плеер, в том числе те, которые работают по терминалу.

        И чтобы избежать перезаписи файла при каждом использовании сценария, в качестве имени следует использовать переменную. Имя, которое пользователь поставит (команда чтения) перед запуском ... Но это будет завиток

  14.   Драрко сказал

    Я сделал это на PHP (для создания аудио для телефонной системы Asterisk *)


    $ url = 'http://translate.google.com/translate_tts?ie=UTF-8&q={query}% 0A & tl = is & prev = input ';

    if (count ($ argv) <= 1) {
    $ name = basename ($ argv [0]);
    умереть ($ name. 'usage:'. $ name. '
    }
    array_shift ($ argv);
    $ query = implode (', $ argv);
    $ filename = str_replace (массив ('', ',', '.'), '-', $ 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, истина);
    $ 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');

    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.   Игнасио Крус Мартинес сказал

    Здравствуйте, этот сценарий мне очень пригодился, как для прослушивания звука, так и для записи слов переводчика.

    Фактически, я изменил сценарий, чтобы приспособить его к моей потребности: преобразовать список слов в тексте (лемарио) в речь; сохраните мой голос в wav, конвертируйте в ogg и назовите их в соответствии с прочитанным словом.

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

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

    Сначала я был зол, потому что я неправильно читал слова с акцентами, но обнаружил, что вам нужно добавить в код «es & ie = UTF8». На мгновение я забыл кодировку символов.

    Я оставляю вам код скрипта, который я сделал, на случай, если он вам поможет:

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

    #! / Bin / Баш

    #################################
    # Синтез речи #
    # Адаптировано Игнасио Крус Мартинесом #
    # почта секретная xD #
    #################################

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

    #KDE диалоговое окно для указания папки назначения для голосовых файлов
    path = $ (kdialog –inputbox «Введите путь для сохранения голосового аудио:»)

    # через cat читаются все строки текстового файла, каждая строка состоит из одного слова
    для я в $ (cat $ soyunfile)
    do
    эхо $ я

    # преобразование в речь с помощью Google Translate, не забудьте кодировку, чтобы он читал акценты
    mpg123 -q -w "$ путь" $ 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 "$ путь" $ i.wav -acodec libvorbis "$ путь" $ i.ogg
    сделанный

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

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

    Диалоговое окно #KDE для индикации завершения работы
    kdialog –msgbox 'Процесс завершен'

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

    Есть ли у кого-нибудь из вас знания о лицензии на использование сгенерированных голосовых файлов?

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

    И дело в том, что у этого инструмента лучшая интонация для испанского языка, к сожалению, в Linux нет ничего подобного. Мброла доставила мне много хлопот, чтобы установить вместе с Gespeaker.

    Спасибо и увидимся.

    1.    давайте использовать Linux сказал

      Понятия не имею ... пришлось бы смотреть лицензии переводчика Google.

  19.   Армандо сказал

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

  20.   Хуахо сказал

    Здравствуйте! Я проводил тесты с вашим скриптом, и при его выполнении он сказал мне, что не может найти звук, поэтому я ввел URL-адрес и кажется, что мистер Google поставил капчу ...

  21.   ' сказал

    обновить скрипт