Текст в речь? Лайфхак использования Google Translate

в 15:11, , рубрики: Песочница, метки: , ,

Некоторое время назад я был заинтересован поиском альтернативы функции «Текст в Речь» в Mac OS X под Linux и позднее под Windows. Мне хотелось сконвертировать целую статью или если это будет возможным книгу для прослушивания ее на смартфоне в вагоне метро.

Я первым делом, соответственно занялся поисками готовых решений. Но отчасти, безрезультатно. Либо же, они звучали на мой взгляд совершенно непригодно. Или, стоили денег. Я подумал — эу, одну статью. Покупать программу? И обратил внимание на открытую у себя в браузере вкладку Google Translate. Сначала я очень вдохновился этой идеей и подумал. Может быть скопировать всю статью туда, да просто попробовать послушать как она звучит? Посмотрел в Network куда и какие запросы отправляются на сервер. Подумал, что наверняка не получится просто так отправить запрос, да и сохранить результат, ведь это же сам Google! Но. Как оказалось. Мысли по поводу «ведь в этом нет ничего сверхъестественного» оказались более верны.

image

Все оказалось проще пареной репы. Необходимо было просто послать запрос с главными параметрами:

q, tl, textlen. Где q это желаемая строка, которую вы бы хотели озвучить. tl это язык на котором нужно читать и textlen длинна предложения. Максимальное число 100.

В конечном результате образовался подобный txt2speech gem
С помощью него можно легко проделать необходимую работу и получить нужный результат.

Пример использования скрипта

bin/txt2speech -r README.md -f -o example.mp3

Использование библиотеки:

2.1.2 :001 > require 'txt2speech'
 => true
2.1.2 :010 > f = Txt2Speech.new "Hello I am Google robot! Nice to meet you, hope you'll enjoy this script and will fork it"
 => #<Txt2Speech:0x000000029a3290 @text="Hello I am Google robot! Nice to meet you, hope you'll enjoy this script and will fork it", @lang="en">
2.1.2 :011 > f.save('out.mp3')

Более подробнее тут


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js