«Ать-ать»: попросите переводчик прочитать 78945738793857 (и он не поймет, что происходит)
В 2019 году пользователи Siri обнаружили забавный баг голосовой помощницы: если попросить ее произнести что‑то вроде «Ахахахахххахххахахах», то она издаст какие‑то странные, захлебывающиеся и даже пугающие звуки. Оказывается, в российском «Яндекс.Переводчике» можно получить еще более необычный результат.
Пользовательница тиктока @thelizamaps1 опубликовала ролик, в котором голос «Яндекс.Переводчика» зачитывает очень длинную последовательность цифр — 627193939303922928272625… — записанную через знак доллара. Сначала механический голос успешно справляется с ней, но потом запинается и произносит странные и забавные звуки: «ать-ать-ати-ати-ати», «эвэ-эвэ» и «два-о-о-о-о».
Эксперимент можно повторить в домашних условиях: достаточно написать в поле перевода с русского любую, но главное, очень длинную последовательность цифр (можно даже обойтись без символа доллара), а потом нажать на значок зачитывания. Работает это только в «Яндекс.Переводчике» — Google Translate спокойно, но не очень выразительно зачитает число любой длины. Компания «Яндекс» не смогла оперативно прокомментировать необычный глитч в голосе «Переводчика».
Переводим книги с помощью Яндекс.API
Однажды мне пришло в голову прочитать одну книгу на родном языке автора, английском. После прочтения нескольких страниц стало понятно, что читать придется долго, так как за каждым незнакомым словом приходилось тянуться за словарем, искать нужную страницу, ломать глаза о множество других слов, похожих на искомое… Да еще и таскать с собой лишних полтысячи страниц. Вот и вздумалось собрать небольшой словарик, именно под эту книгу, в который можно было бы заглянуть в любой ситуации — даже когда нет доступа в Интернет.
Что из этого получится
На выходе мы получим самый обычный .txt — файл, в котором на каждой строчке по алфавиту будут размещены редкие слова из книги и их перевод. Такой словарик можно легко встроить, например, в MIDlet для мобильного телефона, или же непосредственно на сайт.
Почему именно Яндекс.API
В Яндексе все просто: отправил слово — пришел перевод. Не надо регистрировать уникальный ключ, как на Google.translate, да и на большое количество запросов он не жалуется.
Реализация
- handler.php — скрипт, который будет делать всю черную работу
- index.html — служит для отображения состояния перевода, а также для управления самим процессом
- stop.php — скрипт, который остановит выполнение handler.php
handler.php
$val = strtolower($val); if(array_key_exists($val, $words))< # Если такое слово уже есть в массиве, увеличим счетчик $words[$val]++; >else < # Если нет - создадим $words[$val] = 1; >> ksort($words); # Сортируем все уникальные слова по алфавиту foreach($words as $w=>$v) < # Вынесем в отдельный массив только редкие слова (которых в книге 1-5) if($v<=5)< $rare_words[$w]=$v; >> $w_total = sizeof($rare_words); # Посчитаем количество редких слов и запишем его в файл $src = fopen('total.txt','w'); fwrite($src, $w_total); fclose($src); $src_trns = fopen('translated.txt','a'); # Создадим файл, куда будут помещаться переведенные слова $cnt=0; foreach($w_a as $w=>$v) < # Начнем перебирать слова if(!file_exists('flag'))< die(); # Если "файл - выключатель" не существует - прекратим исполнение скрипта >/* Следующая строка отправляет запрос на translate.yandex в виде обычного GET-запроса, где lang - языки перевода (с английского на русский), text - текст, который нуждается в переводе. */ $arr = json_decode(file_get_contents('http://translate.yandex.net/api/v1/tr.json/translate?lang=en-ru&text='.$w,3), true); if($w!=$arr['text'][0]) < # Если Яндекс не вернул нам в точности то, что мы отправили ему fwrite($src_trns, $w.'|'.$arr['text'][0]."\n"); # Запишем строку в файл словаря >$cnt++; # Увеличим счетчик переведенных слов на единицу $src = fopen('current.txt','w'); # И запишем количество переведенных слов в файл fwrite($src, $cnt); fclose($src); > fclose($src_trns); unlink('flag'); # После перевода всех слов уберем "выключатель" - это будет свидетельствовать о завершении ?>
stop.php
index.html
Результаты
С помощью такого детского велосипеда перевел 5982 слов за 1033 секунды ( в среднем 5.78 слов в секунду ). Это относительно долго, отчасти потому, что я не выдумывал методы для ускорения перевода ( в идеале можно было отправлять несколько запросов одновременно, но мы ведь не хотим обидеть Яндекс ).
Данный пример можно использовать для перевода редких слов из книги или статьи, когда целью есть сам результат перевода, а не процесс. Если использовать в этих целях удаленный сервер, то процесс перевода будет происходить и при выключенном компьютере.
nekitvand / main.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
| import requests |
| URL = «https://translate.yandex.net/api/v1.5/tr.json/translate» . #это адрес для обращения к API |
| KEY = «trnsl.1.1.20190115T093726Z.65e1460d8d95bd06.р45ор345о3р4о53р45о345р3о» #Это ваш API ключ |
| def translate_me ( mytext ): |
| params = |
| «key» : KEY , |
| «text» : mytext , |
| «lang» : ‘ru-en’ . #Здесь мы указываем с какого языка на какой мы делаем переводим |
| > |
| response = requests . get ( URL , params = params ) |
| return response . json () |
| json = translate_me ( «Привет мой друг» ) #Сюда мы вводим текст который нам нужно перевести (для удобности можно вынести в отдельную переменную |
| print ( » . join ( json [ «text» ])) |
delvin-fil commented Oct 18, 2019
По моему, так удобней:
#!/home/delvin/.local/bin/python3.8 import sys import warnings warnings.filterwarnings("ignore") import requests headers = < 'User-Agent': ('Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 ' 'Firefox/14.0.1'), 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive', 'DNT': '1' > if len(sys.argv) 2: print('Usage: tr.py -lf -t \n \ -lf - language from-to \n \ -t - text') sys.exit() URL = "https://translate.yandex.net/api/v1.5/tr.json/translate" KEY = "Это ваш API ключ" lf = sys.argv[1] t = sys.argv[2] def translate_me(mytext): params = < "key": KEY, "text": t, "lang": lf > response = requests.get(URL ,params=params, headers=headers) return response.json() json = translate_me('') print(''.join(json['text']))
В переводчике от «Яндекса» тюменец обнаружил баг
Объемный текст с символами «Яндекс.Переводчик» озвучивает с заиканием и ошибками. Баг работает только в мобильном приложении.
Ошибка появляется при воспроизведении введенного текста. При наборе большого количества цифр или текста голосовой переводчик озвучивает написанное с заиканием и задержкой.
О проблеме с переводчиком редакции сайта сообщил медиаменеджер Moi-portal.ru Глеб Орехов:
«Для того, чтобы «сломать» переводчик, нужно продублировать фразу около 15-20 раз подряд. Баги начинаются на 20-30 секунде прослушивания».
Пользователи предполагают, что из-за длинного повторяющегося текста у переводчика забивается оперативная память, и он начинает скакать от начала к середине, таким образом путаясь в буквах.
Если ты увидел что-то интересное, выиграл грант или стал очевидцем события, расскажи нам об этом:
Portal072@gmail.com
8 (3452) 68-34-55 /
VK / Telegram